Boris este un robot comandat prin intermediul unei mănuși cu accelerometru. (L-am denumit așa după Boris Karloff - pentru că a ieșit foarte cârpit, iar monstrul din Frankenstein nu are nume, so this was the next best thing).
Robotul are la bază un kit Magician, pe care am pus plăcuța de la prima etapă, un driver L298N pentru controlul motoarelor, 2 senzori digitali Sharp ca să nu intre în pereți și un modul Bluetooth RN-42. Alimentarea se face de la 2 seturi de câte 6 baterii R6 - unul pentru motoare, și unul pentru celelalte componente.
Mănușa conține un accelerometru cu 3 axe, un microcontroller (ATMega16 SMD), care preia informațiile de la accelerometru și în funcție de acestea generează comenzi pentru robot, și un modul Bluetooth care transmite comenzile către robot. Ideea era să se genereze comenzi pe baza accelerației gravitaționale - în funcție de poziția mănușii, aceasta ar fi măsurată pe una din axele accelerometrului, și se va genera comanda corespunzătoare.
Orientarea axelor:
Comenzi:
Desigur, valorile citite de la accelerometru nu vor fi fix 0 sau 1 (cred că cel mai bine ar fi să setez un prag la 0.5). Pentru mersul înapoi, mă gândeam să fac un fel de toggle (de exemplu, mâna întinsă în față, cu palma înspre exterior, și apoi comenzile normale).
Schema: (conține și stabilizatorul de tensiune de pe robot)
Cablajul plăcuței: (plăcuța e ff mică, sub 5cm x 5cm)
Mediu de dezvoltare: AVR Studio 6.0 + avrusbboot
Software-ul pentru robot e destul de straight-forward: așteaptă comenzi pe USART (vin sub forma 'w', 'a', 's', 'd') și în funcție de acestea dă drumul la PWM-uri (de exemplu, pentru 'w', ambele motoare vor primi PWM cu factorul de umplere 1 pentru a merge drept înainte, pentru 'a' și 'd' doar unul dintre motoare va primi PWM etc). Se verifică în permanență starea senzorilor, iar dacă aceștia detectează un obstacol refuză să intre în el.
Software-ul de pe mănușă se ocupă de colectarea datelor de la accelerometru (declanșarea conversiilor ADC-ului și colectarea rezultatelor). În funcție de valorile citite, trimite prin USART comenzi pentru robot.
PWM-urile și ADC-ul probabil au nevoie de ceva tuning (nu știu dacă e bine să ia curbele așa de brusc, cu 0 pe un motor și full speed pe celălalt).
N-am reușit să mă conectez la modulele alea Bluetooth for the life of me :| Laptop-ul le vede, se poate configura driver-ul, dar n-am reușit să mă conectez nici cu Putty, nici cu Hyperterminal.
De asemenea, plăcuța pentru mănușă s-a corodat foarte prost, așa că nu am avut ce face cu ea.
Senzorii Sharp funcționează, dar nu cum scrie în datasheet (adică scot la output 0 dacă detectează un obstacol).