Cuprins:

Robot Android G1 Serial to Arduino: 8 pași
Robot Android G1 Serial to Arduino: 8 pași

Video: Robot Android G1 Serial to Arduino: 8 pași

Video: Robot Android G1 Serial to Arduino: 8 pași
Video: learn Arduino programming in 20 seconds!! (Arduino projects) 2024, Noiembrie
Anonim
Android G1 Serial to Arduino Robot
Android G1 Serial to Arduino Robot
Android G1 Serial to Arduino Robot
Android G1 Serial to Arduino Robot
Android G1 Serial to Arduino Robot
Android G1 Serial to Arduino Robot

Aflați cum telefonul dvs. mobil Android poate controla un robot folosind o placă Arduino. Telefonul preia comenzi prin telnet de pe alt telefon sau computer, astfel încât să puteți controla robotul de la distanță. În caz contrar, acest proiect nu va modifica G1, astfel încât să îl puteți continua să îl utilizați ca telefon normal, după ce l-ați decuplat. Utilizând componente electronice ieftine, cum ar fi plăcile Arduino, le puteți asocia cu telefonul dvs. de 400 USD pentru a crea un robot minunat. Ar costa sute de dolari să adăugați GPS, LCD-uri, senzori de mișcare, wi-fi, conexiuni celulare, difuzoare și multe altele unui bot hobby, dar telefonul dvs. are deja acestea! Împreună, placa Android G1 și Arduino vă permit să utilizați electronice ieftine, cum ar fi servomotoare simple și senzori, pentru a construi dispozitive puternice, cum ar fi roboți, telepresență la distanță sau jucării distractive pentru copii. Mai multe informații la Cellbots.com. Observație: acest proiect necesită în prezent un Android G1 cu acces root pentru a utiliza ieșirea serială de la telefon la robotul Arduino. Puteți adăuga un modul BlueTooth de 20 USD pe placa dvs. Arduino pentru ca telefonul să îi vorbească prin BlueTooth serial dacă doriți să utilizați software-ul comercial Android. Mulțumiri speciale: Avem Hacker Dojo în Mountain View, CA să vă mulțumim pentru că ne-ați contactat, a ajutat cu unele probleme dificile prin intermediul listei lor de corespondență a membrilor minunați și pentru că aveți în stoc 74LS04 jetoane. Cea mai mare parte a asamblării s-a făcut la Tech Shop din Menlo Park.

Pasul 1: elemente necesare

Elemente necesare
Elemente necesare
Elemente necesare
Elemente necesare
Elemente necesare
Elemente necesare

Pentru a finaliza acest tutorial veți avea nevoie de următoarele: Hardware: - Telefon Android G1 Dev (sau alt dispozitiv Android cu acces root și ieșire serială) - Arduino (folosesc un Freeduino SB, dar oricine ar trebui să o facă) - 3,3v la 5v convertor dacă nu utilizați un Arduino de 3,3 v (folosesc un cip 74LS04 pentru mai puțin de 1 USD, dar sunt disponibile și alte opțiuni) - HTC USB break-out board pentru G1 - Echipament de lipit pentru două conexiuni rapide - Un corp robot cu micro servos (carton, acril, benzi de rulare, roți, orice va face) Software: - Android Scripting Environment (ASE) - Client Telnet pentru computerul dvs. (folosesc PuTTY pe Windows) - Mediu de dezvoltare Arduino - (opțional) Client serial pentru computerul dvs. (folosesc și PuTTY pe Windows) - (opțional) Android SDK Dacă puteți urma instrucțiuni, puteți completa acest tutorial cu puține cunoștințe despre Python, Arduino, Android sau electronică. Veți dori să știți aceste lucruri dacă doriți să treceți dincolo de un LED intermitent, dar acest lucru vă va ajuta să începeți.

Pasul 2: Android G1 cu ieșire serial activată

Android G1 cu ieșire serial activată
Android G1 cu ieșire serial activată
Android G1 cu ieșire serial activată
Android G1 cu ieșire serial activată
Android G1 cu ieșire serial activată
Android G1 cu ieșire serial activată

G1 nu sunt livrate cu posibilitatea de a trimite comenzi seriale din portul USB și nu există nicio opțiune nativă care să o permită. Dacă sunteți un utilizator avansat de SDK Android, ați putea să vă creați propria versiune, dar am ales să folosesc Cyanogenmod 4.2.13. Dacă știți despre alte dispozitive Android care funcționează serial, adăugați-le la comentarii.

Opțional, puteți urmări link-urile de acolo către acest instructiv despre vorbirea cu G1 prin USB de pe computer. Această conexiune serial la USB nu este necesară pentru acest tutorial, dar am folosit-o ca o verificare de sănătate frumoasă pentru a verifica dacă telefonul trimite serial. Dacă nu folosiți celălalt instrument intructibil pentru a verifica ieșirea serială funcționează, puteți încerca această verificare simplă: 1. Deschideți aplicația Terminal de pe G1 (vine cu Cyanogen, dar descărcați una de pe piață dacă aveți o imagine diferită) 2 Navigați la directorul / dev / tastând cd / dev / 3. Tastați ls (acesta este un L) și căutați ttyMSM2 în lista returnată Scriptul Python pe care îl vom folosi ulterior trimite comenzi către '/ dev / ttyMSM2' în comandă ca ei să iasă din conexiunea serială. Întrucât acest lucru necesită acces root, va trebui să modificați permisiunile în acest sens de fiecare dată când reporniți telefonul. Pentru a face acest lucru: 1. Deschideți aplicația terminal de pe telefon 2. Introduceți „chmod 777 / dev / ttyMSM2” Apoi puteți rula scriptul Python din ediția Android Scripting în pasul următor și va avea acces la trimiterea ieșirii seriale.

Pasul 3: Instalați Android Scripting Environment (ASE) cu Python

Instalați Android Scripting Environment (ASE) cu Python
Instalați Android Scripting Environment (ASE) cu Python
Instalați Android Scripting Environment (ASE) cu Python
Instalați Android Scripting Environment (ASE) cu Python

Scripturile pe care le vom folosi pentru a crea o conexiune socket deschisă pe telefon și pentru a trimite comenzi sunt scrise în Python. Pentru a rula acest lucru pe G1 vom avea nevoie de mediul de scriptare Android. Dacă nu îl vedeți în Market, îl puteți descărca scanând codul de bare de pe pagina respectivă, care leagă fișierul apk de pe această pagină.

După ce instalați și rulați ASE, veți dori să adăugați pe modulul Python din meniu: 1. Deschideți ASE și asigurați-vă că aveți o conexiune la internet funcțională (wi-fi sau 3G) 2. Apăsați butonul meniu de pe telefon și selectați Interpretori 3. Apăsați din nou pe meniu și selectați Adăugați 4. Selectați Python (în prezent v2.6.2 începând cu scrierea acestuia) și va descărca câteva fișiere zip Poate doriți să explorați crearea, deschiderea, editarea și rularea scripturilor pentru a vă familiariza cu Python prin ASE, dar nu este necesar.

Pasul 4: Copiați și rulați scriptul Cellbot.py pentru a lansa programul Python

Copiați și rulați scriptul Cellbot.py pentru a lansa programul Python
Copiați și rulați scriptul Cellbot.py pentru a lansa programul Python

Acest tutorial folosește un script Python pentru a fi „creierul” robotului. Obțineți cel mai recent cod din proiectul nostru open source Google Code. Aveți nevoie doar de fișierul cellbot.py, dar alții vă pot ajuta cu diverse lucruri pe care doriți să le explorați. Pur și simplu am conectat telefonul la conexiunea USB a computerului și am montat unitatea înainte de a copia fișierul pe / sdcard / ase / scripturi.

Programul creează o conexiune socket deschisă pentru a accepta o sesiune de telnet primită. De asemenea, imprimă comenzile primite pe ecran în timp ce le trimite portul serial. Puneți acest fișier pe cardul SD al telefonului în directorul / ase / scripts /. Pași detaliați pentru a încărca și rula scripturile: 1. Copiați scriptul cellbot.py în directorul / ase / scripts / al cardului SD 2. Asigurați-vă că ați demontat cardul SD de pe computer dacă le-ați copiat în acest fel, deoarece telefonul nu poate accesa fișierele în același timp cu computerul. 3. Deschideți aplicația Android Scripting Environment 4. Faceți clic pe cellbot.py pentru ao lansa. Ar trebui să vedeți o confirmare că dispozitivul este pregătit în acest moment să accepte sesiunile de telnet primite pe portul 9002. Sfat: Asigurați-vă că rulați „chmod 777 Comanda / dev / ttyMSM2 de la pasul # 3 mai întâi. Consultați pasul 5 pentru a găsi adresa IP a telefonului.

Pasul 5: Telnet în G1 și testați comenzile de trimitere

Telnet în G1 și testează comenzile de trimitere
Telnet în G1 și testează comenzile de trimitere
Telnet în G1 și testează comenzile de trimitere
Telnet în G1 și testează comenzile de trimitere
Telnet în G1 și testează comenzile de trimitere
Telnet în G1 și testează comenzile de trimitere

Telefonul ar trebui să fie pregătit pentru a vă conecta la telnet și a-i trimite comenzi de pe computer. Le va imprima pe ecranul telefonului pentru a confirma ce primește. Am folosit PuTTY pe Windows, dar am confirmat că minicom funcționează excelent pe Mac, așa cum este descris în acest instructable.

Mai întâi va trebui să găsiți adresa IP a telefonului. Acest lucru este disponibil accesând Meniu> Setări> Comenzi wireless> Setări Wi-Fi și apoi apăsând conexiunea activă curentă. Un mesaj pop-up toast va apărea cu adresa IP curentă în rețeaua locală. Scrieți acest lucru în timp ce îl veți folosi de fiecare dată când doriți să deschideți o sesiune telnet de pe computer. Atribuțiile IP expiră de obicei după un anumit număr de zile, deci este posibil să fie necesar să verificați din nou acest lucru. Notă: Acest tutorial presupune că computerul și telefonul dvs. se află în aceeași rețea locală. Rutarea către telefon din afara rețelei locale ar trebui să fie posibilă, dar nu este acoperită aici. Deschideți clientul telnet la alegere și conectați-vă la IP-ul telefonului de pe portul 9002. Din linia de comandă faceți acest lucru ca „telnet 192.168.1.1 9002” folosind IP-ul real al telefonului. Tastați câteva caractere și apăsați Enter pentru a le vedea afișate pe ecranul telefonului. Puteți tasta un q pentru a provoca închiderea scriptului Python, care ar trebui să închidă sesiunea terminalului. Dacă din orice motiv nu vă puteți conecta prin telnet și trebuie să eliminați programul, o simplă repornire a telefonului ar trebui să facă truc. Utilizatorii avansați pot dori să găsească ID-ul procesului prin ps și apoi să folosească kill pentru a-l opri. Avansat: o versiune viitoare a acestui lucru ar putea rula un server web local de pe telefon, mai degrabă decât să accepte comenzi prin telnet. De asemenea, explorăm XMPP pentru a discuta cu robotul dvs.

Pasul 6: Conectați un schimbător de nivel de 3.3v la 5v la Arduino

Conectați un schimbător de nivel de la 3.3v la 5v la Arduino
Conectați un schimbător de nivel de la 3.3v la 5v la Arduino
Conectați un schimbător de nivel de la 3.3v la 5v la Arduino
Conectați un schimbător de nivel de la 3.3v la 5v la Arduino
Conectați un schimbător de nivel de la 3.3v la 5v la Arduino
Conectați un schimbător de nivel de la 3.3v la 5v la Arduino

Arduino folosit în acest tutorial este un model de 5v, deci trebuie să convertim semnalul de 3.3v care iese din G1 folosind un schimbător de nivel. Ar trebui să se poată conecta direct la un Arduino de 3,3 v, dar nu am testat asta.

Există mai multe modalități de abordare, dar vom folosi un cip 74LS04 în acest exemplu. Puteți căuta unul aici și este probabil sub 1 USD. Eu și Tim am luat-o pe a noastră de la Hacker Dojo din Mountain View, CA, dar acestea sunt FOARTE obișnuite și ar trebui să fie abundente oriunde se vând sau se donează jetoane. La un nivel ridicat, vom trimite pur și simplu semnalul TX de pe placa HTS USB breakout în pinul 1 al cipului 74LS04. Pentru a funcționa, trecem prin cip de două ori și ieșim pinul 4 la pinul RX de pe Freeduino SB (pinul serial poate fi diferit dacă aveți o altă placă Arduino, dar toți ar trebui să accepte acest lucru). Urmați acești pași pentru a conecta schimbătorul de nivel și a conecta placa USB HTC (nu-l conectați încă la telefon și deconectați alimentarea de la Arduino): 1. Introduceți cipul 74LS04 pe placa dvs. de calcul. Asigurați-vă că cipul împiedică ruperea centrală, astfel încât pinii să nu fie scurtcircuitați (o mișcare stupidă pe care am făcut-o la început) 2. Soldat două fire pe placa USB HTC așa cum este descris în acest instructable, dar vom folosi doar pinii 7 (La sol) și 8 (TX0), deoarece facem doar transmisie unidirecțională pentru acest tutorial. 3. Conectați celălalt capăt al firului de masă (pinul 7) la o masă de pe panoul dvs. de calcul (care ar trebui să fie conectat la o masă de pe Arduino) 4. Conectați celălalt capăt al firului TX0 (pinul 8) la placa de masă unde rulează în pinul 1 al cipului 74LS04. (faceți o căutare de imagini pentru o diagramă completă a cipului) 5. Utilizați un fir pentru a conecta pinii 2 și 3 ai cipului 6. Conectați pinul 4 al cipului la punctul Arduino RX (pinul 0 de pe Freeduino SB și Arduino Duemilanove) 7. Conectați pinul 7 (GND) de pe cip la sol pentru placa dvs. de calcul (care se conectează, de asemenea, la masa Arduino) 8. Conectați pinul 14 (VCC) la puterea de 5v de pe placa dvs. de panou (care obține puterea de la Arduino Ieșire 5v) Acum ar trebui să fiți gata să conectați placa USB HTC Break-out în partea de jos a telefonului și să porniți Arduino. Verificați dacă există scântei și mirosuri și atingeți lucrurile pentru a vă asigura că sunt reci. Notă: Codul actual al celulei robotului se aprinde cu LED-ul 13 atunci când servomotorele robotului ar trebui să funcționeze. Dacă nu aveți încă un robot, puteți verifica dacă LED-ul se aprinde și se stinge pentru a confirma că funcționează.

Pasul 7: Încărcați programul Cellbots pe Arduino

Încărcați programul Cellbots pe Arduino
Încărcați programul Cellbots pe Arduino
Încărcați programul Cellbots pe Arduino
Încărcați programul Cellbots pe Arduino

Obțineți codul sursă Arduino de pe site-ul nostru al proiectului Google Code. Deschideți programul Cellbots.pde Arduino în editorul Arduino. Apoi împingeți-l pe placa Arduino.

Puteți testa vorbirea cu codul Arduino deschizând monitorul serial în editorul Arduino. Acesta este un mod excelent de a vă testa robotul sau dispozitivul vorbind direct cu Arduino înainte de a conecta totul la telefon. Codul trimite comenzile seriale înapoi la monitorul serial pentru a confirma ceea ce face chiar dacă nu aveți încă robotul construit. Notă: Nu puteți încărca programe pe Arduino în timp ce firul este conectat la pinul de intrare serial RX. Deci s-ar putea să doriți să puneți acest lucru într-un comutator, dar pur și simplu l-am deconectat atunci când trebuia să încărc un nou program.

Pasul 8: Rulați întregul proces

Rulați întregul proces
Rulați întregul proces
Rulați întregul proces
Rulați întregul proces
Rulați întregul proces
Rulați întregul proces

Ar trebui să puteți conecta placa USB HTC la telefon, să declanșați fișierul cellbot.py în ASE și să deschideți un terminal de sesiuni în telefon. Tastați „H” pentru ca telefonul să salute sau orice alte comenzi din fișierul README.txt.

Un „q” va părăsi scriptul Python de pe telefon și va închide soclul terminalului. Iată o recapitulare a modului în care funcționează totul: 1. Scriptul Python deschide un soclu pentru a accepta conexiunile telnet primite și a răsuna comenzile din portul serial 2 Ne conectăm de pe computerul nostru la telefon prin telnet pe portul 9002 și îi trimitem comenzile pe care le vedem pe ecran 3. Placa USB HTS se interfață cu portul USB al G1 și trimite semnalul 3.3v în pinul 74LS04 1. 4. semnalul iese din cipul pinului 2, revine pe pinul 3 și iese din nou pe pinul 4 la 5v 5. Arduino acceptă semnalul serial pe pinul RX 0 și îl procesează prin intermediul programului Cellbot.pde 6. Puteți tasta „q” pentru a ucide scriptul Python și a închide conexiunea telnet Acum că ați finalizat acest proces foarte complicat de a trimite comenzi de bază către un robot Arduino, este timpul să îl hackerați pentru a fi mai minunat! Nu avem încă funcții seriale bidirecționale, astfel încât Arduino nu poate trimite comenzi înapoi în telefon, dar lucrăm la asta. Rămâneți la curent abonându-vă la blogul nostru de la Cellbots.com. Despre autori: Tim Heath Cercetător principal care a pus la cale acest proces la Tech Shop din Menlo Park, unde este membru. Ryan Hickman Programator care a lucrat la codul Python și Arduino și a autorizat acest instructabil.

Recomandat: