Áramkörök

Internetes vezérelt Mars Rover építése: 4 lépés (képekkel)

Demjén Ferenc - Hogyan tudnék élni nélküled (HQ)

Demjén Ferenc - Hogyan tudnék élni nélküled (HQ)

Tartalomjegyzék:

Anonim

Ez az Instructable mindent megmagyaráz, amit tudnia kell, hogy internetes vezérlésű tereprobotot építsen. Ez csak úgy történik, hogy a Mars Curiosity rover-en modellezzük. Ez a robot bármely internetes eszközről vezérelhető, így a bolygó másik oldalán (vagy Marson, ha csak az interneten van) vezérelheti ezt a dolgot. Ezt a projektet a lenyűgöző Electric Imp (egy SD kártya méretű eszköz teszi lehetővé, amely lehetővé teszi, hogy bármit csatlakoztasson az internethez) és egy Arduino-t.
Ezt a projektet Michael Shorter, Tom Metcalfe, Jon Rogers és Ali Napier készítette a Dundee Product Design Research Studio-ban.

Amire szüksége lesz:
6WD Wild Thumper Arduino alváz - http://robosavvy.com/store/product_info.php/products_id/1167?osCsid=5e99bbe12a25938cbf4267ea6bc497ea
Vad Thumper Arduino vezérlő - http://robosavvy.com/store/product_info.php/products_id/1168
LiPo akkumulátor - 7.2V 5000mah
3 mm-es akril
5 mm-es akril
10 cm átmérőjű lefolyócső
35 mm átmérőjű cső
alumínium rudak
Elektromos imp
Elektromos imp-fedélzet
Néhány jumper kábel
Gördeszka tapadó szalag

kellékek:

1. lépés: A Rover építése

A csatolt Adobe Illustrator fájlok lehetővé teszik, hogy lézerrel vágja le az összes szükséges alkatrészt. Összesen három fájl található. Egy fájl az összes 3 mm vastag részre, az egyik az 5 mm vastag részekre és az egyik a markolatszalagokhoz.
Remélhetőleg az alábbi képek jó ötletet adnak arra, hogy hogyan lehet az új alvázat a Wild Thumper 6WD-hez együtt ragasztani.
Az Elektromos Imp vezetése az Arduino-hoz egyszerű:
1. ütközőcsap - Arduino csap 10
Imp 2-es csap - Arduino csap 9
Imp. 8 - Arduino 12 csap
Imp 9-es csap - Arduino 2-es csap
Az Electric Imp 5V vagy 3,3V-nak is szüksége lesz a kitörési táblán és a talajon is.
Úgy döntöttem, hogy egy akkus kapcsolóba kapcsolom, hogy könnyen be- és kikapcsolhassam.

2. lépés: A dolgok weboldala

Íme néhány kód az Ön számára….
Mókus az imp (az internetes forrásból, amelyet már nem találok …):
================================================
server.show ( „”);
// távirányító a rover számára
ledState <- 0;
funkció villog ()
{
// Állapot módosítása
ledState = ledState? 0: 1;
server.log („ledState val:“ + ledState);
// Az állapotot tükrözze a tűvel
hardware.pin9.write (ledState);
}
// LED vezérlőcsatorna bemeneti osztálya
osztály inputHTTP kiterjeszti az InputPort-ot
{
name = „power control”
type = “number”
funkciókészlet (httpVal)
{
server.log („Received val:“ + httpVal);
ha (httpVal == 1) {
hardware.pin9.write (1);
imp.sleep (0,1);
hardware.pin9.write (0);
}
mást, ha (httpVal == 2) {
hardware.pin8.write (1);
imp.sleep (0,1);
hardware.pin8.write (0);
}
mást, ha (httpVal == 3) {
hardware.pin2.write (1);
imp.sleep (0,1);
hardware.pin2.write (0);
}
mást, ha (httpVal == 4) {
hardware.pin1.write (1);
imp.sleep (0,1);
hardware.pin1.write (0);
}
más{
;
}
}
}
watchdog funkció () {
imp.wakeup (60, watchdog);
server.log (httpVal);
}
// indítsa el a watchdog-ot 60 másodpercenként
// watchdog ();
// Konfigurálja a csapokat nyílt leeresztő kimenetként, belső húzással
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);
// Regisztráljon a szerveren
imp.configure („Ellenőrzés a Rover számára”, inputHTTP (), );
================================================


Arduino kód (köszönöm Chris Martin!)…
================================================
/*
AnalogReadSerial
Olvassa el a 0-as érintkező analóg bemenetét, kinyomtatja az eredményt a soros monitorra.
Csatlakoztassa a potenciométer középső csapját az A0 tűhöz, a külső csapokat pedig + 5V-ig és földelje.
Ez a példa kód nyilvános.
*/
int pinf = 2;
int pinl = 12;
int pinr = 10;
int pinb = 9;
#define LmotorA 3 // Bal oldali motor H híd, A bemenet
#define LmotorB 11 // Bal oldali motor H híd, B bemenet
#define RmotorA 5 // Jobb motor H híd, A bemenet
#define RmotorB 6 // Jobb motor H híd, B bemenet
#define v 255
#include
// Servo myservo;
// int = 12;
int pos = 0;
// az alaphelyzetbe állításkor a beállítási rutin egyszer fut
érvénytelen beállítás () {
//myservo.attach(9);
// pinMode (led, OUTPUT);
pinMode (pinf, bemenet); // soros kommunikáció inicializálása másodpercenként 9600 bit:
pinMode (pinl, bemenet);
pinMode (pinr, bemenet);
pinMode (pinb, bemenet);
Serial.begin (9600);
digitalWrite (pinf, LOW);
digitalWrite (pinl, LOW);
digitalWrite (pinr, LOW);
digitalWrite (pinb, LOW);
//288000
// ez különbözik a soros monitortól, nem biztos benne, hogy felfelé vagy lefelé
// Serial.begin (14400);
}
int lls = 0;
int rls = 0;
int al = 0;
// a hurok rutin örökre újra és újra fut:
érvénytelen hurok () {
// olvassa el a 0-as analóg pin bemenetét:
int sensorValue1 = digitalRead (pinf);
int sensorValue2 = digitalRead (pinl);
int sensorValue3 = digitalRead (pinr);
int sensorValue4 = digitalRead (pinb);
// kinyomtatja az olvasott értéket:
Serial.print (sensorValue1);
Serial.print („:“);
Serial.print (sensorValue2);
Serial.print („:“);
Serial.print (sensorValue3);
Serial.print („:“);
Serial.println (sensorValue4);
késleltetés (25); // a stabilitás közötti leolvasások közötti késleltetés
if (sensorValue1 == 1) {
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 120);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 120);
késleltetés (500);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
// késleltetés (500);
}
más{
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);
késleltetés (100);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
// késleltetés (500);
}
más
{
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);
késleltetés (100);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
// késleltetés (500);
}
más
{
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);
késleltetés (500);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
// késleltetés (500);
}
más
{
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
}
}
================================================

Most a felhasználói felület. Csomagolja ki a csatolt mappát; minden szükséges kódnak ott kell lennie. Mindössze annyit kell tennie, hogy az egyedi Electric Imp API-ba illessze be az index.html fájlba a megfelelő helyen. Ezt a fájlban jelöltem.

3. lépés: Adjunk meg néhány látványt

Úgy döntöttem, hogy egy régi iPhone-t helyezek a fejegységbe, amely a Mars felvételét mutatja. Ez bármi lehet, még egy videokamera is, így láthatja, hogy hol vezet a Skype vagy a Facetime …

4. lépés: Menjünk ki!

Itt van egy gyors videó a Mini Mars Rover-ről, amely az SWSW 2013 NASA eseményén lógott!

Az SXSW rover a michael-től rövidebb a Vimeo-n.

Ennek a projektnek az a nagyszerű dolog, hogy a kódot könnyű megváltoztatni a robot viselkedésének, ill.
Élvez!
M

A
Távirányító verseny