Litar

Cara Membina Internet Rover Mars Rover: 4 Langkah (dengan Gambar)

The Curious Life of a Mars Rover | Nat Geo Live

The Curious Life of a Mars Rover | Nat Geo Live

Isi kandungan:

Anonim

Instructable ini akan menerangkan semua yang anda perlu ketahui untuk membina sebuah internet yang menguasai semua robot bumi. Yang satu ini hanya akan dimodelkan di Rover Curiosity Mars. Robot ini dikawal dari mana-mana peranti yang membolehkan internet supaya anda dapat mengawal perkara ini di sisi lain planet ini (atau Mars jika hanya mempunyai internet). Projek ini semua dikuasakan oleh Imp elektrik yang menakjubkan (peranti bersaiz kad SD yang membolehkan anda menyambungkan apa-apa ke internet) dan Arduino.
Projek ini dicipta oleh Michael Shorter, Tom Metcalfe, Jon Rogers dan Ali Napier di Studio Reka Bentuk Produk Penyelidikan, Dundee.

Apa yang anda perlukan:
Chassis Thumper Liar 6WD - http://robosavvy.com/store/product_info.php/products_id/1167?osCsid=5e99bbe12a25938cbf4267ea6bc497ea
Pengawal Thumper Arduino Liar - http://robosavvy.com/store/product_info.php/products_id/1168
Bateri LiPo - 7.2V 5000mah
Akrilik 3mm
Akrilik 5mm
10cm diameter paip
Paip diameter 35mm
rod aluminium
Imp elektrik
Lembaga pemecah kuasa elektrik
Sesetengah kabel jumper
Pita cengkaman skateboard

Bekalan:

Langkah 1: Membina Rover

Dilampirkan adalah fail Adobe Illustrator untuk membolehkan anda memotong laser semua bahagian yang anda perlukan. Terdapat tiga fail secara total. Satu fail untuk semua bahagian tebal 3mm, satu untuk bahagian tebal 5mm dan satu untuk bahagian pita cengkaman.
Semoga imej di bawah memberi idea yang baik bagaimana untuk melekat casis baru untuk Wild Thumper 6WD bersama-sama.
Pendawaian Electric Imp kepada Arduino adalah mudah:
Imp pin 1 - pin Arduino 10
Imp pin 2 - pin Arduino 9
Imp pin 8 - Arduino pin 12
Imp pin 9 - Arduino pin 2
The Electric Imp juga memerlukan 5V atau 3.3V bergantung kepada papan pelarian anda, serta tanah.
Saya memutuskan untuk membuat dawai dalam suis togol seiring dengan bateri untuk memudahkan dan mematikannya.

Langkah 2: Side of Things Web

Berikut adalah beberapa kod untuk anda ….
Tupai untuk imp (disesuaikan daripada sumber dalam talian yang saya tidak dapat lagi mencari …):
================================================
server.show ("");
// kawalan jauh untuk rover
ledState <- 0;
fungsi berkelip ()
{
// Tukar keadaan
ledState = ledState? 0: 1;
server.log ("ledState val:" + ledState);
// Mencerminkan keadaan pada pin
hardware.pin9.write (ledState);
}
// kelas input untuk saluran kawalan LED
input kelasHTTP memanjangkan InputPort
{
name = "control power"
type = "number"
set fungsi (httpVal)
{
server.log ("Terima val:" + httpVal);
jika (httpVal == 1) {
hardware.pin9.write (1);
imp.sleep (0.1);
hardware.pin9.write (0);
}
lain jika (httpVal == 2) {
hardware.pin8.write (1);
imp.sleep (0.1);
hardware.pin8.write (0);
}
lain jika (httpVal == 3) {
hardware.pin2.write (1);
imp.sleep (0.1);
hardware.pin2.write (0);
}
lain jika (httpVal == 4) {
hardware.pin1.write (1);
imp.sleep (0.1);
hardware.pin1.write (0);
}
lain {
;
}
}
}
fungsi pengawas () {
imp.wakeup (60, pengawas);
server.log (httpVal);
}
// mula pengawas menulis setiap 60 detik
// watchdog ();
/ / Konfigurasikan pin sebagai output longkang terbuka dengan tarikan dalaman
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);
// Daftar dengan pelayan
imp.configure ("Reomote Control for Rover", inputHTTP (), );
================================================


Kod Arduino (terima kasih Chris Martin!) …
================================================
/*
AnalogReadSerial
Membaca input analog pada pin 0, mencetak hasilnya kepada monitor siri.
Pasang pin pusat potensiometer kepada pin A0, dan pin luar untuk + 5V dan tanah.
Kod contoh ini berada dalam domain awam.
*/
int pinf = 2;
int pinl = 12;
int pinr = 10;
int pinb = 9;
#define LmotorA 3 // Left motor H bridge, input A
#define LmotorB 11 // Kiri motor H bridge, input B
#define RmotorA 5 // Jembatan motor kanan H, input A
#define RmotorB 6 // Jambatan motor kanan J, input B
#define v 255
#include
// Servo myservo;
/ int led = 12;
int pos = 0;
// rutin persediaan berjalan sekali apabila anda menekan set semula:
void setup () {
//myservo.attach(9);
// pinMode (dipimpin, OUTPUT);
pinMode (pinf, INPUT); // memulakan komunikasi bersiri pada 9600 bit sesaat:
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 berbeza dengan monitor siri yang tidak pasti sama ada ia naik atau turun
// Serial.begin (14400);
}
int lls = 0;
int rls = 0;
int al = 0;
// rutin gelung berjalan berulang-ulang selama-lamanya:
kekosongan gelung () {
// baca input pada pin analog 0:
int sensorValue1 = digitalRead (pinf);
int sensorValue2 = digitalRead (pinl);
int sensorValue3 = digitalRead (pinr);
int sensorValue4 = digitalRead (pinb);
// mencetak nilai yang anda baca:
Serial.print (sensorValue1);
Serial.print (":");
Serial.print (sensorValue2);
Serial.print (":");
Serial.print (sensorValue3);
Serial.print (":");
Serial.println (sensorValue4);
kelewatan (25); / / penundaan di antara bacaan untuk kestabilan
jika (sensorValue1 == 1) {
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 120);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 120);
kelewatan (500);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
/ / kelewatan (500);
}
lain {
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
}
jika (sensorValue2 == 1) {
// // DigitalWrite (dipimpin, HIGH);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 250);
analogWrite (LmotorA, 250);
analogWrite (LmotorB, 0);
kelewatan (100);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
/ / kelewatan (500);
}
lain
{
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
}
jika (sensorValue4 == 1) {
// // DigitalWrite (dipimpin, HIGH);
analogWrite (RmotorA, 250);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 250);
kelewatan (100);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
/ / kelewatan (500);
}
lain
{
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
}
jika (sensorValue3 == 1) {
// // DigitalWrite (dipimpin, HIGH);
analogWrite (RmotorA, 120);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 120);
analogWrite (LmotorB, 0);
kelewatan (500);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
/ / kelewatan (500);
}
lain
{
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
}
}
================================================

Sekarang untuk antara muka pengguna. Unzip folder dilampirkan; semua kod yang diperlukan sepatutnya berada di sana. Apa yang perlu anda lakukan ialah tampalkan API Impak Elek unik anda ke dalam fail index.html di ruang yang sesuai. Saya telah melabelkan ini dalam fail.

Langkah 3: Mari Berikan Ia Beberapa Visual

Saya memutuskan untuk meletakkan iPhone lama di unit kepala yang memaparkan rakaman Mars. Ini boleh jadi apa-apa, bahkan kamera video supaya anda dapat melihat di mana anda memandu melalui Skype atau Facetime …

Langkah 4: Marilah Dapatkan Roving!

Berikut adalah video cepat The Mini Mars Rover yang digantung pada acara NASA di SWSW 2013!

SXSW rover dari michael pendek pada Vimeo.

Perkara yang bagus tentang projek ini adalah mudah untuk mengubah tingkah laku kod untuk mengubah tingkah laku, atau antara muka robot.
Nikmati!
M

Finalis dalam
Peraduan Kawalan Jauh