Sirkuit

Cara Membangun Mars Rover yang Dikontrol Internet: 4 Langkah (dengan Gambar)

Watch NASA's Perseverance Rover Launch to Mars!

Watch NASA's Perseverance Rover Launch to Mars!

Daftar Isi:

Anonim

Instruksi ini akan menjelaskan semua yang perlu Anda ketahui untuk membangun robot semua medan yang dikendalikan internet. Yang satu ini kebetulan dimodelkan pada bajak Mars Curiosity. Robot ini dapat dikontrol dari perangkat apa pun yang mendukung internet sehingga Anda dapat mengontrol benda ini di sisi lain planet ini (atau Mars jika hanya memiliki internet). Proyek ini semuanya ditenagai oleh Imp Listrik (perangkat ukuran kartu SD yang luar biasa yang memungkinkan Anda menghubungkan apa pun ke internet) dan Arduino.
Proyek ini dibuat oleh Michael Shorter, Tom Metcalfe, Jon Rogers dan Ali Napier di Product Design Research Studio, Dundee.

Apa yang Anda butuhkan:
6WD Wild Thumper Arduino Chassis - http://robosavvy.com/store/product_info.php/products_id/1167?osCsid=5e99bbe12a25938cbf4267ea6bc497ea
Pengontrol Arduino Wild Thumper - http://robosavvy.com/store/product_info.php/products_id/1168
Baterai LiPo - 7.2V 5000mah
3mm akrilik
5mm akrilik
Pipa pembuangan berdiameter 10cm
Pipa berdiameter 35mm
batang aluminium
Imp Listrik
Papan imp listrik Imp
Beberapa kabel jumper
Pita pegangan skateboard

Persediaan:

Langkah 1: Membangun Rover

Terlampir adalah file Adobe Illustrator untuk memungkinkan Anda memotong semua bagian yang Anda butuhkan. Total ada tiga file. Satu file untuk semua bagian tebal 3mm, satu untuk bagian tebal 5mm dan satu untuk bagian grip tape.
Semoga gambar-gambar di bawah ini memberikan ide yang bagus tentang bagaimana cara menempelkan sasis baru untuk Wild Thumper 6WD Anda bersama.
Kabel Imp Listrik ke Arduino mudah:
Imp pin 1 - Arduino pin 10
Imp pin 2 - Arduino pin 9
Imp pin 8 - pin Arduino 12
Imp pin 9 - Arduino pin 2
Imp Listrik juga akan membutuhkan 5V atau 3.3V tergantung pada papan breakout Anda, serta ground.
Saya memutuskan untuk memasang sakelar sakelar yang sejalan dengan baterai agar mudah dinyalakan dan dimatikan.

Langkah 2: Sisi Web of Things

Ini beberapa kode untuk Anda….
Squirrel for imp (diadaptasi dari sumber online yang tidak bisa lagi saya temukan …):
================================================
server.show ("");
// remote control untuk bajak
ledState <- 0;
fungsi blink ()
{
// Ubah status
ledState = ledState? 0: 1;
server.log ("ledState val:" + ledState);
// Refleksikan status ke pin
hardware.pin9.write (ledState);
}
// kelas input untuk saluran kontrol LED
kelas inputHTTP memperluas InputPort
{
name = "kontrol daya"
type = "number"
set fungsi (httpVal)
{
server.log (“Val yang diterima:“ + httpVal);
if (httpVal == 1) {
hardware.pin9.write (1);
tidur (0,1);
hardware.pin9.write (0);
}
lain jika (httpVal == 2) {
hardware.pin8.write (1);
tidur (0,1);
hardware.pin8.write (0);
}
lain jika (httpVal == 3) {
hardware.pin2.write (1);
tidur (0,1);
hardware.pin2.write (0);
}
lain jika (httpVal == 4) {
hardware.pin1.write (1);
tidur (0,1);
hardware.pin1.write (0);
}
lain{
;
}
}
}
function watchdog () {
imp.wakeup (60, watchdog);
server.log (httpVal);
}
// mulai pengawas menulis setiap 60 detik
//penjaga();
// Konfigurasi pin sebagai output tiriskan terbuka dengan internal pull up
hardware.pin9.configure (DIGITAL_OUT_OD_PULLUP);
hardware.pin8.configure (DIGITAL_OUT_OD_PULLUP);
hardware.pin2.configure (DIGITAL_OUT_OD_PULLUP);
hardware.pin1.configure (DIGITAL_OUT_OD_PULLUP);
// Daftarkan ke server
imp.configure (“Reomote Control for Rover”, inputHTTP (), );
================================================


Kode Arduino (terima kasih Chris Martin!) …
================================================
/*
AnalogReadSerial
Membaca input analog pada pin 0, mencetak hasilnya ke monitor serial.
Pasang pin tengah potensiometer ke pin A0, dan pin luar ke + 5V dan arde.
Kode contoh ini ada dalam domain publik.
*/
int pinf = 2;
int pinl = 12;
int pinr = 10;
int pinb = 9;
#define LmotorA 3 // Jembatan H motor kiri, input A
#define LmotorB 11 // Jembatan H motor kiri, input B
#define RmotorA 5 // Jembatan H motor kanan, input A
#define RmotorB 6 // Jembatan H motor kanan, input B
#define v 255
#termasuk
// Servo myservo;
// int led = 12;
int pos = 0;
// rutinitas pengaturan berjalan sekali ketika Anda menekan reset:
pengaturan batal () {
//myservo.attach(9);
// pinMode (led, OUTPUT);
pinMode (pinf, INPUT); // inisialisasi komunikasi serial pada 9600 bit per detik:
pinMode (pinl, INPUT);
pinMode (pinr, INPUT);
pinMode (pinb, INPUT);
Serial.begin (9600);
digitalWrite (pinf, LOW);
digitalWrite (pinl, LOW);
digitalWrite (pinr, LOW);
digitalWrite (pinb, LOW);
//288000
// ini berbeda pada monitor serial tidak yakin apakah itu naik atau turun
// Serial.begin (14400);
}
int lls = 0;
int rls = 0;
int al = 0;
// rutin loop berulang-ulang selamanya:
membatalkan loop () {
// baca input pada pin analog 0:
int sensorValue1 = digitalRead (pinf);
int sensorValue2 = digitalRead (pinl);
int sensorValue3 = digitalRead (pinr);
int sensorValue4 = digitalRead (pinb);
// cetak nilai yang Anda baca:
Serial.print (sensorValue1);
Serial.print (":");
Serial.print (sensorValue2);
Serial.print (":");
Serial.print (sensorValue3);
Serial.print (":");
Serial.println (sensorValue4);
keterlambatan (25); // penundaan di antara bacaan untuk stabilitas
if (sensorValue1 == 1) {
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 120);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 120);
keterlambatan (500);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
// keterlambatan (500);
}
lain{
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
}
if (sensorValue2 == 1) {
// digitalWrite (led, HIGH);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 250);
analogWrite (LmotorA, 250);
analogWrite (LmotorB, 0);
keterlambatan (100);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
// keterlambatan (500);
}
lain
{
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
}
if (sensorValue4 == 1) {
// digitalWrite (led, HIGH);
analogWrite (RmotorA, 250);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 250);
keterlambatan (100);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
// keterlambatan (500);
}
lain
{
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
}
if (sensorValue3 == 1) {
// digitalWrite (led, HIGH);
analogWrite (RmotorA, 120);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 120);
analogWrite (LmotorB, 0);
keterlambatan (500);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
// keterlambatan (500);
}
lain
{
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
}
}
================================================

Sekarang untuk antarmuka pengguna. Buka zip folder yang dilampirkan; semua kode yang dibutuhkan harus ada di sana. Yang perlu Anda lakukan adalah menempelkan API Imp Listrik unik Anda ke file index.html di ruang yang sesuai. Saya telah memberi label ini pada file.

Langkah 3: Ayo Berikan Beberapa Visual

Saya memutuskan untuk meletakkan iPhone lama di unit kepala yang menampilkan rekaman Mars. Ini bisa apa saja, bahkan kamera video sehingga Anda dapat melihat di mana Anda mengemudi melalui Skype atau Facetime …

Langkah 4: Ayo Keliling!

Berikut ini adalah video cepat dari The Mini Mars Rover nongkrong di acara NASA di SWSW 2013!

SXSW rover dari michael lebih pendek di Vimeo.

Hal yang hebat tentang proyek ini adalah mudah untuk mengubah kode untuk mengubah perilaku, atau antarmuka, dari robot.
Nikmati!
M.

Finalis dalam
Kontes Kontrol Jarak Jauh