Schaltungen

So bauen Sie einen internetgesteuerten Mars Rover: 4 Schritte (mit Bildern)

#AskNASA┃ How Do You Build a Mars Rover?

#AskNASA┃ How Do You Build a Mars Rover?

Inhaltsverzeichnis:

Anonim

Dieses Instructable erklärt alles, was Sie wissen müssen, um einen internetgesteuerten All-Terrain-Roboter zu bauen. Dieser ist zufällig dem Mars Curiosity Rover nachempfunden. Dieser Roboter kann von jedem internetfähigen Gerät aus gesteuert werden, sodass Sie dieses Ding auf der anderen Seite des Planeten (oder auf dem Mars, wenn es nur das Internet hätte) steuern können. Dieses Projekt basiert auf dem erstaunlichen Electric Imp (einem Gerät im SD-Kartenformat, mit dem Sie alles mit dem Internet verbinden können) und einem Arduino.
Dieses Projekt wurde von Michael Shorter, Tom Metcalfe, Jon Rogers und Ali Napier im Product Design Research Studio in Dundee erstellt.

Was wirst du brauchen:
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-Akku - 7,2 V, 5000 mAh
3mm Acryl
5mm Acryl
Abflussrohr mit 10 cm Durchmesser
Rohrdurchmesser 35 mm
Aluminiumstangen
Elektrischer Imp
Elektrisches Imp Breakout Board
Einige Überbrückungskabel
Skateboard-Griffband

Zubehör:

Schritt 1: Aufbau des Rovers

Im Anhang finden Sie die Adobe Illustrator-Dateien, mit denen Sie alle benötigten Teile laserschneiden können. Insgesamt gibt es drei Dateien. Eine Feile für alle 3 mm dicken Teile, eine für die 5 mm dicken Teile und eine für die Griffbandteile.
Hoffentlich geben die Bilder unten eine gute Vorstellung davon, wie Sie das neue Chassis für Ihren Wild Thumper 6WD zusammenkleben können.
Die Verkabelung des Electric Imp zum Arduino ist einfach:
Imp Pin 1 - Arduino Pin 10
Imp Pin 2 - Arduino Pin 9
Imp Pin 8 - Arduino Pin 12
Imp Pin 9 - Arduino Pin 2
Der Electric Imp benötigt je nach Breakout-Board und Masse entweder 5 V oder 3,3 V.
Ich beschloss, einen Kippschalter in Übereinstimmung mit der Batterie zu verdrahten, um das Ein- und Ausschalten zu vereinfachen.

Schritt 2: Die Webseite der Dinge

Hier ist ein Code für Sie …
Eichhörnchen für Kobold (aus einer Online-Quelle, die ich nicht mehr finde …):
================================================
server.show (“”);
// Fernbedienung für Rover
ledState <- 0;
Funktionsblinken ()
{
// Ändere den Zustand
ledState = ledState? 0: 1;
server.log ("ledState val:" + ledState);
// Zustand zum Pin reflektieren
hardware.pin9.write (ledState);
}
// Eingangsklasse für LED-Steuerkanal
Die Klasse inputHTTP erweitert InputPort
{
name = "Leistungsregelung"
Typ = "Nummer"
Funktionssatz (httpVal)
{
server.log ("Received val:" + httpVal);
if (httpVal == 1) {
hardware.pin9.write (1);
Impulsschlaf (0,1);
hardware.pin9.write (0);
}
sonst wenn (httpVal == 2) {
hardware.pin8.write (1);
Impulsschlaf (0,1);
hardware.pin8.write (0);
}
sonst wenn (httpVal == 3) {
hardware.pin2.write (1);
Impulsschlaf (0,1);
hardware.pin2.write (0);
}
sonst wenn (httpVal == 4) {
hardware.pin1.write (1);
Impulsschlaf (0,1);
hardware.pin1.write (0);
}
sonst{
;
}
}
}
Funktions-Watchdog () {
imp.wakeup (60, Wachhund);
server.log (httpVal);
}
// Watchdog-Schreibvorgang alle 60 Sekunden starten
// watchdog ();
// Konfigurieren Sie Pins als Open Drain-Ausgang mit internem Pullup
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);
// Registriere dich beim Server
imp.configure (“Fernbedienung für Rover”, inputHTTP (), );
================================================


Arduino-Code (danke Chris Martin!)…
================================================
/*
AnalogReadSerial
Liest einen Analogeingang an Pin 0, druckt das Ergebnis auf den seriellen Monitor.
Verbinden Sie den mittleren Pin eines Potentiometers mit Pin A0 und die äußeren Pins mit + 5V und Masse.
Dieser Beispielcode ist gemeinfrei.
*/
int pinf = 2;
int pinl = 12;
int pinr = 10;
int pinb = 9;
# LmotorA definieren 3 // Linke Motor-H-Brücke, Eingang A
#define LmotorB 11 // Linke Motor-H-Brücke, Eingang B
#define RmotorA 5 // Rechte Motor-H-Brücke, Eingang A
#define RmotorB 6 // Rechte Motor-H-Brücke, Eingang B
#define v 255
#umfassen
// Servo myservo;
// int led = 12;
int pos = 0;
// Die Setup-Routine wird einmal ausgeführt, wenn Sie Reset drücken:
void setup () {
//myservo.attach(9);
// pinMode (led, OUTPUT);
pinMode (pinf, INPUT); // Initialisiere die serielle Kommunikation mit 9600 Bits pro Sekunde:
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
// dies ist anders auf dem seriellen Monitor nicht sicher, ob es hoch oder runter ist
// Serial.begin (14400);
}
int lls = 0;
int rls = 0;
int al = 0;
// Die Schleifenroutine wird für immer wiederholt:
void loop () {
// lese den Eingang auf Analog Pin 0:
int sensorValue1 = digitalRead (pinf);
int sensorValue2 = digitalRead (pinl);
int sensorValue3 = digitalRead (pinr);
int sensorValue4 = digitalRead (Pinb);
// drucke den gelesenen Wert aus:
Serial.print (sensorValue1);
Serial.print (”:“);
Serial.print (sensorValue2);
Serial.print (”:“);
Serial.print (sensorValue3);
Serial.print (”:“);
Serial.println (sensorValue4);
Verzögerung (25); // Verzögerung zwischen den Lesevorgängen für Stabilität
if (sensorValue1 == 1) {
analogWrite (RmotorA, 0);
analogWrite (Rmotor B, 120);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 120);
Verzögerung (500);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
// delay (500);
}
sonst{
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);
Verzögerung (100);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
// delay (500);
}
sonst
{
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);
Verzögerung (100);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
// delay (500);
}
sonst
{
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);
Verzögerung (500);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
// delay (500);
}
sonst
{
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
}
}
================================================

Nun zur Benutzeroberfläche. Entpacken Sie den angehängten Ordner. Der gesamte benötigte Code sollte sich dort befinden. Alles, was Sie tun müssen, ist, Ihre einzigartige Electric Imp-API in die Datei index.html an der entsprechenden Stelle einzufügen. Ich habe dies in der Datei beschriftet.

Schritt 3: Lassen Sie es uns einige Visuals geben

Ich beschloss, ein altes iPhone in die Headunit zu stecken, das Aufnahmen vom Mars zeigt. Dies kann alles sein, sogar eine Videokamera, mit der Sie über Skype oder Facetime sehen können, wohin Sie fahren …

Schritt 4: Lassen Sie uns umherziehen!

Hier ist ein kurzes Video von The Mini Mars Rover, der bei einem NASA-Event auf der SWSW 2013 rumhängt!

SXSW-Rover von Michael kürzer auf Vimeo.

Das Tolle an diesem Projekt ist, dass es einfach ist, den Code zu optimieren, um das Verhalten oder die Benutzeroberfläche des Roboters zu ändern.
Genießen!
M

Finalist in der
Fernbedienungswettbewerb