Licenta Toader Ștefan 341b2 [621415]

București 2013

Universitatea Politehnica București
Facultatea de Automatică și Calculatoare
Departamentul de Automatică și Ingineria Sistemelor

LUCRARE DE LICENȚĂ
Proiectarea unui robot autonom mobil

Absolvent: [anonimizat]

1

Cuprins
Introducere ………………………….. ………………………….. ………………………….. ………………………….. 3
Capitolul 1: Roboți ………………………….. ………………………….. ………………………….. ……………….. 4
1.1. Ce este robotul? ………………………….. ………………………….. ………………………….. …………………………. 4
1.2. Definițiile robotului. ………………………….. ………………………….. ………………………….. …………………….. 4
1.3. Schema bloc a robotului industrial ………………………….. ………………………….. ………………………….. 5
1.4. Clasificarea roboților ………………………….. ………………………….. ………………………….. …………………… 5
1.5. Arhitectura roboților ………………………….. ………………………….. ………………………….. ……………………. 6
1.5.1. Sistemul senzorial ………………………….. ………………………….. ………………………….. ……………….. 6
1.5.2. Sistemul de acționare și sistemul de transmisie ………………………….. ………………………….. .. 7
1.5.3. Sistemul decizional ………………………….. ………………………….. ………………………….. ………………. 7
1.6 Microcontroler ………………………….. ………………………….. ………………………….. ………………………….. … 7
1.6.1 Utilizarea microcontrolerelor ………………………….. ………………………….. ………………………….. …. 9
1.6.2 Arhitectura unității centrale ………………………….. ………………………….. ………………………….. ……. 9
1.6.3 Memoria ………………………….. ………………………….. ………………………….. ………………………….. ….12
1.6.4 Limbaje de programare ………………………….. ………………………….. ………………………….. ……….. 13
1.6.5. Criterii de aleger e a unui microcontroler ………………………….. ………………………….. …………. 14
Capitolul 2: Medii de programare folosite ………………………….. ………………………….. …………. 15
2.1. Eclipse SDK 4.2 ………………………….. ………………………….. ………………………….. ……………………….. 15
2.1.1. Ce este nou in v4.2 ………………………….. ………………………….. ………………………….. ……………. 16
2.1.2. Ce este Eclipse și Organizația Eclipse? ………………………….. ………………………….. …………. 16
2.1.3. Un model unic pentru dezvoltarea open source ………………………….. ………………………….. 18
2.1.4. Istoria Eclipse ………………………….. ………………………….. ………………………….. …………………….. 19
Capitolul 3: Bluetooth ………………………….. ………………………….. ………………………….. …………. 21
3.1. Ce reprezintă Bluetooth ? ………………………….. ………………………….. ………………………….. …………. 21
3.1.1. Istorie ………………………….. ………………………….. ………………………….. ………………………….. …….. 21
3.1.2. Implementare ………………………….. ………………………….. ………………………….. …………………….. 22
3.2. Versiuni de Bluetooth ………………………….. ………………………….. ………………………….. ……………….. 22
3.3. Utilizarea Bluetooth ………………………….. ………………………….. ………………………….. ………………….. 23
3.3.1. Stiva de protocoale ………………………….. ………………………….. ………………………….. …………….. 23

2
3.3.2. Legăturile vocale și de date ………………………….. ………………………….. ………………………….. ..25
3.4. Comunicația Bluetooth ………………………….. ………………………….. ………………………….. ……………… 26
3.4.1. Descoperirea dispozitivelor Bluetooth ………………………….. ………………………….. …………….. 26
3.4.2. Conectarea la o bază de date Service Discovery ………………………….. ……………………….. 26
3.4.3. Conectarea la un serviciu Bluetooth ………………………….. ………………………….. ……………….. 27
3.4.4. Moduri de descoperire și conectare ………………………….. ………………………….. ……………….. 27
3.5. Stiva de protocoale Bluetooth ………………………….. ………………………….. ………………………….. ……27
3.5.1. Protocoale utilizate de Bluetooth ………………………….. ………………………….. …………………….. 27
3.5.2. Protocoale ale Nucleului Bluetooth ………………………….. ………………………….. …………………. 29
Capitolul 4: Proiectarea și implementarea sistemului ………………………….. …………………….. 31
4.1. Prezentarea și obiectivele sistemului ………………………….. ………………………….. ……………………. 31
4.2. Componente hardware ………………………….. ………………………….. ………………………….. …………….. 32
4.2.1. Arduino UNO R3 ………………………….. ………………………….. ………………………….. ………………… 32
4.2.2. Senzor de distanță HC -SR04 ………………………….. ………………………….. …………………………. 34
4.2.3. Modul Bluetooth HC -05 ………………………….. ………………………….. ………………………….. ……… 35
4.2.4. Driver de Motoare ………………………….. ………………………….. ………………………….. ………………. 36
4.2.5. Elemente de acționare ………………………….. ………………………….. ………………………….. ……….. 37
4.3. Arhitectura hardware a robotului ………………………….. ………………………….. ………………………….. .38
4.4. Componente software ………………………….. ………………………….. ………………………….. ………………. 43
4.4.1. Algoritmul aplicației smartphone ………………………….. ………………………….. …………………….. 43
4.4.2. Algoritmul programului Arduino ………………………….. ………………………….. ………………………. 46
4.5. Etapele construirii robotului ………………………….. ………………………….. ………………………….. ………. 49
Concluzii ………………………….. ………………………….. ………………………….. ………………………….. .. 51
Anexe ………………………….. ………………………….. ………………………….. ………………………….. ……. 52
Listă imagini, tabele și abrevieri ………………………….. ………………………….. ………………………. 55
Bibliografie ………………………….. ………………………….. ………………………….. ………………………… 56

3

Introducere

Încă din antichitate omul si -a confecționat in diferite forme și grade diferi te de
complexitate unelte pentru a simplifica sau înlocui munca fizică. Aici se înscriu și roboții,
ocupând o poziție superioare in clasament mai ales datorită complexității lor.
Noțiu nea de robot datează de peste 4 000 de ani. Omul și -a imaginat
dintotde auna dispozitive mecanice inteligente care să ii ușureze munca zilnică și efortul
fizic depus. Astfel a construit diverse mașinării automate, sau mai puțin automate, și -a
imaginat fel de fel de roboti, iar revoluția informatica a marcat saltul de la societ atea
industrializată la societatea avansat informatizată.
Termenul de "robot" a fost folosit prima data in 1920 de cehul Karel Capek într -o
piesa numită "Robotul universal al lui Kossum". Ideea acestei piese era una simpla,
oamenii creau robotul, iar acest a își omora creatorul. In continuare majoritatea filmelor și
cărților pe aceasta tema prezentau robotii ca fiind mașinării dăunătoare și distrugătoare.
Roboții , in special cei industriali, oferă beneficii substanțiale omen irii. Aceștia pot
influența poziti v calitatea vieții prin înlocuirea omului in muncile grele, in spații
periculoase , unde condiț ii de mediu sunt dăună toare omului.
Domeniile de aplicare a roboților se lărgesc mereu, aceștia fiind deja utilizați in
industrie , transporturi și agricultura, in cercetare științifica, in explorarea oceanelor și a
spațiului cosmic.
Lucrarea de fata prezintă modul de proiectare și realizare a unui mic robot
echipat cu o placa de dezvoltare Arduino UNO și diferiți senzori , ce poate comunica cu
un smartphone prin intermediul unei conexiuni Bluetooth.

4
Capitolul 1: Roboți
1.1. Ce este robotul ?

Un robot este un operator mecanic sau virtual, artificial. Robotul este un sistem
compus din mai multe elemente: mecanică, senzori și actuatori precum și un mecani sm
de direcționare. Mecanica stabilește înfățișarea robotului și mișcările posibile pe timp de
funcționare. Senzorii și actorii sunt întrebuințați la interacțiunea cu mediul. Mecanismul
de direcționare are grijă ca robotul să -și îndeplinească obiectivul cu succes, evaluând
de exemplu informațiile senzorilor. Acest mecanism reglează motoarele și planifică
mișcările care trebuiesc efectuate.
Isaac Asimov publica în anul 1942 în nuvela numit "Runaround" trei legi:
 Un robot nu poate afecta existența umană sau datorită inacțiunii sale să permită
existenței umane să meargă către distrugere.
 Un robot trebuie să îndeplinească sarcinile date de om cu excepția celor care vin în
conflict cu prima lege.
 Un robot trebuie să se protejeze singur contra distrugerii cu exce pția cazurilor ce fac
obiectul legii întâi sau legii a doua.

1.2. Definițiile robotului.

Definițiile robotului se referă la mișcare sau la funcționarea într -un mediu anume:
 conform specialiștilor japonezi robotul este un dispozitiv mecanic acționat cu fo rțe
motrice cu comandă inteligentă și care acționează conform voinței umane;
 Institutul Francez de Standardizare definește robotul ca fiind un manipulator automat
reprogramabil și polivalent, capabil să realizeze poziționarea și reorientarea pieselor
printr-o mișcare variabilă și programabilă a brațelor terminale, prin intermediul unor
dispozitive;
 Institutul American de Robotică consideră robotul ca fiind un operator reprogramabil
și multifuncțional pentru deplasarea obiectelor pe traiectorii stabilite an terior în
realizarea unor sarcini concrete;
 În literatura românească de specialitate robotul este definit ca fiind un echipament
automat, adaptabil prin reprogramare la condițiile de mediu în care acționează.
Robotica este acea parte a științei care se ocu pă cu studiul operațiilor umanoide și
se situează la frontiera mecanicii cu informatica, electrotehnica, electronica și știința
sistemelor și calculatoarelor, termotehnică, hidraulică. Operațiile umanoide sunt
operațiile efectuate de către om cu ajutorul b rațelor și picioarelor coordonate de
organele de simț.

5
1.3. Schema bloc a robotului industrial

Figura 1.1. Schema bloc a robotului industrial
Pe lângă caracteristicile specifice oricărui sistem mobil: dimensiuni, deplasări
realizate, precizie, repetab ilitate, tip de acționare, sarcină transportată, viteză de
deplasare, există caracteristici specifice robotului, cum ar fi: număr de grade de libertate,
volumul spațiului de lucru, adaptabilitate la mediu, programabilitate, fiabilitate.
Pe baza acestor car acteristici s -au definit generațiile de roboți:
 Generația I – roboți ce acționează pe baza unui program flexibil prestabilit prin
învățare directă
 Generația II – roboți cu un program flexibil prestabilit, ce se poate modifica pe baza
informațiilor furnizat e de sistemul senzorial;
 Generația III – roboți ce înglobează elemente de inteligență artificială.

1.4. Clasificarea roboților

 din punctul de vedere al gradului de mobilitate se cunosc:
 roboți ficși
 roboți mobili
 din punct de vedere al informației de intrare și a metodei de instruire există:
 roboți acționați de om
 roboți cu sistem de comandă cu relee(secvențial)
 roboți cu sistem secvențial cu program modificabil
 roboți repetitori( cu program prin instruire)
 roboți inteligenți
 din punct de vedere al sis temului de coordonate roboții sunt în sistem de coordonate:
 carteziene (18%)
 cilindrice (33%)
 sferice (40% )
 din punct de vedere al sistemului de comandă:

6
 comandă punct cu punct (unde nu interesează traiectoria propriu -zisă)
 comandă pe contur (implică coo rdonarea mișcării axelor)
 comandă pe întreaga traiectorie (implică toți parametrii de mișcare)
 din punct de vedere al sarcinii manipulate
 din punct de vedere al sistemului de acționare:
 hidraulică (40%)
 electrică(30% )
 pneumatică (21% )
 mixtă
 din punct de vedere al preciziei de poziționare:
 sub 0,1 mm
 (0,1 ÷ 0,5) mm
 (0,5 ÷ 1) mm
 (1 ÷ 3) mm
 peste 3 mm;
 din punctul de vedere al tipului de programare:
 cu programare rigidă (fără posibilități de corecție)
 cu programare flexibilă (există posibilitatea modificări i programului)
 cu programare adaptivă (există posibilitatea adaptării automate a programului în
timpul funcționării)

1.5. Arhitectura roboților

Arhitectura internă a unui robot conține cinci sisteme importante, fiecare dintre
acestea aparținând unui dome niu al tehnicii clasice:
 sistemul mecanic de susținere și al articulațiilor (cuplelor de rotație și de translație)
 sistemul de acționare (hidraulic, pneumatic, electric sau mixt)
 sistemul de transmisie al mișcării
 sistemul senzorial (intern și extern)
 sistemul decizional

1.5.1. Sistemul senzorial

Funcțiile sistemului senzorial sunt de a prelua informațiile din mediu, și de a le pune
la dispoziție sistemului decizional in vederea creării de comenzi.
Clasificare :
 senzori interni – plasați pe buclele intern e de reglare și ajută la descrierea traiectoriei
segmentelor mecanice componente
 senz ori externi – se utilizează pe buclele externe pentru coordonarea traie ctoriei
generale a ansamblului
 senzori de securitate – utilizați pe buclele interne sau externe de r eacție pentru
sesizarea p ericolelor (ciocniri , creșterea temperaturii etc . )

7
Senzorii interni sunt în general de tip poziție și deplasare. Cei mai utilizați în acest
caz sunt senzorii de tip rezistiv și cei de tip optic. Sistemele senzoriale de tip optic c onțin
un generator de flux luminos (de regulă un LED) și un element receptor(fototranzistor
sau fotocelulă). Cei mai utilizați senzori pentru distanța sunt, datorită raportului
preț/precizie sunt senzorii optici în infraroșu și senzorii cu ultrasunete, for mați dintr -un
emițător de undă și un receptor comandat în fază cu emițătorul.
Senzorii externi sunt senzori de efort (în general au la bază mărci tensometrice
plasate pe concentratoare de efort), senzori de alunecare sau senzori tactili.
Sistemul senzorial de securitate are rolul de a evita coliziunile când apar regimuri de
funcționare sau obstacole neprevăzute.

1.5.2. Sistemul de acționare și sistemul de transmisie

Sistemul de acționare se alege în funcție de clasa de operații ce trebuie executate, în
funcție de modul de lucru, de viteza de deplasare, de sarcină și de spațiul de mișcare
precum și de precizia de poziționare. Astfel există:
 sisteme de acționare electrică (aproximativ 30% din numărul acestora)
 sisteme de acționare pneumatice (cam 21% din caz uri)
 sisteme de acționare hidraulice pentru sarcini mari și deplasări limitate în spațiu.
 sisteme de acționare mixte (9% din variantele constructive) – de tip electropneumatic
sau electrohidraulic
1.5.3. Sistemul decizional

Pentru a fi considerat intelige nt (sau autonom), un robot, in ziua de azi, are
nevoie de măcar un microcontroler pentru a putea procesa informațiile preluate de
senzori din mediu. După procesarea datelor trebuie luată o decizie, și o comanda este
trimisa către elementele de execuție.

1.6 Microcontroler

Un microcontroler( prescurtat µC, uC sau MCU) este în esență o configurație
minimală de sistem de calcul, capabil să execute la o viteză foarte mare instrucțiunile
unui program stocat în memorie; acest program este o secvență logică de operații ce
poate implementa algoritmii necesari pentru controlul proceselor.
Microcontrolerul are integrat pe același chip: oscilatorul, memoria (RAM, ROM,
EEPROM), numărătoare, blocuri analogice, interfețe de comunicație și porturi de intrare –
ieșire.

8

La modul general un controler este, actualmente, o structură electronică
destinată controlului unui proces sau, mai general, unei interacțiuni caracteristice cu
mediul exterior, fără să fie necesară intervenția operatorului uman.
Primele controlere au fo st realizate în tehnologii pur analogice, folosind
componente electronice discrete și/sau componente electromecanice (de exemplu
relee). Cele care fac apel la tehnica numerică modernă au fost realizate inițial pe baza
logicii cablate (cu circuite integrate numerice standard SSI și MSI ) și a unei electronici
analogice uneori complexe, motiv pentru care ocupau dimensiuni mari, aveau un
consum energetic pe măsură și, nu de puține ori, o fiabilitate care lăsa de dorit.
Apariția și utilizarea microprocesoarelor de uz general a dus la o reducere consistentă a
costurilor, dimensiunilor, consumului și o îmbunătățire a fiabilității. Există și la ora
actuală o serie de astfel de controlere de calitate, realizate în jurul unor microprocesoare
de uz general cum ar fi Z 80 (Zilog), 8086/8088 (Intel), 6809 (Motorola), etc.

9

1.6.1 Utilizarea microcontrolerelor

Toate aplicațiile în care se utilizează microcontrolere fac parte din categoria
sisteme încapsulate -integrate (“embedded systems”), la care existența unui sistem de
calcul incorporat este transparentă pentru utilizator.
Printre multele domenii unde utilizarea lor este practic un standard industrial se
pot menționa: în industria de automobile (controlul aprinderii/motorului, climatizare,
diagnoză, sisteme de alarmă, etc.), în electronice de consum (sisteme audio,
televizoare, camere video și videocasetofoane, telefonie mobilă, GPS -uri, jocuri
electronice etc.), în aparatura electrocasnică (mașini de spălat, frigidere, cuptoare cu
microunde, aspiratoare), în controlul mediului și climatizare (sere, locuințe, hale
industriale), în industria aerospațială, în mijloacele moderne de măsurare –
instrumentație (aparate de măsură, senzori și traductoare inteligente), la realizarea de
periferice pentru calculatoare, în medicină .
Ca un exemplu din industria de automobile, unde numai la nivelul anului 1999,
un BMW seria 7 utiliza 65 de microcontrolere, iar un Mercedes din clasa S utiliza 63 de
microcontrolere. Practic, deși am prezentat ca exemple concrete numai sisteme robotice
și mecatronice, este foarte greu de găsit un domeniu de aplicații în care să nu se
utilizeze microcontrolerele.

1.6.2 Arhitectura unității centrale

Arhitectura unității centrale de calcul (CPU) este unul din elementele cele mai
importante ce trebuie avut în vedere în analiza oricărui sistem de calcul. Principalele
concepte luate în considerare și întâlnite sunt următoarele:
Arhitecturi de tip " von Neumann "
Microcontrolerele bazate pe această arhitectură au o unitate centrală (CPU)
caracterizată de exis tența unui singur spațiu de memorie utilizat pentru memorarea atât
a codului instrucțiunilor cât și a datelor ce fac obiectul prelucrării. Există deci o singură
magistrală internă (bus) care este folosită pentru preluarea a instrucțiunilor (fetch
opcod) ș i a datelor; efectuarea celor două operații separate, în mod secvențial, are ca
efect, cel puțin principial, încetinirea operațiilor.

10

Figura 1.2. Arhitectură de tip " von Neumann "
Este arhitectura standard (cea mai des întâlnită) și pentru microproces oarele de
uz general.

Arhitecturi de tip " Harvard "
Arhitectura Harvard este o arhitectură a calculatoarelor caracterizată prin
stocarea separată a instrucțiunilor și datelor Numele acestei arhitecturi provine de la
sistemul de calcul Harvard Mark I , ce stoca instrucțiunile pe 24 biți pe o bandă perforată,
iar datele în contoare electromecanice ce permiteau 23 de cifre.
Din cauza lungimii cuvintelor, a tehnologiei de implementare și a structurii
memoriei de adresare diferite, în cadrul acestei arhitecturi nu este necesar ca cele două
tipuri de memorie (program și date) să dispună de aceleași caracteristici. De regulă
memoria pentru instrucțiuni are o capacitate mai mare decât cea de date. De exemplu,
microcontrolerele PIC au un cuvânt de date de 8 biți și o lungime a instrucțiunii de 12,
14, 16 sau 32 biți.
În funcție de necesarul de memorie instrucțiunile pot fi stocate de exemplu într -o
memorie de tip ROM („read -only”), în timp ce datele se află într -o memorie de tip „citire –
scriere”.

11

Figura 1.3. Arhit ectură de tip " Harvard "
În arhitectura von Neumann pură CPU -ul poate fie citi o instrucțiune, fie citi/scrie
date din/în memorie. Nu pot fi efectuate ambele operațiuni simultan, deoarece se
folosește aceeași magistrală. Prin contrast, într -un calculator bazat pe arhitectura
Harvard CPU -ul poate citi o instrucțiune și în același timp poate accesa și date, chiar și
fără cache. De aceea o arhitectură Harvard poate fi mai rapidă: fetch -urile instrucțiunilor
și accesul la date nu concurează pentru aceeași cale de transfer de date. Arhitectura
Harvard are spații de adresare separate pentru date și instrucțiuni: adresa 0 pentru date
nu este aceeași cu adresa 0 pentru instrucțiuni.
În perioada modernă arhitectura Harvard este folosită în principal în două tipuri
de dispozitive:
 Procesoarele de semnale specializate din cadrul dispozitivelor pentru prelucrarea
semnalelor audio și/sau video.
 Microcontrolerele din cadrul aplicațiilor electronice (PIC de la Microchip, AVR de
la Atmel); acestea dispun de dimensiuni mici ale memoriilor de program și de
date și se folosesc de avantajul arhitecturii RISC – executarea instrucțiunilor într –
un ciclu mașină (nu neapărat un ciclu de ceas).
Arhitectura de tip CISC
Aproape toate microcontrolerele au la baza realizării CPU conceptul CISC
(Complex Instruction Set Computer). Aceasta înseamnă un set uzual de peste 80
instrucțiuni, multe din ele foarte puternice și specializate.

12
Microprocesoarele care utilizează arhitectura CISC au multe instrucțiuni
încorporate în ele. Acest lucru salve ază timp de procesare. Timpul este salvat deoarece
instrucțiunile necesare sunt disponibile direct din microprocesor și nu este nevoie ca
acesta sa le preia din programul stocat pe memoria externa, cum ar fi RAM -ul.
Arhitectura CISC ajuta microprocesorul s ă grăbească execuția programelor ce
au nevoie de instrucțiuni. Din cauza instrucțiunilor incorporate in microprocesor,
performantele acestuia sunt scăzute. Pentru a trece peste aceasta problema trebuie
incorporate mai multe tranzistoare in microprocesor. A cest tip de procesor este folositor
pentru nevoi generale de calcul. Este folosit in general in PC -uri.
Arhitectura de tip RISC
RISC (Reduced Instruction Set Computer) este un concept de realizare a CPU
care a început să fie utilizat cu succes de ceva timp și la realizarea microcontrolerelor.
Microprocesoarele CISC au instrucțiunile incorporate, iar acestea ocupa spațiu
in microprocesor, lăsând mai puțin spațiu pentru procesul de programare. Unele
microprocesoare fac anumite funcții , cum ar fi cele folosit e pentru calculele științifice .
Instrucțiunile în plus î ncorporate în microprocesor ocupa spațiu important ș i de
aseme nea timpul necesar pentru execuția instrucț iunilor suplimentare este irosit.
Prin implementarea unui set redus de instrucțiuni care se pot executa foarte
rapid și eficient, se obține o reducere a complexității microcircuitului, suprafața
disponibilizată putând fi utilizată în alte scopuri.
Microprocesoarele ce utilizează arhitectura RISC au instrucțiuni limitate
incorporate. De aceea este n evoie de mai puține tranzistoare pentru crearea
microprocesorului. Reducerea instrucțiunilor salvează și spațiu in microprocesor.
Microprocesorul RISC este mai ieftin de fabricat decât cel CISC. Acest tip de procesor
este preferat pentru scopuri științific e unde numărul limitat de instrucțiuni este necesar.

1.6.3 Memoria

În afară de memoria locală de tip RAM, de dimensiuni relativ reduse (de la x10
octeți la x1k), implementată ca atare sau existentă sub forma unui set de registre și
destinată memorării d atelor (variabilelor), mai există o serie de aspecte specifice, marea
majoritate a acestora fiind legată de implementarea fizică a memoriei de program (și
eventual a unei părți a memoriei de date) cu ajutorul unor memorii nevolatile. Clasic,
memoria de pro gram era implementată într -o variantă de tip ROM : EPROM pentru
dezvoltare și producție pe scară mică/medie sau mask -ROM pentru producția de masă.

13
Principalele concepte noi, apărute de a lungul timpului în legătură cu
implementarea memoriei de program sau date sunt urmatoarele:
 OTP – majoritatea producătorilor oferă variante de microcontrolere la care memoria
locală de program este de tip OTP (One Time Programmable), practic o memorie
PROM identică intern cu varianta EPROM, dar fără fereastra de cuarț pent ru
ștergere (deci și mai ieftine)
 FLASH EPROM – este o soluție mai bună decât EPROM -ul propriu -zis atunci când
este necesar un volum mare de memorie program (nevolatilă); mai rapidă și cu un
număr garantat suficient de mare (x10000) de cicluri de programar e (de
ștergere/scriere), este caracterizată și prin modalități mai flexibile de programare;
este utilizată numai ca memorie de program.
 EEPROM – multe microcontrolere au și o memorie de acest tip, de dimensiune
limitată (de la x10 octeți la x K octeți), de stinată memorării unui număr limitat de
parametrii (memorie de date) care eventual trebuie modificați din timp în timp; este o
memorie relativ lentă (la scriere), dar cu un număr de cicluri de ștergere/scriere mai
mare ca FLASH -ul
 NOVRAM (RAM nevolatil) – realizat prin alimentarea locală (baterie, acumulator) a
unui masiv RAM CMOS atunci când este necesar un volum mare de memorie de
program și date nevolatilă; mult mai rapidă decât toate celelalte tipuri și fără limitări
ca număr de cicluri.
 Memoria extern ă de program sau date . Marea majoritate a familiilor de
microcontrolere permit și utilizarea de memorie externă de program (tipic ROM) sau
date (tipic RAM). Aceasta presupune existenta și utilizarea unor magistrale externe
de adrese și date. Conexiunile ex terne necesare pentru acestea sunt disponibile ca
funcții alternative ale pinilor. Din păcate, in această situație numărul de conexiuni
exterioare disponibile pentru interfața cu exteriorul se reduce dramatic, reducând
mult din versatilitatea microcontrole rului. Mai mult la variantele constructive cu un
număr mic de pini (conexiuni externe) nu este posibilă utilizarea de memorie externă,
decât, eventual, intr -o variantă cu interfață serială (memorie RAM, FLASH sau
EEPROM cu interfață I2C, SPI, etc.) și numa i ca memorie de date.

1.6.4 Limbaje de programare

Limbajul mașină
Limbajul mașină (instrucțiunile mașină) este singura formă de reprezentare a
informației pe care un microcontroler o "înțelege". Din păcate această formă de

14
reprezentare a informației este total nepractică pentru un programator, care va utiliza cel
puțin un limbaj de asamblare, în care o instrucțiune (o mnemonică cu operanzii aferenți)
are drept corespondent o instrucțiune în limbaj mașină (excepție fac macroinstrucțiunile
disponibile la un ele asambloare). Un program în limbaj de asamblare este rapid și
compact. Aceasta nu înseamnă că un astfel de program, prost scris, nu poate fi lent și
de mari dimensiuni, programatorul având controlul total pentru execuția programului și
gestiunea resurse lor. Limbajul de asamblare este primul care trebuie învățat, chiar
sumar, atunci când dorim să proiectăm o aplicație hard/soft cu u n anume microcontroler ,
el permițând înțelegerea arhitecturii acestuia și utilizarea ei eficientă.
Interpreter
Un interpreter este o implementare a unui limbaj de nivel înalt, mai apropiat de
limbajul natural. Este de fapt un program rezident care, în acest caz, rulează pe o
platformă de calcul de tip microcontroler. Caracteristic pentru execuția unui program
interpretat, este c itirea și executarea secvențială a instrucțiunilor (instrucțiune cu
instrucțiune). De fapt fiecare instrucțiune de nivel înalt este interpretată într -o secvență
de instrucțiuni mașină care se execută imediat.
Compilatoare
Un compilator combină ușurința în programare oferită de un interpreter (de fapt
de limbajul de nivel înalt) cu o viteză mai mare de execuție a codului. Pentru aceasta
programul, în limbaj de nivel înalt, este translatat (tradus) direct în limbaj mașină sau în
limbaj de asamblare (urmând a fi apoi asamblat). Codul mașină rezultat are dimensiuni
relativ mari (dar mai mici decât cel interpretat) și este executat direct, ca un tot, de
microcontroler. De regulă codul generat poate fi optimizat fie ca dimensiune, fie ca timp
de execuție. Se pot e numera compilatoare pentru limbajele: C, BASIC, Pascal, PL/M
(Intel), Forth.

1.6.5. Criterii de alegere a unui microcontroler

În momentul în care se dorește alegerea unui microcontroler (sau mai bine zis a
unei familii de microcontrolere) pentru dezvolta rea unui proiect există mai multe criterii
ce trebuie luate în considerare, ținând cont de implicațiile multiple ale acestei alegeri.
Câteva din aceste criterii vor fi enumerate in continuare:
 Costurile aplicației (scara de producție , costurile microcontr olerului, costurile
mediul ui de programare și dezvoltare
 Timpul de dezvoltare al aplicației
 Caracteristicile fizice (viteza de prelucrare (de calcul) necesară, memoria,
memoria exter nă, tipul de alimentare disponibilă, numărul de intrări și/sau ieșiri
nece sare, tipul de intrări și/sau ieșiri nece sare: intrări/ieșiri analogice ș.a.)

15
 Conectivitatea (resursele de comunicație necesare, tipuri de magistrale seriale,
conectivitate Ethernet (o stivă TCP/IP), USB sau wireless)
 Compatibilitate, scalabilitate și dezv oltarea ulterioară (ce tipuri de circuite se pot
interfața cât mai simplu: sisteme de afișare, senzori, elemente de comandă și
execuție (relee, motoare de cc, motoare pas cu pas, etc.), resurse periferice sau
de memorie)
 Alte aspecte (distribuitori, suport oferit de producător, garanție și calitate a
produselor)

Capitolul 2: Medii de programare folosite

2.1. Android SDK

Android SDK furnizează librăriile API necesare si unelte pentru dezvoltatori,
unelte necesare in crearea, testarea si depanarea aplicațiilor pentru Android.
Unelte necesare dezvoltării de aplicații A ndroid :
 Eclipse + ADT plugin
 Android SDK Tools
 Android Platform -tools
 Cea mai nouă platformă Android
 Cea mai noua imagine de sis tem Android pentru emulator

2.1.1. Eclipse SDK 4.2

Eclipse SDK 4.2 este noua platformă pentru construirea aplicațiilor “rich client”.
O platformă “rich client” reprezintă o unealtă pentru programatori, care ușurează
integrarea componentelor software independente, unde cea mai mare parte a zonei de
procesare a datelor se desfășoară la client. Astfel că, această nouă platformă vine în
ajutorul programatorilor, pentru a dezvolta și asam bla aplicațiile bazate pe Eclipse.
Versiunea 4.2 este pregătită pentru producție, atât pentru dezvoltatori, cât și pentru
utilizatorii finali.

16
2.1.1. Ce este nou in v4.2

Noua platformă Eclipse 4.2 aduce modificări, atât din punct de vedere client, cât
și pentru dezvoltatori:
 un model de interfață orientată pe utilizator și un nou CSS axat pe mecanismul de
declarare a formatului aplicațiilor. Aceste facilități ușurează munca pe partea de
proiectare și personalizare a unei interfețe pentru utilizatori;
 de as emenea, o flexibilitate mai mare la aspectul interfeței , expunând diferențe
vizibile între interfața de utilizator și cea pentru dezvoltatori;
 un nou model de programare orientat pe servicii, care ușurează folosirea într -un mod
discret a serviciilor aplic ațiilor pe platforma Eclipse;
 apariție modernă pentru zona de lucru;
 compatibilitate integrală binar cu API, pentru care s -a realizat cu ușurintă procesul de
migrare

2.1.2. Ce este Eclipse și Organizația Eclipse?

Eclipse este o comunitate, atât pentru p ersoane fizice, cât și pentru organizații,
care își doresc să colaboreze cu un software open source, comercial și prietenos.
Proiectele sale sunt focusate pe construirea unei platforme deschise de dezvoltare
alcătuită de framework -uri extensibile, tool -uri și timpi de rulare pentru construirea,
lansarea și coordonarea software -ului de -a lungul ciclului său de viață. Fundația Eclipse
este non -profit, fundație susținută de membrii care hostează proiectele Eclipse și ajută
la cultivarea unei comunități open so urce, dar și la un ecosistem de pro duse și servicii
complementare.
Proiectul Eclipse a fost original creat de IBM, în noiembrie 2001 și suportat de
un grup de dezvoltatori software. Fundația Eclipse a fost creată în ianuarie 2004, ca o
corporație independe ntă, fără profit, pentru a acționa ca un administrator pentru
comunitatea Eclipse. Corporația a fost creată pentru a permite unui dezvoltator neutru și
deschis, accesul la o comunitate transparentă. Astăzi, comunitatea cuprinde persoane
fizice și organizaț ii, dintr -o anumită secțiune a industriei software.
Fundația Eclipse este finanțată anual, prin intermediul membrilor săi și condusă
de Consiliul de Administrație. Dezvoltatorii și Consumatorii strategici au și ei un loc în
acest Consiliu. Organizația anga jează profesioniști full -time pentru a furniza servicii
comunității, dar nu angajează dezvoltatori open -source, care lucrează la proiectele
Eclipse. Aceștia din urmă sunt angajați tipici ai unor organizații sau dezvoltatori
independenți, care oferă din tim pul lor pentru a lucra pe un proiect open source.

17
În general, Fundația Eclipse furnizează patru servicii comunității Eclipse:
1) Infrastructura IT
2) Management IP
3) Procesul de dezvoltare
4) Dezvoltare ecosistem
Staff-ul full -time este asociat fiecărei a rii enumerate anterior și lucrează cu cea
mai grozavă comunitate Eclipse, pentru a asista în ședințe la nevoile părților interesate.

1. Infrastructura IT
Organizația Eclipse administrează infrastructura IT pentru comunitatea Eclipse
open source, incluzând zona de cod GIT, bazele de date Bugyilla, listele de mail -uri și
forumuri cu referire la orientarea dezvoltării, download -ul și site -ul web. Infrastructura
este implementată să furnizeze un serviciu sigur și scalabil pentru dezvoltatorii
tehnologiei Eclip se și pentru consumatorii, care folosesc această tehnologie.
2. Manag ement -ul zonei de intelect (IP)
Un aspect important pentru Eclipse este focalizarea pe activarea folosirii
tehnologiei open source, în produsele și serviciile software comerciale. Se prom ovează
și încurajează în mod conștient dezvoltatorii software în utilizarea tehnologiei Eclipse,
pentru construirea de produse și servicii software comerciale. Acst lucru este posibil de
faptul că toate proiectele Eclipse sunt licențiate sub numele de Lice nță Publică Eclipse
(EPL).
Fundația Eclipse întreprinde de asemenea un număr de pași pentru a încerca
asigurarea originalității proiectelor Eclipse. Primul pas în acest proces constă în
protejarea tuturor contribuțiilor, că sunt realizate de titularul potr ivit, sub licența publică
Eclipse. Tuturor dezvoltatorilor li se cere să semneze un acord, care stipulează că toată
contribuția lor este originală și că este contribuită sub EPL. Dacă un dezvoltator este
sponsorizat să lucreze la un proiect Eclipse, de un membru al organizației, atunci
organizația trebuie să semneze un acord de membru dezvoltator.
Al doilea pas face referire la asocierea codului sursă dezvoltat în afara
procesului Eclipse, care este procesat prin procesul de aprobare IP al fundației Eclipse .
Acest proces constă în analiza codului selectat, pentru a încerca constatarea
provenienței codului și compatibilitatea licenței cu EPL. Proiectele care nu se
încadrează în aceste standarde nu sunt adăugate la proiectul Eclipse. Rezultatul final
ține de u n nivel de încredere, în funcție de care proiectele Eclipse open source sunt
distribuite în produsele comerciale.

18
3. Dezvoltarea comunității de suport
Comunitatea Eclipse are o buna reputație dobândită în urma furnizării software –
ului de calitate, într -un mod sigur și predictibil. Acest lucru se datorează angajamentelor
celor implicați și a organizațiilor care contribuie la proiectele open source. De asemenea,
fundația Eclipse furnizează, atât servicii cât și suport proiectelor, pentru a -i ajuta să -și
ating ă aceste obiective.
Angajații fundației contribuie la implementarea procesului de dezvoltare Eclipse.
Acest proces asistă la începerea fiecărui proiect și asigură pentru toate proiectele o
desfășurare într -o manieră transparentă. Ca parte a acestui proces, Fundația
organizează examinări ale proiectelor, pentru membrii comunității pentru asigurarea unei
interacțiuni consistente între proiecte și parteneriate.
Comunitatea Eclipse organizează anual un rând de versiuni, ce oferă versiuni
coordonate ale proiecte lor Eclipse, care doresc să participe. Acest lucru ajută utilizatorii
să adopte noi versiuni ale proiectelor deoarece:
1) Toate proiectele sunt disponibile pe aceeași planificare, astfel încât nu va trebui
să se aștepte după planificarea independentă a pro iectelor;
2) Un nivel de integrare a testării apare înainte ca versiunea finală să ajute la
identificarea probl emelor de -a lungul proiectului.
4. Dezvoltarea ecosistemului
Un aspect unic al comunității Eclipse și rolul fundației este marketing -ul activ și
promovarea proiectelor Eclipse, dar și lărgirea ecosistemului. Un ecosistem vibrant și
sănătos care se extinde dincolo de comunitatea Eclipse, pentru a include lucruri precum
produs comerciale bazate pe Eclipse, alte proiecte open source ce utilizează Ecli pse,
training și furnizori de servicii, magazineși portal online, cărți etc, toate acestea fiind
cheia succesului pentru comunitatea Eclipse.
Pentru a lua parte la dezvoltarea ecosistemului Eclipse, fundația organizează un
număr de activități, incluzând ev enimente de marketing cu membrii ale companiilor,
conferințe ale comunității, cataloage online de resurse (Eclipse marketplace și canalul
de Youtube Eclipse), de două ori pe an întâlniri ale membrilor și alte programe pentru
promovarea întregii comunități Eclipse.
2.1.3. Un model unic pentru dezvoltarea open source

Fundația Eclipse a fost recunoscută pentru oferirea de proiecte open source și
pentru comunitatea Eclipse. Pentru o corporație non -profit, fundația și modelul de

19
conducere Eclipse se asigură că nicio entitate nu conduce strategia, politicile sau
operațiile comunității Eclipse.
Fundația este focusată pe crearea unui mediu pentru proiectele open source de
succes și să promoveze adoptarea tehnologiei Eclipse în soluțiile comerciale și open
source. P rin intermediul serviciilor precum IP Due Diligence, versiuni anuale, suportul
comunității de dezvoltare și dezvoltarea ecosistemului, modelul Eclipse cu privire la
dezvoltarea open source este unică și dovedită pentru acest tip de dezvoltare.
2.1.4. Istor ia Eclipse

Liderii industriei de la Borland, IBM, MERANT, QNX Software Systems, Rational
Software, Red Hat, SuSE, TogetherSoft și Webgain au format inițial comitetul Stewards
eclipse.org, în noiembrie 2001. Până la sfârșitul anului 2003, acest consorțiu a crescut
la peste 80 de membrii.
La 2 februarie 2004, comitetul Stewards a anunțat reorganizarea Eclipse într -o
corporație non -profit. În primă fază s -a format un consorțiu, când IBM a transformat
platforma Eclipse în open source, Eclipse a devenit un prod us independent, care va
conduce evoluția platformei pentru a avantaja furnizorii de dezvoltare software și a
utilizatorilor finali. Toată tehnologia și codul sursă furnizat și dezvoltat de această rapidă
comunitate sunt disponibile prin EPL.
Fondatorii dez voltatori ai strategiei și consumatorii strategici au fost Ericsson,
HP, IBM, Intel, MontaVista Software, QNX, SAP și Serena Software.

2.1.5 . Android Developer Tools (ADT) plugin

Android Development Tools (ADT) este un plugin creat pentru Eclipse IDE, si
oferă mediu integrat si puternic pentru a crea aplicații pentru Android.
ADT extinde capabilită țile mediului Eclipse pentru a -ti permite sa creezi aplicații
Andro id, să creezi propria interfață, să poți adăuga pachete bazate pe API Android
Framework. Poți de asemenea depana aplicațiile create folosind uneltele Android SDK,
poți exporta aplicații semnate sau nu.
Dezvoltarea aplicațiilor in Eclipse cu ADT este metoda recomandă deoarece
aceasta este cea mai ușoară metodă de a porni . Dispune ți de ghidul de început, unelte
integrate, editor XML, si depanare, astfel cu ADT aveț i parte de un control incredibil și
un avânt considerabil in dezv oltarea de aplicații Android.

20

2.2. Arduino

Arduino este un mediu de dezvoltare open source ce oferă mijloace foarte
rapide de a scrie codul sursă și încărca cu ușurința pe placă . Acesta este com patibil cu
Windows, Mac OS X, și Linux . Mediul de dezvoltare este scris in Java si are la bază
Processing, avr -gcc, și alte programe open source.

2.2.1. Mediul de dezvoltare Arduino

Mediul de dezvoltare Arduino, include editor de text pentru a scrie cod, o zonă
de me saje, o consola de text, bara cu butoane si funcții comune, si o serie de meniuri.
Se conectează la placa fizică Arduino pentru a încărc a programele și pentru a comunica
cu acestea.
Programele scrise pentru Arduino se num esc schițe(sketches). Acestea sunt
scrise in editorul de text. Schițele sunt salvate cu extensia .ino. Oferă facilități pentru
copiere/lipire și pentru căutare/ înlocuire text. Zona de mesaje oferă informații in timp real
legate de erori, salvări si exporturi.
Arduino IDE conține librării. Acestea furnizează funcționalitate extinsă pentru a fi
folosită in schițe. Pentru a folosi librari i in schițe, le p uteți selecta din meniul Sketch –
>Import Library . Această operațiune va insera încă o declarație #include in partea de
sus a programului, iar librăria va fi compilată o dată cu schița .
O unealtă folositoare oferita de acest IDE este Serial Monitor. Acesta afișează
datel e trimise de la placa Arduino. Iar pentru a trimite date către p laca este suficient sa
scrii comanda si sa apeși butonul "send ". Rata de transmitere a datelor poate fi
selectată din tr-o listă derulantă, aceasta trebuie sa coincidă cu rata transmisă de fun cția
Serial.begin in program.
Limbajul de programare folosit este C++, la c are sunt adăugate foarte multe
funcții, implementat e pentru a ușura interfațarea cu microcontrolerele Atme l.

21

Capitolul 3: Bluetooth

3.1. Ce reprezintă Bluetooth ?

Bluetoot h este un standard care elimină firele și cablurile între dispozitive atât
staționare cât și mobile, facilitând atât comunicațiil e de date cât și pe cele vocale. Oferă
posibilitatea implementării unor rețele ad -hoc și a sincronizării între diverse dispozit ive.
Tehnologia wireless Bluetooth implică atât cerințe hard cât și soft și de
interoperabilitate. Aceasta a fost adoptată de majoritatea actorilor de pe scena
telecomu nicațiilor, computerelor și mecatronicii , dar și din diverse domenii precum cel
bancar, cel al industriei auto -moto și de îngrijire a sănătății sau cel al automatizării și
jucăriilor, etc. – pe plan extern, aproape de toate sectoarele economice.

3.1.1. Istorie

Harald Bluetooth a fost regele viking al Danemarcei între anii 940 și 981. Unul
dintre scopurile sale era să determine oamenii să comunice între ei și în timpul domniei
sale Danemarca și Norvegia au fost unite.
Astăzi tehnologia wireless Bluetooth îngăduie oamenilor să comunice între ei,
dar de această dată prin intermediul unei le gături radio de cost redus și pe domenii
restrânse. În orașul danez Jelling Harald Bluetooth a ridicat o piatră pictată, pe care
alături de imaginea lui Cristos, dăinuie și astăzi următoarea inscripție: „Regele Harald a
ridicat acest monument în memoria ta tălui său Gorm și a mamei sale Thyre. Acest
Harald a cucerit în întregime Danemarca și Norvegia și i-a creștinat pe danezi”.
SIG
În februarie 1998 a luat ființă Grupul de Interes Special (SIG). Astăzi Bluetooth
SIG include companiile promotoare 3Com, Eri csson, 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
primelor Specificații Bluetooth în Iulie 1999. Dezvoltarea ulterioară a specificațiilor este
încă scopul principal al SIG, alături de asigurarea cerințelor de interoperabilitate,
armonizarea benzii de frecvență și promoția tehnologiei.

22
3.1.2. Implementare

Tehnologia Bluetooth operează in gama de frecvența 2400 –2483.5 MHz pentru
comunicațiile globale nelicențiate, iar pe frecvența 2.4 GHz (unde radio de frecvența
scurtă) pentru domeniul Științific și Medical (ISM). Bluetooth folosește tehnologia numita
„frequency -hopping spread spectrum ”. Datele transmise sunt împărțite in pachete, iar
fiecare din acestea este transmis pe unul din cel e 79 de canale Bluetooth desemnate.
Fiecare canal are o lungime de banda de 1MHz. Primul canal începe la 2402MHz și se
continuă pana la 2480MHz cu pasul de 1MHz.
Inițial singura schema de modulare era Gaussian frequency -shift keying
(GFSK), însa după intr oducerea standardului Bluetooth 2.0+EDR, se mai puteau folosi
și π/4 -DQPSK sau 8DPSK intre dispozitivele compatibile. Dispozitivele ce folosesc
tehnica de modulare GFSK operează in modul de bază, iar viteza de transfer este pană
la 1Mbit/s. Termenul Enhanc ed Data Rate (EDR) este folosit pentru a descrie π/4 –
DQPSK și 8DPSK, acestea oferind viteze de transfer pana la 2 respectiv 3Mbit/s.
Bluetooth este un protocol bazat pe pachete cu o structura de tipul master –
slave. Un dispozitiv master poate comunica cu p ana la 7 dispozitive slave; toate
dispozitivele sunt sincronizate cu frecvența de ceas a celui master.
Tehnologia Bluetooth oferă o cale securizată de schimb de fișiere intre
dispozitive precum telefoane mobile, laptop -uri, calculatoare personale, imprim ante, ș.a.
Acesta a fost construit, in principal, ca și tehnologie cu o lățime de banda mica.
3.2. Versiuni de Bluetooth

 Bluetooth 1.0 și 1.0B – Versiunile 1.0 și 1.0B au avut multe probleme tehnice, și
producătorii au întâmpinat probleme in special în în cercarea acestora de a face
dispozitivele interoperabile.
 Bluetooth 1.1 – Multe din erorile găsite la versiunea 1.0B au fost reparate, s -a oferit
suport pentru canale necriptate și a fost adăugat un indicator al puterii semnalului de
transmisie
 Bluetooth 1 .2 – Aceasta versiune este compatibilă cu 1.1. Viteza practică a
transmisiei de date a fost mărită la 721 kbps
 Bluetooth 2.0 – Această versiune este compatibilă înapoi cu versiunile 1.x. Principala
îmbunătățire este introducerea unei viteze de transmisie m ai mari numite Enhanced
Data Rate, care permite o viteză de 3,2 Mbit/s. Îmbunătățirea a creat următoarele
efecte: viteza de transmisie de 3 ori mai mare; consum de energie mai mic; rata
erorilor de transmisie (BER – bit error rate) mai scăzută.
 Bluetooth v 3.0 – Versiunea 3.0 a fost adoptată de către Bluetoo th SIG în data de 21
Aprilie 2009. Bluetooth 3.0 îmbunătățește viteza de transfer teoretică până la 24
Mbit/s. Saltul vitezei a fost posibilă datorită introducerii unei legături 802.11. Vitezele

23
îmbunătățite nu pot fi prezente și în cadrul unei conexiuni c u un standard mai vechi
datorită lipsei legăturii 802.11 în dispozitivele de generație mai veche.
 Bluetooth v4.0 – Versiunea 4.0 a fost adoptată de către Bluetooth SIG în data de 30
Iunie 2010 . Aceasta include protocoalele Bluetooth clasic, de mare viteza și cu un
consum scăzut de energie. Protocoalele de mare viteză sunt bazate pe Wi -Fi, iar
protocoalele clasice sunt moștenite de la versiunile anterioare. Bluetooth low energy
(BLE), cunoscut ca WiBee este un subset al Bluetooth v4.0 cu o noua stiva de
protocoale pentru construire rapida a legăturilor simple.

3.3. Utilizarea Bluetooth

O caracteristică a tehnologiei Bluetooth este aceea de a permite dispozitivelor
fabricate de diverși producători să poată comunica intre ele. Astfel , Bluetooth definește
atât un sistem Radio, cât și o stivă de protocoale pentru ca aplicațiile să poată sesiza
prezența altor dispozitive Bluetooth, și să descopere ce servicii pot acestea oferi și să le
utilizeze.

3.3.1. Stiva de protocoale

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.

24

Figura 3.1. Stiva de protocoale Bluetooth
Profilurile Bluetooth ghidează aplicațiile în utilizarea stivei de protocoale
Bluetooth.
 TCS (Telephony Cont rol 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 controle ază legăturile fizice prin radio, asamblează pachetele și controlează
salturile în frecvență.
 Stratul Radio modulează și demodulează datele pentru transmisia și recepția
aeriană.

25
3.3.2. Legăturile vocale și de date

Bluetooth permite atât comunicații de date critice în timp, precum cele vocale și
audio, cât și comunicații de înaltă viteză, de pachete de date, insensibile la factorul timp.
Pentru a transporta astfel de date, între orice două dispozitive se pot stabili două tipuri
de legături și anume, legă turi SCO (Synchronous Connection Oriented) pentru
comunicații vocale și legături ACL (Asynchronous Connectionless) pentru comunicații de
date.
Pachetele de date pentru legături ACL sunt construite dintr -un cod de acces de
72 biți, un pachet antet (header ) de 54 biți și un cod CRC, în adiția încărcăturii
informaționale utile (payload data). Există o varietate de tipuri de date permițând
transmiterea unor cantități diferite de informație. Pachetul cu cea mai mare încărcătură
informațională este DH5, care se întinde în 5 slot -uri temporale. Un pachet DH5 poate
transporta 339 bytes sau 2712 biți de date. Așadar, sunt transmiși 2858 biți pentru 2712
biți de informație.
Un pachet DH5 utilizează până la 5 slot -uri și lungimea minimă replicată este 1
slot. Astfel, rata maximă în banda de bază într -un sens este 723.2kb/s. În acest caz, cu
pachete de 5 slot -uri transmise într -un sens, pachetele de un slot trimise în sens invers
vor transporta numai 57.6kb/s, astfel că aceasta va fi o legătură asimetrică cu mai multă
informație transmisă în sensul trimiterii pachetelor de 5 slot -uri. Dacă ar fi transmise
pachete de 5 slot -uri în ambele sensuri, atunci rata obținută a datelor ar fi 433.9kb/s,
ceea ce ar fi o reducere prea mare de la rata de transmisie prin aer de 1Mb/s .
Atât aceste supraîncărcări la codarea datelor, cât și salturile în frecvență sunt
necesare în principal pentru a oferi robustețe legăturii Bluetooth, de vreme ce banda
ISM este o resursă comună pentru multe dispozitive și alte standarde de comunicații și
chiar surse de zgomot. În plus, pentru reducerea problemelor de interferențe viitoare în
spectru, se au în vedere reglementări de limitare a puterii emise pe unitatea de timp în
banda ISM, determinând necesitatea unei scheme de salturi în frecvență pent ru
împrăștierea transmisiilor în spectru și în timp.
Straturile superioare ale stivei de protocoale mai necesită și ele o parte a lățimii
de bandă, astfel că la nivelul aplicațiilor, rata maximă a datelor poate ajunge la 650kb/s.
Legăturile SCO lucrează la 64kb/s și este posibilă coexistența a trei legături vocale
duplex simultane sau combinarea transmisiei vocale cu una de date. Aceste canale
vocale redau o comunicație de o calitate ce se așteaptă și de la sistemele moderne de
telefonie mobilă, precum G SM-ul. În fapt, legăturile SCO nu prea sunt potrivite pentru
transferuri audio de calitatea semnalului muzical.

26
O alternativă pentru suportul transmisiilor muzicale este utilizarea unui canal
ACL. Calitatea semnalului audio CD brut necesită 1411.2kb/s, dar cu o compresie
adecvată, precum MP3, care poate reduce rata de bit la aproximativ 128kb/s, se poate
transmite și semnal audio de calitate apropiată de cea CD, menținându -se succesiunea
temporală a informației.
3.4. Comunicația Bluetooth

Bluetooth di feră de orice rețea cablată, deoarece nu există nici un cablu între
dispozitivele care comunică între ele și s-ar putea ca ele să nu cunoască cu ce alte
dispozitive comunică și care sunt capabilitățile acelora. Pentru a rezolva această dilemă,
Bluetooth ut ilizează mecanismele Inquiry și Paging și SDP (Service Discovery
Protocol).

3.4.1. Descoperirea dispozitivelor Bluetooth

Presupunem că avem de -a face cu două dispozitive echipate Bluetooth. Primul
pas în stabilirea unei conexiuni, pentru primul dispozi tiv, este de a afla ce dispozitive
Bluetooth se află în zonă, așa că acesta inițiază o procedură Inquiry pentru a sonda
vecinătatea cu alte dispozitive.
Pentru aceasta, un dispozitiv transmite o serie de pachete de interogare
(inquiry) și eventual celăl alt va răspunde cu un pachet FHS (Frequency Hop
Synchronisation). Pachetul FHS conține toate informațiile de care un dispozitiv are
nevoie pentru crearea unei legături cu celălalt. Acesta conține de asemenea și informații
despre clasa dispozitivului, infor maț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).

3.4.2. Conectarea la o bază de date Service Discovery

Pentru a afla dacă un dispozitiv suportă un serviciu anu me, aplicația necesită
conectarea dispozitivului și utilizarea SDP. Mai întâi, un dispozitiv (laptop) trimite un
mesaj de paging altuia (telefon mobil), utilizând informația adunată prin inquiry. Dacă
telefonul scanează mesajele de paging, atunci răspunde și între cele două dispozitive se
poate seta o conexiune ACL la nivelul benzii de bază pentru transferul de date.
Odată stabilită o conexiune ACL, poate fi realizată conexiunea la nivelului
protocolului L2CAP. O conexiune L2CAP este utilizată de fiecare da tă când are loc un
transfer de date între dispozitive Bluetooth. L2CAP permite mai multor protocoale și
servicii să utilizeze o singură legătură ACL în banda de bază, iar pentru a face
deosebirea între acestea, adaugă fiecărui pachet L2CAP o componentă PSM (Protocol
and Service Multiplexor sau Protocol Stack Multiplexor). PSM diferă pentru fiecare
protocol și serviciu care utilizează legătura. În cazul considerat, de vreme ce conexiunea
va fi utilizată pentru descoperirea de servicii, se folosește o valoare specială pentru
acest tip de legătură, și anume PSM=0x001.

27

3.4.3. Conectarea la un serviciu Bluetooth

Procesul de Paging care duce la stabilirea unei conexiuni ACL în banda de bază
(BB) este identic celui pentru conectarea în vederea descoperirii servi ciilor.
De această dată, legătura se setează (stabilește) pentru un protocol care s -ar
putea să aibă pretenții la o anumită calitate a serviciului, astfel că aplicația ce rulează pe
laptop poate dori configurarea legăturii în vederea satisfacerii acestor c erințe. Pentru
aceasta, aplicația trimite cerințele sale către modulul Bluetooth, utilizând HCI (Host
Controller Interface). La pasul următor, managerul legăturii (LM) configurează legătura
utilizând LMP (Link Manager Protocol).
Odată stabilită conexiune a ACL după dorința laptop -ului, se stabilește o legătură
L2CAP (Logical Link Control and Adaptation).

3.4.4 . Moduri de descoperire și conectare

Este foarte important de reținut că pentru stabilirea unei conexiuni prin
tehnologia wireless Bluetooth co ndiția principală este ca ambele terminale să dorească
realizarea acestei legături. Unele dispozitive pot fi setate să nu realizeze scanări pentru
mesaje Inquiry; în acest caz, celelalte dispozitive nu le pot descoperi și vor fi practic
invizibile. În mod similar, unele dispozitive pot fi setate să nu realizeze scanări pentru
mesaje Page; în acest caz, aceste dispozitive pot iniția legături, dar nu vor auzi
încercările altor dispozitive de a se conecta la ele.
Aplicațiile pot alege dacă să facă dispoziti vele conectabile sau descoperibile. O
conexiune nu poate fi realizată forțat cu un dispozitiv care nu este setat pentru a o
accepta.

3.5. Stiva de protocoale Bluetooth

3.5.1. Protocoale utilizate de Bluetooth

Asemeni modelului OSI, specificațiile Bl uetooth fac uz de soluția ierarhizării pe
nivele a arhitecturii de protocoale. și tot asemeni OSI, scopul final al specificațiilor
Bluetooth este de a permite interoperabilitatea aplicațiilor realizate conform acestor
specificații. Acest lucru se realizeaz ă atunci când aplicațiile din dispozitivele conectate
rulează utilizând protocoale identice. Stive diferite de protocoale sunt utilizate pentru
aplicații diferite. Independent de aplicație, stiva de protocoale utilizate folosește un nivel
Bluetooth fizic ș i legătură de date comun.

28

Figura 3.2. Protocoale utilizate de Bluetooth

O aplicație nu utilizează toate protocoalele din stivă; în schimb, ur mează una
dintre căile vertical , conform necesităților serviciului corespunzător aplicației. Stiva
completă de p rotocoale conține atât protocoale ce sunt specifice tehnologiei wireless
Bluetooth, precum LMP și L2CAP, și acele protocoale, precum OBEX (Object Exchange
Protocol), UDP (User Datagram Protocol) și WAP (Wireless Application Protocol), care
pot fi folosite pentru comunicații cu alte platforme. În Stiva de protocoale Bluetooth
proiectarea protocoalelor Bluetooth s -a preferat reutilizarea unor protocoale deja
existente pentru scopuri diferite, la nivele mai înalte.
Deschiderea specificațiilor Bluetooth perm ite multor aplicații deja dezvoltate de
producători să profite de sistemele hard și soft compatibile cu aceste specificații. De
asemenea, producătorii pot implementa protocoale pentru aplicațiile lor proprii
(proprietare) sau de uz comun, având la bază spe cificațiile referitoare la protocoalele
tehnologiei wireless Bluetooth.
Stiva de protocoale utilizate de Bluetooth este s tructurată pe patru nivele:
 Protocoalele nivelului Bluetooth:
o Baseband
o Link Management Protocol (LMP)
o Logical Link Control and Adapt ation Layer (L2CAP)
o Service Discovery Protocol (SDP)

29
 Protocol de înlocuire a cablurilor:
o Radio Frequency Communication (RFCOMM)
 Protocoale de control telefonic:
o Telephony Control Specification Binary (TCS BIN)
o AT – comenzi
 Protocoale Adoptate:
o Point to Poi nt Protocol (PPP)
o UDP/TCP/IP
o OBEX
o WAP
o vCard
o vCalendar
o Infrared Mobile Communication (IrMC)
o Wireless Application Environment (WAE)
Specificațiile Bluetooth definesc de asemenea o interfață HCI (Host Controller
Interface), care oferă interfațare cu controll er-ul BB și cu LM și accesează starea
hardware -ului și a registrelor de control. În figura 3.1, HCI este poziționată sub L2CAP,
dar ea poate la fel de bine exista și deasupra acestuia.
Împreună, nivelul de Înlocuire a Cablurilor, nivelul de Control Telef onic și nivelul
Protocoale Adoptate formează protocoalele orientate aplicație, care permit aplicațiilor să
ruleze peste protocoalele nucleului Bluetooth. Ținând cont că specificațiile Bluetooth sun
niște specificații deschise, protocoale adiționale precum HTTP (HyperText Transfer
Protocol) ș FTP (File Transfer Protocol) pot fi adăugate într -o manieră interoperabilă
deasupra protocoalelor de transport Bluetooth sau deasupra protocoalelor orientate
aplicație.

3.5.2. Protocoale ale Nucleului Bluetooth

Aceste protocoale sunt specifice tehnologiei wireless Bluetooth, dezvoltate de
Bluetooth SIG. RFCOMM și TCS BIN au fost dezvoltate tot de către Bluetooth SIG, dar
acestea se bazează pe standarde deja existente: ETSI TS 07.10 și Recomandarea ITU –
T Q.931. Protocoa lele nucleului Bluetooth plus nivelul radio sunt cerute de aproape
toate dispozitivele Bluetooth, în timp ce restul protocoalelor sunt utilizate doar la nevoie.
 Baseband (BB) – Nivelul benzii de bază (baseband – BB) permite legătura fizică RF
între unități Bluetooth ale unei pico -rețele. De vreme ce sistemele RF Bluetooth
utilizează tehnologia cu spectru extins și salt în frecvență, în care pachetele sunt
transmise în fante temporale pe anumite frecvențe, acest nivel utilizează proceduri
Inquiry și Page pen tru sincronizarea transmisiei cu salturi în frecvență și a clock –
urilor diferitelor dispozitive Bluetooth.

30
 Link Manager Protocol (LMP) – LMP este responsabil de stabilirea (setarea) și
controlul legăturii între dispozitivele Bluetooth, incluzând controlul și negocierea
dimensiunilor pachetelor din banda de bază. Mai este de asemenea utilizat și în
procedurile de securizare: autentificare și criptare. LMP controlează de asemenea
modurile energetice și ciclurile de lucru ale dispozitivelor radio Bluetooth și stările
conexiunilor unei unități Bluetooth într -o picorețea. Mesajele LMP sunt filtrate și
interpretate de LM la recepție, astfel că ele nu sunt niciodată transmise nivelelor
superioare. Mesajele LMP au prioritate în fața datelor utilizatorului. Astfel că, dacă
LM necesită transmiterea unui mesaj, acesta nu va fi întârziat din cauza traficului
L2CAP.
 Logical Link Control and Adaptation Protocol (L2CAP) – L2CAP suportă pentru
protocoalele superioare proceduri de multiplexare, de segmentare și reasamblare a
pachetelor și de control a calității serviciilor (Quality of Service – QoS). L2CAP
permite protocoalelor și aplicațiilor de nivel superior să transmită și să primească
pachete de date de până la 64 kbytes lungime. Deși protocolul pentru BB oferă atât
legături SCO cât și ACL, L2CAP este definit doar pentru legături ACL și nici nu este
prevăzut vreun fel de suport pentru legături SCO. Canalele audio de calitate vocală,
pentru aplicațiile de telefonie și audio, sunt manipulate prin legături SCO în banda de
bază. Oricum, informațiile audio pot fi împachetate și trimise și utilizând protocoale
de comunicație prin legături la nivelul L2CAP.
 Service Discovery Protocol (SDP) – Descoperirea de servicii este un element
important în cadrul de lucru Bluetooth, deoar ece SD stă la baza tuturor modelelor de
utilizare. Cu ajutorul SDP, informațiile despre dispozitive, servicii și caracteristici ale
dispozitivelor pot fi tabelate în liste, cu ajutorul cărora utilizatorul, cunoscând astfel
serviciile dispozitivelor din vec inătate, poate selecta între aceste servicii. După
aceasta, se pot stabili conexiuni cu unul sau mai multe dispozitive Bluetooth.

31
Capitolul 4: Proiectarea și implementarea sistemului
4.1. Prezentarea și obiectivele sistemului

Lucrarea de fața descrie modul in care se poate realiza un robot mobil autonom,
pas cu pas.
Ca și punct de plecare am dorit ca robotul sa respecte următoarele cerințe :
 Să fie autonom
 Să poată avea mai multe regimuri de funcționare
 Să poată comunica cu alte dispozitive folosind o conexiune fără fir
 Să aibă costuri de implementare scăzute
 Să fie modular
Astfel am construit un robot ce se poate deplasa autonom, ocolind obstacolele ce
poate comunica prin intermediul tehnologiei Bluetooth cu un dispozitiv pe care rulează
Sistemul de Operare Android. Am creat mai multe regimuri de funcționare folosind
diverși algoritmi printre care și algoritmul de reglare PID.
Componentele folosite au fost selecționate ca și un compromis intre
calitatea/precizia oferita și prețul cerut. Am ales ca și platforma de dezvoltare placa
Arduino UNO, deoarece pentru un preț scăzut oferă o putere de procesare suficienta
pentru lucrarea de fata, o memorie integrata pe care am putut memora programul și un
număr decent de porturi I/O atât digitale cat și analogice . Arduino este un mediu de
dezvoltare Open Source, ce oferă atât suport hardware cât și software.
Pentru colectarea datelor din mediu am folosit doi senzori ultrasonici de distanța
HC-SR04, și două servomotoare pentru a oferi mobilitate acestora. Senzorul HC-SR04
oferă precizia dorită la un preț scăzut.
Șasiul este unul standard , având d oua roti acționate individual de motoare de
curent continuu. Acest tip de șasiu oferă mobilitate ridicată robotului, ansamblul având
un grad scăzut de complexitate.

32

4.2. Componente hardware

Lista componentelor hardware este următoarea:
 Placa de dezvoltare – Arduino UNO R3
 Senzor i ultrasonic i de distanță – HC-SR04
 Servomotoare – TowerPro SG90
 Modul Bluetooth HC -05
 Driver de motoare cu circuitul integrat L298N
 Motoar e + sistem de reductoare 120:1 tip Pololu
 Roți special realizate pentru motoarele tip Pololu
 Roată de sprijin metalică (Pololu Ball Caster)
 Placă de sprijin și șuruburi
 Elemente pasive: rezistoare, condensatoare, diode , LED -uri
 Breadbord, fire de conexiu ne
 Surse de alimentare (baterii sau acumulatori)

4.2.1. Arduino UNO R3

Arduino UNO este o placă de dezvoltare ce are la baza microcontrolerul
ATmega328 . Aceasta dispune de 14 pini digitali de tipul intrare/ieșire, dintre care 6 pot fi
folosiți ca ieșiri PWM, 6 pini de tipul intrări analogice, un osciloscop de 16MHz, conector
USB, jack de alimentare, header ICSP și un buton pentru resetare. Conține, de
asemenea, toate elementele necesare funcționării microcontrolerului.
Arduino UNO diferențiază fața de predecesorii săi prin faptul ca nu mai folosește
circuitul auxiliar de programare FDTI USB la serial. In schimb se folosește de
Atmega16U2 , programat ca și convertor USB la serial.

33
"Uno" se traduce din italiană ca "unu" și poartă această denumire pentru a
marca lansarea versiunii 1.0 a mediului de dezvoltare Arduino.

Microcontrol er ATmega328
Tensiune de operare 5V
Tensiune de intrare 7-12V
Tensiune de intrare (limite) 6-20V
Pini digitali I/O 14 (dintre care 6 pot fi ieșiri PWM )
Pini anal ogici I 6
Curentul maxim prin pin I/O 40 mA
Curent prin pin I/O 3.3V 50 mA
Memorie Flash 32 KB ( ATmega328 ), 0.5 KB ocupați de bootloader
SRAM 2 KB ( ATmega328 )
EEPROM 1 KB ( ATmega328 )
Frecventa de ceas 16 MHz
Tabelul 4.1 . Specificații tehnice Arduino UNO R3
Fiecare dintre cei 14 pini digitali poate fi folosit fie ca intrare fie ca ieșire folosind
funcțiile pinMode(), digitalWrite() și digitalRead() . Aceștia funcționează la o tensiune de
5V, iar curentul maxim admis este de 40mA, și au o rezistența(20 -50 kOhms) de tip pull –
up internă.
Figura 4 .1. Arduino UNO R3 spate
Figura 4 .1. Arduino UNO R3 fața

34
Pe lângă acestea unii pini au funcții speciale, cum ar fi:
 Serial: 0 (RX) și 1 (TX) folosiți pentru a primi(RX) și a transmite(TX) date seriale
TTL. Acești pini sunt conectați la pinii corespunzători ai emulatorului USB la
Serial TTL ATmega16 U2.
 Întreruperi externe: 2 și 3, aceștia pot fi folosiți pentru a activa întreruperi la
detectarea unei valori mici, o muchie crescătoare sau descrescătoare, sau
schimbarea stării.
 PWM : 3, 5, 6, 9, 10, și 11. Furnizează un semnal d e ieșire pe 8 biți folosind
funcția analogWrite()
 SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK).
 LED: 13. De pinul digital 13 este conectat un LED.
Arduino UNO dispune și de 6 intrări analogice de la pinul A0 până la pinul A5.
Fiecare dintre acestea oferă o rezoluție de 10 biți. In plus unii dintre acești pini pot avea
și funcții specializate, cum ar fi comunicația TWI ( A4 sau pin SDA și A5 sau pin SCL).
Arduino UNO oferă numeroase facilități de comunicare intre aceasta și computer,
cu o alta placa Ardui no sau alt microcontroler. ATmega328 poate realiza comunicare
serială UART TTL (5V) , comunicare I2C(TWI) sau SPI

4.2.2. Senzor de distanță HC -SR04

Senzorul de distanța HC -SR04 poate măsura distanțe în gama 2 – 400 cm, cu o
precizie de până la 3 mm. Modu lul include transmițătorul și receptorul ultrasonic cat și
circuitul de control.

Figura 4.3 . Modul HC -SR04

35
Pentru a măsura distanța transmițătorul emite automat, opt pulsuri de 40KHz și
așteaptă ca acestea să se întoarcă. După receptarea pulsurilor emise, se poate calcula
timpul de la momentul în care a fost emis semnalul pana în momentul receptării
acestuia.
Distanța se va calcula ca fiind jumătate din durata timpului(de când semnalul a
fost emis pana la recepție) înmulțit cu viteza sunetului(340 m/s).
Tensiune de operare 5V
Curentul maxim 15 mA
Frecvența de lucru 40 KHz
Distanța maximă 4m
Distanța minimă 2cm
Unghi de măsura 15 grade
Semnal de intrare Impuls TTL 10us
Tabelul 4.2 . Specificații tehnice modul HC-SR04

4.2.3. Modul Bluetooth HC -05

Modulul Bluetoo th HC -05 oferă suport pentru comunicare prin SPP( Serial Port
Protocol ). Modulul respecta standardul Bluetooth V2.0+EDR (Enhanced Data Rate) și
oferă viteze de transfer de pana la 3Mbps . Transmițătorul radio funcționează la
frecvența 2.4 GHz. Folosește chip ul CSR Bluecore 04 extern cu tehnologie CMOS și
AFH(Adaptive Frequency Hopping Feature). Are dimensiuni reduse, de doar
12.7mmx27mm, și este ideal pentru proiectele de mici dimensiuni.
Figura 4.4 . Modul Bluetooth HC -05

36
Specificații hardware:
 Sensitivitate: -80dBm
 Putere de transmisie RF: +4dBm
 Tensiune de operare: 1.8V – 3.6V
 Control PIO
 Interfața UART cu baud rate programabilă
 Antena integrată
 Conectori laterali
Specificații software:
 Baud rate implicit: 9600 (suportă: 9600, 19200, 38400, 57600, 115200, 230400,
460800 )
 Biți de date: 8
 Bit de s top: 1
 Paritate: Nu
 Data control: has
 Folosind un puls crescător pe PIO0, dispozitivul se va deconecta
 Instrucțiune de stare PIO1: low – deconectat; high – conectat
 Conectare automată la ultimul dispozitiv conectat
 PINCODE implicit : ”0000”
 Reconectare auto mată după 30 min in cazul in care conexiunea a fost întreruptă din
cauză ca dispozitivul a ieșit din raza de acțiune.

4.2.4. Driver de Motoare

Driverul de motoare are la baza circuitul L298N Dual Full-Bridge. L298N este un
circuit integrat monolitic, de tensiune înaltă și curenți mari (2A), creat pentru a accepta la
intrare standardul TTL logic și de a furniza la ieșire sarcini inductive precum relee,
solenoide, motoare alimentate in curent continuu sau motoare de tipul steper. Sunt Figura 4.5 . L298N Dual H Bridge

37
oferite 2 intrări pentru a activa și dezactiva punțile, indiferent de semnalul primit la
intrare. Emitorii tranzistoarelor inferioare ai fiecărei punți sunt conectați împreună pentru
a putea conecta o rezistentă externă.
Componentele necesare pentru acest driver sunt urmă toarele:
 Placa PCB
 Circuitul L298N (Multiwatt15)
 8 diode 1N4001
 2 condensatoare 100nF
 2 rezistențe 0,47Ohm x 1W
 Fire pentru conexiuni

4.2.5. Elemente de acționare

Motoare + sistem de reductoare 120:1 tip Pololu

Ansamblul motor plus reductoare 120 :1 este ideal pentru roboț i, datorită
dimensiunilor mici și puterii mari. Alimentat la o tensiune de 6V ansamblul oferă un cuplu
de aproximativ 0.5 Nm și 85 RPM. Curentul de rulare in gol este 70mA, iar curentul in
sarcină poate ajunge la 800mA. Figura 4.6 . Motoare + sistem de reductoare 120:1

38
Servomoto are – TowerPro SG90

Un servomotor este un actuator ce permite controlul exact al pozitiei unghiulare,
al vitezei și accelerației. Este format din tr-un motor set de roti dințate pentru a reduce
viteza de rotație și a crește cuplul, și un senzor pentru a returna poziția exactă a
rotorului.
Specificații tehnice:
Greutate: 9g
Dimensiuni(L x W x H): 22.0 x 11.5 x 27 mm
Cuplul la 4.8V: 1.17 Nm (1.2 kg/cm)
Tensiune de alimentare: 4 – 7V
Viteza la 4.8V: 0.12 sec/ 600.12 sec/ 60 grade

4.3. Arhitectura hardwar e a robotului

Înainte de a Începe conectarea pieselor intre ele este foarte important sa avem
în vedere specificațiile tehnice ale fiecăreia. Printre cele mai importante aspecte ce
trebuie luate in considerare sunt: tensiunea de alimentare, puterea consu mată,
polaritatea(dacă este cazul).
Senzorii ultrasonici de distanță HC -SR04 au nevoie de o tensiune de alimentare
de 5V, așa că pot fi alimentați de la pinul 5V al Arduino UNO. Pentru proiecte mai mari
se recomandă alim entarea de la surse diferite. Figura 4.6 . Servomotor

39
HC-SR04 are funcționează pe principiul sonarului(trimite un semnal audio și
așteaptă până acesta se întoarce) și are nevoie de 2 pini: TRIG și ECHO.

Astfel vom conecta pinul TRIG(violet) la pinul 7(respectiv 12) al Arduino, acesta
va fi setat ca și ieșire digitala. Pinul ECHO(portocaliu) se va conecta la pinul 8(respectiv
13) al Arduino, ce va fi setat ca intrare digitală.
Modulul Bluetooth HC -05 are nevoie de o tensiune de alimentare de 3.3V. De
aceea vom alimenta modulul de la pinul 3.3V de pe pl aca Arduino.
Deoarece Arduino folosește standardul TTL(5V) pentru comunicarea serială, iar
modulul Bluetooth funcționează la 3.3V vom face un divizor de tensiune pentru a
reduce tensiunea de 5V venită de la Arduino (pinul TX). Valorile rezistențelor fol osite vor
fi de 2k Ohm respectiv 1k Ohm.
Regula divizorului de tensiune se poate aplica pentru a determina tensiunea de
la ieș irea unui circui t ca cel prezentat mai jos, fără sarcină la ieș ire. În acest caz ambele
rezistoare sunt parcurse de acelaș i curent I, determinat cu legea lui Ohm:
Figura 4.7 . Conectare Arduino – HC-SR04

40

Vom putea afla valoarea tensiuni i la ieșire U 0, folosind formula:

Daca înlocuim in formulă cu valorile noastre vom obține o valoare de
aproximativ 3.33V pentru U 0, exact ceea ce ne doream.

Figura 4.8. Divizorul de tensiune
Figura 4.9. Conexiune Arduino – Modul Bluetooth

41
Motoarele de tipul servo sunt de diverse dimensiuni și puteri. Modelul ales de
noi, este unul ce poate fi alimentat la 5V și are un cuplu de maxim 90g, mai mult decât
suficient pentru a mișca senzorul de distanță.
Pentru a funcționa servomotorul nec esita un singur pin digital PWM de pe placa
Arduino. Pentru a înțelege mai bine cum funcționează un servomotor, in figura 4.10
este descris modul in care frecvența semnalului PWM influențează unghiul de rotație al
servomotorului.

Astfel vom conecta borna de alimentare a servo, la pinul 5V al Arduino, firul de
masă la GND, iar firul de semnal la un pin digital PWM (9 respectiv 10).
Figura 4.10. Principiul de funcționare al unui
servomotor
Figura 4.11. Conexiune Ardu ino – Servomotoare

42

Motoarele ce acționează roțile au nevoie de sursă separată de alimentare,
deoarece acestea au nevoie de o tensiune și un curent mai mare(9v și 1A). Motoarele
pot introduce in sistem impedanțe mari, datorita regimului de generator al acestora.
Pentru a rezolva aceste doua impedimente este necesara construirea unui driver de
motoare. Acesta este format in jurul circuitu lui L298N Dual Full-Bridge, alături de 8
diode, 2 rezistențe și 2 condensatoare. Rolul driverului de motoare este de primi intrări
comandate in 5V(de la Arduino) și de furniza la ieșire comenzi in tensiunea și curentul
dorit alimentării motoarelor.
Driver ul astfel creat va primi 6 intrări și va furniza 4 ieșiri. Cele 4 ieșiri vor fi
legate la bornele motoarelor, iar cele 6 intrări la pinii Arduino. „Enable A” și „Enable B”
decid daca motoarele primesc curent sau nu, o valoare mare pe acești pini va permite
curentului sa se scurgă către motoare, iar o valoare mică nu. Deci vom lega aceste două
borne la pinii digitali 2 și 4 de pe Arduino. Celelalte patru intrări vor fi legate la pinii
digitali PWM 3, 5, 6 și 11, deoarece curentul de la ieșirea driverului de motoare va fi
direct proporțional cu valoarea primită la intrare.

Figura 4.12. Conexiunea Arduino – driver
de motoare – motoare

43
4.4. Componente software

Partea software a acestui proiect consta in două aplicații, una creata pentru
dispozitivele mobile ce rulează sistemul de operare Android, și una creată pen tru
Arduino. Cele doua aplicații pot comunica intre ele wireless prin Bluetooth.

4.4.1. Algoritmul aplicației smartphone

Programul scris pentru dispozitivele mobile are rolul de a crea o interfața cu
utilizatorul, de a oferi un mod de control asupra ro botului. Astfel am creat o aplicație
compatibila cu sistemul de operare Android (de la v2.3 in sus), optimizată pentru a
funcționa pe Android v4.2.2 Jelly Bean, și dispozitivul Google Nexus S.
Aplicația poate găsi dispozitivele Bluetooth împerecheate cu telefonul și oferă
utilizatorului posibilitatea de a se conecta la dispozitivul dorit.

După ce s -a stabilit o conexiune intre telefon și robot, layout -ul principal se
modifică.
Noul layout conține butoanel e necesare comandării robotului. În partea de jos se
afla 3 butoane (Manual, PID și Automat) prin care putem seta regimul de funcționare. In Figura 4.12. Afișarea dispozitivelor împerecheate
cu telefonul

44
partea de sus se află butoanele direcționale necesare comandării manuale a robotului,
iar in partea centrală se află butonul pentru oprirea de urgență.

Programul sursă al aplicației cuprinde și următoarele funcții:
 private void checkBt() – verifică dacă telefonul este compatibil Bluetooth, apoi
verifică starea acestuia, pornit sau oprit. In cazul in care Bluetooth -ul este oprit
utilizatorul este alertat și întrebat dacă dorește pornirea acestuia. Daca utilizatorul
dorește acest lucru aplicația va continua rularea, altfel se va opri executarea .

Figura 4.12. Butoanele necesare comandării
robotului

Figura 4.1 3. Cererea de activare Bluetooth

45
 private void startDiscovery() – caută dispozitivele di n aria sa de acoperire.
 private void getPairedDevices( ) – verifică ce dispozitive d in cele descoperite, sunt
deja î mperecheate cu telefonul. Dispozitivele împerecheate sunt salvate intr -un
ArrayList de tipul <String>.
 public void onReceive(Context context, Intent intent) – populează lista cu
dispozitivele des coperite, daca acestea sunt împerecheate cu telefonul textul
„(Paired)” va apărea alături de numele și adresa fizică a dispozitivului.
 public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) –
funcție se apelează atunci când utilizator ul selectează un dispozitiv din listă,
aceasta anulează comanda de descoperire dispozitive și deschide un nou canal
de comunicație, in cazul în care dispozitivul este deja împerecheat, altfel
returnează un mesaj de eroare.
 public void handleMessage( Messag e msg ) – verifică daca s -a reușit conexiunea
și dacă aceasta este încă activa. Daca da, se trimite un caracter de test ( “#”). In
cadrul acestei funcții sunt definite și butoanele, cu acțiunile aferente acestora.
 button1.setOnClickListener(new OnClickListe ner() – funcția este apelată la
apăsarea butonului button1 . La apelare funcția va trimite un caracter prin
conexiunea deja deschisă. Caracterul trimis diferă in funcție de butonul apăsat:
o "w" – Înainte
o "a" – Stânga
o "d" – Dreapta
o "s" – Înapoi
o "q" – Stop
o "h" – Oprire de urgența
o "m" – Manual
o "n" – Automat
o "p" – PID
Astfel aplicația este capabilă să descopere dispozitivele din raza sa de acțiune,
poate face diferența dintre un dispozitiv deja împerecheat și unul nou. Apoi se poate
conecta la unul din dispoziti vele împerecheate selectate de utilizator. După stabilirea
conexiunii, telefonul este capabil sa trimită mesaje către robot, acestea urmând sa fie
interpretate ca și comenzi.

46
4.4.2. Algoritmul programului Arduino

Pe placa de dezvoltare Android se afla un program scris in limbajul nativ
Android. Acesta are rolul de prelucra informațiile preluate de la senzori si de la modulul
Bluetooth, si să comande mișcarea robotului.
Pentru a îndeplini aceste funcții trebuie ca mai întâi sa definim pinii pe care ii
vom folosi si tipul acestora(intrare/ieșire). Astfel vom avea:
 Pin 2, 3, 4, 5, 6, 10 – ieșiri digitale (3, 5, 6, 10 – PWM), necesare funcționării
roților
 Pin 7, 12 – ieșiri digitale, necesare senzorilor de distanța
 Pin 8, 13 – intrări digitale , necesare senzorilor de distanța
 Pin 9, 11 – ieșiri digitale PWM, necesare servomotoarelor
 Pin 0(RX) și 1(TX) – necesari pentru comunicația Bluetooth
După ce am trecut de partea de inițializare a pinilor si variabilelor in funcția void
setup() . programul are următo rul comportament: verif ică in ce mod de operare se află ,
verifică dacă este deschisă conexiunea cu telefonul, iar daca primește un caracter îl
verifică pentru a determina, daca schimbă modul de operare, sau inițiază o comandă.
Daca nu este disponibila cone xiunea Bluetooth, sau caracterul venit nu este unul dorit
atunci programul își continuă rularea in modul anterior stabilit.
Bucla principală:
mod := ‘*’ ;
repeta
dacă mod = ’*’ execută mod_manual();
dacă mod = ’%’ execută mod_autonom();
dacă mod = ’#’ ex ecută mod_PID();
șir_primit = “ ”
dacă șir_primit <> null execută
dacă șir_primit = ’n’ executa mod := ”%”
altfel dacă șir_primit = ’m’ executa mod := ”*”
altfel dacă șir_primit = ’p’ executa mod := ”#”
cât timp 1 = 1 ;
Pentru a măsura distanța am cre at funcția int distanta(int trigPin, int echoPin) ,
aceasta returnează o variabila de tip întreg in care este memorată valoarea distanței
măsurate. Funcția primește ca parametri valoarea pinilor la care se află legat senzorul.
Funcția trimite un semnal de 1 0ms pe pinul TRIG, apoi așteaptă ca semnalul să
se întoarcă pe pinul ECHO. Distanța se va calcula ca fiind jumătate din durata

47
timpului(de când semnalul a fost emis pana la recepție) înmulți t cu viteza sunetului(340
m/s).
În cazul în care robotul se află in modul manual de funcționare se va apela
funcția void mod_manual() . In interiorul acestei funcții vom seta poziția servomotoarelor
la 900, iar in funcție de caracterul primit prin Bluetooth, comandă roților sa se rotească
înainte, înapoi sau să nu se rot ească.
void mod_autonom() este funcția ce se apelează atunci când se activează
semaforul pentru a începe modul autonom de lucru. Aici vom seta poziția servomotorului
din față la 900(poziția înainte), si vom comanda roțile sa se rotească înainte. Această
operație va fi întreruptă doar dacă valoarea returnată de funcția ce măsoară distanța
este mai mică decât 15 cm. În cazul în care se întâmplă acest lucru vom trimite
comandă roților sa meargă înapoi, apoi vom apela funcția ce returnează distanța, de
doua ori , o dată după ce setam servomotorul in poziția cea mai din stânga, și încă o
dată, când setăm servomotorul in poziția cea mai din dreapta. Acum putem compara
distanța liberă din stânga si din dreapta. După această evaluare, se ia decizia de a
merge in part ea stângă sau in partea dreaptă, in funcție de distanța mai mare
disponibilă.
Din dorința de a automatiza si mai mult acest robot, am creat modul de
funcționare PID. Acesta ascunde in spate un algoritm de reglare de tipul
PID(proporțional integrativ deriva tiv).
Acești algoritmi există de mai bine de 100 de ani, dovedindu -se eficienți în
controlul aplicațiilor industriale de diferită natu ră, iar in ultima perioadă au î nceput sa fie
utilizați în aplicații simple de robotică.
Pentru a înțelege algoritmul mai u șor vom face o analogie cu un șofer care
încearcă sa mențină constantă viteza automobilului. Aceasta va fi influențată de
înclinarea drumului, viteza vântului, calitatea carburantului, si mulți alți factori, iar pentru
a menține viteza la o valoarea consta ntă șoferul va ajusta pedala de accelerație.
În cazul robotului, avem senzorii de distanță ultrasonici, pentru a afla poziția
relativă a acestuia. Există mai multe metode pentru a transpune in cifre modul in care
mediul influențează poziția robotului. O me todă cu un grad de complexitate mai mic este
aceea de a crea o variabilă numită eroare, aceasta își va modifica in mod constant
valoarea, fiind calculată ca și diferența dintre valoarea distanței returnată de senzorul
din față si cea returnată de senzorul de distanță din spate. Pentru a fi pe calea cea
bună, eroarea ar trebui sa fie cat mai apropiată de 0, dacă eroarea este negativa atunci
înseamnă ca robotul a deviat de la tras eu in partea dreaptă, in caz contrar in partea
stângă.

48
Pentru a controla abatere a fata de poziția dorită, putem micșora sau mări viteza
fiecărei roți cu o anumita constantă pe baza semnului erorii. Sa luam de exemplu viteza
rotii stâ ngi. Comanda pentru aceasta va respecta următoarea formulă. De menționat
este faptul că pe roata dreaptă aplicăm ac eeași formulă dar cu semnele inversate

Acest model va funcționa foarte bine, însă vom avea parte de oscilații mari,
deoarece schimbarea de turație va fi foarte bruscă indiferent de mărimea erorii. Acest
model este un exemplu de control proporțional și astfel putem adapta formula:

Dacă vrem să eliminam din aceste oscilații bruște, atunci când avem o eroare
mai mare trebuie să avem si o comandă mai mare, iar când eroarea este mică și
comanda trebuie să fie mică. Aceasta este componenta integrală a algoritmului de
reglare PID.

Iar daca vrem o comandă si mai lină putem adăuga si ultima componentă a
regulatorului PID, și anume componenta derivativă.

Pentru a implementa formula de mai sus pe un microcontroler este necesară
discretizarea acesteia. Una din cele mai simple metode de discretizare o reprezintă
dezvoltarea in serie Taylor a derivatei și o aproximare Riemann a integralei. Astfel
obținem urmă toarea formulă:

49
După ce vom include valoarea lui ∆t in interiorul constantelor K i și K d vom
ajunge la următorul algoritm , ce calculează diferența de viteză ce trebuie aplicată
fiecărei roți.
eroare a_anterioară = 0
integrala = 0
repeta
eroarea_curentă = dist anța_față – distanța_spate
integr ala = integrala + er oarea_curentă
derivata = eroarea_curentă – eroare a_anterioară
comanda = Kr * eroarea_curentă + Ki * integrala + Kd* derivata
eroare_anterioară = eroarea_curentă
cat timp (1==1)
Pentru a afla valorile constantelor Kr, Ki si Kd, am folosit metoda de acordare
experimentală Ziegler -Nichols. Această metodă se bazează pe î ncercarea mai multor
valori ale constantelor, iar in urma măsurătorilor alegem varianta cea mai bună, mai
exact:
 Am ales Kr = 5 , iar Kd și Ki 0, după mărirea progresivă a valorii lui Kr, am
observat ca robotul rămâne pe traseul stabilit atunci când Kr = 9 .
 Am lăsat valoarea lui Kr nemodificată si am crescut cu pași mici Kd, in jurul valorii
0,6 oscilațiile au început sa scadă in intensitate .
 Am încercat si mărirea constantei Ki, însă au apărut oscilații prea mari, valoarea
acesteia influențând intr -un mod accentuat efectul asupra robotului.

4.5. Etapele construirii robotului
Deoarece construirea robotului are un grad mediu de dificultate, am luat decizia
de a împarți construcția lui in câteva etape cu un grad mai scăzut de dificultate. Testând
la fiecare etapă subansamblele implicate si conexiunile aferente, putem executa mai
ușor operațiuni de depanare si calibrare, rezultatul final fiind cel așteptat.

Figura 4.1 4. Șasiu + Arduino UNO

50
Am început prin a asambla șasiul și roțile. După ce ne -am asigurat că toate
piesele sunt corect f ixate, iar motoarele funcționează am trecut mai departe, la
construirea driverului de motoare. Aceasta a fost o operație minuțioasa ce a necesitat
însă un grad mic de dificultate. După construcție acesta a fost testat si pus pe șasiu.

Următorul pas a fost reprezentat de montarea primului senzor de distanța pe
servomotor, și conectarea la Arduino. Acest pas a implicat si calibrarea senzorului,
pentru a fi gata de folosire imediat ce tot ansamblul va fi gata.
Au urmat adăugarea celui de -al doilea ansamblu se rvomotor -senzor de distanța
si a modulului Bluetooth. Rezultatul final este acesta:

Figura 4.1 5. Driver de motoare

Figura 4.1 6. Robot autonom

51

Concluzii

Această lucrare descrie modul de implementare al unui robot autonom mobil, cu
o placă Arduino UNO și interfață de comandă wireless pe un dispozitiv Andr oid folosind
comunicarea Bluetooth.
Robotul reușește să îndeplinească toate sarcinile pentru care a fost creat, are
atât un mod autonom, cat si unul manual și dispune de un mod de oprire de urgența
comandat in caz de avarii. Al treilea mod de funcționare si anume mo dul in care robotul
urmărește cu succes peretele, reprezintă o implementare practica a algoritmului de
reglare PID.
Întregul ansamblu, format din robot mobil și Android, reprezintă doar o
implementare practica a noțiunilor dobândite in facultate, aplicați ile sale viitoare putând
fi nelimitate , implementarea regulatorului de tip PID îl face ideal pentr u integrarea intr-un
robot de uz casnic de tipul aspiratorului inteligent, de asemenea posibilitatea de
comunicare cu un dispozitiv wireless Îi poate aduce numeroase aplicații si in domenii
unde prezența oamenilor este imposibila sau ostilă, robotul putând fi comandat de la o
distanța sigură.
Principalele limitări actuale ale acestui robot se refera la distanța de la care
poate fi comandat (aproximativ 10m) , durata de viață a bateriilor și precizia senzorilor.
La nivel software, minusurile pot fi considerate: aplicația de comandă ce rulează pe
telefonul mobil, interfața simplistă, și instabilitatea aplicației.

52
Anexe

Anexa 1. Diagrama pinilor Arduino

53

Anexa 1. Schema electrica Arduino UNO

54

Anexa 1. Diagrama pinilor modulului Bluetooth HC -05

55
Listă imagini, tabele și abrevieri

56
Bibliografie
Drăgan , Violeta 2013. Utilizarea roboților din generația a treia . Editura Sfântul Ierarh Nicolae
Isaac Asimov 1942 . Runaround.
http://en.wikipedia.org/wiki/Microcontro ller
Bray, Jennifer și Sturman, Charles F. „Bluetooth – Connect without Cables” – Prentice
all PTR, 2001
Ericsson Mobile Communications AB „Users Manual – Bluetooth PC Reference Stack by
Ericsson”, 2000
Ericsson Web Site www.ericsson.com/bluetooth
http://en.wikipedia.org/wiki/Bluetooth
http://www.eclipse.org/org/#about

Similar Posts