Circuits

Paano Magtayo ng isang Internet Controlled Mars Rover: 4 Steps (with Pictures)

The Curious Life of a Mars Rover | Nat Geo Live

The Curious Life of a Mars Rover | Nat Geo Live

Talaan ng mga Nilalaman:

Anonim

Ipapaliwanag ng Instructable na ito ang lahat ng kailangan mong malaman upang bumuo ng internet na kinokontrol ang lahat ng terrain robot. Ang isang ito ay mangyayari lamang na ma-model sa Mars Curiosity rover. Ang robot na ito ay nakokontrol mula sa anumang aparatong naka-enable sa internet upang makontrol mo ang bagay na ito sa kabilang panig ng planeta (o Mars kung mayroon lamang itong internet). Ang proyektong ito ay pinapatakbo ng kamangha-manghang Electric Imp (isang sized device ng SD card na nagbibigay-daan sa iyo upang ikonekta ang anumang bagay sa internet) at isang Arduino.
Ang proyektong ito ay nilikha ng Michael Shorter, Tom Metcalfe, Jon Rogers at Ali Napier sa Product Design Research Studio, Dundee.

Ano ang kailangan mo:
6WD Wild Thumper Arduino Chassis - http://robosavvy.com/store/product_info.php/products_id/1167?osCsid=5e99bbe12a25938cbf4267ea6bc497ea
Wild Thumper Arduino Controller - http://robosavvy.com/store/product_info.php/products_id/1168
LiPo Battery - 7.2V 5000mah
3mm Acrylic
5mm Acrylic
10cm diameter drainpipe
35mm diameter pipe
aluminyo rods
Electric Imp
Electric Imp breakout board
Ang ilang mga cable jumper
Skateboard grip tape

Mga Kagamitan:

Hakbang 1: Pagbuo ng Rover

Naka-attach ang mga file ng Adobe Illustrator upang pahintulutan ka sa laser cut ang lahat ng mga bahagi na kailangan mo. Mayroong tatlong mga file sa kabuuan. Isang file para sa lahat ng 3mm makapal na bahagi, isa para sa 5mm makapal na mga bahagi at isa para sa mga bahagi ng grip tape.
Sana ang mga larawan sa ibaba ay magbigay ng isang magandang ideya kung paano i-stick ang bagong chassis para sa iyong Wild Thumper 6WD magkasama.
Ang mga kable ng Electric Imp sa Arduino ay madali:
Imp pin 1 - Arduino pin 10
Imp pin 2 - Arduino pin 9
Imp pin 8 - Arduino pin 12
Imp pin 9 - Arduino pin 2
Kailangan din ng Electric Imp ang alinman sa 5V o 3.3V depende sa iyong breakout board, pati na rin ang lupa.
Nagpasya akong mag-wire sa isang toggle switch sa linya kasama ang baterya upang gawing madali upang i-on at i-off.

Hakbang 2: Ang Web Side ng Mga Bagay

Narito ang ilang mga code para sa iyo ….
Squirrel for imp (inangkop mula sa isang online na mapagkukunan na hindi na ako makahanap …):
================================================
server.show ("");
// remote control para sa rover
ledState <- 0;
function blink ()
{
/ Baguhin ang estado
ledState = ledState? 0: 1;
server.log ("ledState val:" + ledState);
/ / Sumasalamin ang estado sa pin
hardware.pin9.write (ledState);
}
// input class para sa LED control channel
klase inputHTTP nagpalawak InputPort
{
name = "control ng kapangyarihan"
type = "number"
function set (httpVal)
{
server.log ("Natanggap na val:" + httpVal);
kung (httpVal == 1) {
hardware.pin9.write (1);
imp.sleep (0.1);
hardware.pin9.write (0);
}
ibang tao kung (httpVal == 2) {
hardware.pin8.write (1);
imp.sleep (0.1);
hardware.pin8.write (0);
}
ibang tao kung (httpVal == 3) {
hardware.pin2.write (1);
imp.sleep (0.1);
hardware.pin2.write (0);
}
ibang tao kung (httpVal == 4) {
hardware.pin1.write (1);
imp.sleep (0.1);
hardware.pin1.write (0);
}
ibang {
;
}
}
}
function watchdog () {
imp.wakeup (60, asong tagapagbantay);
server.log (httpVal);
}
/ / simulan ang asong tagapagbantay magsulat bawat 60 segundo
/ / watchdog ();
// I-configure ang mga pin bilang isang bukas na output ng alisan ng tubig na may panloob na 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);
/ Magrehistro sa server
imp.configure ("Reomote Control for Rover", inputHTTP (), );
================================================


Arduino code (salamat Chris Martin!) …
================================================
/*
AnalogReadSerial
Binabasa ang input ng analog sa pin 0, nag-print ng resulta sa serial monitor.
Ilakip ang sentro ng pin ng isang potensyomiter sa pin A0, at ang mga pin sa labas sa + 5V at lupa.
Ang halimbawang code na ito ay nasa pampublikong domain.
*/
int pinf = 2;
int pinl = 12;
int pinr = 10;
int pinb = 9;
#define LmotorA 3 // Left motor H bridge, input A
#define LmotorB 11 // Left motor H bridge, input B
#define RmotorA 5 // right motor H bridge, input A
#define RmotorB 6 // right motor H bridge, input B
#define v 255
# isama
// Servo myservo;
/ int led = 12;
int pos = 0;
// ang gawain ng setup ay tumatakbo nang isang beses kapag pinindot mo ang pag-reset:
walang bisa setup () {
//myservo.attach(9);
// pinMode (humantong, OUTPUT);
pinMode (pinf, INPUT); / / magpasimula ng serial communication sa 9600 bits kada segundo:
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
/ / ito ay iba sa serial monitor hindi sigurado kung ito ay pataas o pababa
// Serial.begin (14400);
}
int lls = 0;
int rls = 0;
int al = 0;
/ / Ang loop na gawain ay tumatakbo nang paulit-ulit magpakailanman:
walang bisa loop () {
/ / basahin ang input sa analog pin 0:
int sensorValue1 = digitalRead (pinf);
int sensorValue2 = digitalRead (pinl);
int sensorValue3 = digitalRead (pinr);
int sensorValue4 = digitalRead (pinb);
/ print out ang halaga na nabasa mo:
Serial.print (sensorValue1);
Serial.print (":");
Serial.print (sensorValue2);
Serial.print (":");
Serial.print (sensorValue3);
Serial.print (":");
Serial.println (sensorValue4);
pagkaantala (25); / / pagkaantala sa pagitan ng bumabasa para sa katatagan
kung (sensorValue1 == 1) {
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 120);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 120);
pagkaantala (500);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
/ / pagkaantala (500);
}
ibang {
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
}
kung (sensorValue2 == 1) {
// digitalWrite (humantong, HIGH);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 250);
analogWrite (LmotorA, 250);
analogWrite (LmotorB, 0);
pagkaantala (100);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
/ / pagkaantala (500);
}
iba pa
{
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
}
kung (sensorValue4 == 1) {
// digitalWrite (humantong, HIGH);
analogWrite (RmotorA, 250);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 250);
pagkaantala (100);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
/ / pagkaantala (500);
}
iba pa
{
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
}
kung (sensorValue3 == 1) {
// digitalWrite (humantong, HIGH);
analogWrite (RmotorA, 120);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 120);
analogWrite (LmotorB, 0);
pagkaantala (500);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
/ / pagkaantala (500);
}
iba pa
{
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
}
}
================================================

Ngayon para sa user interface. Unzip ang folder na naka-attach; ang lahat ng kinakailangang code ay naroroon. Ang kailangan mong gawin ay i-paste sa iyong natatanging Electric Imp API sa index.html file sa naaangkop na espasyo. Isinulat ko ito sa loob ng file.

Hakbang 3: Ibigay Natin Ito Ang ilang mga Visual

Nagpasiya akong ilagay ang isang lumang iPhone sa yunit ng ulo na nagpapakita ng footage ng Mars. Ito ay maaaring maging anumang bagay, kahit na isang video camera upang maaari mong makita kung saan ka nagmamaneho sa pamamagitan ng Skype o Facetime …

Hakbang 4: Kumuha ng Roving!

Narito ang isang mabilis na video ng The Mini Mars Rover na nakabitin sa isang kaganapan sa NASA sa SWSW 2013!

SXSW rover mula sa michael shorter sa Vimeo.

Ang dakilang bagay tungkol sa proyektong ito ay na madaling mag-tweak ang code upang baguhin ang pag-uugali, o interface, ng robot.
Enjoy!
M

Finalist sa
Remote Control Contest