Faculta tea de Matematică si Informatică [625299]

Universitatea Babeș -Bolyai
Faculta tea de Matematică si Informatică
Specializarea Matematică – Informatică

LUCRARE DE LICENȚĂ

Coordonator științific
Lect. Dr. Cioban Vasile
Absolvent: [anonimizat] ,
2018

Universitatea Babeș -Bolyai
Facultatea de Matematică si Informatică
Specializarea Matematică – Informatică

LUCRARE DE LICENȚĂ
DAISY – Asistent personal

Coordonator științific
Lect. Dr. Cioban Vasile
Absolvent: [anonimizat] ,
2018

CUPRINS

0. INTRODUCERE …………………………………………………………………………….. …………. 3
1. ANALIZA SITUAȚIEI DIN DOMENIU …………………………………………….. …………… 4
1.1 Roboți – definiție și clasificare ………………………………………………………………. …………………. 4
1.2 Modalități de control a roboților …………………………………………………………….. ……………….. 9
1.3 Tehnologii de control la distanță ……………………………………………………………… …………….. 12
2. TEHNOLOGII UTILIZATE ÎN REALIZAREA APLICAȚIEI …………………. ……………. 16
2.1 Descrierea plăcii Arduino UNO ………………………………………………………………. ………………. 16
2.2 Scurtă descriere a limbajului C++ ……………………………………………………………. ……………… 20
3. PROIECTAREA AP LICAȚIEI ……………………………………………………………………….. 25
3.1 Asamblarea robotului mobil cu kit Arduino …………………………………………………. …………. 25
3.2 Driverul pentru motoare L298N ……………………………………………………………… ……………… 29
3.3 Realizarea controlului motoarelor de curent continuu ……………………………………… …….. 33
3.4 Conector Bluetooth Mate Silver ………………………………… ……………………………. …………….. 35
3.5 Modul ul Wi-Fi ESP8266 …………………………………………………………………………. ………………. 37
3.6 Modul ul Text -To-Speech Emic 2 ………………………………………………………………… …………… 49
4. MANUAL DE UTILIZARE …………………………………………………………………………… 41
4.1 Controlul robotului prin Bluetooth …………………………………………………………… …………….. 41
4.2 Comunicarea cu robotul ………………………………………………………………………. ………………… 44
5. POSIBILITĂȚI DE DEZVOLTARE ALE APLICAȚIEI ………………………….. …………. 48
Bibliografie………………………………………………………………………………………………… …………………… 50
Referințe imagini ……………………………………………………………………………… ….……… .…53

3

0.INTRODUCERE

În ultima vreme , robotica a devenit o tehnologie în curs de dezvoltare în domeniul
științei . Numeroase un iversități si companii din toată lumea au început să dezvolte lucruri noi
în acest domeniu . Domeniu l este unul nou și în continuă expansiune , care va evolua foarte
rapid în următorii ani ș i va fi de mare folos societății .
Roboții , in general , sunt controlați cu ajutorul unui dispozitiv de comandă , care poate fi
cablat sau fără fir . Deși ro boții ar putea înlocui oamenii î n executarea sarcinilor din difer ite
domenii , aceștia încă mai au nevoie să fie controlați de către oameni .
Pe lângă metoda de control a roboților prin dispozitive fizice , în ultimul timp a u luat
amploare roboții inteligenți cu care se poate purta un dialog și există posibilitatea ca ei să
îndeplinească anumite sarcini .
Obiectivul acestui proiect este de a construi un robot controlat cu ajutorul unei
aplicații , fără fir , folosind microcontrolerul Arduino Uno , un driver de motoare și un conector
Bluet ooth pentru partea de control al robotului . Pentru cealaltă funcționalitate am folosit un
ESP8266 ș i un modul T ext-to-Speech Emic 2 . Arduino primește comenzi de la aplicație și in
funcție de asta dă o mișcare robotului . Cu ajutorul modulului Wi -Fi, am creat un server web ,
unde utilizatorul introduce un text , care mai apoi va fi trimis și citit de către Arduino . În
funcție de cuvintele primite , el alege un răspuns , care mai departe va fi transmis către
utilizator cu ajutorul modului Emic 2 , implic it și a boxei atașată de ro bot .
Am împărțit lucrarea de față în 4 capitole cu nume sugestive, pentru a realiza o
corelație între noțiuni și pentru a furniza informații cât mai precise .
Astfel, primul capitol, intitulat și “Analiza situației din domeniu” este un capitol
introductiv pe baza căruia dorim să prezentăm noțiunile bazice care ne vor fi utile în
considerațiile noastre . Am definit si clasificat termenul de robot , am expus modalitățile de
control ale acestora si tehnologiile existente de control la distanță . Acest capitol se bazează în
mare parte pe [1] , [2], [3], [4], [5] și [6].

4
Al doilea capitol, intitulat “Tehnologii utilizate in realizarea aplicației” se referă la
tehnologiile folosite în realizarea acestei lucrări și anume : descrierea plăcii Arduino Uno și
cea a limbajului folosit în scrierea codului . Suportul acestui capitol este dat de [7], [8], [9],
[10], [11], [12], [13], [14] și [15 ].
Al treilea capitol , intitulat “Proiectarea aplic ației” conține noțiuni referitoare la felul în
care a fost realizată aplicația . Totodată, în acest capitol mai găsim informații despre
componentele folosite la crearea robotului . Suportul acestui capitol este dat de bibliografiile
cuprinse între [15] – [33].
Al patrulea capitol, “Manual de utilizare” încearcă sa dea un set scurt de instrucțiuni,
care să ajute utilizatorul să înțeleagă modul de funcționare al acestei aplicații . În același timp,
în acest capitol sunt descriși gradual pașii care trebuie urmați pentru a putea utiliza robotul .
Baza acestui capitol este formată din [ 34], [35] și [36].
Ultimul capitol prezintă posibilitățile de dezvoltare ale aplicației in viitorul apropiat .
Chiar daca unele sunt îmbunătățiri minore, care se pot realiza într -un timp scurt, altele sunt
idei care necesită timp ș i o schimbare majoră în modul de funcționare al robotului . Suportul
ultimului capitol este dat de [ 37], [38], [39], [40], [41], [42], [43] și [44].

5

1. ANALIZA SITUAȚIEI DIN DOMENIU
Capitolul ce urmează are un rol introductiv ce presupune descrierea sumară a situației
actuale din acest domeniu , stabilirea scopului și a obiectivelor ce urmează să fie realizate . Mai
departe , vor fi prezentate soluțiile existente în acest moment și problemele existente î n
domeniu .

1.1 Roboți – definiție și clasificare
Un robot este un operator mecanic sau artificial . Robotul este compus din mai
multe elemente , printre care : elemente mecanice , senzori și un mecanism de
direcționare a acestuia . Mecanica stabilește felul in care arată robotul ș i ansamblul de
mișcări posibile î n timpul funcționării acestuia . Senzorii sunt folosiți la interacțiunea
cu mediul înconj urător . Mecanismul de direcționare are ca principal obiectiv ca robotul
să își îndeplinească obiectivul cu succes , evaluând informațiile senzorilor . Acest
mecanism aju stează motoarele ș i planifică anumite mișcări care trebuie efectuate î n
acel moment .
În zilele noastre , roboții fac numeroase sarcini î n diferite domenii , iar numărul
locurilor de munca asignate roboților crește pe zi ce trece . De aceea , în opinia mea , una
dintre cele mai bune metode de a clasifica roboții este in funcție de domeniul de
aplic are.

6

Clasificarea roboților după domeniul de aplicare
Roboți in dustriali – sunt roboți folosiți în medii industriale de fabricare . De
obicei , ei sunt doar niște brațe articulate , special concepute pentru lucrul din fabrică
precum sudarea , vopsirea si altele .
Roboți de uz casnic – acest tip de roboți sunt puțin diferiți față de restul
roboților . Acestea sunt doar niște dispozitive precum aspiratoarele robotice , mașinile
de măturat si alte dispozitive asemănătoare . De asemenea , roboții de supraveghere ar
putea fi considerați roboți de uz casnic , daca aceștia sunt utilizați in acest scop .
Roboți me dicali – roboții utilizați în medicină ș i instituții med icale sunt roboții
chirurgicali, autovehiculele ghidate ș i mijloacele de ridicare .
Roboți de serviciu – aici se încadrează roboții care nu fac parte din alte
categorii . Printre aceștia se numără roboț ii de colectare a datelor , roboții făcuți pentru
prezentarea anumitor t ehnologii sau roboții folosiți î n cercetare .
Figura 1.1 – Definirea familiilor de roboți [1]

7
Roboți militari – acest tip de roboți sunt aceia folosiți în scop militar ( în
armat ă ). Câteva exemple ar fi roboții de eliminare a bombelor , roboții de transport sau
drone le de recunoaștere . Frecvent , acești roboți pot fi folosiți și î n scopuri de căutare si
salvare .
Roboți de divertisment – aici se încadrează rob oții folosiți pentru amuzam ent
și distracție . Aceasta este o categorie foarte largă . Începând cu roboți precum ceasul cu
alarmă care fug e prin cameră si terminând cu brațe robotice articulate folosite ca
simulatoare de mișcare .
Roboți spațiali – în această categorie se încadrează roboții utilizați pe stația
spațială internațională . Un exemplu bun ar fi rover -ul de pe Marte .
Roboți de competiție – aceștia sunt roboții creați dintr -un anumit hobby cum a
fi sumo -bots sau roboți făcuți doar pentru di stracție sau pentru participarea la diferite
concursuri de robotică .

Figura 1.2 – Robotul de pe Marte [2]

8

Figura 1.3 – Sumobot [3]

Figura 1.4 – Robot chirurgical [4]

9
În concordanță cu modalitatea de control , roboții se clasifică în :
Autonomi Controlați Semi -controlați/semi –
autonomi
Roboții care pot executa anumite
sarcini fără intervenția omului, fiind
ghidați de către un program. Roboți cărora le sunt transmise
comenzi din exterior de către
un operator uman. Roboți care pe lângă comenzile
primite de la operatorul uman,
recepționează date de la anumiți
senzori.

Tabelul 1 . “Clasificarea roboților după modalitatea de control”

1.2 Modalități de control a roboților

Există numeroase moduri de a controla un robot , dar cele mai răspândite sunt cele prin
utilizarea firelor sau a cablurilor , prin wireless ( fără cabluri ) si controlul autonom .

Controlul prin cablu
Cea mai ușoară metodă de a controla un robot se realizează prin utilizarea unui
controler portabil conec tat fizic la robot prin cabluri sau fire . Întrerupătoarele controlerului sau
a telecomenzii permit controlarea robotului fără a utiliza alte module adiționale . Astfel de
roboți nu au inteligență . Autovehiculele subacvatice tind să utilizeze cabluri cu fibr ă optica , în
timp ce roboții tereștri folosesc cabluri metalice , in special de cupru . Conectarea controlerului
la unul din porturile de intrare sau ieșire ne permite să controlăm acțiunile robotului utilizând
o tastatură sau un alt dispozitiv periferic .

Controlul prin unde ( wireless )
Transmițătoarele cu infraroșu (IR) sunt folosite să înlocuiască cablurile folosite în
controlul prin cablu . Acest lucru reprezintă , de obicei , un impediment pentru începătorii din
domeniul roboticii .

10
Pe lângă undele infraro șii, mai sunt utilizate și undele de radiofrecvență (RF) .
Dispozitivele de control la distanță (R/C) disponibile în comerț folosesc microcontrolere mici
în emițător si receptor pentru a trimite , primi ș i interpreta datele prin intermediul undelor de
radiof recvență .
Bluetooth -ul este o formă de RF ș i urmează anumite protocoale pentru trimiterea si
primirea datelor . Gama Bluetooth are avantajul de a permite utilizatorilor să -și controleze
robotul prin intermediul dispozitivelor cu funcții Bluetooth , precum te lefoanele mobile si
laptopurile .

Controlul autonom
O altă metodă de control a roboților este controlul autonom . În acest caz ,
microcontrolerul este gata programat , astfel încât să poată reacționa la semnalele primite de
senzorii cu care este dotat acesta . Microcontrolerele nu sunt capabile să asigure o putere
suficientă pentru funcționarea motoarelor și, prin urmare, este nevoie de un controler de motor
(driver) pen tru a acționa ca intermediar. Microcontrolerele sunt necesare pentru controlul la
distanță autonom, deoarece acestea sunt considerate a fi ”creierul” robotului și permite
programarea comportamentului acestuia. Un robot poate fi controlat autonom (fără inte rvenția
utilizat orului) sau semi -autonom (cu cât eva intervenții din partea utilizatorului). Controlul
semi-autonom implică unele procese decizionale care trebuie transferate / programate în robot.
Controlul autonom poate fi realizat în mai multe forme: pr e-programat fără feedback
de la mediul înconjurător, feedback limitat al senzorului și feedback complex al senzorului.
Adevăratul control autonom implică o varietate de senzori și un cod pre -scris care să permit ă
robotului să determine singur acțiune a ce trebuie luată în orice situație dată .

11

Figura 1.5 – Modalități de control a roboților [5]

12
1.3 Tehnologii de control la distanță
Controlul la distanță este cea mai răspândită metodă de control a roboților
datorită faptului că este mai ușor de implementat în comparație cu controlul autonom și
ne permite eliminarea limitelor impuse de către firele ce sunt prezente în cazul
controlul cablat. În continuare vor fi prezentate cele mai populare tehnici și tehnologii
de control la distanță.

Figura 1.6 – Modalități de control la distanță
Prin unde infraroșii (IR)
Telecomanda IR este cea mai cunoscută formă de telecomandă wireless. Este ieftin ă și
fiabil ă, dar limitat ă la comunicarea directă. Modulele complete de receptor IR, precum
TSOP1736, sunt disponibile la prețuri scăzute și pot fi int erfațate cu majoritatea controler elor
fără componente suplimentare. Telecomenzile TV care suportă codificarea RC5 (Phillips) pot
fi utilizate cu astfel de module.

Controlul
la
distantaUnde
infraroșii
Unde de
radiofrecvență
Comenzi
vocaleSuneteGesturi

13
Prin unde de radiofrecvență (RF)
Tehnologia RF este cunoscută în modelele mașinilor de curse, Wi -Fi și alte aplicații. În
prezent sunt disponibile module RF pentru transmițătoare / receptoare la prețuri rezonabile.
Aceste module sunt foarte ușor de folosit și au intervale de până la 200 m. Telecomenzile RF
permit controlul de la distanță a mașinilor de curse de înaltă performanță au o gamă mai largă,
dar sunt mai scumpe.

Prin comenzi vocale
În esență, recunoașterea vorbirii este o formă de control de la distanță. Probabil una
dintre cel e mai grele forme de control la distanță, dar și una dintre cele m ai impresionante.
Deși astăzi există module care conțin un sistem complet de recunoaștere a vor birii capabil să
învețe o mulțime de comenzi, aceste sisteme sunt încă foarte limitate, deoarece nu se pot
descurca cu propoziții (doar comenzi), trebuie instrui te în prealabil, și, de obicei, utilizate de o
singură persoană.

Prin sunete
Sunetul poate fi, de asemenea, utilizat pentru controlul la distanță, generarea un
ton de o anumită frecvență face posibilă construirea unui receptor pentru a detecta acest
ton și în dependență de acesta să fie realizate anumite comenzi. Fluieratul și baterea din
palme au fost folosite pentru controlul la distanță în diverse dispozitive.

Prin gesturi
Este posibil să se controleze de la distanță un robot prin intermediul gesturilor mâinii. În
acest caz rolul de telecomandă revine unei mănuși care este dotată cu diverși senzori
(accelerometru, giroscop, rezistențe flexibile etc.), iar comenzile sunt date sub formă de
poziția mâinii (pentru vehicule robotice). În cazul brațelor sau mâinilor robotice acestea pot să
reproducă mișcările brațului sau mâinii operatorului (persoanei care comandă robotul).
Controlul prin intermediul comenzilor vocale, prin sunete și prin gesturi presupun utilizar ea a
catorva module ce utilizează unde infraroșii sau de radiofrecvență pentru transmiterea
comenzilor către robot. În continuare vor fi prezentate principalele diferențe dintre tehnologia
IR și tehnologia RF.

14
RF înseamnă unde de frecven ță radio care variază de la 3 KHz la 300 GHz în scala de
frecvență. IR înseamnă unde în infraroșu care variază de la 300 GHz la 400 THz pe scală.
Lungimea de undă variază de la 700 nm la 1 mm. În mod tipic, dispozitivul de telecomandă
funcționează pe inte rvale de frecvență IR (infraroșu) sau RF. Ambele telecomenzi sunt
utilizate pentru aceleași aplicații: pentru a controla dispozitivul, în cazul nostru robotul, de la
distanță .

15
Specificații IR RF
Raza de acoperire până la 10 metri până la 50 metri de la linia de
vizibilitate
Rata de transmitere a datelor 500 bps până la 1 kbps până la 100 kbps
Reglementări Nici o limitare Are limite de reglementare
definite în ETSI / FCC. Este
necesar să se efectueze teste
de conformitate
Consu mul de energie al
transmițătorului cu
alimentarea pornită 20 până la 150 mA, aceasta
depinde de LED -uri și de raza
de acoperire 5 până la 20 mA
Consumul de energie al
receptorului în stare de
așteptare Aproximativ 1 mA
Aproximativ 5 mA în modul
de recepție continuă

Mod de lucru bidirecțional Nu este posibil din cauza
consumului de energie Posibil
Numărul de biți pe cadru
maxim 40 de biți
aproximativ 80 -140 de biți pe
cadru

Protocoale
Utilizează tehnici de
modulare, cum ar fi Pulse
Distance Coding și
codificarea Manchester
pentru a reprezenta 1 și 0
logic pe un purtator de
semnal de 38kHz Utilizează tehnici de
modulare cum ar fi ASK și
FSK pentru a reprezenta 1 și
0 logic

Tabelul 2 . “Analiz a comparativă a tehnologiilor IR si RF”

16
2. TEHNOLOGII UTILIZATE ÎN REALIZAREA APLICAȚIEI
2.1 Descrierea plăcii Arduino UNO
Arduino UNO este o platformă de procesare open -source, bazată pe software și
hardware flexibil și simplu de folosit. Constă într -o platformă de mici dimensiuni (6.8
cm / 5.3 cm – în cea mai des întâlnită variantă) construită în jurul unui procesor de
semnal și este capabilă de a prelua date din mediul înconjurător printr -o serie de
senzori și de a efectua acțiuni asupra mediului prin intermediul luminilor, motoarelor,
servomot oare, și alte tipuri de dispozitive mecanice. Procesorul este capabil să ruleze
cod scris într -un limbaj de programare care este foarte similar cu limbajul C++. Placa
Arduino UNO se conectează la portul USB al calculatorului folosind un cablu de tip
USB A -B.
Poate fi alimentată extern (din priză) folosind un alimentator extern.
Alimentarea externă este necesară în situația în care consumatorii conectați la placa
necesită un curent mai mare de câteva sute de miliamperi. În caz contrar, placa se
poate alimenta direct din PC, prin cablul USB .

Figura 2.1 – Placa Arduino UNO [5]

17
Specificații :

 Microcontroler: ATmega328
 Tensiune de lucru: 5V
 Tensiune de intrare (recomandat): 7 -12V
 Tensiune de intrare (limita): 6-20V
 Pini digitali: 14 (6 PWM output)
 Pini analogici: 6
 Curent per pin I/O: 40 mA
 Curent 3.3V: 50 mA
 Memorie Flash: 32 KB (ATmega328) 0.5 KB pentru bootloader
 SRAM: 2 KB (ATmega328)
 EEPROM: 1 KB (ATmega328)
 Clock Speed: 16 MHz

Există 14 pini digitali de intrare / ieșire (I/O sau input/output ).
Aceștia operează la o tensiune de 5 volți și pot fi controlați cu una din funcțiile
pinMode(), digitalWrite() și digitalRead().
 0 (serial) RX – pin serial, utilizat în special pentru recepția (intrare – Rx) datelor
seriale asincrone ( asynchronous serial communication ). Protocolul serial asincron este
o metodă foarte răspândită în electronică pentru a trimite și recepționa date între
dispozitive. Acest protoc ol este implementat în dispozitiv numit UART (Universal
Asynchronous Receiver/Transmitter)
 1 (serial) TX – pin serial, utilizat pentru trimiterea datelor asincrone (ie șire –
Tx). TTL vine de la transistor -transistor logic.
 2 (External Interrupts) întrerupere externă. Acest pin poate fi configurat pentru a
declanșa o întrerupere la o valoare mică, u n front crescător sau descrescător, sau o
schimbare în valoare.
 3 (External Interrupts + PWM) întrerupere externă. Identic cu pinul 2. Suplimentar, toți
pinii marcați cu semnul ~ pot fi folosiți și pentru PWM (pulse with modulation )
 4 (I/O) pin standard intrare/ieș ire
 5 (PWM ) poate furniza control de ieșire pe 8 -bit pe ntru controlul PWM.

18
 6 (PWM )
 7 (I/O) pin standard intrare/ieșire
 8 (I/O) pin standard intrare/ieșire
 9 (PWM )
 10 ( PWM + SPI) – suportă comunicare prin interfața serială ( Serial Peripheral
Interface ). SPI -ul are patru semnale logice sp ecifice iar acest pin se foloseș te
pentru SS – Slave Select (acti ve low; output din master). Pinii SPI pot fi controlați
folosind librăria SPI.
 11 (PWM + SPI) – suportă SPI, iar acest pin se folosește pentru MOSI /SIMO –
Master Output, Slave Input (output din master) .
 12 (SPI) – suportă SPI, iar acest pin se folosește pe ntru MISO /SOMI – Master Input,
Slave Output (output din slave) .
 13 (LED + SPI) – suportă SPI, iar acest pin se folosește pentru SCK /SCLK – Ceas
serial (output din master). De asemenea, pe placă este încorporat un LED care este
conectat la acest pin. Când p inul este setat pe valoarea HIGH este pornit, când are
valoarea LOW este oprit.
 14 (GND ) – împământare. Aici se pune negativul.
 15 (AREF ) – Analog REFference pin – este utilizat pentru tensiunea de referință
pentru intrările analogice. Se poate controla fo losind funcția analogReference() .
 16 (SDA ) – comunicare I2S .
 17 (SCL ) – comunicare I2S .

În partea de jos e xistă o serie de 6 pini pentru semnal analogic, numerotați de la A0 la A5.
Fiecare din ei poate furniza o rezoluție de 10 biți (adică maxim 1024 de valori diferite). În
mod implicit se măsoară de la 0 la 5 volți, deși este posibil să se schimbe limita superioară a
intervalului lor folosind pinul 15 AREF și funcția analogReference() . De asemenea, și aici
anumiți pini au funcții suplimentare descrise mai jos:
 A0 standard analog pin
 A1 standard analog pin
 A2 standard analog pin
 A3 standard analog pin

19
 A4 ( SDA) suportă comunicarea prin 2 fire ( I2C (I-two-C) sau TWI (Two wire
interface)). Acest pin este folosit pentru SDA (Serial Data) la TWI.
 A5 (SCL ) identic cu pinul 4, doar că acest pin este folosit pentru SCL (Serial Clock) la
TWI. Pentru controlul TWI se poate folosi librăria Wire .
Lângă pinii analogici arătați mai există o secțiune de pini notată POWER .
Aceș tia sunt ( începând de lângă pinul analog A0) :
 Vin – intrarea pentru tensiune din sursă externă (input Voltage) .
 GND – negativul pentru tensiune din sursă externă (ground Voltage) .
 GND – negativ. Se folosește pentru piesele și componentele montate la arduino ca și
masă/ împământare /negativ.
 5V – ieșire pentru piesele și componentele montate la arduino. Scoate fix 5V dacă
placa este alimentată cu tensiune corectă (între 7 și 12 v) .
 3,3V – ieșire pentru piesele și senzorii care se alimentează la această tensiune.
Tensiunea de ieșire este 3.3 volți și maxim 50 mA.
 RESET – se poate seta acest pin pe LOW pentru a reseta control erul de la Arduino.
Este de obicei folosit de shield -urile care au un buton de reset și care anulează de
obicei butonul de reset de pe placa Arduino.
 5VREF – este folosit de unele shield -uri ca referință pentru a se comuta automat la
tensiunea furnizată de placa arduino (5 volți sau 3.3 volți) (Input/Output Refference
Voltage) .
 pin neconectat, este rezervat pentru utilizări ulterioare (la reviziile următoare ale plăcii
probabil).

Figura 2.2 – Logo Arduino [6]

20
2.2 Scurtă descriere a limbajului C++
C++ este limbajul de programare C cu extensii orientate pe obiecte și alte adăugări si
îmbunătățiri . Limbajele de pr ogramare C si C++ sunt mai vechi decât majoritatea
programatorilor care le folosesc . C a fost creat la începutul anilor 1970 , iar C++ în 1980 . De
atunci , C++ a evoluat de la un mic instrument creat pentru uzul personal la un limbaj orientat
pe obiecte folosit în întreaga lume de generații întregi de programatori . Există compilatoare
pentru orice ca lculator si sistem de operare. În momentul de fa ță, C++ se bucură de distincția
de a fi limbajul cu cele mai vechi aplicații microcomputer scrise .
Scurt istoric
La începutul anilor 1970 , Dennis Ritchie , un programator de la AT&T Bell
Laboratories , a adaptat mini limbajul de programare numit BCPL în prim a versiune a ceea ce
el numește C , un limbaj care permite unui program să acceseze hardware -ul, similar limbajului
de asamblare , dar cu construcția unui limbaj mai avansat .
C a rulat pe sistemul de operare Unix , un proiect intern al AT&T . Până la urma ,
Ritchie a resc ris compilatorul C în același limbaj , iar Ke n Thompson a rescris Unix tot î n C,
un concept nou , un compilator scris î n limbajul pe care îl compilează .

Figura 2.3 – Dennis Ritchie , inventator C [7]

21

Figura 2.4 – Citat ( Bjarne Stroustrup ) [8]

Figura 2.5 – Bjarne Stroustrup , inventator C++ [9]

22

Introducere în C++
Limbajul de programare C++ se împarte în 2 părți principale . Prima este limbajul de
bază, acele elemente pe care compilatorul le procesează în instrucțiuni mașină . A 2-a este
librăria standard C++ , o colecție imensă de funcții ș i clase , scrise în limbaj de bază , care sunt
puternic dependente una de alta . Pentru a înțelege librăriile , trebuie sa înțelegi codul în sine .

 Cuvinte cheie
Acest limbaj își rezervă o serie de cuvinte cheie . Acestea nu trebuie folosite ca
identificatori în cod .

Tabelul 3 . “Cuvintele cheie C++” [10]
asm do inline short typeid
auto double int signed typename
bool dynamic_cast long sizeof union
break else mutable static unsigned
case enum namespace static_cast using
catch explicit new struct virtual
char extern operator switch void
class false private template volatile
const float protected this wchar_t
const_cast for public throw while

23

#include <iostream>
#include <cstring>

using namespace std;

int main () {

char str1[10] = "Hello";
char str2[10] = "World";
char str3[10];
int len ;

// copiază str1 în str3
strcpy( str3, str1);
cout << "strcpy( str3, str1) : " << str3 << endl;

// concatenează str1 și str2
strcat( str1, str2);
cout << "strcat( str1, str2): " << str1 << endl;

// lungimea totală a str1 după concatenare
len = strlen(str1);
cout << "strlen(str1) : " << len << endl;

return 0;
}
Figura 2.6 – Exemplu cod C++ [11]

24

Atunci când codul de mai sus este compilat și executat , produce rezultatul de mai jos

strcpy( str3, str1) : Hello
strcat( str1, str2): HelloWorld
strlen(str1) : 10

Figura 2.7 – Rezultatul exemplului din figura 2.6

Figur a 2.8 – Fluxul informațional ce stă la baza limbajului [12]

25
3. PROIECTAREA APLICAȚIEI

3.1 Asamblarea robotului mobil cu kit Arduino

Figura 3.1.1 – Piese kit Arduino

26
A. Am folosit ca suport pentru piese un șasiu printat 3D

Figura 3.1.2 – Șasiu
B. Robotul mobil cu kit Arduino este acționat de un driver de motoare L298 care controlează
toate cele 4 motoare .

Figura 3.1.3 – Motoarele robotului

27
C. Pe axul de transmitere al mișcării de rotație se montează două roți din material plastic cu
membrane

Figura 3.1.4 – Ax de transmitere putere la roți [13]

D. Conectăm driver -ul de motoare cu placa Arduino

Figura 3.1.5 – Driver L298 + Arduino [14]

28
E. Conectăm sursa de alimentare si motoarele de placă

Figura 3.1.6 [15]

Figura 3.1.7 [16]

29
F. Ansamblul robotului cu kit Arduino și baterii

Figura 3.1.8 – Robotul mobil cu kit Arduino

3.2 Driverul pentru motoare L298N

Driver -ul de motoare L298N este utilizat pentru controlul motoarelor de curent
continuu folosind Arduino.
Arduino este capabil să scoată pe porturile lui o putere foarte mică, total insuficientă
pentru a învârti un motor. Dacă vom conecta un motor electric direct la un port Arduino, cel
mai probabil vom obține arderea procesorului din placa Arduino.
Ca să nu se întâm ple acest lucru, avem nevoie de un amplificator de putere, care să ia
putere din sursă de alimentare (baterie, de exemplu), și să o transmită motoarelor așa cum îi
comanda Arduino. Acest amplificator poartă numele generic de "driver de motoare".

30
Există o m ultitudine de drivere de motoare, diferența majoră între ele fiind putere a pe
care o pot conduce (cât de puternice pot fi motoarele pe care le pot controla). Driver -ul din
această secțiune este bazat pe cipul L298, fiind un driver de nivel mediu din punct de vedere al
puterii conduse. Acesta poate controla motoare care necesită un curent de alimentare de cel
mult 2 amperi .

Specificații :
Tensiune de intrare: 3.2V – 40V DC (curent continuu)
Driver: L298N Dual H Bridge DC Motor Driver
Tensiunea de alimentare: 5V – 35V DC (curent continuu)
Curentul maxim: 2A
Curentul de funcționare: 0 – 36mA
Intervalul tensiunii de intrare pentru semnalele de control:
 Low level: -0.3 ≤ Vin ≤ 1.5V
 High level: 2.3V ≤ Vin ≤ Vss
Intervalul tensiunii de intrare pentru semnalul de activare (Enable Signal):
 Low level: -0. 3≤Vin ≤ 1.5V (control signal)
 High level: 2.3V ≤ Vin ≤ Vss (effective control signal)
Puterea maximă consumată: 20W
Temperatura de depozitare: -25 ℃ – +130 ℃.
Dimensiunile plăcii: 53mm x 43mm
Masa: 35g

31

Figura 3.2.1 – Diagrama schematică a driverului L298N [17]

Descrierea pinilor [33]:
 Out 1: Ieșirea de alimentare + a motorului A
 Out 2: Ieșirea de alimentare – a motorului A
 Out 3: Ieșirea de alimentare + a motorului B
 Out 4: Ieșirea de alimentare – a motorului B
 12V: 12V de intrare de la sursa de curent continuu (jumper 12V)
 GND: Ground
 5V: Intrare 5V (inutilă în cazul în care sursa de alimentare este 7V -35V, în cazul în care
sursa de alimentare este 7V -35V, atunci se poate acționa ca o ieșire 5V)
 EnA: Permite semnalul PWM pentru motorul A
 In 1: Activarea motorului A
 In2: Activarea motorului A

32
 In3: Activarea motorului B
 In4: Activarea motorului B
 EnB: Activează semnalul PWM pentru motorul B

Figura 3.2.2 – Diagrama pinilor driverului L298N [18]

33
3.3 Realizarea controlului motoarelor de curent continuu

Motoarele sunt controlate prin intermediul unui Dual FULL -BRIDGE DRIVER L298 .
De obicei, este nevoie în aplicațiile practice să comandăm un motor în ambele sensuri. Acest
lucru se poate realiza f olosind o punte H pe post de amplificator (driver).
Puntea H este în principiu un circuit cu patru întreruptoare, ce acționează câte două
odată pe diagonală, pentru a schimba sensul de rotație al motorului.

Figura 3.3.1 – Schema punții H simplificată [19]

Schema unei punți H folosind dispozitive discrete este prezentată in figura 3.3.1 .
Astfel, tranzistoarele utilizate sunt de tip PNP și la fiecare sens de rotație sunt în conducție
două din ele. Diodele au rol de protecție sau de blocare a celorlalte două tranzistoare. Montajul
este alimentat la 12V și comandă pe baza tranzistoarelor tip NPN este de 5V și vine de la
microcontroler.

34

Figura 3.3.2 – Schema de principiu a punții H [20]

Un astfel de circuit integrat numit amplificator sau driver pentru comanda motorului de
curent continuu este și L298P. Cu acest circuit integrat putem comanda două motoare de
curent continuu odată. Este alimentat la 6V și poate schimba și sensul de rotație a celor două
motoare.

Figura 3.3.3 – Schema circuitului L298P [21]

35
Astfel, dacă la pinul 4 vom avea o tensiune de 5V și la pinul 5 vom trimite o tensiune
de 0V, atunci motorul A din stânga circuitului integrat se va roti într -un sens. Dacă schimbăm
tensiunile prezente la intrările de comandă, adică la pinul 4 să trimitem o tensiune de 0V și la
pinul 5 o tensiune de 5V, atunci motorul A se va roti în sensul opus. Asemănător, funcționarea
motorului B este comandată în același mod, doar că aceste comenzi se dau pe pinii 6 și 7 ai
circuitu lui integrat.

3.4 Conector Bluetooth Mate Silver

Figura 3.4.1 – Schema Bluetooth Mate Silver [22]

36

Figura 3.4.2 – Modul Bluetooth conectat la driver -ul de motoare

Acest modul Bluetooth ii permite utilizatorului sa controleze motoarele cu ajutorul
unei aplicații instalate pe telefon . Cu ajutorul aplicației , se face o conexiune Bluetooth și apoi
se poate controla dispozitivul .

37
3.5 Modul Wi -Fi ESP8266

Figura 3.5.1 – Modul ESP8266 [23]
Modulul WiFi ESP8266 este un SOC (system -on-a-chip) cu protocol TCP / IP integrat care î i
poate da acces la rețeaua WiFi orică rui microcontroler. ESP8266 este cap abil de hosting
pentru o aplicație sau să preia toate funcțiile de reț ea WiFi de la un alt procesor de aplicaț ie.
Fiecare modul vine pre-programat , cu firmware cu comenzi AT.
Acest modul are o capacitate de procesare și stocare suficient de puternică, care ii permite să
fie integrat cu senzori ș i dispozitive specifice prin intermedi ul pinilor GPIO. ESP8266 suportă
APSD pentru aplicații VoIP (Voice over Internet Protocol ) si interfețe cu Bluetooth si conț ine
un RF auto-calibrat care ii permite să lucr eze în toate condițiile de funcț ionare și nu necesită
piese RF externe.

38

Figura 3.5.2 – Pinii modulului ESP8266 [24]

Figura 3.5.3 – Conexiune intre modul ESP8266 si Arduino [25]

 Pinul RX al modulului ESP8266 se conectează la pinul TX al plăcii Arduino.
 Pinul TX al modulului ESP8266 se conectează la pinul RX al plăcii Arduino.

39
3.6 Modul Text -To-Speech Emic 2

Figur a 3.6.1 – Modul Emic 2 [26]

Figura 3.6.2 – Schema modulului Emic 2 [27]

40
Modulul Emic 2 Text -to-Speech este un sintetizator pentru mai multe limbi care
convertește un text în voce . Interfaț a simplă îl face ușor de integrat în orice sistem .

Repere modul :

– O sinteză de înaltă calitate pentru limbile engleză si spaniolă
– 9 voci pre -definite de bărbat , femeie ș i copil
– Un control dinamic al caracteristicilor vocii , al frecvenței cuvintelor și al intensității cuvintelor
– Un amplificator de putere si un jack audio de 3,5 mm

Figura 3.6.3 – Conexiunea firelor intre Emic 2 TTS si Arduino [28]

41

4. MANUAL DE UTILIZARE
Manualul de utilizar e al acestui robot este format din două parți , deoarece
funcționalitățile mari sunt tot două la număr .
– Partea de controlare a robotului prin Bluetooth cu ajutorul aplicație JoyS tick
BT Commander
– Partea de comunicare cu robotul

4.1 Controlul robotului prin Bluetooth
Pentru a putea controla robotul trebuie urmați următorii pași :
a. Pornim robotul prin conectarea cablului de la laptop la Arduino ( vezi figura 4.1.1 ) sau
conectat direct la baterii ( funcționează datorită jumperului amplasat pe driverul de
motoare ) .

42
Figura 4.1.1 – Arduino + cablu conectare PC [29]

b. Pornim aplicația JoyStick BT Commander

Figura 4.1.2 – JoyStick BT Commander [30]

c. Ne conec tăm la bluetooth

Figura 4.1.3 – Bluetooth -urile disponibile în aplicație [31]

43

Figura 4.1.4 – Interfața aplicației după conectarea la un bluetooth disponibil [32]

d. Folosim joystick -ul pentru a controla robotul

Figura 4.1.5 – Aplicația JoyStick BT commander cu săgeți explicative [33]

44
1. Daca tragem cercul galben in direcția săgeții 1, robotul va merge in față .
2. Daca tragem cercul galben in direcția săgeții 2, robotul va merge cu spatele .
3. Daca tragem cercul galben in direcția săgeții 3, robotul va merge cu spatele puțin spre
dreapta .
4. Daca tragem cercul galben in direcția săgeții 4, robotul va merge cu fața puțin spre dreapta .

4.2 Comunicarea cu robotul
Pentru a putea purta un “dialog” cu robotul, trebuie urmați următorii pași :
a) Ne conectăm la wifi -ul creat de modulul ESP8266 ( vezi figura 4.2.1 ) și apoi
aflăm ip-ul asociat modulului ( figura 4.2.2 )

Figura 4.2.1 – Conectarea la wifi [34]

45

Figura 4.2.2 – Aflarea ip -ul asociat modulului ESP [35]

b) Accesăm ip -ul asociat serveru lui local ( pc -ul de unde se ac cesează pagina
trebuie sa fie conectat la rețeaua modulului )

Figura 4.2.3 – Pagina web [36]

46
c) Scriem textul care vrem să îi fie trimis plăcii Arduino și apoi apăsăm butonul „Submit”

Figura 4.2.4 – Textul scris înainte de a fi trimis la Arduino [37]

d) Textul a fost trimis la Arduino si procesat cu ajutorul unui arbore de decizie , cu
ajutor ul căruia , robotul dă un răspuns ( cu ajutorul modulului Emic 2 ).

Figura 4.2.5 – Modulul Emic 2 conectat la Arduino [38]

47

Figura 4.2.6 – Exemplu de arbore de decizie [39]

48

5. POSIBILITĂȚI DE DEZVOLTARE ALE APLICAȚIEI

În viitorul apropiat , mi-am propus să adaug anumite extensii și să fac o îmbunătățire treptată a
robotului cu kit Arduino :
I. Comunicarea cu robotul se realizează prin voce , nu cu ajutorul unei pagini web . Pentru
asta există posibilitatea ca textul vorbit sa fie înregistrat într -un fiș ier si apoi trimis la
Arduino . Pentru a ușura acest proces si pentru a nu fi nevoie ca un buton să fie apăsat de
fiecare data când trebuie înregistrat un mesaj , se recurg e la varianta implementării unui
detector de sunet, așa că înregistrarea se va porni a utomat în momentul in c are se
detectează un sunet , oprindu -se apoi automat la 3 secunde după ce se face liniște ) . Cu
toate acestea , un dezavantaj al acestei idei este reprezentat de memori a plăcii Arduino,
care nu este destul de mare pentru a stoca un fișier text .

II. Pe lângă controlul robotului cu ajutorul aplicației , codul va fi restructurat astfel încât
mașinuța să poată fi controlat ă cu ajutorul vocii ( exemplu : dacă îi spun robotului să
meargă in față , el va merge în aceea direcție până îi spun stop ).

III. Instalarea unor senzori de obstacole care să suprascrie comenzile vocale sau cele date din
aplicație . Să zicem că în față se află un obstacol , dar noi îi spunem robotului sa meargă
înainte . De preferat ar fi ca acesta sa detecteze acel obstacol cu câ țiva centimetri înainte și
să se oprească automat . Acest senzor de obstacole funcționează exact ca sonarul liliecilor .
Se trimite un semnal în față și în funcție de timpul scurs până la reîntoarcerea acestuia, se
calculează distanța la care se află zidul .

Figura 5.1 – Schema sonar + Arduino [40]

49

Figura 5.2 – Sonar atașat unui robot cu kit Arduino [41]

IV. O ultimă schimbarea care va fi adusă robotului , va fi și cea mai importantă . Ea constă într –
o transformare completă a înfățișării acestuia , și anume : schimbarea celor 4 roți cu 2
picioare și atașarea a 2 mâini ( figura 5.3 ) .

Figura 5.3 – Robot biped [42]

50
Bibliografie

[1] *** https://www.scribd.com /document/49636530/Roboti -mobili
[2] *** https://www.scribd.com/document/130109475/Cap2 -Generalitati -Privind -Robotii
[3] *** https://www.allonrobots.com/types -of-robots.html
[4] https://www.robotshop.com/blog/en/how -do-i-control -my-robot -6889
[5] https://en.wikibooks.org/wiki/Robotics/Computer_Control/The_Interface/Remote_Control
[6] http://motorica.org/vidy -protezov -ruk/
[7] Arduino by e xample , Adith Jagadish Boloor , 2015
[8] Arduino Essentials , Francis Perea , 2015
[9] C Programming for Arduino , Julien Bayle , 2013
[10] Teach yourself C++ , Al Stevens , 1990
[11] Introduction to C++ Progamming , Prof. Sham Tickoo , 2016
[12] Learn C++ , Durgesh , 2017
[13] http://roboromania.ro/produs/placa -de-dezvoltare -uno-r3-placa -de-dezvoltare –
compatibila -arduino/
[14] https://www.tutorialspoint.com/cplusplus/index.htm
[15] https://www.programiz.com/cpp -programming
[16] Intelligent robots and Systems , Elsevier Science , 1995
[17] https://ardushop.ro/ro/electronice/84 -l298n -punte -h-dubla -dual-h-bridge -motor –
dcsteppe.html?gclid=CjwKCAjwgr3ZBRAAEiwAGVssna –
VLMXzXk0WNw_YUhQnK5SYxs0bRARKtY3uyrNtpJrCz2fHYGLsLRoCe68QAvD_BwE
[18] https://howtomechatronics.com/tutorials/arduino/arduino -dc-motor -control -tutorial –
l298n -pwm -h-bridge/
[19] https://www.robofun.ro/shield -motoare -l298-v2?search=drive r%20motoare

51
[20] http://roboromania.ro/produs/l298n/
[21] http://www.roroid.ro/softstart -pentru -un-motor -de-curent -continuu/
[22] https://learn.adafruit.com/adafruit -arduino -lesson -13-dc-motors?view=all
[23] https://www.allaboutcircuits.com/projects/control -a-motor -with-an-arduino/
[24] https://www.sparkfun.com/products/12576
[25] h ttp://www.hobbytronics.co.uk/bluetooth -mate -silver
[26] https://www.robofun.ro/bluetooth_arduino?search=bluetooth%20mate%20silver
[27] https://www.optimusdigital.ro/ro/placi -cu-wifi/744 -placa -de-dezvolta re-wifi-cu-esp8266 –
wemos -d1-
uno.html?gclid=CjwKCAjwgr3ZBRAAEiwAGVssnTla83i9xxRczyOG2IyQR0hoU –
CkDT892L5jppl1umLt2oWPMF7eURoCr9EQAvD_BwE
[28] https://www.electroschematics.com/11276/e sp8266 -datasheet/
[29] http://embedded -lab.com/blog/wifi -enabled -scrolling -led-matrix -display/
[30] https://randomnerdtutorials.com/esp8266 -web-server -with-arduino -ide/
[31] https://static.sparkfun.com/datasheets/Components/General/30016 -Emic2TextToSpeech –
v1.1.pdf
[32] https://www.robofun.ro/text_to_speech_emic_2?search=emic%202
[33] https://www.robotshop.com/en/parallax -emic -2-text-speech –
module.html?gclid=CjwKCAj wgr3ZBRAAEiwAGVssnTY8n -f8deKmu0S5zEspr –
P0RrMzb_KCO2P6sLw78AABLE2ahO_mXRoCfbkQAvD_BwE
[34] http://learn.trossenrobotics.com/projects/171 -bt-commander.html
[35] http://learn.robotgeek.com/projects/272 -bt-commander -getting -started -guide.html
[36] https://arduino -esp8266.readthedocs.io/en/latest/esp8266wifi/readme.html
[37] http://www.instructables.com/id/Arduino -Voice -Controlled -Robot -Bluetooth -and-Smart/
[38] http://www.instructables.com/id/How -to-make -a-voice -control -direction -control -remo/

52
[39] https://www.canva.com/design/DAC7oUiFuXQ/qAIHEAe –
Ik3Xh0NCjVhHaw/edit?layoutQuery=decision%20tree&utm_source=onboarding
[40] http://cs.curs.pub.ro/wiki/pm/prj2011/dtudose/obstacole
[41] https://sp ectrum.ieee.org/automaton/robotics/humanoids/designing -a-more -humanlike –
lower -leg-for-biped -robots
[42] http://www.instructables.com/id/Arduino -Biped/
[43] https://circuitdigest.com/microcontro ller-projects/arduino -bluetooth -biped -bob-robot
[44] http://www.instructables.com/id/Simple -Webserver -Using -Arduino -UNOMega -and-
ESP8266/

53

Referințe imagini
[1]
https://www.google.ro/search?q=definirea+familiilor+de+roboti&sour ce=lnms&tbm=isch&sa
=X&ved=0ahUKEwj5vKnqyezbAhUhJJoKHc0PBpoQ_AUICigB&biw=767&bih=714#imgrc
=P2ngz4brHtlGlM :
[2]
https://www.google.ro/search?q=robotul+de+pe+marte&tbm=isch&source=iu&ictx=1&fir=9J
IirRUBp –
Vl2M%253A%252CSquqjvRpGKAN7M%252C_&usg=__uYHmcJBm2FdiC5 eCZKth3V80
G6w%3D&sa=X&ved=0ahUKEwio99LNyuzbAhWFCpoKHTW6BV0Q9QEIODAB#imgrc=
9JIirRUBp -Vl2M:
[3]
https://www.google.ro/search?q=sumo+bot&source=lnms&tbm=isch&sa=X&ved=0ahUKEwj
5wqSQy -zbAhVqD5oKHVtpDB0Q_AUICigB&biw=767&bih=714#imgrc= –
cWWeRIPgaH9EM:
[4]
https:// www.google.ro/search?biw=767&bih=714&tbm=isch&sa=1&ei=6LQvW5_pMqPE6Q
TwubuQBw&q=robot+chirurgical&oq=robot+chirurgical&gs_l=img.3..0l2j0i30k1l8.344716.
349300.0.349449.17.12.0.3.3.0.347.1237.0j3j2j1.6.0….0…1c.1.64.img..8.9.1245…35i39k1j0i6
7k1j0i8i30k1. 0.Lt_8EwupS4A#imgrc=tdjCHeCritgctM:
[5]
https://www.google.ro/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&v
ed=2ahUKEwjalKaazuzbAhVHIlAKHUf1AfgQjRx6BAgBEAU&url=http%3A%2F%2Fww
w.robotplatform.com%2Fknowledge%2FClassification_of_Robots%2FClassif ication_of_Rob
ots.html&psig=AOvVaw3WmzMoOi0CgBTG -hnaO_LX&ust=1529940327383329
[5]
https://www.google.ro/search?q=arduino+uno&source=lnms&tbm=isch&sa=X&ved=0ahUK
Ewjgt4Cyz –
zbAhVkKpoKHSScCB0Q_AUICigB&biw=767&bih=714#imgrc=jb3ELPnAc8jCmM:
[6]
https://www.googl e.ro/search?q=logo+arduino&tbm=isch&source=iu&ictx=1&fir=iPQRcCY
9Ju-
YVM%253A%252CjEaLNM9nuHlxbM%252C_&usg=__Fu0US1iSNcA_g_IDSOpOvH5_hJ

54
g%3D&sa=X&ved=0ahUKEwiExYu -z-
zbAhXMA5oKHbHFDewQ9QEILDAB#imgrc=iPQRcCY9Ju -YVM:
[7]
https://www.google.ro/search?q=dennis+ri tchie&source=lnms&tbm=isch&sa=X&ved=0ahU
KEwjT577Hz -zbAhUDb5oKHW -FAAsQ_AUICigB&biw=767&bih=714#imgrc=SEs9KV –
4a0RAnM:
[8] https://www.google.ro/search?biw=767&bih=714&tbm=isch&sa=1&ei=jrkvW9uOB –
zU6ASLn6uoBA&q=bjarne+stroustrup&oq=bjarne&gs_l=img.3.0.35i39k1j 0l9.18398.19050.
0.20344.6.6.0.0.0.0.133.367.0j3.3.0….0…1c.1.64.img..3.3.366…0i67k1.0. –
4RloMgKrs4#imgrc=tcZ2IZDeEJdCrM:
[9] https://www.google.ro/search?biw=767&bih=714&tbm=isch&sa=1&ei=jrkvW9uOB –
zU6ASLn6uoBA&q=bjarne+stroustrup&oq=bjarne&gs_l=img.3.0 .35i39k1j0l9.18398.19050.
0.20344.6.6.0.0.0.0.133.367.0j3.3.0….0…1c.1.64.img..3.3.366…0i67k1.0. –
4RloMgKrs4#imgrc=E5ZSzzWXwGa1qM:
[10] Teach yourself C++ , Al Stevens
[11] http://www.cplusplus.com/
[12]
https://www.google.ro/url?sa=i&rct=j&q=&esrc=s&sou rce=images&cd=&cad=rja&uact=8&v
ed=2ahUKEwjxqcni0uzbAhVNJFAKHfGcChYQjRx6BAgBEAU&url=http%3A%2F%2Fww
w.rasfoiesc.com%2Feducatie%2Finformatica%2FProiectarea -Software -Modele –
al67.php&psig=AOvVaw07KQnewmZdn2hW9nowu1Ji&ust=1529941604228424
[13] https://ardushop.r o/ro/
[14]
https://www.google.ro/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&v
ed=2ahUKEwidoODB0 –
zbAhXRYVAKHYPVB_oQjRx6BAgBEAU&url=https%3A%2F%2Fwww.pololu.com%2Fp
roduct%2F2503&psig=AOvVaw3twVEJtnD6n6f_w9KX5nYA&ust=1529941798863051
[15] https: //www.robofun.ro/
[16] https://www.robofun.ro/
[17] https://ardushop.ro/ro/electronice/84 -l298n -punte -h-dubla -dual-h-bridge -motor –
dcsteppe.html?gclid=CjwKCAjwgr3ZBRAAEiwAGVssna –
VLMXzXk0WNw_YUhQnK5SYxs0bRARKtY3uyrNtpJrCz2fHYGLsLRoCe68QAvD_BwE
[18]
https://w ww.google.ro/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&v

55
ed=2ahUKEwj4i –
fL1OzbAhWCLVAKHb6uDfwQjRx6BAgBEAU&url=https%3A%2F%2Fwiki.eprolabs.com
%2Findex.php%3Ftitle%3DL298_H_Bridge_Drive&psig=AOvVaw0bisGC4AHWImnTWiK
GZOGc&ust=1529942083040420
[19]
https://www.google.ro/search?biw=767&bih=714&tbm=isch&sa=1&ei=674vW9bJDqKP6AS
Wy6KQCQ&q=schema+punte+h+simplificata&oq=schema+punte+h+simplificata&gs_l=img
.3…44992.46816.0.46904.13.12.0.0.0.0.172.979.0j8.8.0….0…1c.1.64.img..5.0.0….0.ndLZQHj_
jrE#im grc=C5FF0is3nFr4LM:
[20] http://www.m.radiokot.ru/forum/viewtopic.php?f=22&t=110455
[21] http://microhobby.net/wp -content/uploads/2011/05/L298.bmp
[22] https://www.sparkfun.com/datasheets/Wireless/Bluetooth/ArduinoBluetoothMatev13.pdf
[23]
https://www.google.ro/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&v
ed=2ahUKEwi3xNH81uzbAhUDL1AKHWFXBvAQjRx6BAgBEAU&url=https%3A%2F%2
Fwww.reddoko.com%2Fproduct%2Fesp -8266 -wi-fi-module%2Fs%2FS4D –
227&psig=AOvVaw3a8iAxlJBqZwnZxb3bcE9u&ust=1529942 726239249
[24] https://randomnerdtutorials.com/esp8266 -web-server/
[25] https://randomnerdtutorials.com/esp8266 -web-server -with-arduino -ide/
[26]
https://www.google.ro/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&v
ed=2ahUKEwierLSn1 –
zbAhXGmLQKH ZcHCfgQjRx6BAgBEAU&url=https%3A%2F%2Fwww.parallax.com%2Fp
roduct%2F30016&psig=AOvVaw3Q41wPKeF4I00R7fODNffN&ust=1529942824991748
[27]
http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Components/General/Open_Emic2_Schematic
_A.pdf
[28]
https://www.google.ro/url? sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&v
ed=2ahUKEwjF0ZHb1 –
zbAhWLaFAKHQKWBLoQjRx6BAgBEAU&url=https%3A%2F%2Fblog.adafruit.com%2F
2012%2F08%2F16%2Fhow -to-using -an-arduino -and-the-emic -2-tts-module -to-read-
tweets%2F&psig=AOvVaw056CgP -ucd2YmzlfwUl Baw&ust=1529942934572481
[29]
https://www.google.ro/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&v

56
ed=2ahUKEwjw17vx1 –
zbAhXQEVAKHY5aC7gQjRx6BAgBEAU&url=https%3A%2F%2Fwww.olx.ro%2Felectron
ice-si-electrocasnice%2Falte -dispozitive%2Fcluj -judet%2Fq -arduino –
uno%2F&psig=AOvVaw3HMNd8v167oiO0uF -TGvRq&ust=1529942959571718
[30]
https://www.google.ro/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&v
ed=2ahUKEwit4fmA2OzbAhUKaFAKHUtEB_oQjRx6BAgBEAU&url=https%3A%2F%2Ff
orum.arduino.cc%2Findex.php%3Ftop ic%3D173246.150&psig=AOvVaw2HrTYR24AClUov
ki46Wd4H&ust=1529943011344953
[31]
https://www.google.ro/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&v
ed=2ahUKEwiIz –
CT2OzbAhXCZFAKHUZmBH8QjRx6BAgBEAU&url=http%3A%2F%2Flearn.robotgeek.co
m%2Fprojects%2F2 72-bt-commander -getting -started –
guide.html&psig=AOvVaw3hjc1JaCZLrhR89qO9EFzf&ust=1529943050432044
[32]
https://www.google.ro/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&v
ed=2ahUKEwjAjsOk2OzbAhWFfFAKHf2bAroQjRx6BAgBEAU&url=http%3A%2F%2Ffor
um.a rduino.cc%2Findex.php%3Ftopic%3D173246.0&psig=AOvVaw1gYDFzR5RKctwXvF
XT-1Nj&ust=1529943083277571
[33]
https://www.google.ro/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&v
ed=2ahUKEwiKw4SE2ezbAhXMJ1AKHdG0B_MQjRx6BAgBEAU&url=https%3A%2F%2
Fforum.ar duino.cc%2Findex.php%3Ftopic%3D173246.150&psig=AOvVaw2dFN955 –
vm6h5egorVn034&ust=1529943288525264
[34] https://randomnerdtutorials.com/esp8266 -web-server -with-arduino -ide/
[35] https://randomnerdtutorials.com/esp8266 -web-server -with-arduino -ide/
[36] http:/ /embedded -lab.com/blog/wifi -enabled -scrolling -led-matrix -display/
[37] http://embedded -lab.com/blog/wifi -enabled -scrolling -led-matrix -display/
[38]
https://www.google.ro/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&v
ed=2ahUKEwjK0bvT2uzbAhXFZ1A KHZIGDfQQjRx6BAgBEAU&url=https%3A%2F%2Ff
orums.parallax.com%2Fdiscussion%2F146763%2Femic -2-arduino -mega -2560 -problems –
getting -started -no-sound&psig=AOvVaw23HLTNpI0jD –
WAFkLDYNVY&ust=1529943721725404
[39] https://www.canva.com/graphs/decision -trees/

57
[40]
https://www.google.ro/imgres?imgurl=https%3A%2F%2Fhalckemy.s3.amazonaws.com%2Fu
ploads%2Fattachments%2F199595%2Fobstacle%2520robot.jpg&imgrefurl=https%3A%2F%
2Fcreate.arduino.cc%2Fprojecthub%2Falbertoz%2Fobstacle -avoiding -robot –
fb30e4&docid=2EsJUBp6Ve6fjM&tbnid= -ZFRgmI –
xxcMOM%3A&vet=10ahUKEwj4j92U2 –
zbAhUnEJoKHV8KA2YQMwh1KDEwMQ..i&w=1600&h=834&bih=664&biw=767&q=ard
uino%20and%20obstacle%20senzor&ved=0ahUKEwj4j92U2 –
zbAhUnEJoKHV8KA2YQMwh1KDEwMQ&iact=mrc&uact=8
[41] http://www.instructables.com/
[42]
https://www.googl e.ro/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&v
ed=2ahUKEwiBj6_G3OzbAhVRblAKHdRPBfwQjRx6BAgBEAU&url=https%3A%2F%2F
www.robotshop.com%2Fletsmakerobots%2Ftags%2Fhumanoid&psig=AOvVaw1oYnCDyQg
XZS870KLVKx5M&ust=1529944230070613

Similar Posts