Ta Instructable vam bo razložil vse, kar morate vedeti, da boste lahko zgradili internetnega robota, ki bo nadzorovan. Ta je zgolj modeliran na Mars Curiosity roverju. Ta robot je mogoče upravljati s katerokoli napravo, ki omogoča internet, tako da lahko nadzirate to stvar na drugi strani planeta (ali Mars, če je imel samo internet). Ta projekt je napajan z neverjetno Electric Imp (napravo velikosti SD, ki omogoča povezavo z internetom) in Arduinom.
Projekt sta ustvarila Michael Shorter, Tom Metcalfe, Jon Rogers in Ali Napier v produkcijskem raziskovalnem studiu Dundee.
Kaj potrebujete:
6WD Wild Thumper podvozje Arduino - http://robosavvy.com/store/product_info.php/products_id/1167?osCsid=5e99bbe12a25938cbf4267ea6bc497ea
Wild Thumper Arduino krmilnik - http://robosavvy.com/store/product_info.php/products_id/1168
LiPo baterija - 7.2V 5000mah
3mm akril
5 mm akril
Odvodno cev premera 10 cm
Cevi premera 35 mm
aluminijaste palice
Električni imp
Električna plošča za izmet
Nekateri skakalni kabli
Snemalni trak za rolko
Dobave:
Korak 1: Gradnja Roverja
Priložene so datoteke Adobe Illustrator, ki vam omogočajo lasersko rezanje vseh delov, ki jih potrebujete. Skupaj je na voljo tri datoteke. Ena datoteka za vse 3 mm debele dele, enega za 5 mm debele dele in enega za dele z grip trakom.
Upajmo, da slike spodaj dajejo dobro predstavo o tem, kako vstaviti novo podvozje za vaš Wild Thumper 6WD skupaj.
Ožičenje Electric Imp za Arduino je enostavno:
Imp pin 1 - Arduino pin 10
Imp pin 2 - Arduino zatič 9
Imp pin 8 - Arduino zatič 12
Imp pin 9 - Arduino zatič 2
Električni Imp bo potreboval bodisi 5V ali 3.3V, odvisno od vaše breakout krovu, kot tudi tla.
Odločila sem se, da v žici preklopite žico v skladu z akumulatorjem, da bi bilo enostavno vklopiti in izklopiti.
2. korak: Spletna stran stvari
Tukaj je nekaj kode za vas.
Odločil sem se, da bom v glavni enoti postavil stari iPhone, ki bo prikazoval posnetke Marsa. To je lahko karkoli, celo video kamera, tako da lahko vidite, kje vozite s storitvijo Skype ali Facetime … SXSW rover od michael krajši na Vimeo. Finalist v
Veverica za imp (prilagojeno iz spletnega vira, ki ga ne morem več najti…):
================================================
server.show (“”);
// daljinski upravljalnik za rover
ledState <- 0;
funkcija blink ()
{
// Spremeni stanje
ledState = ledState? 0: 1;
server.log (“ledState val:“ + ledState);
// Reflect stanje na pin
hardware.pin9.write (ledState);
}
// vhodni razred za LED kontrolni kanal
class inputHTTP razširja InputPort
{
ime = "nadzor moči"
type = “number”
nabor funkcij (httpVal)
{
server.log (“Prejeto val:“ + httpVal);
če (httpVal == 1) {
hardware.pin9.write (1);
imp.sleep (0.1);
hardware.pin9.write (0);
}
sicer če (httpVal == 2) {
hardware.pin8.write (1);
imp.sleep (0.1);
hardware.pin8.write (0);
}
sicer če (httpVal == 3) {
hardware.pin2.write (1);
imp.sleep (0.1);
hardware.pin2.write (0);
}
sicer če (httpVal == 4) {
hardware.pin1.write (1);
imp.sleep (0.1);
hardware.pin1.write (0);
}
else {
;
}
}
}
nadzornik funkcij () {
imp.wakeup (60, nadzornik);
server.log (httpVal);
}
// začetek nadzora nad vsakimi 60 sekundami
// watchdog ();
// Konfiguriramo zatiče kot odprti izhodni izhod z notranjim dvigom
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);
// Registrirajte se s strežnikom
imp.configure (“Reomote kontrola za Rover”, inputHTTP (), );
================================================
Arduino koda (hvala Chris Martin!)…
================================================
/*
AnalogReadSerial
Prebere analogni vhod na nožici 0, natisne rezultat na serijski monitor.
Pritrdite sredinski zatič potenciometra na zatič A0, zunanji zatiči pa na + 5V in ozemite.
Ta primerna koda je v javni domeni.
*/
int pinf = 2;
int pinl = 12;
int pinr = 10;
int pinb = 9;
#define LmotorA 3 // Levi motor H most, vhod A
#define LmotorB 11 // Levi motor H most, vhod B
#define RmotorA 5 // Desni motor H most, vhod A
#definirati RmotorB 6 // Desni most H motorja, vhod B
#define v 255
#include
// Servo myservo;
// int led = 12;
int pos = 0;
// nastavitveni program teče enkrat, ko pritisnete reset:
void setup () {
//myservo.attach(9);
// pinMode (led, OUTPUT);
pinMode (pinf, INPUT); // inicializiranje serijske komunikacije pri 9600 bitov na sekundo:
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
// na serijskem monitorju se to ne razlikuje, če je gor ali dol
// Serial.begin (14400);
}
int lls = 0;
int rls = 0;
int al = 0;
// rutina zanke se vedno znova zažene:
void loop () {
// bere vhod za analogni pin 0:
int sensorValue1 = digitalRead (pinf);
int sensorValue2 = digitalRead (pinl);
int sensorValue3 = digitalRead (pinr);
int sensorValue4 = digitalRead (pinb);
// natisne vrednost, ki jo berete:
Serial.print (senzorValue1);
Serial.print (”:“);
Serial.print (senzorValue2);
Serial.print (”:“);
Serial.print (senzorValue3);
Serial.print (”:“);
Serial.println (senzorValue4);
zamuda (25); // zamik med branjem za stabilnost
če (sensorValue1 == 1) {
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 120);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 120);
zamuda (500);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
// zamuda (500);
}
else {
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
}
če (sensorValue2 == 1) {
// digitalWrite (LED, HIGH);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 250);
analogWrite (LmotorA, 250);
analogWrite (LmotorB, 0);
zamuda (100);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
// zamuda (500);
}
drugače
{
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
}
če (sensorValue4 == 1) {
// digitalWrite (LED, HIGH);
analogWrite (RmotorA, 250);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 250);
zamuda (100);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
// zamuda (500);
}
drugače
{
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
}
če (sensorValue3 == 1) {
// digitalWrite (LED, HIGH);
analogWrite (RmotorA, 120);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 120);
analogWrite (LmotorB, 0);
zamuda (500);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
// zamuda (500);
}
drugače
{
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
}
}
================================================
Zdaj za uporabniški vmesnik. Razširite priloženo mapo; vsa potrebna koda mora biti tam. Vse kar morate storiti je, da prilepite svoj edinstven Electric Imp API v datoteko index.html v ustreznem prostoru. To sem označil v datoteki.
3. korak: Dajmo nekaj vizualij
4. korak: Gremo!
Uživajte!
M
Tekmovanje na daljavo