Platforma Mobila Controlata de la Distanta

Lucrare de disertație

Platformă mobilă controlată de la distanță

Cuprins:

Capitolul 1 Introducere

Prezentarea generală a aplicației

Motivarea alegerii temei

Dezvoltarea ulterioară a proiectului

Microcontrolere si evoluția în timp a acestora

Generalități despre microcontrolere

Alte aplicații

Capitolul 2 Protocolul Bluetooth

Principalele caracteristici ale standardului Bluetooth / IEEE 802.15.1

Clasele de putere / acoperire și securitatea Bluetooth

Arhitectura Bluetooth…

Descoperirea dispozitivelor Bluetooth

Evoluția Bluetooth

Capitolul 3 Realizare practică platformă mobilă

Implementare Hardware

Placa de dezvoltare cu microcontroler Atmega 328P

Metode de comunicare

Motoare de curent continuu

Implementare Software

Accelerometru Smartphone

Aplicația Amarino

Codul pentru ghidarea prin intermediul Smartphone

Concluzii

Bibliografie

Anexe

Prezentarea generalǎ a aplicației

Proiectul își propune să realizeze un sistem de control al unui robot mobil, folosind un telefon mobil inteligent și motoare de curent continuu comandate PWM cu microcontrolerul AVR RISC ATMega32P.

Unul dintre punctele importante este sistemul decizional implementat software, cât și comanda motoarelor fără de care platforma mobilǎ nu și-ar îndeplini sarcinile.

Schema bloc ce prezintă funcționarea platformei mobile este prezentată în figura urmǎtoare:

Figura 1.1: Schema bloc a platformei mobile

Montajul conține microcontroler-ul al cărui rol este de a achiziționa datele prin intermediul modulului Bluetooth. Aceste date sunt prelucrate în timp real și pe baza lor se ia decizia de deplasare a robotului într-una din direcții. Microcontroler-ul ATMega32P are pini care pot fi setați atât ca intrări cât și ca ieșiri.

Comenzile date de microcontroler se transmit la motoare printr-o punte H care asigură totodată și puterea necesară funcționării motoarelor de curent continuu.

Alimentarea montajului se face la 9V, iar autovehiculul cu bateriile proprii la 12V (sau transformator pentru a asigura amperajul și o duratǎ de funcționare mai mare a motoarelor).

Toate activitǎțile platformei mobile sunt controlate și dirijate de un microcontroler. Controler-ul, în general, este folosit pentru a prelua stǎri ale mediului înconjurǎtor și de a comanda mai departe un alt sistem. Începuturile controlerelor îl dau ca fiind de mari dimensiuni, iar după apariția microprocesoarelor, reducȃndu-și semnificativ spațiul ocupat. Aceastǎ miniaturizare continuǎ și astǎzi, încercȃndu-se a se implementa cȃt mai multe componente pe un spațiu cȃt mai mic (micrometri, nanometri), numit chip, născȃndu-se astfel microcontroler-ul, specializat pe operațiile de control. Tipic, un microcontroler conține următoarele:

Unitatea centralǎ;

Generatorul de tact (la care trebuie adǎugat din exterior un cristal de cuarț, sau un circuit RC pentru aplicațiile mai puțin pretențioase);

Memoria volatilǎ (RAM);

Memoria nevolatilǎ (ROM/EEPROM);

Dispozitive I/O seriale și paralele;

Controler de întreruperi, numǎrǎtoare, timere, convertoare A/D și D/A etc.;

Periferice.

1.2 Motivarea alegerii temei

Electronica este un domeniu care se dezvoltă foarte rapid, de la an la an apărând noi tehnologii, tot mai spectaculoase.

Utilizarea microcontrolerelor în aplicații, permite înlocuirea componentelor hard (electrice și mecanice) cu componente soft, fapt ce reduce foarte mult costurile de dezvoltare al aplicațiilor. Din această cauză ar trebui ca de fiecare dată când se realizează un sistem să se încerce pe cât posibil înlocuirea componentelor mecanice și electrice cu alte componente electronice ce au înglobate componente soft.

Tema actualului proiect de disertație vizează să aplice eficient elementele unității mecanice, cu elemente de soft care să ofere un mediu favorabil și fiabil realizării unei aplicații de control al unității mecanice prin intermediul unui telefon mobil cu sistem de operare Android 4.2 Jelly Bean.

Datorită nevoii tot mai ridicate de transmitere fiabilă a datelor cu viteze mari, tehnologiile performante utilizate în prezent în diverse domenii ale comunicațiilor au pătruns și în roboții mobili. Astfel robotul pe care încerc să-l dezvolt conține ca suport de comunicații tehnologia Bluetooth.

Odată creat robotul, cu suport de comunicații performant oferit de Bluetooth, se pune problema dezvoltării unui mediu soft, care să permită comunicarea datelor și executarea comenzilor în condiții de viteză și fiabilitate optimizabile.

Domeniile de aplicare a platformelor mobile se lărgesc mereu, ele putând fi utilizate în industrie, transporturi și agricultură, în sfera serviciilor, în cunoașterea oceanului și a spațiului cosmic, în cercetarea științifică.

Pe această linie proiectul își propune studiul și elaborarea unor elemente soft care să permită abordarea mai eficientă a sistemului de comunicație Smartphone – robot mobil, vizând realizarea optimă a proceselor de comandă, achiziție de date și execuție.

Majoritatea roboților din zilele noastre funcționează controlați de microcontrolere (unul sau mai multe). Cu cât robotul este construit să realizeze mai multe funcții, cu atât microcontrolerul care îl comandă trebuie să fie mai performant. La rândul lui, pentru a reuși să comande un robot, microcontrolerul trebuie să fie programat. Acesta poate fi programat atât în limbaj de asamblare, cât și în limbaj de nivel înalt (HLL), unul dintre acestea fiind limbajul C. Astăzi cele mai multe companii utilizează pentru programare limbajul C.

Folosind limbajul C, mi-am propus să studiez și să implementez programul pentru funcționarea unui model de robot care poate fi controlat de la distanță prin intermediul unui Smartphone.

1.3 Dezvoltarea ulterioară a proiectului

Prin intermediul unor senzori se poate ajunge la un robot autonom care să ia singur decizii, fără a fi nevoie de control uman.

Astfel se pot memora obstacole, crea hărți care să ne dea mai multe detalii despre așezarea obiectelor, fie ele de dimensiuni mari sau mici, în spațiul în care se aflǎ vehiculul. De asemenea citirea distanței efective până la obstacol cu senzorii infraroșu ar ajuta mult în orientarea vehiculului, și transmiterea acestor date către un utilizator printr-un sistem de transmisie wireless care nu ar limita autonomia completă a sistemului.

1.4 Microcontrolere si evoluția în timp a acestora

Dupǎ cum ne-au obișnuit în implicarea dezvoltǎrii tehnologiei, era firesc ca japonezii sǎ fie prezenți și sǎ aibǎ un rol important în proiectarea microprocesorului, și ulterior al microcontrolerului. În anul 1969, o echipǎ de ingineri japonezi de la compania BUSICOM sosesc în Statele Unite la invitația fǎcutǎ de Intel cu scopul de a înlocui unele componente integrate cu proiectele fǎcute de ei. Soluționarea acestei probleme a însemnat funcționarea circuitului integrat determinat de un program memorat în el. Dupǎ un timp, dupǎ mai multe soluții încercate, a luat naștere primul microprocesor numit 4004 de 4 biți cu o vitezǎ de 6000 de operații pe secundǎ, Intel obținȃnd drepturile de a vinde blocul integral abia în 1971, deoarece au cumpǎrat licența de la compania BUSICOM, aceștia neavȃnd idee ce comoarǎ vȃnd. Vǎzȃnd cǎ au un real succes și cǎ microprocesoarele își fac simțitǎ prezența, cei de la Intel au progresat, iar în aprilie 1972 a ieșit pe piațǎ primul microprocesor de 8 biți numit 8008. Putea sǎ adreseze 16 Kb de memorie și avea 45 de instrucțiuni și o vitezǎ de 300.000 de operații pe secundǎ, acesta fiind predecesorul tuturor microprocesoarelor de astǎzi. Dezvoltǎrile au continuat, iar în anul 1974 au lansat microprocesorul 8080 pe 8 biți ce avea 64 Kb memorie și 75 de instrucțiuni, cu prețul începȃnd de la 360$.

Dȃndu-și seama de ce se întȃmplǎ, companii mari precum Motorola și MOS Technology au început producerea de microprocesoare, instalȃndu-se astfel competitivitatea pe aceastǎ nișǎ a pieții, scǎzȃnd totodatǎ și prețul de vȃnzare al acestora. În 1976 se înființeaza Zilog Inc., patronatǎ de un fost angajat al Intel, care a contribuit decisiv la producerea primelor microprocesoare, ieșind pe piațǎ cu popularul Z80, fiind foarte puternic la vremea lui deoarece s-a dezvoltat în așa fel încȃt sǎ fie compatibil cu 8080, adǎugȃnd fațǎ de acesta un numǎr mare de registre, 64 Kb memorie, 176 instrucțiuni, o opțiune încorporatǎ pentru reîmprospǎtarea memoriei RAM dinamice, o singurǎ sursǎ și o vitezǎ de lucru mult mai mare. Așadar, microprocesorul 8080 de la Intel și Z80 de la Zilog au stat la baza dezvoltǎrii microprocesoarelor și microcontrolerelor de astǎzi.

Cele mai populare microcontrolere în prezent sunt de la Microchip (PIC) și Atmel. Primul microcontroler de la Microchip (PIC 1650) a apǎrut de mai bine de 20 de ani, de pe vremea cȃnd firma aparținea de General Instruments. În ultimii ani a cunoscut o dezvoltare explozivǎ dȃnd naștere a 6 serii de subfamilii de microcontrolere, și anume: PIC 10, PIC 12, PIC 14, PIC 16, PIC 17 și PIC 18. Au fost primele microcontrolere pe 8 biți cu arhitectura RISC, cu un set de doar 33 de instrucțiuni, iar ca o particularitate, dimensiunea cuvȃntului pentru program este de 12, 14 sau 16 biți, cuvȃntul de date ramȃnȃnd tot de 8 biți. Pentru cele 6 serii existǎ numeroase variante, caracterizate prin dimensiuni mici și costul redus. Concurentul direct al seriei PIC este familia numitǎ AVR a celor de la Atmel, dezvoltatǎ în ultimii ani, ce oferǎ variante asemǎnǎtoare ca resurse cu familia PIC, performanțele fiind similare sau mai bune. Microcontrolerele din familia ATMEL din seria AVR, în momentul de fața se împart în 3 subfamilii:

AT90Sxxxx, printre primele apǎrute, aflȃndu-se în continuare în producție;

Subfamilia ATmega – acestea sunt microcontrolere AVR avansate, fiind supradotate fatǎ de restul cu autoprogramare, protecția programelor scrise în memoria flash, multiplicator hardware în 2 tacte, etc. Ultimele apǎrute în aceastǎ subfamilie sunt proiectate pe straturi de siliciu mai subtiri și funcționeaza la frecvențe ce depǎșesc 16 Mhz;

Subfamilia ATtiny – acestea sunt destinate aplicațiilor cu complexitate redusǎ.

Generalități despre microcontrolere

Putem defini un microcontroler ca fiind un circuit universal care poate înlocui orice circuit integrat digital, avȃnd incorporat o unitate de calcul (microprocesorul) și mai multe periferice ce ajutǎ la îndeplinirea sarcinilor stabilite și încǎrcate de programator.

În figura următoare se prezintă ca exemplu o structură tipică de microcontroler:

Figura 1.2: Structura microcontroler pe 8 biți cu arhitectura RISC

Microcontrolerul interacționeazǎ cu mediul înconjurǎtor prin intermediul semnalelor de intrare ce definesc stǎri ale mediului extern, le prelucreaza și raporteazǎ prin semnalele de ieșire. Structura internǎ a unui microcontroler poate fi prezentatǎ ca avȃnd un set de blocuri specializate sau module (comunicare serialǎ, bazǎ de timp etc.) și un nucleu care comunicǎ cu mediul extern prin intermediul acestora. Nucleul preia datele prin intermediul semnalelor de intrare, le prelucreazǎ, apoi reconfigureazǎ blocurile specializate, prin execuția programului încǎrcat în memorie (FLASH – memoria de program ce conține textul programului), furnizȃnd la ieșire comenzile pentru a fi executate. Comanda este decodificatǎ cu ajutorul decodificatorului de comenzi (CDC), descifrȃnd-o și executȃnd-o. În cazul comenzilor ce presupun operații aritmetice sau logice, acesta va selecta una din funcțiile Unitǎții Aritmetico-Logice (ALU – modul destinat operațiilor aritmetice și logice ce conține la intrare Operandul Stȃng, Operandul Drept și intrarea de selecție a funcției) și concomitent va selecta operandul stȃng sau drept din cei 32 de regiștri de uz general (calculele aritmetico – logice se efectueazǎ prin intermediul acestor registri). În cazul unei comenzi de control cermediul semnalelor de intrare, le prelucreazǎ, apoi reconfigureazǎ blocurile specializate, prin execuția programului încǎrcat în memorie (FLASH – memoria de program ce conține textul programului), furnizȃnd la ieșire comenzile pentru a fi executate. Comanda este decodificatǎ cu ajutorul decodificatorului de comenzi (CDC), descifrȃnd-o și executȃnd-o. În cazul comenzilor ce presupun operații aritmetice sau logice, acesta va selecta una din funcțiile Unitǎții Aritmetico-Logice (ALU – modul destinat operațiilor aritmetice și logice ce conține la intrare Operandul Stȃng, Operandul Drept și intrarea de selecție a funcției) și concomitent va selecta operandul stȃng sau drept din cei 32 de regiștri de uz general (calculele aritmetico – logice se efectueazǎ prin intermediul acestor registri). În cazul unei comenzi de control ce presupune saltul condiționat sau necondiționat, CDC-ul va seta adresa urmǎtoarei comenzi din Program Counter (PC – registru numǎrǎtor destinat pentru selectarea comenzii din memoria programului). În cazut transferurilor de date, tot CDC-ul este intermediarul ce asigurǎ legatura dintre nucleu și periferice. Fiecare microcontroler din anumita serie conține propriul sǎu set de instrucțiuni, informațiile despre acestea regǎsindu-se în datele tehnice.

Alte aplicații

Un pas important în industria de automobile, la nivelul anului 1999, un BMW seria 7 utiliza 65 de microcontrolere, iar un Mercedes S-Classe utiliza 63 de microcontrolere.

Uși care se deschid automat, senzori peste tot, lifturi care coboară mașina într-un loc de parcare cu ajutorul unor paleți, scannere laser și locuri așezate într-un mod foarte ordonat. Este vorba despre o parcare proiectată de firma germană WÖHR, care va fi construită în Madrid. Aceasta are 5 nivele, o suprafață de mai mult de 700 de metri pătrați și 155 de locuri de parcare.

Figura 1.3: Parcare subteranǎ

Oamenii de științǎ de la institutul de cercetare din SUA au creat un robot umanoid ce va avea rolul de pompier. Robotul numit SAFFIR a fost creat pentru mai multe misiuni: se deplaseazǎ de-a lungul navelor, interacționează cu oamenii și luptǎ împotriva incendiilor, astfel preluȃnd multe din situațiile periculoase în care este expus omul.

Deplasarea lui se efectueazǎ cu ajutorul unor senzori sofisticați printre care o cameră video, un senzor de gaz și o cameră stereo cu infraroșii, care îi permit sǎ vadǎ prin fum. Robotul va avea capacitatea de a manevra stingǎtoare de incendiu și de a arunca cu grenade care conțin o substanțǎ ce accelereazǎ stingerea focului.

Deoarece va fi folosit pe vasele Marinei SUA, robotul este dotat cu un sistem ce îi permite sǎ își menținǎ echilibrul în cazul unor furtuni pe ocean.

Figura 1.4: Robot umanoid

În lupta pentru apǎrarea naționalǎ fac parte și roboții militari luptǎtori, elemente principale ale cȃmpului de luptă cibernetizat, cu întrebuințare în toate categoriile de forțe și genurile de armǎ. O grupǎ aparte o constituie roboții cu misiuni specifice infanteriei, blindatelor și aparaturii antiaeriene, care pot acționa independent, la comanda senzorilor, după programe prestabilite sau integrați în sisteme de armament, în conformitate cu dinamica acțiunilor de luptǎ.

Figura 1.5: Robot militar

Protocolul Bluetooth

Bluetooth reprezintă una dintre cele mai avansate tehnologii de comunicație fără fir. Cu putere mare de transfer al datelor și consum foarte scăzut de energie, acționând pe distanțe mici, până la 100m, Bluetooth se afirmă ca fiind mijlocul prin care toate echipamentele care ne înconjoară pot interacționa. Un atu al tehnologiei fără fir Bluetooth este acela că poate asigura transmisie de date și de voce în același timp. Acest lucru le oferă utilizatorilor ocazia să se bucure de o mulțime de soluții inovatoare puse în practică cu succes în ultimii ani.

De la casca de telefon fără fir sau telefonul mobil conectat wireless, până la multitudinea de periferice ale unui PC (cuprinzând treptat și alte echipamente casnice), Bluetooth reprezintă cea mai ușoară modalitate de a conecta aceste echipamente într-o rețea comună, mobilă, care va revoluționa modul de utilizare al unui computer, și care va reuși să mențină securitatea la un nivel ridicat.

Comunicațiile Bluetooth sunt un standard de comunicație pentru dispozitive mobile, standard care se aplică pe distanțe ceva mai mari decât în cazul comunicațiilor în infraroșu.

Sistemul Bluetooth este cel mai adecvat atunci când distanța dintre emițător/receptor este scurtă, rata de transfer este mare, iar puterea consumată trebuie menținută cât mai scăzută.

Ideea ce a dat naștere tehnologiei wireless Bluetooth a apărut în 1994 când compania Ericsson Mobile Communications a decis investigarea fezabilității unei interfețe radio de mică putere și cost redus între telefoanele mobile și accesoriile acestora.

Specificațiile Bluetooth sunt practic acoperite de standardul IEEE 802.15.1 (astfel se justifică termenul „standardul Bluetooth”) și reprezintă una dintre cele mai avansate tehnologii de comunicație fără fir. Cu putere mare de transfer al datelor și consum foarte scăzut de energie, acționând pe distanțe mici, de la 1m pânâ la 100m și numai "indoor", Bluetooth se afirmă ca fiind mijlocul prin care toate echipamentele care ne înconjoară pot interacționa.

Bluetooth prezintă o tehnologie pentru distanțe scurte cu costuri reduse, vizând crearea unor rețele personale (PAN-Personal Area Nework).

Principalele tipuri de aplicații ale Bluetooth sunt:

controlul wireless al comunicării între telefonul celular și căștile hands free sau car kitul. Această aplicație a devenit cea mai populară.

rețea wireless între calculatoare într-un spațiu limitat și cerințe mici de lungime de bandă, aici putând include și cazul PC-robot.

comunicație wireless între dispozitivele de intrare și ieșire ale unui calculator, cele mai întalnite fiind mouse-ul,tastatura sau imprimantă.

înlocuirea comunicării tradiționale seriale prin fir în echipamentele de test, receptorul GPS și echipamente medicale.

pentru controale unde infraroșul era folosit.

controlul wireless al consolei de jocuri – Nintendo’s Wii și Sony’s PlayStation 3 folosesc tehnologia Bluetooth pentru consolele lor wireless.

Pentru a putea analiza eficient soluțiile fără fir (wireless), este utilă comparația cu alte tehnologii:

Caracteristici Bluetooth

→ este îndreptată către aplicații de voce și date;

→ operează în spectrul 2.4GHz;

→ funcționează pe o distanța de la 1m la 100 m;

→ este capabilă să treacă prin obiecte solide, este omnidirecțională și nu necesită o poziționare în linie cu celelalte dispozitive pentru conectare;

→ securitatea este și va fi o prioritate în dezvoltare;

→ costul unui chip este mic, nu necesită adrese de retea, aprobări și celelalte setări pentru o rețea tipică de Internet;

Sistemul de comunicație Bluetooth a fost proiectat cu scopul de a conecta mai multe dispozitive pentru a implementa o rețea mică și de aceea protocolul care dictează regulile de comunicație are în vedere o arhitectură de tip master-slave.

În figura de mai jos se prezintă un dispozitiv și o rețea Blutooth (Piconet):

Figura 2.1: Rețea Blutooth (Piconet)

Rețelele Piconet au formă de stea cu dispozitivul master situat central. Pasul în frecvență nu este sincronizat între rețelele Piconet, din acest motiv diferite rețele se pot ciocni arbitrar pe aceeași frecvență.

Tehnologia wireless Bluetooth reprezintă una dintre cele mai avansate și răspândite tehnologii de comunicație fără fir.

Bluetooth prezintă următoarele avantaje principale:

→facilitează atât comunicațiile de date cât și pe cele vocale;

→oferă posibilitatea implementării unor rețele ad-hoc și a sincronizării între diverse dispozitive electronice și echipamentele periferice ale computerelor care se află la distanțe de ordinul a 10 m;

→asigură soluții pentru comunicații vocale și de date fără cabluri, utilizând alimentări standard low-power, tehnologii de cost redus ce pot fi cu ușurință integrate în orice dispozitiv și deschide calea unei mobilități totale.

Specificațiile Bluetooth definesc capabilități de legături radio pe distanțe scurte (aproximativ 10m) sau opțional pe distanțe medii (aproximativ 20m) pentru transmisii vocale sau de date de capacitate maximă 720kbps pe canal .

Gama de frecvențe de operare o constituie banda nelicențiată industrială, științifică și medicală (ISM) de la 2.4GHz la 2.48Hz, utilizând tehnici de împrăștiere a spectrului (frequency hopping spread spectrum), cu salturi de frecvență ale semnalului duplex de până la 1600 salturi pe secundă. Semnalul execută salturi prin 79 intervale de frecvență de 1MHz, pentru a realiza o bună imunitate la interferențe. Puterea emisă este conform specificațiilor 0dBm (1mW) pentru implementările pentru acoperiri reduse (10m) și maxim 20dBm (100mW) pentru versiunile pentru domenii mai extinse (100m).

Când s-au alcătuit specificațiile radio, un mare accent s-a pus pe posibilitatea implementării design-ului într-un singur chip CMOS, în consecință reducându-se costul, puterea consumată și dimensiunile necesare pentru implementarea în dispozitivele mobile.

Comunicațiile vocale: Sunt utilizate până la trei canale vocale sincrone simultan sau un canal care suportă simultan transmisie de date asincronă și transmisie vocală sincronă. Fiecare canal vocal suportă sincron 64kb/s în fiecare sens.

Comunicații de date: Un canal de date asincron poate suporta maxim 723.2kbps în sens direct în conexiune asimetrică (și până la 57.6kbps în sens invers), sau 433.9kbps în conexiune simetrică.

Structura master-slave: Deorece sistemul de comunicație Bluetooth a fost proiectat cu scopul de a conecta mai multe dispozitive pentru a implementa o rețea de tip LAN, protocolul de sincronizare se bazează pe o structură de tip master-slave.

Fiecare dispozitiv Bluetooth poate stabili conexiuni cu încă 7 alte dispozitive. Numai o singură conexiune este activă la un moment de timp, restul fiind într-o stare semi-activă. Pe scurt aceste dispozitive au un număr de adrese fixe, dar nu au acees la mediul de transmisie decât atunci când le vine rândul sau li se cere să comunice cu un master. Sincronizarea frecvențelor presupune definirea unor intervale de timp de 625 de microsecunde, unde masterul își va transmite pachetele în intervalele de timp cu număr par, iar slave-urile în intervalele de timp cu număr impar.

Unitățile Bluetooth aflate în același domeniu spațial de acțiune radio pot realiza ad-hoc conexiuni punct-la-punct și/sau punct-la-multipunct. Unitățile pot fi adăugate sau deconectate în mod dinamic la rețea. Două sau mai multe unități pot utiliza în comun un canal al unui piconet. Se pot forma mai multe picorețele și acestea se pot lega ad-hoc împreună formând scatternet, pentru a realiza configurații flexibile de comunicații și schimburi de date.

Dacă într-un același domeniu spațial se află mai multe pico-rețele, fiecare lucrează independent și fiecare are acces la întreaga bandă de frecvențe. Fiecare pico-rețea este stabilită pe un canal diferit, cu salt în frecvență. Toți utilizatorii participanți la aceeași pico-rețea sunt sincronizați pe acest canal. Spre deosebire de dispozitivele cu infraroșu (IR), unitățile Bluetooth nu sunt limitate de necesitatea vederii directe între ele.

Figura 2.2: Rețelele Piconet interconectate alcătuiesc o rețea Scatternet

Pentru a se respecta normele de imunitate la coliziuni între date, un scatternet poate cuprinde până la 10 piconet-uri.

Principalele caracteristici ale standardului Bluetooth / IEEE 802.15.1

Legătura între Bluetooth și IEEE s-a făcut prin faptul că primele specificații Bluetooth (1.0) -1999 au devenit baza IEEE Standard 802.15.1-2002 (prin care se ratifica Bluetooth 1.1), consacrând astfel importanța și forța noii tehnologii.

Deși, în mod firesc, Bluetooth a urmat o evoluție ascendantă marcată și de standarde IEEE, principalele caracteristici ale standardului inițial (1.0) se păstrează ca majoritare și definitorii.

2.2 Clasele de putere / acoperire și securitatea Bluetooth

În funcție de puterea maximă emisă s-au standardizat 3 clase principale în care se pot fabrica dispozitivele Bluetooth, acestora corespunzându-le și diferite acoperiri (raze de acțiune) maxime (tabelul de mai jos).

Figura 2.3: Clase Bluetooth

Deoarece semnalele radio pot fi ușor interceptate, dispozitivele Bluetooth au încorporate proceduri de securizare, pentru prevenirea receptorilor rău-intenționați și nevizați de mesaj.

Sunt trei metode de securizare a informației:

Rutina de interpelare pentru autentificare;

Cifrarea fluxului informațional, ca metodă de criptare;

Generarea unor chei de sesiune – aceste chei pot fi oricând schimbate pe parcursul unei conexiuni stabilite.

În algoritmii de securizare sunt utilizate trei entități:

Adresa dispozitivului Bluetooth (BD_ADDR pe 48 biți), care este o entitate publică unică pentru fiecare dispozitiv (această adresă se obține prin procedura Inquire);

Cheie privată specifică utilizatorului (128 biți), care este o entitate secretă (cheia privată derivă din procedura de inițializare și nu este dezvăluită niciodată);

Un număr aleator (128 biți), care diferă la fiecare nouă tranzacție. Acest număr este derivat dintr-un proces pseudo-aleator în unitatea Bluetooth.

În plus față de aceste funcții la nivel de legătură, salturile de frecvență și transmisia limitată spațial ajută și ele la prevenirea recepționărilor neautorizate.

2.3 Arhitectura Bluetooth

O caracteristică cheie a Bluetooth este aceea de a permite dispozitivelor realizate de diverși producători să lucreze împreună. Pentru acest scop, Bluetooth nu definește doar un sistem radio, ci și o stivă de protocoale pentru ca aplicațiile respective să poată sesiza prezența altor dispozitive Bluetooth, să descopere ce servicii pot acestea oferi și să utilizeze aceste servicii. Stiva de protocoale este definită ca o serie de straturi, deși unele caracteristici nu pot fi delimitate ca aparținând unui anumit strat. În figura de mai jos este evidențiat acest aspect. Profilurile Bluetooth ghidează aplicațiile în utilizarea stivei de protocoale Bluetooth. TCS (Telephony Control Protocol Specification) oferă servicii telefonice.

SDP (Service Discovery Protocol) lasă dispozitivele Bluetooth să descopere ce servicii suportă celelalte dispozitive. RFCOMM oferă o interfață serială asemănătoare cu RS232. L2CAP multiplexează date de la straturile superioare și convertește dimensiunile pachetelor informaționale, după necesități. HCI manipulează comunicațiile între modulul Bluetooth și aplicația gazdă. LM controlează și configurează legăturile cu alte dispozitive. BB/LC controlează legăturile fizice prin radio, asamblează pachetele și controlează salturile în frecvență. Stratul Radio modulează și demodulează datele pentru transmisia și recepția aeriană.

Figura 2.4: Stiva de protocoale Bletooth

2.4 Descoperirea dispozitivelor Bluetooth

Presupunem că avem de-a-face cu două dispozitive echipate Bluetooth, un telefon celular și un laptop. Celularul este capabil să se comporte ca un modem, folosind profilul Dial-Up Networking și scanează periodic să vadă dacă cineva dorește să-l utilizeze.

Utilizatorul laptop-ului deschide o aplicație care necesită o legătură Bluetooth dial-up. Pentru a utiliza această aplicație, laptop-ul știe că are nevoie să stabilească o legătură Bluetooth cu un dispozitiv ce suportă profilul Dial-Up Networking. Primul pas în stabilirea unei astfel de conexiuni este de a afla ce dispozitive Bluetooth se află în zonă, așa că laptop-ul inițiază o procedură Inquiry pentru a sonda vecinătatea cu alte dispozitive.

Pentru aceasta, laptop-ul transmite o serie de pachete de interogare (inquiry) și eventual telefonul celular răspunde cu un pachet FHS (Frequency Hop Synchronisation). Pachetul FHS conține toate informațiile de care laptop-ul are nevoie pentru crearea unei legături cu celularul. Acesta conține de asemenea și informații despre clasa dispozitivului, informații structurate pe două nivele: părți majore – a fost descoperit un telefon și părți minore – telefonul descoperit este un telefon celular.

În același mod, orice dispozitiv Bluetooth din zonă, care scanează mediul în căutarea de mesaje Inquiry, va răspunde cu un pachet FHS, astfel încât laptop-ul acumulează o listă cu dispozitive.

Ceea ce se întâmplă mai departe depinde de proiectantul aplicației. Laptop-ul poate prezenta utilizatorului o listă a tuturor dispozitivelor descoperite și îl poate lăsa pe acesta să decidă cum să continue; de menționat că în acest stadiu laptop-ul nu-i poate prezenta utilizatorului decât informații referitoare la tipul dispozitivelor descoperite.

2.5 Evoluția Bluetooth

Ideea ce a dat naștere tehnologiei wireless Bluetooth a apărut în 1994 când compania Ericsson Mobile Communications a decis investigarea fezabilității unei interfețe radio de mică putere și cost redus între telefoanele mobile și accesoriile acestora.

În februarie 1998 a luat ființă Grupul de Interes Special (SIG). Astăzi Bluetooth SIG include companiile promotoare 3Com, Ericsson, IBM, Intel, Lucent, Microsoft, Motorola, Nokia și Toshiba, și mii de companii – membri asociați sau adoptori.

Inițial misiunea SIG a fost de a monitoriza dezvoltarea tehnologiei radio pentru domenii restrânse și de a crea un standard global deschis, prevenind astfel devenirea acestei tehnologii proprietatea unei singure companii. Acest lucru a avut ca rezultat apariția primei specificații Bluetooth (1.0) 1999.41 .

Capitolul 3 Realizare practică platformă mobilă

Inițial, plăcile de dezvoltare au fost concepute pentru a fi utilizate de către ingineri în dezvoltarea de produse, iar cu timpul tot mai mulți pasionați de electronică au început să le cumpere, acestea având un cost redus de achiziție.

Spre deosebire de calculatoarele de uz general sau computerele personale, o placă de dezvoltare are puțin hardware dedicat interfeței cu utilizatorul.

Acestor plăci de dezvoltare li se adaugă perifericele necesare, transformându-le în prototipuri pentru unii oameni care nu ar avea altă posibilitate de a-și pune ideile în practică.

Aceste dispositive oferă un grad ridicat de învățare a modului de funcționare al oricărei familii de microcontrolere.

Figura 3.1: Placă de dezvoltare

Implementare Hardware

Figura 3.2: Schema bloc de funcționare a robotului

Funcționare:

Platforma de dezvoltare reprezintă sistemul de comandă al robotului și conține 14 pini digitali de intrare-ieșire și 6 pini analogici. Pentru acest robot s-au folosit următorii pini digitali: D3(PWM), D5(PWM), D6(PWM) și D9(PWM) pentru controlul motoarelor de curent continuu.

Semnalele procesate sunt apoi transmise către driver-ul de motoare ce comandă, conform principiului unei punți H, cele două motoare electrice de curent continuu ale robotului.

3.1.1 Placa de dezvoltare cu microcontroler Atmega 328

În acest moment pe piață există o gamă variată de sisteme de dezvoltare bazate pe microcontroler. Am ales să folosesc această placă de dezvoltare datorită avantajelor pe care le prezintă față de celelalte sisteme:

costuri de achiziție reduse

poate fi folosit pe orice sistem de operare (Linux, Windows sau MacOS)

un mediu de programare simplu și ușor de învățat

este open source, atât placa de dezvoltare, cât și mediul de programare.

Această placă de dezvoltare este un instrument prin care putem realiza sisteme informatice capabile să perceapă și să controleze lumea înconjuratoare. Acest instrument este open-source și este compus dintr-un mediu de dezvoltare (o variantă de Wiring – platformă folosită pentru procese multimedia) și o placă de dezvoltare cu microcontroler AVR.

Poate fi folosită pentru dezvoltarea de obiecte interactive. Informația este preluată de la o gamă variată de senzori și comutatoare, se procesează în interiorul microcontrolerului AVR și este transmisă către o gamă la fel de variată de lumini, motoare, actuatoare.

Microcontrolerul întâlnit pe această placă de dezvoltare este Atmega 328, un microcontroler ce funcționează cu o magistrală de date de 8 biți, ce are la bază arhitectura redusă a setului de instrucțiuni (RISC). Se urmărește maximizarea performanțelor prin simplificarea setului de instrucțiuni. În locul unei instrucțiuni lungi cu mulți parametri se pot folosi mai multe instrucțiuni de lungime redusă, ceea ce duce la creșterea performanței în structuri de tip pipeline.

De exemplu, o structură tip pipeline implementată cu structura RISC permite printre altele obținerea unei performanțe sporite și creșterea frecvenței de ceas a sistemului. Pe lângă acest element, Atmega 328 P are 1KB EEPROM, 2KB SRAM, 23 linii pentru operațiuni de intrare/ieșire, 3 ceasuri/numărătoare, interfețe programabile USART, SPI, 6 canale pentru convertor analog-digital cu rezoluția de 10 biți. Acest microcontroler ne oferă posibilitatea de a crea o gamă largă de aplicații.

Cele mai dese aplicații, realizate cu această placă de dezvoltare sunt roboții. Ca elemente componente putem enumera pe scurt: placa de dezvoltare, senzori de distanță, lumină sau alți senzori specifici aplicației, motoare și servomotoare, interfețe de comunicare cu utilizatorul sau computerul. Un robot destul de simplu de construit este cel de light follower. Practic se folosesc două motoare electrice controlate prin PWM-ul de pe placa de dezvoltare, care sunt pornite în funcție de lumina ce cade pe cei doi fotorezistori. Astfel, din sofware, programatorul va decide dacă robotul său va merge către lumină sau va fugi de aceasta. De multe ori, acest tip de robot servește ca platformă de pornire pentru aplicații mult mai complexe, cum ar fi roboți ce se pot deplasa într-un labirint pentru a recupera diverse obiecte, roboți capabili să urmeze o linie (aplicație deja implementată în industria auto pentru a detecta situațiile de schimbare a benzii de mers), roboți capabili să ocolească obstacolele sau să reacționeze la apariția subită a acestora. În ceea ce privește ultima aplicație descrisă, ea face parte din tehnologia implementată în autoturismele de ultimă generație ce mențin o distanță de siguranță față de mașina din față, frânând automat când acea distanță scade sub o anumită limită.

Specificații:

Microcontroler: Atmega328

Tensiune de lucru: 5V

Tensiune de intrare(recomandat): 7V

Tensiune de intrare limită: 6-20V

Pini digitali: 14(6 PWM output)

Pini analogici: 6

Intensitatea de ieșire: 40mA

Intensitatea de ieșire pe 3.3V: 50 mA

Flash Memory: 32 KB(Atmega 328), dintre care 0.5 KB sunt folosiți pentru bootloader

SRAM: 2KB(Atmega 328)

EEPROM: 1KB(Atmega328)

Clock Speed: 16 MHz

Figura 3.3: Placă de dezvoltare

Intrările analogice sunt folosite pentru citirea semnalelor nondigitale (ex: senzori de temperatură, senzori de lumină, senzori de presiune, umiditate).

Intrările/ieșirile digitale sunt folosite pentru citirea semnalelor digitale (ex: un întrerupător de la un bec poate avea două stări: închis (zero) sau deschis (unu)).

PWM (Pulse With Modulation) poate fi utilizat pentru a îndeplini o varietate foarte mare de sarcini, de la iluminarea LED până la controlul vitezei motoarelor electrice.

Partea de software a platformei este integrată într-o interfață grafică de tip IDE, bazată pe limbajul de programare Processing. Programarea controllerului de pe platforma fizică se face folosind un limbaj de programare asemănător cu limbajul C. Interfața este multiplatformă, putând rula în Windows, Mac OS și Linux.

Programul poate fi obținut atât ca executabil specific platformei de lucru dar și sub formă de cod sursă pe care îl putem compila conform condițiilor specifice pe care le avem. După instalare interfața principală a programului arată ca în captura de ecran de mai jos:

Figura 3.4: Interfața de programare

Interfața de programare se configurează astfel:

Din meniul Tools → Serial Port se selectează portul C0M folosit de placa de dezvoltare

Figura 3.5: Alegere COM

• Din meniul Tools → Sketch vom importa librăria MeetAndroid

Figura 3.6: Importare librărie MeetAndroid

Din meniul Tools → Board se selectează tipul de placă folosit

Figura 3.7: Selectare placă de dezvoltare

Zona meniu:
  Verifică programul pentru erori 
  Încarcă programul în placa de dezvoltare 
  Crează un nou proiect 
  Deschide un proiect 
  Salvează proiectul curent 
  Monitorizare serială – acest buton este folosit pentru comunicarea prin portul serial cu calculatorul.

Zona de program este folosită pentru scrierea și editarea programelor, iar în zona compilator vor apărea eventualele erori de compilare.

Figura 3.8: Zona compilator

3.1.2 Metode de comunicare

Legătura fizică dintre PC și robot se poate realiză prin cablu USB sau prin conexiune Bluetooth 2.0. Avantajele comunicării prin cablu USB se restrâng la o viteză de transfer superioară și compatibilitate garantată cu PC-ul.

Avantajele conexiunii Bluetooth sunt:

Nu limitează mobilitatea robotului sau raza de acțiune

Robotul se poate conecta la maxim 10 alte dispozitive Bluetooth, fie că sunt roboți sau PC

Comunicația este rezistentă la interferențe radio datorită tehnicii spread spectrum (salt de frecvență)

Este omnidirecțională și nu necesită o poziționare în linie cu celelalte dispozitive pentru conectare.

Ca atare pentru dezvoltarea programelor care asigură comunicarea dintre robot și PC am ales conexiunea Bluetooth, printr-un modem Bluetooth de clasa 2. Acest modem este foarte simplu de utilizat, datele scrise pe pinii RX(recepție)/TX(transmitere) fiind disponibile la receptor. Din acest punct de vedere putem considera ca și cum pinii RX/TX ar fi conectați prin fire obișnuite între emițător și receptor. Modemul dispune de un modul de clasa 2 RN-42. Are regulatoare de tensiune pe placă, astfel încât poate fi alimentat între 3.3 și 6V.

Figura 3.9: Modulul Bluetooth

Specificații:

Modem Bluetooth de clasa 2

Distanța de transmisie : 10m

Consum : 25 mA

Securitate : Autentificare și criptare

Frecvența : 2.4 ~ 2.524 GHz

Tensiunea de alimentare :3.3-6V

Rata de transfer între 2400 și 115200 bps

Temperatura de operare: -40 ~+70°C

Dispozitivul este configurat cu rata de transfer 9600 bps.

3.1.3 Motoare de curent continuu

În general, sunt similare în construcție cu generatoarele de curent continuu. Ele pot, de fapt să fie descrise ca generatoare care „funcționează invers”. Când curentul trece prin rotorul unui motor, este generat un câmp magnetic care generează o forță electromagnetică și ca rezultat rotorul se rotește. Acțiunea periilor colectoare și a plăcuțelor colectoare este aceeași ca la generator. Rotația rotorului induce un voltaj în bobinajul rotorului. Acest voltaj indus are sens opus voltajului exterior aplicat rotorului. În timp ce motorul se rotește mai rapid, voltajul rezultat este aproape egal cu cel indus. Curentul este mic și viteza motorului va rămâne constantă atâta timp cât asupra sa nu acționează nici o sarcină, sau motorul nu efectuează alt lucru mecanic decât cel efectuat pentru învârtirea rotorului. Când asupra rotorului se aplică o sarcină, voltajul va fi redus și un curent mai mare va putea să treacă prin rotor. Astfel, motorul este capabil să primească mai mult curent de la sursa care îl alimentează și astfel să efectueze mai mult lucru mecanic.

Deoarece viteza rotației controlează trecerea curentului prin rotor, mecanisme speciale trebuie folosite pentru pornirea motoarelor cu curent continuu. Când rotorul se află în repaus, nu are nici o rezistență și dacă voltajul normal este aplicat, va trece un curent mare, ceea ce ar putea avaria periile colectoare sau motorul. Mijloacele obișnuite pentru prevenirea acestor accidente este folosirea în serie a unei rezistențe, la început, împreună cu rotorul, pentru a limita curentul până când motorul începe să dezvolte un curent suficient. Pe parcurs ce motorul prinde viteză, rezistența este redusă treptat.

Viteza cu care un motor de curent continuu funcționează, depinde de puterea câmpului magnetic care acționează asupra rotorului, cât și de curentul rotorului. Cu cât este mai puternic câmpul magnetic, cu atât este mai mică rata rotației necesare să creeze un curent secundar necesar pentru a contracara curentul aplicat. Din acest motiv viteza motoarelor de curent continuu poate fi controlată prin variația câmpului curentului. Motoarele folosite sunt de tip curent continuu.

Figura 3.10: Motoare de curent continuu

Specificații:

Dimensiuni 54.5 × 20 × 13.8 mm

Tensiunea de alimentare 3-6V

Curent: 80 mA(fără sarcină) și 0.8A(blocat)

Cuplu: 1.4 Kg/cm

Pentru a selecta sensul de rotație al motorului se folosește o punte H. Schema punții H este prezentată mai jos:

Figura 3.11: Schema punții H

Funcționare punte H:

Pentru puntea H am folosit circuitul integrat L298N. Acest circuit are integrate 2 punți H.

Figura 3.12: Schema circuitului L298N

Deoarece intrarea switch-ului S2 este intrarea switch-ului S1 negata și intrarea switch-ului 4 este intrarea Switch-ului 3 negata, pentru a selecta sensul de rotație folosim 2 pini ai microcontroller-ului (PD3 si PD4). Mai folosim încă o ieșire a uC pentru a activa o punte H.

În figura de mai jos se prezintă modul de conectare al pinilor:

Figura 3.13: Modul de conectare al pinilor

Modul de control al circuitului L298N este relativ simplu. El necesită 6 linii de port de la microcontroler care să fie conectate la intrările input1, input2, input3 și input4 și la cele două terminale „chip enable” pentru fiecare punte H. Există și o altă metodă mai economică din punct de vedere al numărului de pini I/O folosiți de la microcontroler. Această metodă se bazează pe conectarea intrărilor input1, input2, input3 și input4 pe un bus de 2 linii de comandă, lucru ce se materializează prin conectarea input1 și input4 pe același pin al microcontrolerului și input2 cu input3 similar. Dezavantajele care decurg în urma acestei conexiuni sunt faptul că puntea H nu va fi la fel de flexibilă în comanda motoarelor de curent continuu.

Integratul L298N se alimentează cu două tensiuni (de la două surse). Partea logică a integratului folosește o alimentare compatibilă TTL(+5V pe Vss) iar partea de forță, de alimentare de putere, a motoarelor are intrarea separată Vs. Scopul acestei separări o constituie minimizarea încălzirii. Integratul este protejat termic și se oprește alimentarea în cazul unei încălziri excesive.

Pentru a proteja partea logică de tensiunea indusă de motor se folosesc 4 diode de protecție.

Figura 3.14: Circuitul L298N – diode de protectie

În tabel este arătată configurația stărilor logice pe intrările punții H și starea motoarelor conectate la circuit.

Figura 3.15: Configurația stărilor logice pe intrările punții H

Viteza motorului este controlată prin aplicarea semnalului PWM (Pulse With Modulation).

PWM→generator de semnale dreptunghiulare cu frecvența fixă dar cu factorul de umplere modificat dinamic.

Figura 3.16: Principiul de funcționare a unui generator PWM

Figura 3.17: Schema logică a unui circuit PWM

Factorul de umplere (duty cycle) :

τ→ perioada de timp în care funcția este diferită de zero

T→ perioada totală de timp în care funcția este operațională.

Figura 3.18: Factorul de umplere (duty cycle)

3.2. Implementare Software

3.2.1 Accelerometru Smartphone

Majoritatea smartphone-lor și tabletelor sunt echipate cu accelerometru care știe exact când trebuie să rotească imaginea ecranului, însă puțină lume știe cum funcționează acestea.

La baza accelerometrului stă un principiu vechi în care sunt implicate un arc, o bilă și o cutie mică, însă în smartphone-uri accelerometrul este reprezentat de un chip foarte mic, care are în interior o structură mobilă de silicon. Structura mobilă permite componentelor electronice să măsoare modul în care mișcăm noi dispozitivul și să controleze în consecință software-ul.

Atât timp cât nu-l dezactivăm el va avea în vedere în permanență coordonatele telefonului (pe axele x, y și z) și va calcula accelerațiile determinate de fiecare mișcare. Apoi, în funcție de aplicație, va roti automat ecranul din poziția orizontală în verticală.

Figura 3.19: Accelerometru Smartphone

Accelerometrul este un dispozitiv ce măsoară valorile accelerațiilor liniare sau unghiulare la care este supus un obiect. Particularizat la smartphone-uri, accelerometrul sesizează schimbările de poziție ale telefonului prin măsurarea accelerațiilor unghiulare și liniare pe cele trei axe x, y, z. În funcție de valoare și de axa pe care este măsurată accelerația, un accelerometru poate determina cu precizie orientarea telefonului în spațiu. Un smartphone are nevoie de accelerometru pentru a putea calcula poziția display-ului, astfel încât, imaginile să poată fi afișate în mod corect (în format portret sau landscape).

Figura 3.20: Datele oferite de accelerometru pe cele 3 axe

Un accelerometru poate fi dispus în orice poziție pe placa telefonului, însă, din motive ușor de înțeles, axele x și y sunt orientate paralel cu marginile smartphone-ului, în timp ce axa z este perpendiculară pe planul format de acestea, cu sens opus display-ului. Pe axa z, pe lângă senzorii de accelerație liniară și unghiulară, mai este dispus un senzor ce măsoară valorile accelerației gravitaționale. Astfel, atunci când telefonul este dispus pe o suprafață plană cu display-ul în sus, pe axa z va fi înregistrată o valoare a accelerației gravitaționale de + 9,8 m/s2. Dacă este dispus cu display-ul în jos, atunci valoarea accelerației va fi de -9,8 m/s2. În momentul în care utilizatorul ridică smartphone-ul, pe baza unor calcule complexe, sistemul de operare poate determina cu precizie care este poziția curentă a telefonului, mai precis a display-ului.

3.2.2 Aplicația Amarino

După cum se vede în figura următoare, Amarino este un sistem ce oferă posibilitatea telefoanelor inteligente să comunice cu microcontrolerul de pe plăcuța de dezvoltare. Constă în două componente: aplicația numită Amarino și librăria numită “MeetAndroid”.

Figura 3.21: Aplicația Amarino

Amarino, aplicația Android, trimite evenimente de la telefon către placa de dezvoltare. Amarino, poate de asemenea să primească date de la alte aplicații Android.

Librăria MeetAndroid oferă posibilitatea programatorilor să asocieze funcțiile Arduino cu evenimente Android, să extragă date asociate evenimentelor. Pentru proiecte care au nevoie de comunicație în ambele căi, librăria oferă funcții ce trimit date de la microcontroler la telefon.

Când un utilizator pornește aplicația Amarino, acesta este întâmpinat de un panou principal, ca în figura 3.22.

Figura 3.22: Meniul principal

Acest ecran este centrul de control pentru conexiuni, organizarea evenimentelor, și prelucrarea datelor.

Este împărțit în patru cadrane:

Manager Bluetooth

Monitorizare

Setări

Manager evenimente

Fiecare din cele patru cadrane corespunde uneia din funcționalitățile Amarino. Între cele patru arii, în mijlocul ecranului, există un buton pentru conectare/deconectare.

Accesând acest buton se va deschide o fereastră ca în figura 3.23 și va oferi utilizatorului posibilitatea să se conecteze la alte dispositive Bluetooth, care sunt compatibile cu placa de dezvoltare. Astfel folosind acest panou utilizatorul poate descoperi dispozitivele Bluetooth din apropiere și să se conecteze la ele.

Figura 3.23: Conectare dispozitive Bluetooth

Amarino comunică doar cu un dispozitiv Bluetooth la un moment dat. Amarino, de asemenea, memorează dispozitivul cu care a fost conectat cel mai recent, iar apăsând pe butonul connect/disconnect din ecranul principal aplicația se va conecta sau deconecta la un dispozitiv.

Apăsând pe cadranul de monitorizare se deschide o fereastră care afișează datele ce vor fi trimise și primite de Amarino. Această fereastră lasă utilizatorul să trimită caractere arbitrare către placa de dezvoltare.

Figura 3.24: Monitorizare date

Utilizatorul poate schimba rata de transfer la care sunt trimise evenimentele.

Managerul de evenimente este componenta centrala din interfața Amarino. Utilizatorul poate crea colecții de evenimente care pot fi trimise la Arduino, evenimente definite care sunt asociate cu un dispozitiv specific Bluetooth. Colecția activă este colecția asociată cu ultimul dispozitiv sau colecția care este explicit setată să fie activă.

Figura 3.25: Manager evenimente

Pentru a crea o nouă colecție de evenimente, utilizatorul trebuie să apese pe butonul „Create new Collection” și trebuie să introducă un nume pentru colecție și adresa dispozitivului Bluetooth. Odată ce a fost creată noua colecție, aceasta devine colecția activă și se poate folosi butonul „Add Event” pentru a alege evenimente.

Când un utilizator deschide managerul de evenimente, apare o fereastră ca cea din figura 3.23, care arată informații despre colecțiile active curente, numele și lista de evenimente din colecție. Pentru a adaugă un eveniment la colecția activă, trebuie apăsat butonul „Add event”, care ne duce la o listă cu toate evenimentele Android. Toate evenimentele care sunt incluse în Amarino apar în tabelul următor:

Figura 3.26: Lista evenimentelor din aplicația Amarino

Alte butoane sunt butonul Delete, care șterge colecția curentă, și butonul Change Collection, care permite utilizatorului să aleagă colecția activă.

Pot fi create evenimente folosindu-se butonul Custom Events. Evenimentele sunt trimise de la aplicația Amarino și structurate astfel încât să fie ușor identificate de placa de dezvoltare. Fiecare tip de eveniment este asociat cu un singur caracter alphanumeric care este unic și identifică evenimentul. De exemplu, evenimentul Battery Level, este asociat cu caracterul „J”.

Arhitectura Amarino, după cum se vede în figura de mai jos, are cinci componente:

Graphical User Interface (GUI)

Background Service

Bluetooth Handler

IntentEventMapper

Database

Serviciile din spate sunt inima Amarino. Acestea primesc datele de la senzori sau de la telefon, generează evenimentele, trimit evenimente și mențin conexiunile Bluetooth.

Bluetooth Handeler implementează accesul low-level la funcțiile Bluetooth ale sistemului de operare.

IntentEventMapper convertește „intențiile” Amarino în evenimente. Data de baze înmagazinează toate colecțile, evenimentele și istoria dispozitivelor Bluetooth.

Interfața grafică cu utilizatorul face ca toate aceste funcționalități să fi accesibile utilizatorului.

Figura 3.27: Arhitectura aplicației Android

A doua componentă majoră a aplicației Amarino este librăria Arduino, MeetAndroid. Această librărie oferă un set de funcții pentru primirea evenimentelor Amarino și trimiterea datelor de la Arduino la Amarino.

Pentru primirea datelor de la Amarino, un programator Arduino folosește componenta registerFunction(). Funcția meetAndroid.receive() este folosită pentru a vedea datele care sunt recepționate. Funcția meetAndroid.getInt() este folosită pentru a prelua o valoare întreagă dintr-un pachet de date. De asemenea librăria conține funcția send(), ce dă posibilitatea utilizatorului să trimită date către aplicația Amarino.

Figura 3.28: Librăria MeetAndroid

Pentru a primi evenimente de la aplicația Android și a le transforma în evenimente care trebuie trimise la placa de dezvoltare, aplicația Amarino poate lucra și invers: să primească date de la placa de dezvoltare și să trimită aceste informații la alte aplicații Android. Pentru a realiza acest lucru, un user va crea întâi o aplicație Android pentru a primi/vizualiza datele Arduino. Odată ce aplicația Amarino este activată conecțiunea cu placa de dezvoltare este stabilită și aplicația rulează.

Amarino oferă o cale transparentă pentru o aplicație Android pentru a se conecta cu placa de dezvoltare.

Figura 3.29: Trimiterea datelor de la o aplicație Android la placa de dezvoltare prin Amarino

3.2.3 Codul pentru ghidarea prin intermediul Smartphone

Figura 3.30: Diagrama de activitate platforma mobilă

După cum se poate observa în figura de mai sus datele sunt preluate de la aplicația Android. Prin mai multe teste am stabilit niște praguri pentru datele preluate, astfel încât să pot decide cum trebuie să acționeze platforma mobilă, în funcție de datele primate. Am eliminat componenta Z și iau în considerare doar datele disponibile de pe axele X și Y.

Concluzii

Domeniile de aplicare a tehnicii roboților sunt foarte variate și se lărgesc mereu, ei putând fi utilizați în industrie, transporturi și agricultură, în sfera serviciilor, în cunoașterea oceanului și a spațiului cosmic, în cercetarea științifică.

Introducerea pe piață a roboților a atras o serie de avantaje, precum: reducerea nivelului de muncă pentru factorul uman, creșterea securității în muncă, creșterea rentabilității producției datorită funcționării sigure a produsului, posibilitatea măririi gradului de încărcare a mașinilor, posibilitatea de efectuare a mai multor etape de fabricare, scăzând astfel costul de producție.

Odată cu dezvoltarea tehnologiei, cu atât mai mulți roboți sofisticați își vor face apariția în așa fel încât și viața umană va cunoaște o îmbunătățire semnificativă.

Ca și direcții viitoare, achiziționarea unor senzori, precum și atașarea unui braț robotic, ar duce la o platformă capabilă să își ia singură deciziile și să dezvolte diferite acțiuni cu ajutorul brațului, precum ridicarea și deplasarea obiectelor dintr-un loc în altul.

Bibliografie

[1] Curs Aplicații wireless industriale, Șef lucr. Dr.ing. Nicolae Lucanu

[2] Arduino Robotics, John-David Warren, Josh Adams, and Harald Molle

[3] Brian W. Kernigham and Dennis M. Ritchie, The C Programming language

[4] Michael Barr, Programming Embedded Systems in C and C++, editura O’Reilly,1999

[5] Getting Started with Arduino, Massimo Banzi

[6] Bluetooth Operation and Use, McGraw-Hill

[7] Jeremy Elson, Mobile Robot Control Arhitectures, 1999

[8] Philipe Coiffet, La robotique, Principes et aplications, editura Hermes Paris, 1986

[9] Getting Started with Arduino, Massimo Banzi

[10] Mircea Nitulescu, Roboti mobili, Editura Sitech Craiova

[11] Making Things Talk, Tom Igoe, First Edition, editura O’Reilly

[12] Ogruțan P., Microcontrolere si controlere grafice Fujitsu, Ed. Universității Transilvania Brașov, 2006, 182 pag, ISBN 973-635-621-3

[13] Stan Gh., Roboți industriali, Editura Didactică si Pedagogică, București, 2004

[14] Wireless Networked Communications, Concepts, Technology and Implementations, Bud Bates

[15] Datasheet integrat L298N

[16] en.wikipedia.org

[17] ro.wikipedia.org

Sursă poze capitolul 1:

Adio, pompieri: a fost creat robotul umanoid care va lupta împotriva incendiilor

194.88.148.107/de/3d/92/22/iraq_robots_alt_0813.jpg

http://www.capital.ro/detalii-articole/stiri/cum-arata-o-parcare-subterana-facuta-de-nemti-130782.html

http://www.robotics.ucv.ro/flexform/aplicatii/

Sursă poze capitolul 2:

http://windows.microsoft.com/ro-ro/windows7/add-a-bluetooth-enabled-device-to-your-computer

https://www.bluetooth.org/en-us

http://www.scritube.com/stiinta/informatica/hardware/TehnologiaBluetooth16217202412.php

Sursă poze capitolul 3:

http://www.amarino-toolkit.net/

http://www.arduino.cc/

http://www.sparkfun.com/

http://www.sparkfun.com/datasheets/Components/General/L298N.pdf

Anexe

Cod robot controlat Smartphone

#include <MeetAndroid.h>

// Initializare variabile

int MOTOR1_PIN1 = 3;

int MOTOR1_PIN2 = 5;

int MOTOR2_PIN1 = 6;

int MOTOR2_PIN2 = 9;

// Initializare pin pentru LED-ul atasat la Arduino

int LED = 13;

boolean U8_ZERO = 0;

// Variabilele pentru valoarea vitezei

int speed_left = 0;

int speed_right = 0;

MeetAndroid meetAndroid;

void setup() {

Serial.begin(9600);

meetAndroid.registerFunction(orientation, 'A');

pinMode(MOTOR1_PIN1, OUTPUT);

pinMode(MOTOR1_PIN2, OUTPUT);

pinMode(MOTOR2_PIN1, OUTPUT);

pinMode(MOTOR2_PIN2, OUTPUT);

// Initial motoarele sunt oprite

motors_command(0,0);

Serial.print("Motoarele sunt oprite");

delay(500);

}

boolean printed = false;

void loop() {

meetAndroid.receive();

}

void orientation(byte flag, byte valueCount) {

// Variabila de stocare a datei seriale

float data[valueCount];

meetAndroid.getFloatValues(data);

int xcommand = (int) data[0];

int ycommand = (int) data[1];

int speedLeft = 0;

int speedRight = 0;

// motoare orpite

if((xcommand == U8_ZERO) && (ycommand == U8_ZERO))

{

motors_command(U8_ZERO,U8_ZERO);

}

//deplasare inainte

if((xcommand == 0) && (ycommand <-2))

{

motors_command(120,120);

}

//deplasare inapoi

if((xcommand < 1) && (ycommand > 3))

{

motors_command(-120,-120);

}

//rotire roata stanga in fata

if((xcommand > 4) && (ycommand < -2))

{

motors_command(80,120);

}

//rotire roata stanga in spate

if((xcommand > 2) && (ycommand > 2))

{

motors_command(-80,-120);

}

//rotire roata dreapta in fata

if((xcommand < -2) && (ycommand < -3))

{

motors_command(120,80);

}

//rotire roata dreapta in spate

if((xcommand < -2) && (ycommand > 2))

{

motors_command(-120,-80);

}

//rotire dreapta

if((xcommand < -6) && (ycommand == 0))

{

motors_command(-120,U8_ZERO);

}

// rotire stanga

if((xcommand > 6) && (ycommand ==0))

{

motors_command(U8_ZERO,-120);

}

//motors_command(speedLeft, speedRight);

}

void motors_command(int speedLeft, int speedRight) {

if (speedLeft > 0) {

analogWrite(MOTOR1_PIN1, speedLeft);

analogWrite(MOTOR1_PIN2, 0);

}

else {

analogWrite(MOTOR1_PIN1, 0);

analogWrite(MOTOR1_PIN2, -speedLeft);

}

if (speedRight > 0) {

analogWrite(MOTOR2_PIN1, speedRight);

analogWrite(MOTOR2_PIN2, 0);

}

else {

analogWrite(MOTOR2_PIN1, 0);

analogWrite(MOTOR2_PIN2, -speedRight);

}

}

Anexe

Cod robot controlat Smartphone

#include <MeetAndroid.h>

// Initializare variabile

int MOTOR1_PIN1 = 3;

int MOTOR1_PIN2 = 5;

int MOTOR2_PIN1 = 6;

int MOTOR2_PIN2 = 9;

// Initializare pin pentru LED-ul atasat la Arduino

int LED = 13;

boolean U8_ZERO = 0;

// Variabilele pentru valoarea vitezei

int speed_left = 0;

int speed_right = 0;

MeetAndroid meetAndroid;

void setup() {

Serial.begin(9600);

meetAndroid.registerFunction(orientation, 'A');

pinMode(MOTOR1_PIN1, OUTPUT);

pinMode(MOTOR1_PIN2, OUTPUT);

pinMode(MOTOR2_PIN1, OUTPUT);

pinMode(MOTOR2_PIN2, OUTPUT);

// Initial motoarele sunt oprite

motors_command(0,0);

Serial.print("Motoarele sunt oprite");

delay(500);

}

boolean printed = false;

void loop() {

meetAndroid.receive();

}

void orientation(byte flag, byte valueCount) {

// Variabila de stocare a datei seriale

float data[valueCount];

meetAndroid.getFloatValues(data);

int xcommand = (int) data[0];

int ycommand = (int) data[1];

int speedLeft = 0;

int speedRight = 0;

// motoare orpite

if((xcommand == U8_ZERO) && (ycommand == U8_ZERO))

{

motors_command(U8_ZERO,U8_ZERO);

}

//deplasare inainte

if((xcommand == 0) && (ycommand <-2))

{

motors_command(120,120);

}

//deplasare inapoi

if((xcommand < 1) && (ycommand > 3))

{

motors_command(-120,-120);

}

//rotire roata stanga in fata

if((xcommand > 4) && (ycommand < -2))

{

motors_command(80,120);

}

//rotire roata stanga in spate

if((xcommand > 2) && (ycommand > 2))

{

motors_command(-80,-120);

}

//rotire roata dreapta in fata

if((xcommand < -2) && (ycommand < -3))

{

motors_command(120,80);

}

//rotire roata dreapta in spate

if((xcommand < -2) && (ycommand > 2))

{

motors_command(-120,-80);

}

//rotire dreapta

if((xcommand < -6) && (ycommand == 0))

{

motors_command(-120,U8_ZERO);

}

// rotire stanga

if((xcommand > 6) && (ycommand ==0))

{

motors_command(U8_ZERO,-120);

}

//motors_command(speedLeft, speedRight);

}

void motors_command(int speedLeft, int speedRight) {

if (speedLeft > 0) {

analogWrite(MOTOR1_PIN1, speedLeft);

analogWrite(MOTOR1_PIN2, 0);

}

else {

analogWrite(MOTOR1_PIN1, 0);

analogWrite(MOTOR1_PIN2, -speedLeft);

}

if (speedRight > 0) {

analogWrite(MOTOR2_PIN1, speedRight);

analogWrite(MOTOR2_PIN2, 0);

}

else {

analogWrite(MOTOR2_PIN1, 0);

analogWrite(MOTOR2_PIN2, -speedRight);

}

}

=== bibligrafie ===

Bibliografie

[1] Curs Aplicații wireless industriale, Șef lucr. Dr.ing. Nicolae Lucanu

[2] Arduino Robotics, John-David Warren, Josh Adams, and Harald Molle

[3] Brian W. Kernigham and Dennis M. Ritchie, The C Programming language

[4] Michael Barr, Programming Embedded Systems in C and C++, editura O’Reilly,1999

[5] Getting Started with Arduino, Massimo Banzi

[6] Bluetooth Operation and Use, McGraw-Hill

[7] Jeremy Elson, Mobile Robot Control Arhitectures, 1999

[8] Philipe Coiffet, La robotique, Principes et aplications, editura Hermes Paris, 1986

[9] Getting Started with Arduino, Massimo Banzi

[10] Mircea Nitulescu, Roboti mobili, Editura Sitech Craiova

[11] Making Things Talk, Tom Igoe, First Edition, editura O’Reilly

[12] Ogruțan P., Microcontrolere si controlere grafice Fujitsu, Ed. Universității Transilvania Brașov, 2006, 182 pag, ISBN 973-635-621-3

[13] Stan Gh., Roboți industriali, Editura Didactică si Pedagogică, București, 2004

[14] Wireless Networked Communications, Concepts, Technology and Implementations, Bud Bates

[15] Datasheet integrat L298N

[16] en.wikipedia.org

[17] ro.wikipedia.org

Sursă poze capitolul 1:

Adio, pompieri: a fost creat robotul umanoid care va lupta împotriva incendiilor

194.88.148.107/de/3d/92/22/iraq_robots_alt_0813.jpg

http://www.capital.ro/detalii-articole/stiri/cum-arata-o-parcare-subterana-facuta-de-nemti-130782.html

http://www.robotics.ucv.ro/flexform/aplicatii/

Sursă poze capitolul 2:

http://windows.microsoft.com/ro-ro/windows7/add-a-bluetooth-enabled-device-to-your-computer

https://www.bluetooth.org/en-us

http://www.scritube.com/stiinta/informatica/hardware/TehnologiaBluetooth16217202412.php

Sursă poze capitolul 3:

http://www.amarino-toolkit.net/

http://www.arduino.cc/

http://www.sparkfun.com/

http://www.sparkfun.com/datasheets/Components/General/L298N.pdf

Similar Posts

  • Aplicatie Pentru Evidenta Cheltuielilor Lunare ALE Asociatiilor DE Proprietari

    APLICATIE PENTRU EVIDENTA CHELTUIELILOR LUNARE ALE ASOCIATIILOR DE PROPRIETARI – Cuprins 1. INTRODUCERE 1.1 Aplicabilitate 1.2 Specificatii de definitie 1.3 Reguli de calcul 2. MEMORIU TEHNIC 2.1 Aplicatii cu baze de date 2.2 Metodica de proiectare a aplicatiei 2.3 Etapa analiza. Entitati si Atribute 2.4 Etapa analiza. Evenimente si Functii 2.5 Etapa proiectare. Diagrama Entitate-Relatie…

  • Numerele Lui Fibonacci

    INTRODUCERE 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, …Iată un șir de numere care va fi în centrul lucrării de față ,un șir de numere atât de cunoscut,șirul lui Fibonacci. Izvorât din celebra problemă a iepurilor de casă,veche de peste 800 de ani, șirul lui Fibonacci ramâne până în prezent unul dintre…

  • Sistemul de Operare Android

    Capitolul I Introducere Ce este Android? Androidul un sistem de operare mobil creat de compania Google. Transforma dispozitivul mobil intr-un calculator mobil. Sistemul android vine echipat cu un browser Web complet si capacitate de navigare pe Internet, are acces la peste 1.000.000 de aplicații prin Google Play Store, inclusive Gmail, Facebook si numeroase alte servicii,…

  • Crearea Unui Joc 2d Folosind Unity

    CUPRINS Introducere…………………………………………………………………………..3 CAPITOLUL I Ce anume este Unity și la ce îl putem folosi………………….4 I.1. Puțină prezentare………………………………………………………………………………4 I.2. La ce e folosit Unity și cine îl poate folosi…………………………………………….5 CAPITOLUL II Conceptul jocului creat …………………………………………………… 7 II.1. Scena Start………………………………………………………………………………………7 II.2. Scena Meniu…………………………………………………………………………………….8 II.3. Scena Dificultate………………………………………………………………………………8 II.4. Scena Nivel……………………………………………………………………………………..9 II.5. Scena Final…………………………………………………………………………………….10 CAPITOLUL III Cum dezvoltăm de…

  • Sistem Informatic de Fidelizare a Clientilor In Cadrul Magazinelor Naturiste

    SISTEM INFORMATIC DE FIDELIZARE A CLIENȚILOR ÎN CADRUL MAGAZINELOR NATURISTE CUPRINS INTRODUCERE 1. Domeniul studiat-Modalități de fidelizare a clienților 1.1. Fidelizarea-concepte 1.1.1. Tipuri de fidelizare a clienților 1.1.2. Instrumente de fidelizare a clienților 1.2. CRM-concepte 1.2.1. Obiectivele CRM 1.2.2. Clasificarea CRM 1.3. Carduri de fidelitate-instrumente de marketing/CRM 1.3.1. Avantajele cardurilor de fidelitate 1.3.2. Clasificarea cardurilor…

  • Reteaua Informatica Nationala

    CUPRINS INTRODUCERE 7 1. PREMISELE CREĂRII REȚELEI INFORMATICE NAȚIONALE 10 1.1. Starea utilizării mijloacelor informatice în Republica Moldova 11 1.2. Crearea RIN – factor strategic de creștere economică 13 1.3. Fluxurile informaționale în economia națională 16 1.4. Componența și caracteristica abonaților rețelei 17 1.4.1. Statutul abonaților RIN 17 1.4.2. Caracteristicile generale ale abonaților 18 2….