Inhaltsverzeichnis:

Android G1 Serial zu Arduino Roboter - Gunook
Android G1 Serial zu Arduino Roboter - Gunook

Video: Android G1 Serial zu Arduino Roboter - Gunook

Video: Android G1 Serial zu Arduino Roboter - Gunook
Video: PopBot Android Arduino - Demo voice recognition 20110503 2024, September
Anonim
Android G1 Seriell zu Arduino Roboter
Android G1 Seriell zu Arduino Roboter
Android G1 Seriell zu Arduino Roboter
Android G1 Seriell zu Arduino Roboter
Android G1 Seriell zu Arduino Roboter
Android G1 Seriell zu Arduino Roboter

Erfahren Sie, wie Ihr Android-Handy einen Roboter mit einem Arduino-Board steuern kann. Das Telefon nimmt Befehle über Telnet von einem anderen Telefon oder einem PC entgegen, sodass Sie den Roboter aus der Ferne steuern können. Dieses Projekt wird das G1 ansonsten nicht ändern, sodass Sie es nach dem Abdocken weiterhin als Ihr normales Telefon verwenden können. Warum? Durch die Verwendung billiger elektronischer Komponenten wie Arduino-Boards können Sie sie mit Ihrem 400-Dollar-Telefon koppeln, um einen fantastischen Roboter zu bauen. Es würde Hunderte von Dollar kosten, einem Hobby-Bot GPS, LCDs, Bewegungssensoren, Wi-Fi, Mobilfunkverbindungen, Lautsprecher und mehr hinzuzufügen, aber Ihr Telefon verfügt bereits über diese! Zusammen mit dem Android G1 und dem Arduino-Board können Sie kostengünstige Elektronik wie einfache Servos und Sensoren verwenden, um leistungsstarke Geräte wie Roboter, Remote-Telepräsenz oder lustige Spielzeuge für Kinder zu bauen. Weitere Informationen unter Cellbots.com. Hinweis: Dieses Projekt erfordert derzeit ein Android G1 mit Root-Zugriff, um die serielle Ausgabe vom Telefon an den Arduino-Roboter zu verwenden. Sie können Ihrem Arduino-Board ein $20 BlueTooth-Modul hinzufügen, damit das Telefon über serielles BlueTooth mit ihm spricht, wenn Sie die kommerzielle Android-Software verwenden möchten. Besonderer Dank: Wir haben dem Hacker Dojo in Mountain View, CA zu danken, dass er uns kontaktiert, bei einigen kniffligen Problemen über seine Mailingliste mit großartigen Mitgliedern geholfen hat und 74LS04-Chips auf Lager hat. Der Großteil der Montage wurde im Tech Shop in Menlo Park durchgeführt.

Schritt 1: Benötigte Artikel

Benötigte Artikel
Benötigte Artikel
Benötigte Artikel
Benötigte Artikel
Benötigte Artikel
Benötigte Artikel

Um dieses Tutorial abzuschließen, benötigen Sie Folgendes: Hardware: - Android G1 Dev Phone (oder ein anderes Android-Gerät mit Root-Zugriff und serieller Ausgabe) - Arduino (ich verwende ein Freeduino SB, aber jeder sollte es tun) - 3.3v bis 5v Konverter, wenn Sie keinen 3,3-V-Arduino verwenden (ich verwende einen 74LS04-Chip für unter 1 US-Dollar, aber andere Optionen sind verfügbar) - HTC-USB-Breakout-Platine für den G1 - Lötausrüstung für zwei Schnellverbindungen - Ein Roboterkörper mit Mikroservos (Karton, Acryl, Laufflächen, Räder, alles ist möglich)Software: - Android Scripting Environment (ASE) - Telnet-Client für Ihren PC (ich verwende PuTTY unter Windows) - Arduino-Entwicklungsumgebung - (optional) Serieller Client für Ihren PC (ich verwende dafür auch PuTTY unter Windows) - (optional) Android SDK Wenn Sie den Anweisungen folgen können, können Sie dieses Tutorial mit wenig Kenntnissen in Python, Arduino, Android oder Elektronik durchführen. Sie werden diese Dinge wissen wollen, wenn Sie über eine blinkende LED hinausgehen möchten, aber dies wird Ihnen den Einstieg erleichtern.

Schritt 2: Android G1 mit aktiviertem seriellem Ausgang

Android G1 mit aktiviertem seriellem Ausgang
Android G1 mit aktiviertem seriellem Ausgang
Android G1 mit aktiviertem seriellem Ausgang
Android G1 mit aktiviertem seriellem Ausgang
Android G1 mit aktiviertem seriellem Ausgang
Android G1 mit aktiviertem seriellem Ausgang

G1 werden nicht mit der Fähigkeit geliefert, serielle Befehle über den USB-Anschluss zu senden, und es gibt keine native Option, um dies zu aktivieren. Wenn Sie ein fortgeschrittener Android SDK-Benutzer sind, können Sie Ihren eigenen Build erstellen, aber ich habe mich für Cyanogenmod 4.2.13 entschieden. Wenn Sie andere Android-Geräte mit serieller Ausgabe kennen, fügen Sie sie den Kommentaren hinzu.

Optional können Sie den Links zu dieser Anleitung folgen, um von Ihrem PC aus über USB mit Ihrem G1 zu sprechen. Diese Seriell-zu-USB-Verbindung ist für dieses Tutorial nicht erforderlich, aber ich habe sie als netten Gesundheitscheck verwendet, um zu überprüfen, ob das Telefon seriell sendet. Wenn Sie die andere intructable nicht verwenden, um zu überprüfen, ob die serielle Ausgabe funktioniert, können Sie diese einfache Überprüfung versuchen: 1. Öffnen Sie die Terminal-App auf dem G1 (wird mit Cyanogen geliefert, aber laden Sie eine vom Markt herunter, wenn Sie ein anderes Bild haben) 2 Navigieren Sie zum Verzeichnis /dev/, indem Sie cd /dev/ eingeben 3. Geben Sie ls (das ist ein L) ein und suchen Sie in der zurückgegebenen Liste nach ttyMSM2 Das Python-Skript, das wir später verwenden werden, sendet Befehle an '/dev/ttyMSM2' in damit sie die serielle Verbindung verlassen. Da hierfür Root-Zugriff erforderlich ist, müssen Sie die Berechtigungen jedes Mal ändern, wenn Sie das Telefon neu starten. Um dies zu tun: 1. Öffnen Sie die Terminal-App auf dem Telefon 2. Geben Sie 'chmod 777 /dev/ttyMSM2' ein. Dann können Sie das Python-Skript aus dem Android Scripting-Edit im nächsten Schritt ausführen und es haben Zugriff zum Senden der seriellen Ausgabe.

Schritt 3: Installieren Sie die Android Scripting Environment (ASE) mit Python

Installieren Sie die Android Scripting Environment (ASE) mit Python
Installieren Sie die Android Scripting Environment (ASE) mit Python
Installieren Sie die Android Scripting Environment (ASE) mit Python
Installieren Sie die Android Scripting Environment (ASE) mit Python

Die Skripte, die wir verwenden, um eine offene Socket-Verbindung auf dem Telefon herzustellen und Befehle zu senden, sind in Python geschrieben. Um dies auf dem G1 auszuführen, benötigen wir die Android Scripting Environment. Wenn Sie es nicht im Market sehen, können Sie es herunterladen, indem Sie den Barcode auf dieser Seite scannen, der auf die APK-Datei auf dieser Seite verweist.

Sobald Sie ASE installiert und ausgeführt haben, möchten Sie das Python-Modul aus dem Menü hinzufügen: 1. Öffnen Sie ASE und stellen Sie sicher, dass Sie eine funktionierende Internetverbindung haben (Wi-Fi oder 3G) 2. Drücken Sie die Menütaste auf dem Telefon und wählen Sie Interpreter 3. Drücken Sie erneut auf Menü und wählen Sie Hinzufügen 4. Wählen Sie Python (derzeit v2.6.2 zum Zeitpunkt des Schreibens) und es werden einige ZIP-Dateien heruntergeladen Sie können das Erstellen, Öffnen, Bearbeiten und Ausführen von Skripten erkunden, um sich mit Python vertraut zu machen über ASE, aber es ist nicht erforderlich.

Schritt 4: Kopieren Sie das Cellbot.py-Skript und führen Sie es aus, um das Python-Programm zu starten

Kopieren Sie das Cellbot.py-Skript und führen Sie es aus, um das Python-Programm zu starten
Kopieren Sie das Cellbot.py-Skript und führen Sie es aus, um das Python-Programm zu starten

Dieses Tutorial verwendet ein Python-Skript, um das "Gehirn" des Roboters zu sein. Holen Sie sich den neuesten Code aus unserem Open-Source-Google-Code-Projekt. Sie benötigen nur die Datei cellbot.py, aber andere können Ihnen bei verschiedenen Dingen helfen, die Sie erkunden möchten. Ich habe das Telefon einfach an den USB-Anschluss meines PCs angeschlossen und das Laufwerk gemountet, bevor ich die Datei nach /sdcard/ase/scripts kopiert habe.

Das Programm erstellt eine offene Socket-Verbindung, um eine eingehende Telnet-Sitzung zu akzeptieren. Es druckt auch die empfangenen Befehle auf dem Bildschirm aus, während sie über die serielle Schnittstelle gesendet werden. Legen Sie diese Datei auf der SD-Karte des Telefons im Verzeichnis /ase/scripts/ ab. Detaillierte Schritte zum Laden und Ausführen der Skripte: 1. Kopieren Sie das cellbot.py-Skript in das /ase/scripts/ -Verzeichnis der SD-Karte 2. die SD-Karte von Ihrem PC, wenn Sie sie auf diese Weise kopiert haben, da das Telefon nicht gleichzeitig auf die Dateien zugreifen kann, die Ihr PC ist. 3. Öffnen Sie die Android Scripting Environment-App 4. Klicken Sie auf cellbot.py, um sie zu starten Sie sollten eine Bestätigung sehen, dass das Gerät jetzt bereit ist, eingehende Telnet-Sitzungen auf Port 9002 zu akzeptieren. Tipp: Führen Sie unbedingt "chmod 777" aus /dev/ttyMSM2" zuerst aus Schritt 3. Siehe Schritt 5, um die IP-Adresse des Telefons zu ermitteln.

Schritt 5: Telnet in den G1 und testen Sie das Senden von Befehlen

Telnet in den G1 und testen Sie das Senden von Befehlen
Telnet in den G1 und testen Sie das Senden von Befehlen
Telnet in den G1 und testen Sie das Senden von Befehlen
Telnet in den G1 und testen Sie das Senden von Befehlen
Telnet in den G1 und testen Sie das Senden von Befehlen
Telnet in den G1 und testen Sie das Senden von Befehlen

Das Telefon sollte bereit sein, damit Sie sich per Telnet einloggen und Befehle von Ihrem PC senden können. Es druckt sie auf dem Bildschirm des Telefons aus, um zu bestätigen, was es empfängt. Ich habe PuTTY unter Windows verwendet, aber wir haben bestätigt, dass Minicom auf Macs hervorragend funktioniert, wie in dieser Anleitung beschrieben.

Zuerst müssen Sie die IP-Adresse Ihres Telefons ermitteln. Dies ist verfügbar, indem Sie auf Menü > Einstellungen > Drahtlose Steuerung > Wi-Fi-Einstellungen gehen und dann auf die derzeit aktive Verbindung drücken. Eine Popup-Toastnachricht wird mit der aktuellen IP-Adresse im lokalen Netzwerk angezeigt. Notieren Sie dies, da Sie dies jedes Mal verwenden werden, wenn Sie eine Telnet-Sitzung von Ihrem PC aus öffnen möchten. IP-Zuweisungen laufen normalerweise nach einer bestimmten Anzahl von Tagen ab, daher müssen Sie dies möglicherweise erneut überprüfen. Hinweis: In diesem Tutorial wird davon ausgegangen, dass sich Ihr PC und Ihr Telefon im selben lokalen Netzwerk befinden. Das Routing zum Telefon von außerhalb des lokalen Netzes sollte möglich sein, wird aber hier nicht behandelt. Öffnen Sie Ihren Telnet-Client Ihrer Wahl und verbinden Sie sich mit der IP des Telefons auf Port 9002. Von einer Befehlszeile aus tun Sie dies als "telnet 192.168.1.1 9002" unter Verwendung der tatsächlichen IP des Telefons. Geben Sie einige Zeichen ein und drücken Sie die Eingabetaste, damit sie auf dem Bildschirm des Telefons angezeigt werden. Sie können ein q eingeben, um das Python-Skript zu beenden, wodurch Ihre Terminalsitzung geschlossen werden sollte. Wenn Sie aus irgendeinem Grund keine Verbindung über Telnet herstellen können und das Programm beenden müssen, sollte ein einfacher Neustart des Telefons ausreichen. Fortgeschrittene Benutzer möchten möglicherweise die Prozess-ID über ps finden und dann mit kill beenden. Erweitert: Eine zukünftige Version davon könnte einen lokalen Webserver vom Telefon aus ausführen, anstatt Befehle über Telnet zu akzeptieren. Wir erkunden auch XMPP, um mit Ihrem Roboter zu chatten.

Schritt 6: Verbinden Sie einen 3,3 V bis 5 V Level Shifter mit dem Arduino

Verbinden Sie einen 3,3 V bis 5 V Level Shifter mit dem Arduino
Verbinden Sie einen 3,3 V bis 5 V Level Shifter mit dem Arduino
Verbinden Sie einen 3,3 V bis 5 V Level Shifter mit dem Arduino
Verbinden Sie einen 3,3 V bis 5 V Level Shifter mit dem Arduino
Verbinden Sie einen 3,3 V bis 5 V Level Shifter mit dem Arduino
Verbinden Sie einen 3,3 V bis 5 V Level Shifter mit dem Arduino

Das in diesem Tutorial verwendete Arduino ist ein 5-V-Modell, daher müssen wir das 3,3-V-Signal, das aus dem G1 kommt, mit einem Pegelumsetzer umwandeln. Es sollte möglich sein, direkt an einen 3,3-V-Arduino anzuschließen, aber das habe ich nicht getestet.

Es gibt mehrere Möglichkeiten, dies zu erreichen, aber wir verwenden in diesem Beispiel einen 74LS04-Chip. Sie können hier nach einem suchen und sie sind wahrscheinlich unter 1 USD. Tim und ich haben unsere im Hacker Dojo in Mountain View, CA, abgeholt, aber diese sind SEHR verbreitet und sollten überall dort reichlich vorhanden sein, wo Chips verkauft oder gespendet werden. Auf hohem Niveau senden wir einfach das TX-Signal von der HTS-USB-Breakout-Platine an Pin 1 des 74LS04-Chips. Damit es funktioniert, gehen wir zweimal durch den Chip und kommen Pin 4 zum RX-Pin des Freeduino SB (Ihr serieller Pin kann anders sein, wenn Sie ein anderes Arduino-Board haben, aber alle sollten dies unterstützen). Befolgen Sie diese Schritte, um den Pegelumsetzer zu verdrahten und die HTC-USB-Platine anzuschließen (schließen Sie sie noch nicht an das Telefon an und trennen Sie die Stromversorgung des Arduino): 1. Stecken Sie den 74LS04-Chip auf Ihr Steckbrett. Stellen Sie sicher, dass der Chip die Mittelpause überwindet, damit die Stifte nicht kurzgeschlossen sind (eine dumme Bewegung, die ich zuerst gemacht habe) Ground) und 8 (TX0), da wir für dieses Tutorial nur eine unidirektionale Übertragung durchführen. 3. Verbinden Sie das andere Ende des Massekabels (Pin 7) mit einer Masse auf Ihrem Steckbrett (das mit einer Masse auf Ihrem Arduino verbunden sein sollte) 4. Verbinden Sie das andere Ende des TX0-Kabels (Pin 8) mit dem Steckbrett, wo es läuft in Pin 1 des 74LS04-Chips. (Führen Sie eine Bildsuche für ein vollständiges Diagramm des Chips durch) 5. Verwenden Sie ein Kabel, um Pin 2 und 3 des Chips zu verbinden 6. Verbinden Sie Pin 4 des Chips mit dem Arduino RX-Punkt (Pin 0 auf dem Freeduino SB und Arduino Duemilanove).) 7. Verbinden Sie Pin 7 (GND) auf dem Chip mit der Masse für Ihr Steckbrett (das auch mit der Arduino-Masse verbunden ist) 8. Verbinden Sie Pin 14 (VCC) mit der 5V-Stromversorgung Ihres Steckbretts (die die Stromversorgung vom Arduino erhält) 5V-Ausgang) Sie sollten jetzt bereit sein, die HTC-USB-Breakout-Platine in die Unterseite des Telefons einzustecken und das Arduino einzuschalten. Überprüfen Sie auf Funken und Gerüche und berühren Sie die Dinge, um sicherzustellen, dass sie kühl sind. Hinweis: Der aktuelle Cellbot-Code schaltet LED #13 ein, wenn die Servomotoren des Roboters laufen sollten. Wenn Sie noch keinen Roboter haben, können Sie überprüfen, ob sich die LED ein- und ausschaltet, um zu bestätigen, dass er funktioniert.

Schritt 7: Laden Sie das Cellbots-Programm auf dem Arduino

Laden Sie das Cellbots-Programm auf dem Arduino
Laden Sie das Cellbots-Programm auf dem Arduino
Laden Sie das Cellbots-Programm auf dem Arduino
Laden Sie das Cellbots-Programm auf dem Arduino

Holen Sie sich den Arduino-Quellcode von unserer Google Code-Projektseite. Öffnen Sie das Arduino-Programm Cellbots.pde im Arduino-Editor. Dann schieben Sie es auf Ihr Arduino-Board.

Sie können das Sprechen mit dem Arduino-Code testen, indem Sie den seriellen Monitor im Arduino-Editor öffnen. Dies ist eine großartige Möglichkeit, Ihren Roboter oder Ihr Gerät zu testen, indem Sie direkt mit dem Arduino sprechen, bevor Sie alles an das Telefon anschließen. Der Code sendet serielle Befehle zurück an den seriellen Monitor, um zu bestätigen, was er tut, auch wenn Sie Ihren Roboter noch nicht gebaut haben. Hinweis: Sie können keine Programme auf den Arduino laden, während das Kabel mit dem seriellen RX-Eingangspin verbunden ist. Vielleicht möchten Sie diesen einen Schalter setzen, aber ich habe ihn einfach abgezogen, wenn ich ein neues Programm laden musste.

Schritt 8: Führen Sie den gesamten Prozess aus

Den gesamten Prozess ausführen
Den gesamten Prozess ausführen
Den gesamten Prozess ausführen
Den gesamten Prozess ausführen
Den gesamten Prozess ausführen
Den gesamten Prozess ausführen

Sie sollten in der Lage sein, die HTC-USB-Platine mit dem Telefon zu verbinden, die Datei cellbot.py in ASE zu starten und eine Terminalsitzung im Telefon zu öffnen. Geben Sie "H" ein, damit das Telefon "Hallo" oder andere Befehle aus der Datei README.txt sagt.

Ein "q" beendet das Python-Skript auf dem Telefon und schließt den Terminal-Socket. Hier ist eine Zusammenfassung der Funktionsweise: 1. Das Python-Skript öffnet einen Socket, um eingehende Telnet-Verbindungen zu akzeptieren und die Befehle über den seriellen Port zu senden 2 Wir verbinden uns von unserem PC mit dem Telefon über Telnet auf Port 9002 und senden ihm Befehle, die wir auf Bildschirm 3 sehen Signal kommt aus dem Chip an Pin 2, geht wieder an Pin 3 und kommt wieder an Pin 4 bei 5V 5. Unser Arduino akzeptiert das serielle Signal an RX-Pin 0 und verarbeitet es über das Cellbot.pde-Programm 6. Wir kann 'q' eingeben, um das Python-Skript zu beenden und die Telnet-Verbindung zu schließen Nun, da Sie diesen sehr komplizierten Vorgang abgeschlossen haben, um grundlegende Befehle an einen Arduino-Roboter zu senden, ist es an der Zeit, ihn zu hacken, um großartiger zu sein! Wir haben noch keine 2-Wege-Seriellfunktion, sodass das Arduino keine Befehle zurück in das Telefon senden kann, aber wir arbeiten daran. Bleiben Sie auf dem Laufenden, indem Sie unseren Blog auf Cellbots.com abonnieren. Über die Autoren: Tim Heath Leitender Forscher, der diesen Prozess zuerst im Tech Shop in Menlo Park, wo er Mitglied ist, zusammengestellt hat. Ryan Hickman Programmierer, der am Python- und Arduino-Code gearbeitet und dieses Instructable erstellt hat.

Empfohlen: