Inhoudsopgave:

Android G1 serieel naar Arduino Robot - Ajarnpa
Android G1 serieel naar Arduino Robot - Ajarnpa

Video: Android G1 serieel naar Arduino Robot - Ajarnpa

Video: Android G1 serieel naar Arduino Robot - Ajarnpa
Video: SKR 1.4 - Fan Control 2024, September
Anonim
Android G1 Serieel naar Arduino Robot
Android G1 Serieel naar Arduino Robot
Android G1 Serieel naar Arduino Robot
Android G1 Serieel naar Arduino Robot
Android G1 Serieel naar Arduino Robot
Android G1 Serieel naar Arduino Robot

Leer hoe uw Android-mobiele telefoon een robot kan besturen met behulp van een Arduino-bord. De telefoon neemt opdrachten via telnet over van een andere telefoon of een pc, zodat je de robot op afstand kunt besturen. Dit project zal de G1 verder niet wijzigen, zodat je hem kunt blijven gebruiken als je normale telefoon nadat je hem hebt losgekoppeld. Waarom? Door goedkope elektronische componenten zoals Arduino-boards te gebruiken, kun je ze koppelen met je $ 400-telefoon om een geweldige robot te maken. Het zou honderden dollars kosten om GPS, LCD's, bewegingssensoren, wifi, mobiele verbindingen, luidsprekers en meer toe te voegen aan een hobbybot, maar je telefoon heeft deze al! Samen stellen de Android G1 en het Arduino-bord je in staat om goedkope elektronica zoals eenvoudige servo's en sensoren te gebruiken om krachtige apparaten zoals robots, telepresence op afstand of leuk speelgoed voor kinderen te bouwen. Meer informatie op Cellbots.com. Opmerking: dit project vereist momenteel een Android G1 met root-toegang om seriële uitvoer van de telefoon naar de Arduino-robot te gebruiken. Je kunt een BlueTooth-module van $ 20 aan je Arduino-bord toevoegen om de telefoon via seriële BlueTooth ermee te laten praten als je de commerciële Android-software wilt gebruiken. Speciale dank: we hebben de Hacker Dojo in Mountain View, CA te danken voor het contact met ons, het helpen met een aantal lastige problemen via hun mailinglijst van geweldige leden, en voor het hebben van 74LS04-chips op voorraad. Het grootste deel van de montage vond plaats in de Tech Shop in Menlo Park.

Stap 1: Benodigde items

Benodigde artikelen
Benodigde artikelen
Benodigde artikelen
Benodigde artikelen
Benodigde artikelen
Benodigde artikelen

Om deze tutorial te voltooien, heb je het volgende nodig: Hardware: - Android G1 Dev Phone (of ander Android-apparaat met root-toegang en seriële uitvoer) - Arduino (ik gebruik een Freeduino SB, maar dat zou iedereen moeten doen) - 3.3v tot 5v converter als je geen 3.3v Arduino gebruikt (ik gebruik een 74LS04-chip voor minder dan $ 1 maar er zijn andere opties beschikbaar) - HTC USB break-out board voor de G1 - Soldeerapparatuur voor twee snelle verbindingen - Een robotlichaam met micro-servo's (karton, acryl, treden, wielen, alles is geschikt) Software: - Android Scripting Environment (ASE) - Telnet-client voor uw pc (ik gebruik PuTTY op Windows) - Arduino-ontwikkelomgeving - (optioneel) Seriële client voor je pc (ik gebruik hiervoor ook PuTTY op Windows) - (optioneel) Android SDK Als je de instructies kunt volgen, kun je deze tutorial voltooien met weinig kennis van Python, Arduino, Android of elektronica. Je zult die dingen willen weten als je verder wilt gaan dan een knipperende LED, maar dit zal je op weg helpen.

Stap 2: Android G1 met seriële uitgang ingeschakeld

Android G1 met seriële uitgang ingeschakeld
Android G1 met seriële uitgang ingeschakeld
Android G1 met seriële uitgang ingeschakeld
Android G1 met seriële uitgang ingeschakeld
Android G1 met seriële uitgang ingeschakeld
Android G1 met seriële uitgang ingeschakeld

G1's worden niet geleverd met de mogelijkheid om seriële opdrachten uit de USB-poort te verzenden en er is geen native optie om dit in te schakelen. Als je een geavanceerde Android SDK-gebruiker bent, kun je je eigen build maken, maar ik heb ervoor gekozen om de Cyanogenmod 4.2.13 te gebruiken. Als je andere Android-apparaten kent met seriële uitschakeling, voeg ze dan toe aan de opmerkingen.

Optioneel kunt u de links naar deze instructie volgen om via USB vanaf uw pc met uw G1 te praten. Die serieel-naar-USB-verbinding is niet vereist voor deze zelfstudie, maar ik gebruikte het als een goede geestelijke controle om te controleren of de telefoon serieel uitstuurde. Als u de andere intructable niet gebruikt om te controleren of de seriële uitvoer werkt, kunt u deze eenvoudige controle proberen: 1. Open de Terminal-app op de G1 (wordt geleverd met Cyanogen, maar download er een van de Market als u een andere afbeelding heeft) 2 Navigeer naar de map /dev/ door cd /dev/ in te typen 3. Typ ls (dat is een L) en zoek naar ttyMSM2 in de geretourneerde lijst Het Python-script dat we later zullen gebruiken, stuurt opdrachten naar '/dev/ttyMSM2' in om ervoor te zorgen dat ze de seriële verbinding uit gaan. Omdat daarvoor root-toegang nodig is, moet je de machtigingen daarvoor elke keer dat je de telefoon opnieuw opstart, wijzigen. Om dat te doen: 1. Open de terminal-app op de telefoon 2. Voer 'chmod 777 /dev/ttyMSM2' in. Vervolgens kunt u het Python-script uitvoeren vanuit de Android Scripting-bewerking in de volgende stap en heeft het toegang om seriële uitvoer te verzenden.

Stap 3: Installeer de Android Scripting Environment (ASE) met Python

Installeer de Android Scripting Environment (ASE) met Python
Installeer de Android Scripting Environment (ASE) met Python
Installeer de Android Scripting Environment (ASE) met Python
Installeer de Android Scripting Environment (ASE) met Python

De scripts die we zullen gebruiken om een open socket-verbinding op de telefoon te maken en opdrachten te verzenden, zijn geschreven in Python. Om dit op de G1 uit te voeren, hebben we de Android Scripting Environment nodig. Als je het niet in de Market ziet, kun je het downloaden door de streepjescode op die pagina te scannen die naar het apk-bestand op deze pagina linkt.

Nadat u ASE hebt geïnstalleerd en uitgevoerd, wilt u de Python-module vanuit het menu toevoegen: 1. Open ASE en zorg ervoor dat u een werkende internetverbinding hebt (wifi of 3G) 2. Druk op de menuknop op de telefoon en selecteer Tolken 3. Druk nogmaals op menu en selecteer Toevoegen 4. Selecteer Python (momenteel v2.6.2 vanaf het moment van schrijven) en het zal enkele zip-bestanden downloaden. Misschien wilt u het maken, openen, bewerken en uitvoeren van scripts verkennen om vertrouwd te raken met Python via ASE, maar het is niet vereist.

Stap 4: Kopieer en voer het Cellbot.py-script uit om het Python-programma te starten

Kopieer en voer het Cellbot.py-script uit om het Python-programma te starten
Kopieer en voer het Cellbot.py-script uit om het Python-programma te starten

Deze tutorial gebruikt een Python-script om het "brein" van de robot te zijn. Ontvang de nieuwste code van ons open source Google Code-project. U hebt alleen het bestand cellbot.py nodig, maar anderen kunnen u helpen met verschillende dingen die u wilt onderzoeken. Ik heb de telefoon gewoon op de USB-aansluiting van mijn pc aangesloten en de schijf aangekoppeld voordat ik het bestand naar /sdcard/ase/scripts kopieerde.

Het programma maakt een open socket-verbinding om een inkomende telnet-sessie te accepteren. Het drukt ook de ontvangen opdrachten op het scherm af terwijl ze via de seriële poort worden verzonden. Zet dit bestand op de SD-kaart van de telefoon in de map /ase/scripts/. Gedetailleerde stappen om de scripts te laden en uit te voeren: 1. Kopieer het cellbot.py-script naar de map /ase/scripts/ van de SD-kaart 2. Zorg ervoor dat u ontkoppelt de SD-kaart van uw pc als u ze op die manier hebt gekopieerd, omdat de telefoon geen toegang heeft tot de bestanden op hetzelfde moment als uw pc. 3. Open de Android Scripting Environment-app 4. Klik op cellbot.py om deze te starten. U zou nu een bevestiging moeten zien dat het apparaat klaar is om inkomende telnet-sessies op poort 9002 te accepteren. Tip: Zorg ervoor dat u de "chmod 777 /dev/ttyMSM2" commando vanaf stap #3 eerst. Zie stap #5 voor het vinden van het IP-adres van de telefoon.

Stap 5: Telnet in de G1 en test het verzenden van opdrachten

Telnet in de G1 en test het verzenden van opdrachten
Telnet in de G1 en test het verzenden van opdrachten
Telnet in de G1 en test het verzenden van opdrachten
Telnet in de G1 en test het verzenden van opdrachten
Telnet in de G1 en test het verzenden van opdrachten
Telnet in de G1 en test het verzenden van opdrachten

De telefoon moet klaar zijn om te telnetten en opdrachten vanaf uw pc te verzenden. Het zal ze op het scherm van de telefoon afdrukken om te bevestigen wat het ontvangt. Ik heb PuTTY op Windows gebruikt, maar we hebben bevestigd dat minicom geweldig werkt op Macs, zoals beschreven in deze instructable.

U moet eerst het IP-adres van uw telefoon vinden. Dit is beschikbaar door naar Menu > Instellingen > Draadloze bediening > Wi-Fi-instellingen te gaan en vervolgens op de huidige actieve verbinding te drukken. Er verschijnt een pop-upbericht met het huidige IP-adres op het lokale netwerk. Noteer dit, want u zult dit elke keer gebruiken als u een telnet-sessie vanaf uw pc wilt openen. IP-toewijzingen verlopen meestal na een bepaald aantal dagen, dus u moet dit mogelijk opnieuw controleren. Opmerking: in deze zelfstudie wordt ervan uitgegaan dat uw pc en telefoon zich op hetzelfde lokale netwerk bevinden. Routering naar de telefoon van buiten het lokale netwerk zou mogelijk moeten zijn, maar wordt hier niet behandeld. Open uw telnet-client naar keuze en maak verbinding met het IP-adres van de telefoon op poort 9002. Vanaf een opdrachtregel doet u dit als "telnet 192.168.1.1 9002" met behulp van het werkelijke IP-adres van de telefoon. Typ enkele tekens in en druk op Enter om ze op het scherm van de telefoon te zien verschijnen. U kunt een q typen om ervoor te zorgen dat het Python-script wordt afgesloten, wat uw terminalsessie zou moeten sluiten. Als je om welke reden dan ook geen verbinding kunt maken via telnet en het programma moet beëindigen, zou een eenvoudige herstart van de telefoon voldoende moeten zijn. Gevorderde gebruikers willen misschien de proces-ID vinden via ps en vervolgens kill gebruiken om het te stoppen. Geavanceerd: een toekomstige versie hiervan zou een lokale webserver vanaf de telefoon kunnen draaien in plaats van opdrachten via telnet te accepteren. We onderzoeken ook XMPP om met je robot te chatten.

Stap 6: Sluit een 3.3v tot 5v Level Shifter aan op de Arduino

Sluit een 3.3v tot 5v Level Shifter aan op de Arduino
Sluit een 3.3v tot 5v Level Shifter aan op de Arduino
Sluit een 3.3v tot 5v Level Shifter aan op de Arduino
Sluit een 3.3v tot 5v Level Shifter aan op de Arduino
Sluit een 3.3v tot 5v Level Shifter aan op de Arduino
Sluit een 3.3v tot 5v Level Shifter aan op de Arduino

De Arduino die in deze tutorial wordt gebruikt, is een 5v-model, dus we moeten het 3,3v-signaal dat uit de G1 komt, converteren met een niveauverschuiver. Het zou mogelijk moeten zijn om rechtstreeks verbinding te maken met een 3.3v Arduino, maar dat heb ik niet getest.

Er zijn verschillende manieren om dit te benaderen, maar in dit voorbeeld gebruiken we een 74LS04-chip. Je kunt er hier naar zoeken en ze zijn waarschijnlijk minder dan $ 1. Tim en ik hebben de onze opgehaald bij de Hacker Dojo in Mountain View, CA, maar deze zijn ZEER gebruikelijk en zouden overal moeten zijn waar chips worden verkocht of geschonken. Op een hoog niveau gaan we gewoon het TX-signaal van het HTS USB-breakoutboard naar pin 1 van de 74LS04-chip sturen. Om het te laten werken, gaan we twee keer door de chip en komen pin 4 uit op de RX-pin op de Freeduino SB (je seriële pin kan anders zijn als je een ander Arduino-bord hebt, maar iedereen zou dit moeten ondersteunen). Volg deze stappen om de niveauverschuiver te bedraden en het HTC USB-bord aan te sluiten (steek het nog niet in de telefoon en haal de stroom naar de Arduino los): 1. Plaats de 74LS04-chip op uw breadboard. Zorg ervoor dat de chip de middenonderbreking hindert, zodat de pinnen niet worden kortgesloten (een domme zet die ik eerst heb gedaan) 2. Soldeer twee draden naar het HTC USB-bord zoals beschreven in deze instructie, maar we gebruiken alleen pinnen 7 (Ground) en 8 (TX0) omdat we voor deze tutorial alleen eenrichtingstransmissie doen. 3. Sluit het andere uiteinde van de aardedraad (pin 7) aan op een aarde op uw breadboard (die moet worden aangesloten op een aarde op uw Arduino) 4. Sluit het andere uiteinde van de TX0 (pin 8) draad aan op het breadboard waar het loopt tegen pin 1 van de 74LS04-chip aan. (doe een afbeeldingszoekopdracht voor een volledig diagram van de chip) 5. Gebruik een draad om pin 2 en 3 van de chip aan te sluiten 6. Sluit pin 4 van de chip aan op het Arduino RX-punt (pin 0 op de Freeduino SB en Arduino Duemilanove) 7. Sluit pin 7 (GND) op de chip aan op de grond voor je breadboard (die ook verbinding maakt met de Arduino-aarde) 8. Sluit pin 14 (VCC) aan op de 5v-voeding op je breadboard (die de stroom krijgt van de Arduino 5v-uitgang) U zou nu klaar moeten zijn om het HTC USB-break-outboard aan te sluiten op de onderkant van de telefoon en de Arduino aan te zetten. Controleer op vonken en geuren en raak dingen aan om er zeker van te zijn dat ze afgekoeld zijn. Opmerking: De huidige celbotcode gaat branden op LED #13 wanneer de servomotoren van de robot zouden moeten draaien. Als je nog geen robot hebt, kun je controleren of de LED aan en uit gaat om te bevestigen dat hij werkt.

Stap 7: Laad het Cellbots-programma op de Arduino

Laad het Cellbots-programma op de Arduino
Laad het Cellbots-programma op de Arduino
Laad het Cellbots-programma op de Arduino
Laad het Cellbots-programma op de Arduino

Haal de Arduino-broncode op van onze Google Code-projectsite. Open het Arduino-programma Cellbots.pde in de Arduino-editor. Duw het vervolgens naar uw Arduino-bord.

U kunt het praten met de Arduino-code testen door de seriële monitor in de Arduino-editor te openen. Dit is een geweldige manier om uw robot of apparaat te testen door rechtstreeks met de Arduino te praten voordat u alles op de telefoon aansluit. De code stuurt seriële commando's terug naar de seriële monitor om te bevestigen wat deze doet, zelfs als je je robot nog niet hebt gebouwd. Opmerking: je kunt geen programma's op de Arduino laden terwijl de draad is aangesloten op de RX seriële ingangspin. Dus misschien wil je deze een schakelaar zetten, maar ik heb hem gewoon losgekoppeld toen ik een nieuw programma moest laden.

Stap 8: Voer het hele proces uit

Voer het hele proces uit
Voer het hele proces uit
Voer het hele proces uit
Voer het hele proces uit
Voer het hele proces uit
Voer het hele proces uit

U zou in staat moeten zijn om de HTC USB-kaart op de telefoon aan te sluiten, het bestand cellbot.py in ASE op te starten en een terminalsessie in de telefoon te openen. Typ "H" om de telefoon hallo te laten zeggen of andere commando's uit het README.txt-bestand.

Een "q" zal het Python-script op de telefoon afsluiten en de terminal-socket sluiten. Hier is een samenvatting van hoe het allemaal werkt: 1. Het Python-script opent een socket om inkomende telnet-verbindingen te accepteren en de opdrachten weer te geven via de seriële poort 2 We verbinden onze pc met de telefoon via telnet op poort 9002 en sturen deze opdrachten die we op scherm 3 zien. signaal komt uit de chip op pin 2, gaat er weer in op pin 3, en komt er weer uit op pin 4 op 5v 5. Onze Arduino accepteert het seriële signaal op RX pin 0 en verwerkt het via het Cellbot.pde programma 6. Wij kan 'q' typen om het Python-script te beëindigen en de telnet-verbinding te sluiten. Nu je dit zeer gecompliceerde proces hebt voltooid om basiscommando's naar een Arduino-robot te sturen, is het tijd om het te hacken om nog geweldiger te worden! We hebben nog geen 2-weg seriële werking, dus de Arduino kan geen opdrachten terugsturen naar de telefoon, maar daar werken we aan. Blijf op de hoogte door u te abonneren op onze blog op Cellbots.com. Over de auteurs: Tim Heath Hoofdonderzoeker die dit proces voor het eerst heeft opgezet in de Tech Shop in Menlo Park, waar hij lid is. Ryan Hickman-programmeur die aan de Python- en Arduino-code heeft gewerkt en deze Instructable heeft geschreven.

Aanbevolen: