Circuits

Com crear un Internet Rover controlat per Internet: 4 passos (amb imatges)

How to - Land Rover (2017) - InControl Touch Pro: How to insert your SIM card

How to - Land Rover (2017) - InControl Touch Pro: How to insert your SIM card

Taula de continguts:

Anonim

Aquest manual us explicarà tot el que necessiteu per construir un robot de terreny controlat per Internet. Es tracta d’un model basat en el rover Mars Curiosity. Aquest robot es pot controlar des de qualsevol dispositiu habilitat per a Internet, de manera que pugueu controlar aquesta cosa a l’altre costat del planeta (o bé a Mart si tingués internet). Tot aquest projecte està impulsat per Amazing Electric Imp (un dispositiu de mida de targeta SD que us permet connectar qualsevol cosa a Internet) i un Arduino.
Aquest projecte va ser creat per Michael Shorter, Tom Metcalfe, Jon Rogers i Ali Napier al Product Design Research Studio de Dundee.

El que necessitareu:
Xassís Arduino 6um Wild Thumper - http://robosavvy.com/store/product_info.php/products_id/1167?osCsid=5e99bbe12a25938cbf4267ea6bc497ea
Controlador Arduino de Wild Thumper - http://robosavvy.com/store/product_info.php/products_id/1168
Bateria LiPo: 7,2 V 5000 ma
Acrílic de 3 mm
Acrílic de 5 mm
Aixeta de 10 cm de diàmetre
Tub de diàmetre de 35 mm
varetes d'alumini
Imp elèctric
Tauler de sortida elèctrica d’imp
Alguns cables de pont
Cinta adhesiva per a monopatins

Subministraments:

Pas 1: Construint el Rover

Hi trobareu els fitxers d’Adobe Illustrator que us permetran tallar per làser totes les parts que necessiteu. Hi ha tres fitxers en total. Un fitxer per a totes les peces de 3 mm de gruix, una per a les peces de 5 mm de gruix i una per a les parts de cinta adhesiva.
Esperem que les imatges següents donin una bona idea de com enganxar el xassís nou al Wild Thumper 6WD.
El cablejat de Electric Imp a l'Arduino és fàcil:
Pin 1: arduino 10
Pin d’imp de 2 - Pin Arduino 9
Pin d’imp de 8 - Pin Arduino 12
Pin d’imp de 9 - Arduino pin 2
El Electric Imp també necessitarà 5 V o 3,3 V, depenent de la seva targeta de sortida, i també de terra.
Vaig decidir connectar-me amb un interruptor de commutació en línia amb la bateria per fer-ho fàcilment encès i apagat.

Pas 2: El costat web de les coses

Aquí teniu algun codi per a vosaltres …
Esquirol per a imp (adaptat d'una font en línia que ja no puc trobar …):
================================================
server.show ("");
// control remot per a mòbils
ledState <- 0;
funció de parpelleig ()
{
// Canvia l'estat
ledState = ledState? 0: 1;
server.log ("ledState val:" + ledState);
// Reflecteix l'estat al pin
hardware.pin9.write (ledState);
}
// classe d’entrada per al canal de control LED
La classe inputHTTP estén InputPort
{
nom = "control de potència"
type = "number"
conjunt de funcions (httpVal)
{
server.log ("Rebut val:" + httpVal);
si (httpVal == 1) {
hardware.pin9.write (1);
imp.sleep (0,1);
hardware.pin9.write (0);
}
més si (httpVal == 2) {
hardware.pin8.write (1);
imp.sleep (0,1);
hardware.pin8.write (0);
}
més si (httpVal == 3) {
hardware.pin2.write (1);
imp.sleep (0,1);
hardware.pin2.write (0);
}
més si (httpVal == 4) {
hardware.pin1.write (1);
imp.sleep (0,1);
hardware.pin1.write (0);
}
més {
;
}
}
}
watchdog de la funció () {
imp.wakeup (60, vigilant);
server.log (httpVal);
}
// Inicieu el control de vigilància escrivint cada 60 segons
// watchdog ();
// Configureu els pins com a sortida de drenatge obert amb tracció interna
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);
// Registre amb el servidor
imp.configure ("Reomote Control for Rover", inputHTTP (), );
================================================


Arduino code (gràcies Chris Martin!) …
================================================
/*
AnalogReadSerial
Llegeix una entrada analògica al pin 0, imprimeix el resultat al monitor sèrie.
Connecteu el pin central d’un potenciòmetre al pin A0 i els pins externs a + 5V i el terra.
Aquest codi d’exemple es troba en el domini públic.
*/
int pinf = 2;
int pinl = 12;
int pinr = 10;
int pinb = 9;
#define LmotorA 3 // motor esquerre H pont, entrada A
#define LmotorB 11 // Motor esquerre H Pont, entrada B
#define RmotorA 5 // motor dret H pont, entrada A
#define RmotorB 6 // Motor dret H pont, entrada B
#define v 255
#incloure
// Servo myservo;
// int led = 12;
int pos = 0;
// la rutina de configuració s'executa una vegada quan premeu restabliment:
void setup () {
//myservo.attach(9);
// PinMode (led, OUTPUT);
pinMode (pinf, INPUT); // inicialitzar la comunicació en sèrie a 9600 bits per segon:
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
// Això és diferent en el monitor sèrie no està segur de si està amunt o avall
// Serial.begin (14400);
}
int lls = 0;
int rls = 0;
int al = 0;
// La rutina de bucle corre una i altra vegada per sempre:
bucle buid () {
// llegeix l'entrada en el pin 0:
int sensorValue1 = digitalRead (pinf);
int sensorValue2 = digitalRead (pinl);
int sensorValue3 = digitalRead (pinr);
int sensorValue4 = digitalRead (pinb);
// imprimeix el valor que llegiu:
Serial.print (sensorValue1);
Serial.print (":“);
Serial.print (sensorValue2);
Serial.print (":“);
Serial.print (sensorValue3);
Serial.print (":“);
Serial.println (sensorValue4);
retard (25); // retard entre la lectura de l’estabilitat
if (sensorValue1 == 1) {
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 120);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 120);
retard (500);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
// retard (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);
retard (100);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
// retard (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);
retard (100);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
// retard (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);
retard (500);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
// retard (500);
}
més
{
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
}
}
================================================

Ara per a la interfície d’usuari. Descomprimiu la carpeta adjuntada; tot el codi necessari hauria d’haver-hi. Tot el que heu de fer és enganxar l’API Electric Imp única al fitxer index.html a l’espai adequat. He etiquetat això dins del fitxer.

Pas 3: donem-li algunes visuals

Vaig decidir posar un iPhone vell a la unitat principal que mostra imatges de Mart. Això podria ser qualsevol cosa, fins i tot una càmera de vídeo perquè pugueu veure on esteu conduint a través de Skype o Facetime …

Pas 4: Anem a endur-se!

Aquí teniu un vídeo ràpid de The Mini Mars Rover en un esdeveniment de la NASA al SWSW 2013!

Rover SXSW des de michael més curt a Vimeo.

El millor d’aquest projecte és que és fàcil ajustar el codi per canviar els comportaments o interfície del robot.
Gaudeix!
M

Finalista a la
Concurs de control remot