Indholdsfortegnelse:

Android G1 Serial til Arduino Robot: 8 trin
Android G1 Serial til Arduino Robot: 8 trin

Video: Android G1 Serial til Arduino Robot: 8 trin

Video: Android G1 Serial til Arduino Robot: 8 trin
Video: Android Bluetooth 8 управления устройствами с Arduino советом. 2024, November
Anonim
Android G1 Serial til Arduino Robot
Android G1 Serial til Arduino Robot
Android G1 Serial til Arduino Robot
Android G1 Serial til Arduino Robot
Android G1 Serial til Arduino Robot
Android G1 Serial til Arduino Robot

Lær, hvordan din Android -mobiltelefon kan styre en robot ved hjælp af et Arduino -kort. Telefonen tager kommandoer via telnet fra en anden telefon eller en pc, så du kan styre robotten eksternt. Dette projekt ændrer ellers ikke G1, så du kan fortsætte med at bruge den som din normale telefon efter at have taget den ud. Hvorfor? Ved at bruge billige elektroniske komponenter såsom Arduino -tavler kan du parre dem med din $ 400 -telefon for at lave en fantastisk robot. Det ville koste hundredvis af dollars at tilføje GPS, LCD'er, bevægelsessensorer, wi-fi, mobilforbindelser, højttalere og mere til en hobbybot, men din telefon har allerede disse! Tilsammen giver Android G1 og Arduino -kortet dig mulighed for at bruge billig elektronik som enkle servoer og sensorer til at bygge kraftfulde enheder som robotter, fjerntilstedeværelse eller sjovt legetøj til børn. Flere oplysninger på Cellbots.com. Bemærk: Dette projekt kræver i øjeblikket en Android G1 med root -adgang for at bruge seriel output fra telefonen til Arduino -robotten. Du kan tilføje et $ 20 BlueTooth -modul til dit Arduino -kort for at få telefonen til at tale med det via seriel BlueTooth, hvis du vil bruge den kommercielle Android -software. Særlig tak: Vi har Hacker Dojo i Mountain View, CA for at takke for at have kontaktet os, hjulpet med nogle vanskelige problemer via deres mailingliste med fantastiske medlemmer og for at have 74LS04 chips på lager. Det meste af samlingen blev foretaget i Tech Shop i Menlo Park.

Trin 1: Varer påkrævet

Varer påkrævet
Varer påkrævet
Varer påkrævet
Varer påkrævet
Varer påkrævet
Varer påkrævet

For at fuldføre denne vejledning skal du bruge følgende: Hardware: - Android G1 Dev Phone (eller anden Android -enhed med root -adgang og seriel output) - Arduino (jeg bruger en Freeduino SB, men enhver bør gøre) - 3.3v til 5v konverter, hvis du ikke bruger en 3.3v Arduino (jeg bruger en 74LS04 -chip til under $ 1, men andre muligheder er tilgængelige) - HTC USB -udbrudskort til G1 - Loddeudstyr til to hurtige forbindelser - En robotkrop med mikroservoer (pap, akryl, slidbaner, hjul, alt vil gøre) Software: - Android Scripting Environment (ASE) - Telnet -klient til din pc (jeg bruger PuTTY på Windows) - Arduino -udviklingsmiljø - (valgfrit) Seriel klient til din pc (jeg bruger også PuTTY på Windows til dette) - (valgfrit) Android SDK Hvis du kan følge instruktionerne, kan du fuldføre denne vejledning med lidt kendskab til Python, Arduino, Android eller elektronik. Du vil gerne vide disse ting, hvis du vil gå ud over en blinkende LED, men det får dig i gang.

Trin 2: Android G1 med seriel output aktiveret

Android G1 med seriel output aktiveret
Android G1 med seriel output aktiveret
Android G1 med seriel output aktiveret
Android G1 med seriel output aktiveret
Android G1 med seriel output aktiveret
Android G1 med seriel output aktiveret

G1'er leveres ikke med evnen til at sende serielle kommandoer ud af USB -porten, og der er ingen indbygget mulighed for at aktivere det. Hvis du er en avanceret Android SDK -bruger, kan du lave din egen build, men jeg valgte at bruge Cyanogenmod 4.2.13. Hvis du kender andre Android -enheder, hvor seriel ud fungerer, skal du føje dem til kommentarerne.

Eventuelt kan du følge linkene der til denne instruks om at tale til din G1 over USB fra din pc. Denne serielle til USB -forbindelse er ikke påkrævet til denne vejledning, men jeg brugte den som en god sundhedstjek for at kontrollere, at telefonen sendte seriel ud. Hvis du ikke bruger den anden inaktiverbare til at kontrollere, at seriel output fungerer, kan du prøve denne enkle kontrol: 1. Åbn Terminal -appen på G1 (leveres med Cyanogen, men download en fra Market, hvis du har et andet billede) 2. Naviger til/dev/biblioteket ved at indtaste cd/dev/3. Skriv ls (det er en L), og kig efter ttyMSM2 i den returnerede liste Python -scriptet, vi vil bruge, sender senere kommandoer til '/dev/ttyMSM2' i for at de skal gå ud af den serielle forbindelse. Da det kræver root -adgang, skal du ændre tilladelser til det hver gang du genstarter telefonen. For at gøre det: 1. Åbn terminalappen på telefonen 2. Indtast 'chmod 777 /dev /ttyMSM2' Derefter kan du køre Python -scriptet fra Android Scripting -redigeringen i det næste trin, og det vil have adgang til at sende seriel output.

Trin 3: Installer Android Scripting Environment (ASE) med Python

Installer Android Scripting Environment (ASE) med Python
Installer Android Scripting Environment (ASE) med Python
Installer Android Scripting Environment (ASE) med Python
Installer Android Scripting Environment (ASE) med Python

De scripts, vi vil bruge til at oprette en åben stikforbindelse på telefonen og sende kommandoer ud, er skrevet i Python. For at køre dette på G1 skal vi bruge Android Scripting Environment. Hvis du ikke kan se det på markedet, kan du downloade det ved at scanne stregkoden på den side, der linker til apk -filen på denne side.

Når du har installeret og kørt ASE, vil du gerne tilføje Python-modulet fra menuen: 1. Åbn ASE, og sørg for, at du har en fungerende internetforbindelse (wi-fi eller 3G) 2. Tryk på menuknappen på telefonen, og vælg Tolke 3. Tryk på menuen igen, og vælg Tilføj 4. Vælg Python (i øjeblikket v2.6.2 i skrivende stund), og det vil downloade nogle zip -filer Du vil måske undersøge oprettelse, åbning, redigering og kørsel af scripts for at blive fortrolig med Python via ASE, men det er ikke påkrævet.

Trin 4: Kopier og kør Cellbot.py -scriptet for at starte Python -programmet

Kopier og kør Cellbot.py -scriptet for at starte Python -programmet
Kopier og kør Cellbot.py -scriptet for at starte Python -programmet

Denne vejledning bruger et Python -script til at være robotens "hjerner". Få den nyeste kode fra vores open source Google Code -projekt. Du har kun brug for filen cellbot.py, men andre kan hjælpe med forskellige ting, du vil udforske. Jeg tilsluttede simpelthen telefonen til min pc's USB -forbindelse og monterede drevet, før jeg kopierede filen til/sdcard/ase/scripts.

Programmet opretter en åben stikforbindelse for at acceptere en indgående telnet -session. Det udskriver også de modtagne kommandoer til skærmen, mens du sender dem ud af den serielle port. Læg denne fil på telefonens SD -kort i/ase/scripts/directory. Detaljerede trin for at indlæse og køre scripts: 1. Kopier cellbot.py -scriptet til SD -kortets/ase/scripts/directory 2. Sørg for at afmontere SD -kortet fra din pc, hvis du kopierede dem på den måde, da telefonen ikke kan få adgang til filerne på samme tid, som din pc er. 3. Åbn Android Scripting Environment -appen 4. Klik på cellbot.py for at starte den Du skal se en bekræftelse på, at enheden på dette tidspunkt er klar til at acceptere indgående telnet -sessioner på port 9002. Tip: Sørg for at køre "chmod 777 /dev/ttyMSM2 "kommando fra trin #3 først. Se trin #5 for at finde telefonens IP -adresse.

Trin 5: Telnet ind i G1 og test afsendelse af kommandoer

Telnet ind i G1 og test afsendelse af kommandoer
Telnet ind i G1 og test afsendelse af kommandoer
Telnet ind i G1 og test afsendelse af kommandoer
Telnet ind i G1 og test afsendelse af kommandoer
Telnet ind i G1 og test afsendelse af kommandoer
Telnet ind i G1 og test afsendelse af kommandoer

Telefonen skal være klar, så du kan telnete til den og sende kommandoer fra din pc. Det vil udskrive dem til telefonens skærm for at bekræfte, hvad det modtager. Jeg brugte PuTTY på Windows, men vi har bekræftet, at minicom fungerer godt på Mac'er som beskrevet i denne instruktive.

Du skal først finde din telefons IP -adresse. Dette er tilgængeligt ved at gå til Menu> Indstillinger> Trådløse kontroller> Wi-Fi-indstillinger og derefter trykke på den aktuelt aktive forbindelse. En pop-up toast-meddelelse kommer med den aktuelle IP-adresse på det lokale netværk. Skriv dette ned, da du vil bruge dette hver gang du vil åbne en telnet -session fra din pc. IP -tildelinger udløber typisk efter et bestemt antal dage, så du skal muligvis kontrollere dette igen. Bemærk: Denne vejledning forudsætter, at din pc og telefon er på det samme lokale netværk. Routing til telefonen uden for det lokale netværk bør være muligt, men er ikke dækket her. Åbn din foretrukne telnetklient, og opret forbindelse til telefonens IP på port 9002. Fra en kommandolinje gør du dette som "telnet 192.168.1.1 9002" ved hjælp af telefonens faktiske IP. Indtast nogle tegn, og tryk på enter for at se dem vises på telefonens skærm. Du kan skrive en q for at få Python -scriptet til at afslutte, hvilket skulle lukke din terminalsession. Hvis du af en eller anden grund ikke kan oprette forbindelse via telnet og har brug for at dræbe programmet, bør en simpel genstart af telefonen gøre tricket. Avancerede brugere vil måske finde proces -id'et via ps og derefter bruge kill til at stoppe det. Avanceret: En fremtidig version af dette kan køre en lokal webserver fra telefonen frem for at acceptere kommandoer via telnet. Vi udforsker også XMPP for at chatte med din robot.

Trin 6: Tilslut en 3.3v til 5v niveauskifter til Arduino

Tilslut en 3.3v til 5v niveauskifter til Arduino
Tilslut en 3.3v til 5v niveauskifter til Arduino
Tilslut en 3.3v til 5v niveauskifter til Arduino
Tilslut en 3.3v til 5v niveauskifter til Arduino
Tilslut en 3.3v til 5v niveauskifter til Arduino
Tilslut en 3.3v til 5v niveauskifter til Arduino

Den Arduino, der blev brugt i denne vejledning, er en 5v -model, så vi skal konvertere 3.3v -signalet, der kommer ud af G1 ved hjælp af en niveauskift. Det burde være muligt at oprette forbindelse direkte til en 3.3v Arduino, men det var ikke noget, jeg testede.

Der er flere måder at gribe dette an, men vi vil bruge en 74LS04 -chip i dette eksempel. Du kan søge efter en her, og de er sandsynligvis under $ 1. Tim og jeg hentede vores fra Hacker Dojo i Mountain View, CA, men disse er MEGET almindelige og burde være rigelige, uanset hvor chips sælges eller doneres. På et højt niveau sender vi simpelthen TX -signalet fra HTS USB -breakoutkortet til pin 1 på 74LS04 -chippen. For at få det til at fungere går vi igennem chippen to gange og kommer ud af pin 4 til RX -pin på Freeduino SB (din serielle pin kan være anderledes, hvis du har et andet Arduino -kort, men alle burde understøtte dette). Følg disse trin for at tilslutte niveauskifteren og tilslutte HTC USB -kortet (tilslut det ikke til telefonen endnu og træk stikket til Arduino): 1. Sæt 74LS04 -chippen i dit brødbræt. Sørg for, at chippen forhindrer centerbruddet, så stifterne ikke kortsluttes (et dumt træk, jeg lavede først) 2. Soldat to ledninger til HTC USB -kortet som beskrevet i denne instruks, men vi bruger kun stifter 7 (Ground) og 8 (TX0), da vi kun laver envejs transmission til denne vejledning. 3. Tilslut den anden ende af jord (pin 7) ledningen til en jord på dit brødbræt (som skal tilsluttes en jord på din Arduino) 4. Tilslut den anden ende af TX0 (pin 8) ledningen til brødbrættet, hvor den løber ind i pin 1 på 74LS04 -chippen. (foretag en billedsøgning efter et fuldstændigt diagram over chippen) 5. Brug en ledning til at forbinde pin 2 og 3 på chippen 6. Tilslut pin 4 på chippen til Arduino RX -punktet (pin 0 på Freeduino SB og Arduino Duemilanove) 7. Tilslut pin 7 (GND) på chippen til jorden til dit brødbræt (som også forbinder til Arduino -jorden) 8. Tilslut pin 14 (VCC) til 5v -strømmen på dit brødbræt (som får strøm fra Arduino 5v output) Du skal nu være klar til at tilslutte HTC USB-udbrudskortet i bunden af telefonen og tænde for Arduino. Kontroller for gnister og lugte, og rør ved tingene for at sikre, at de er cool. Bemærk: Den aktuelle cellbot -kode tænder LED #13, når robotens servomotorer skal køre. Hvis du ikke har en robot endnu, kan du kontrollere, at LED'en tænder og slukker for at bekræfte, at den virker.

Trin 7: Indlæs Cellbots -programmet på Arduino

Indlæs Cellbots -programmet på Arduino
Indlæs Cellbots -programmet på Arduino
Indlæs Cellbots -programmet på Arduino
Indlæs Cellbots -programmet på Arduino

Hent Arduino -kildekoden fra vores Google Code -projektside. Åbn Cellbots.pde Arduino -programmet i Arduino -editoren. Skub det derefter til dit Arduino -bord.

Du kan teste at tale med Arduino -koden ved at åbne den serielle skærm i Arduino -editoren. Dette er en fantastisk måde at teste din robot eller enhed ved at tale direkte med Arduino, før du tilslutter alt til telefonen. Koden sender serielle kommandoer tilbage til den serielle skærm for at bekræfte, hvad den gør, selvom du ikke har din robot bygget endnu. Bemærk: Du kan ikke indlæse programmer på Arduino, mens ledningen er forbundet til RX seriel input -pin. Så du vil måske sætte denne til en switch, men jeg tog simpelthen stikket ud, da jeg skulle indlæse et nyt program.

Trin 8: Kør hele processen

Kør hele processen
Kør hele processen
Kør hele processen
Kør hele processen
Kør hele processen
Kør hele processen

Du skal være i stand til at slutte HTC USB -kortet til telefonen, starte cellbot.py -filen i ASE og åbne en terminalsession i telefonen. Skriv "H" for at få telefonen til at sige hej eller andre kommandoer fra filen README.txt.

En "q" vil afslutte Python -scriptet på telefonen og lukke terminalstikket. Her er en oversigt over, hvordan det hele fungerer: 1. Python -scriptet åbner et stik til at acceptere indgående telnetforbindelser og ekko kommandoerne ud af den serielle port 2. Vi tilslutter fra vores pc til telefonen via telnet på port 9002 og sender den kommandoer, som vi ser på skærm 3. HTS USB -kortet har grænseflader med G1s USB -port og sender 3.3v -signalet til 74LS04 -pin 1. 4. signal kommer ud af chippen på pin 2, går ind igen på pin 3 og kommer ud igen på pin 4 ved 5v 5. Vores Arduino accepterer det serielle signal på RX pin 0 og behandler det via Cellbot.pde -programmet 6. Vi kan skrive 'q' for at dræbe Python -scriptet og lukke telnetforbindelsen Nu hvor du har gennemført denne meget komplicerede proces for at sende grundlæggende kommandoer til en Arduino -robot, er det på tide, at du hacker det for at blive mere fantastisk! Vi har endnu ikke 2-vejs seriel arbejde, så Arduino kan ikke sende kommandoer tilbage til telefonen, men vi arbejder på det. Hold dig opdateret ved at abonnere på vores blog på Cellbots.com. Om forfatterne: Tim Heath Lederforsker, der først satte denne proces sammen i Tech Shop i Menlo Park, hvor han er medlem. Ryan Hickman Programmer, der arbejdede på Python og Arduino -koden og autoriserede denne Instructable.

Anbefalede: