Robot mobil care evită obstacole Cimpoaca Elena -Denisa COORDONATOR ȘTIINȚIFIC S.l.dr.ing. Resceanu Ionut Iulie 2018 CRAIOVA iii „Învățătura este o… [611720]

1

UNIVERSITATEA DIN CRAIOVA
FACULTATEA DE AUTOMATICĂ, CALCULATOARE ȘI
ELECTRONICĂ

DEPARTAMENTUL DE AUTOMATICĂ ȘI ELECTRONICĂ

PROIECT DE DIPLOMĂ
CIMPOACĂ ELENA -DENISA

COORDONATOR ȘTIINȚIFIC
S.L.dr.ing. Resceanu Ionut

Iulie 2018
CRAIOVA

ii

UNIVERSITATEA DIN CRAIOVA
FACULTATEA DE AUTOMATICĂ, CALCULATOARE ȘI
ELECTRONICĂ

DEPARTAMENTUL AUTOMATICĂ ȘI ELECTRONICĂ

Robot mobil care evită obstacole
Cimpoaca Elena -Denisa

COORDONATOR ȘTIINȚIFIC
S.l.dr.ing. Resceanu Ionut

Iulie 2018
CRAIOVA

iii
„Învățătura este o comoară care își urmează stăpânul pretutindeni .”
Proverb popular

iv
DECLARAȚIE DE ORIGINALITATE

Subsemnata Cimpoaca Elena -Denisa , student a la specializarea Ingineria Sistemelor Multimedia din
cadrul Facult ății de Automatică, Calculatoare și Electronică a Universit ății din Craiova, certific prin
prezenta că am luat la cunoșt ință de cele prezentate mai jos și că î mi asum, în acest context,
originalita tea proiectului meu de licență :
 cu titlul Robot mobil autonom care evită obstacole ,
 coordonată de S.l.dr.ing. Resceanu Ionut
 prezentată în sesiunea Iulie 2018 .
La elaborarea proiectului de licență, se consideră plagiat una dintre următoarele acțiuni:
 reproducerea exactă a cuvintelor unui alt autor, dintr -o altă lu crare, în limba română sau prin
traducere dintr -o altă limbă, dacă se omit ghilimele și referința precisă,
 redarea cu alte cuvinte, reformularea prin cuvinte proprii sau rezumarea ideilor din alte
lucrări , dacă nu se indică sursa bibliografică,
 prezentar ea unor date experimentale obținute sau a unor aplicații realizate de alți autori fără
menționarea corectă a acestor surse,
 însușirea totală sau parțială a unei lucrări în care regulile de mai sus sunt respectate, dar care
are alt autor.
Pentru evitarea acest or situații neplăcute se recomandă:
 plasarea într e ghilimele a citatelor directe și indicarea referinței într -o listă corespunzătoare la
sfărșitul lucrării,
 indicarea în text a reformulării unei idei, opinii sau teorii și corespunzător în lista de r eferințe
a sursei originale de la care s -a făcut preluarea,
 precizarea sursei de la care s -au preluat date experimentale, descrieri tehnice, figuri, imagini,
statistici, tabele et caetera ,
 precizarea referințelor poate fi omisă dacă se folosesc informați i sau teorii arhicunoscute, a
căror paternitate este unanim cunoscută și acceptată.
Data , Semnătura candidat: [anonimizat] ,

v

UNIVERSITATEA DIN CRAIOVA
Facultatea de Automatică, Calculatoare și Electronică

Departamentul de Automatica si Calculatoa re
Aprobat la data de
…………………
Șef de departament,
Prof. dr. ing.
Cosmin IONETE

PROIECTUL DE DIPLOMĂ

Numele și prenumele student: [anonimizat]/ -ei:
Cimpoaca Elena -Denisa

Enunțul temei:

Robot mobil autonom care evită obstacole

Datele de pornire:

Realiza rea unui robot mobil autonom capabil să evite
obstacolele

Conținutul proiectului :

Capitolul 1. Scopul și motivația lucrării pe care am ales -o.
Capitolul 2 . Istoria roboticii, clasificarea robotilor, descrierea
roboților mobili, clasificarea roboțilo r mobile.
Capitolul 3. Prezentarea componentelor folosite la realizarea
robotului descris în proiectul de diplomă
Capitolul 4. Prezentarea aplicației, detalierea schemelelor
electrice, funcționarea programului
Capitolul 5. Concluzii

Material grafic oblig atoriu:
Figuri, scheme ale circuitelor electrice si electronice

Consultații:
Săptămânale
Conducătorul științific
(titlul, nume și prenume, semnătura): S.l.dr.ing. Resceanu Ionut

Data eliberării temei :
12.12.2016

Termenul estimat de predare a
proiectului :
05.09.2017

Data predării proiectului de către
student și semnătura acestuia:

vi

UNIVERSITATEA DIN CRAIOVA
Facultatea de Automatică, Calculatoare și Electronică

Departam entul de Automatica si Electronica

REFERATUL CONDUCĂTORULUI ȘTIINȚ IFIC

Numele și prenumele candida tului/-ei: Cimpoaca Elena -Denisa
Specializarea: Ingineria sistemelor multimedia
Titlul proiectului : Robot mobil autonom care evită obstacole
Locația în care s -a realizat practica de
documentare (se bifează una sau mai
multe din opțiunile din dreapta): În facultate □
În producție □
În cercetare □
Altă locație: [se detaliază ]

În urma analizei lucrării candidatului au fost constatate următoarele:
Nivelul documentării Insuficient
□ Satisfăcător
□ Bine
□ Foarte bine

Tipul proiectului Cercetare
□ Proiectare
□ Realizare
practică □ Altul
[se detaliază ]
Aparatul matematic utilizat Simplu
□ Mediu
□ Complex
□ Absent

Utilitate Contract de
cercetare □ Cercetare
internă □ Utilare
□ Altul
[se detaliază ]
Redactarea lucrării Insuficient
□ Satisfăcător
□ Bine
□ Foarte bine

Partea grafică, desene Insuficient ă
□ Satisfăcătoare
□ Bună
□ Foarte bună

Realizarea
practică Contribuția autorului Insuficientă
□ Satisfăcătoare
□ Mare
□ Foarte mare

Complexitatea
temei Simplă
□ Medie
□ Mare
□ Complexă

Analiza cerințelor Insuficient
□ Satisfăcător
□ Bine
□ Foarte bine

Arhitectura Simplă Medie Mare Complexă

vii
□ □ □ □
Întocmirea
specificațiilor
funcționale Insuficientă
□ Satisfă cătoare
□ Bună
□ Foarte bună

Implementarea Insuficientă
□ Satisfăcătoare
□ Bună
□ Foarte bună

Testarea Insuficientă
□ Satisfăcătoare
□ Bună
□ Foarte bună

Funcționarea Da
□ Parțială
□ Nu

Rezultate experimentale Experiment pro priu
□ Preluare din bibliografie

Bibliografie Cărți
Reviste
Articole
Referințe web

Comentarii
și
observații

În concluzie, se propune:

ADMITEREA PROIECTULUI
□ RESPINGEREA PROIECTULUI

Data, Semnătura conducătorului științific,

viii
CUPRINSUL
1 INTRODUCERE ………………………….. ………………………….. ………………………….. ………………………….. ………………………….. .1
1.1 SCOPUL ………………………….. ………………………….. ………………………….. ………………………….. ………………………….. ……1
1.2 MOTIVAȚIA ………………………….. ………………………….. ………………………….. ………………………….. ………………………….. 1
1.3 REZUMATUL ………………………….. ………………………….. ………………………….. ………………………….. …………………………. 1
2 ISTORIC ÎN DOMENIUL ROBOTICII ………………………….. ………………………….. ………………………….. ………………………… 3
2.1 TERMENUL DE ROBOT ȘI „LEGIL E ROBOTICII ” SCRISE DE ISAAC ASIMOV ………………………….. ………………………….. ……… 3
2.2 CE ÎNSEAMNĂ ROBOTICA ………………………….. ………………………….. ………………………….. ………………………….. …………. 3
2.3 CLASIFICAREA ROBOȚILO R………………………….. ………………………….. ………………………….. ………………………….. ………… 5
2.4 ROBOȚII MOBILI ………………………….. ………………………….. ………………………….. ………………………….. ……………………. 7
2.5 DOMENII DE UTILIZARE A ROBOȚILOR MOBILI ………………………….. ………………………….. ………………………….. …………. 12
2.6 CLASIFICARE A ROBOȚIL OR M OBILI ………………………….. ………………………….. ………………………….. ………………………. 14
2.7 AUTONOMIA ȘI MOBILITA TEA ………………………….. ………………………….. ………………………….. ………………………….. … 14
2.8 CONSTRUCȚIA ȘI DIMENS IONAREA ROBOȚILOR MO BILI ………………………….. ………………………….. …………………………. 16
3 DESCRIEREA COMPONENT ELOR ………………………….. ………………………….. ………………………….. …………………………. 18
3.1 DESCRIEREA APLICAȚIEI ARDUINO IDE ………………………….. ………………………….. ………………………….. ………………. 18
3.2 COMPONENTELE ELECTRON ICE ………………………….. ………………………….. ………………………….. ………………………….. . 20
3.3 COMPONENTELE FIZICE ………………………….. ………………………….. ………………………….. ………………………….. ………… 34
4 PREZENTAREA APLICȚIE I ………………………….. ………………………….. ………………………….. ………………………….. ………… 38
4.1 SCHEMA BLOC A ROBOTUL UI MOBIL ………………………….. ………………………….. ………………………….. …………………….. 38
4.2 PROTOCOLUL DE FUNCȚ IO NARE ………………………….. ………………………….. ………………………….. ………………………….. 39
4.3 CONECTAREA COMPONENTE LOR ………………………….. ………………………….. ………………………….. …………………………. 39
4.4 PROGRAMUL DE CONTROL A ROBOTULUI MOBIL ………………………….. ………………………….. ………………………….. ……. 43
5 CONCLUZII ………………………….. ………………………….. ………………………….. ………………………….. ………………………….. ….. 51
6 BIBLIOGRAFIE ………………………….. ………………………….. ………………………….. ………………………….. …………………………. 52
7 CODUL SURS Ă………………………….. ………………………….. ………………………….. ………………………….. …………………………. 54
CD / DVD ………………………….. ………………………….. ………………………….. ………………………….. ………………………….. …………….. 58

1
1 INTRODUCERE
1.1 Scopul
Obiectivul lucrării este de a crea un robot mobil autonom care are capacitatea de a evita
obstacolele. Acest robot este gandit pentru a fi utilizat în aplicații precum: in mediul
industrial ca și transport pentru materiale chimice, metale ; jucării inteligente; sisteme de
deplasare pentru persoanele cu handicap locomotor . Un astfel de robot trebuie sa funcționeze
autonom în mediul înconjurător real, luând în considerare atât spațiile închise, cât și mediul
exterior.
Ei sunt dotați cu : motoare, care le permit deplasarea în spațiu ; senzori , care preiau
informația și o tri mit către microcontroller, unde este proces ată pentru a decide modul ulterior
de deplasare, dacă se va efectua sau nu o mișcare de evitare a obstacolului.

1.2 Motivația
Motivul alegerii acestei teme a fost sa ofer o alternativă de transport in mediul
industrial, care are rolul de a crește siguranța mediului de lu cru și de a ușura munca
lucrătorilor .
Un robot mobil trebuie construit și programat astfel încât să fie capabil să efectueze
mișcă ri rapide, controlate și să fie destul de inteligent pentru a explora și negocia obstacolele
în modul cel mai eficient.
Evitarea obstacolelor reprezinta detecția obstacolelor și oprirea sau schimbarea direcției
de deplasare a roboților mobil i, cu scopul de a evita accidente .

1.3 Rezumatul
În lucrarea ,,Robot mobil autonom care evită obstacolele” care vă este prezentată, am
creat un robot mobil , care cu ajutorul motoarelor și a informației provenite de la senzor ,
acesta fiind miscat si cu ajutorul servomotorului, se poate deplasa și evita diverse obstacole pe
care le întalnește pe parcursul deplasării .
Lucrarea este structur ată astfel:
Capitolul 1. Scopul și motivația lucrării pe care am ales -o.

2
Capitolul 2. Istoria roboticii, clasificarea robotilor , descrierea roboți lor mobili ,
clasificarea roboților mobili .
Capitolul 3 . Prezentarea componentelor folosite la realizarea rob otului descris în
proiectul de diplomă
Capitolul 4. Prezentarea aplicației, detalierea schemele lor electrice, funcționarea
programului
Capitolul 5. Concluzi i

3
2 ISTORIC ÎN DOMENIUL ROBOTICII
2.1 Termenul de Robot și „Legile Roboticii” scrise de Isaac Asimov
“Scriitorul rus evreu american Isaac Asimov definește în literatura științifico -fantastică (SF)
prin anii 1950 cele trei legi aplicabile roboților și mașinilor „inteligente”, un concept
revoluționar la acea vreme. O mare parte din creația literară a lui Asimo v este construită în
jurul acestor trei legi, pe care autorul le -a creat pentru a recomanda parametri clari ai
funcționării roboților , în scopul de a preveni scăparea acestora de sub controlul omului.
Cele 3 legi aplicabile roboților sunt
– Legea 1 Un robot nu are voie să pricinuiască vreun rău unei ființe umane, sau, prin
neintervenție, să permită ca unei ființe omenești să i se facă un rău.
– Legea 2 Un robot trebuie să se supună ordinelor date de către o ființă umană, atât timp
cât ele nu intră în contradic ție cu Legea 1.
– Legea 3 Un robot trebuie să -și protejeze propria existență, atât timp cât acest lucru nu
intră în contradicție cu Legea 1 sau Legea 2.[1]”

2.2 Ce înseamnă Robotica
“Robotica este știința care se ocupă cu tehnologia, proiectarea și fabricarea r oboților.
Robotica necesită cunoștințe de electronică, mecanică și programare, iar persoana care
lucrează în acest domeniu a ajuns să fie cunoscută ca robotician. Denumirea de robot a fost
introdusa pentru prima oara de către Karel Čapek în anul 1921 în lu crarea sa "Roboții
universali ai lui Rossum", în 1921 plecând de la cuvântul ROBOTA, munca, activitate de
rutina, preluat de către Isaac Asimov , în povestirea științifico -fantastică "Fuga în cerc "
(1941). R obotii sunt mecanisme care merg singure.[2]
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 mecanism 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ția cu mediul sistemului.
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. Roboții cu formă umană sunt numiți androizi. Tot „robot”,

4
prescurtat „bot”, pot fi numite programe (software) de calculator care îndeplinesc automat
anumite funcții sau operațiuni. Astfel de roboți sunt virtual i, și nu mecanici.[3]”

“Câteva invenții care au revoluționat Robotica
– În 1495, Leonardo Da Vinci a creat un robot umanoid care era îmbrăcat in armură și
putea face diverse mișcări.
– În 1533, Johannes Müller von Königsberg a creat un vultur și o muscă din fier care
puteau zbura.
– În 1880, japonezul Hisashige Tanaka a creat o serie de jucării mecanice, care puteau
servii ceaiul, trage cu arcul scoțând sagețile din tolba cu săgeți.
– În 1950, Alan Turing a creat o mașinărie computerizată și inteligentă, a propus un test
să vadă dacă mașinăria este capabilă sau nu să gândească singură.
– În anii 1960, John McCarthz a creat robotul mobil Shakey, care era capabil să
cunoască și să reacționeze singur.
– În 1969, Victor Sheinman a creat Brațul Stanford, care influnețează și în zilele noastre
brațele robotice folosite în industrie.
– În 1970, Universitatea Stanford a creat Mașina Stanford, care era line follower
(urmărea linii) dar putea fi manipula de un calculator prin unde radio.
– În 1974, Victor Sheinman și -a creat propia companie unde a creat Brațul Argintiu care
putea asambla piese mici cu ajutorul senzorilor de atingere.
– În 1978 a apărut robotul cu 4 axe mumit SCARA ș i era cel mai ales deoarece putea
muta diverse obiecte.
– În 1989, MIT a creat un robot mobil hexapod, ca re era compus din 4
microprocesoare, 22 de senzori și 12 servo motoare.
– În 1997, misiunea PATHFINDER a ataerizat pe Marte, trimițând un robot mobil pe
nume Sojourner care studia suprafața planetei.
– În 1999, Sonz au creat câinele AIBO care putea interacțion a cu oamenii, dupa care au
creat Roboți visători umanoizi care aveau ca scop sa amuze oamenii.
– În 2005, Honda au prezentat un robot pe nume ASIMO (o versiune mai nouă decât cel
din 2000) care putea vorbii cu oamenii, merge, alerga, interacționa cu obiectel e din
jur.[4]”

5
2.3 Clasificare a roboților
„ Federația Internațională de Robotică (IFR), î n conformitate cu ISO 8373 [WIR 98], a
stabilit în anul 1997 clasificarea după structura constructivă a roboților pe următoarele 6
categorii de roboț i:
1. Roboți ca rtezieni și roboț i portali (figura 1.a), sunt roboții al că ror mecanism
generator de traiectorie are 3 cuple motoare de translație, având direcția de
mișcare paralelă cu cea a axelor sistemului cartezian de referință ;
2. Roboți cilindrici, (figura 1.b), sunt roboții al că ror mecanism g enerator de
traiectorie are două cuple motoare de translație și una de rotație și a căror axe
formează un sistem de coordonate cilindric.
3. Roboț i sferici (figura 1.c), sunt roboț ii al că ror mecanism g enerator de
traiectorie are două cuple motoare de rotație și una de translație și a căror axe
formează un sistem de coordonate sferic.
4. Roboț i tip SCARA (Selector Complains Arm fo r Robotics Assemble) (figura
1.d), sunt roboț ii al căror mecanism generator de traie ctorie are 2 cuple motoare de
rotație cu axele paralele în plan vertical, iar a treia cuplă motoare este de translație
pe o direcție paralelă cu cea a axele cuplelor motoare de rotaț ie.
5. Roboți articulaț i (antropomorfi) (figura 1.e), sunt roboții al căror mecanism
generator de traiectorie este com pus din 3 cuple motoare de rotație, două având
axele paralele î n plan orizontal, iar a treia axă fiind perpendiculară pe direcția
primelor două .
6. Roboț i paraleli (figura 1.f), sunt roboț ii care au dis pozitivul de ghidare format
din 3-6 cuple motoare de translație sau de rotație a căror axe sunt concurente î ntr-
un punct.[5]”

6

Fig. 1

„Funcț iile robotului sunt:
– creșterea productivității muncii în procesele de fabricaț ie;
– adecvare a omului la mediul în care el operează .

7
Creșterea productivității muncii rezultă din creșterea vitezei și preciziei de execuție a
robotului față de performanț ele omului. De asemenea robotul va executa în același ritm pe
durata î ntregii perioade de lucru activități repetitive, monotone ș i plictisitoare.
Adecvarea omului la mediul de lucru conduce la creșterea eficienței interacțiunii sale
cu mediul. Influența nocivă sau ostilitatea med iului asupra omului se datorează :
– solicită rilor de ordin fizic la care este supus omul în realizarea interacț iunii cu
mediul;
– solicitărilor de ordin psihic ale omul în realizarea unor activită ti repetitive;
– perturbaț iilor la care este su pus omul din partea mediului (că ldura /frig, zgomot
/vibrații, lumina /î ntuneric etc.).
– desfășurării activității î n medii inaccesibile omului (radioactiv, extraterestru,
subacvatic, agresiv chimic etc.).
Sub denumirea de robot se reunesc mai multe echipamente cu m ar fii: manipulatore,
instala ții de teleoperare, proteze /orteze, manipulatoare medicale, exoschele te amplificatoare,
robocare, mașini pășitoare, mașini târâ toare etc.
În cadrul proceselor de fa bricație există operaț ii continue și operaț ii discontinue .
Operaț iile de preluc rare prin așchiere se încadrează în categoria operaț iilor continue,
deoarece se desfășoară în anumite condiț ii impuse. Automa tizarea acestora a fost adoptată
priorit ar întru -cât prin reducerea timpilor de mașină aveau un impact direct asupra creșterii
productivităț ii muncii.
Operațiile de sudare și vopsire au întârziat î n cadrul procesului de aut omatizare
deoarece aceste operații se desfășoară prin acțiunea directă a unui operator uman.
Operaț iile de manipulare (transfer scurt) se încadrează în categoria operaț iilor
discontinue. Astfel operatorul uman prinde obiectul de manipulat cu mana, îl deplasează în
situarea dorită prin acțiunea brațului să u, sub suprav egherea ochilor săi și prin coordonarea
întregii acțiuni de că tre creierul să u.[5]”

2.4 Robo ții mobil i
“Prin comparație cu roboții convenționali, roboții mobili propriu -ziși ocupă în prezent
un loc relativ modest, ceea ce se explică în primul rând prin faptul că mediul industrial a
folosit cu precădere până acum soluțiile tradiționale pentru rez olvarea sarcinilor specific

8
transferului de materiale. Interesul pentru roboții mobili a fost însă recent și foarte intens
stimulat, atât de noile cerințe ale industriei în privința flexibilității, cât și de o gamă nouă de
aplicații solicitate în domeniul serviciilor, al divertismentului și al educației. De altfel ,
serviciile reprezintă cea mai recentă clasă de aplicații pentru robotică introdusă în
Nomenclatoru IFR (International Federation of Robotics).[6]
Cronologic, primele cercetări temeinice și avansate asupra roboților mobili
cu sustentație prin roți s -au realizat în SUA înca din anul 1975. Dintre cele mai semnificative
proiecte amintite în literatura de specialitate pot fi citate: SHAKEY – Stanford Rese arch
Institute, JASON – Berkeley University, R OVER – Jet Propulsion Laboratory. Ulterior,
proiecte similare au fost abordate in Japonia (YAMABIKO) și în Franța (HILARE, VESA,
MITHRA) . Marea majoritate a acestor proiecte au vizat în primul rând testarea unor soluții
constructive idei de proiectare, stra tegii de navigație sau componente electronice și
electromecanice specifice, iar aspectul comercial imediat a fost urmărit numai în subsidiar.[6]
Robotul mobil este în general un dispozitiv mecatronic complex, care asigură un
anumit grad de autonomie ce pe rmite navigația în scenele de operare naturale sau preparate
aprioric, fiind capabil să execute o clasă de sarcini utile pe parcursul dcplasării sale. Din acest
punct de vedere există o gamă foarte largă de configurații mecatronice ce pot fi incadrate în
această clasă:
– Un vehicul cu ro ți este c onsiderat robot mobil numai dacă dispune de unanumit grad
de autonomic în navigaț ie.Roboț ii manipulatori convenț ionali, specifici aplicaț iilor
industriale, pot
dobâ ndi mobilitate pr in instalarea lor pe o pl atformă mobilă .
– Roboț ii mobili special proiectați pentru anumite aplicații, al că ror sistem de
locomoție utilizează : șenile, structuri pășitoare, structuri șerpuitoare sau
alte soluț ii constructive neconven ționale.[6]”

9

Fig. 2 Robotul Shakey

“Construcția și exploatarea roboților mobili menține practic în actualitate toate
problemele generale ale roboților convenționali: mecanica versatilă și fiabilă, sisteme de
acționare performante, sisteme senzoriale capabile să c ontroleze cu precizie și rapiditate o
gamă foarte largă de parametrii, sisteme de conducere cu funcționare adaptivă în timp real,
precizie și repetabilitate în realizarea secvențelor de mișcare, etc.[6]
În același timp, se cer rezolvate o serie de problem e noi, a căror complexitate este
direct proporțională cu gradul de autonomie ce se dorește obținut: cunoașterea scenei de
operare și reactualizarea sa dinamică pe parcursul navigației, determinarea unei traiectorii
optime din punct de vedere al sarcinii cu rente și al interacțiunii cu scena de operare,
localizarea permanentă a robotului în scena sa de operare, tratarea în timp real a unui volum
mare de informații diverse de natură interoceptivă și exteroceptivă, asigurarea independenței
energetice pe durata funcționării, coordonarea în timp real cu celelalte sisteme conexe în
scopul realizării funcției propuse, etc.[6]”

10
“Navigația unui robot mobil în scena sa de operare nu poate fi realizată fără
cunoașterea cu precizie a localizării sale momentane în raport cu aceasta. După caz,
localizarea robotului mobil pe parcursul navigației permite fie derularea strategiei inițiale,
prin verificarea îndeplinirii unor condiții, fie adoptarea unor strategii noi.[6]
În funcție de rezultatele acestei proceduri. În subsidia r, localizarea este și calea uzuală
prin care un robot mobil își coordonează strategia de navigație cu structura scenei de operare,
cunoscută sau nu aprioric printr -un model geometric, precum și cu evenimentele ce pot apare
în aceasta.
Până în prezent, com plexitatea și prețul de cost relativ mare al roboților mobili au
limitat răspândirea lor. Cercetările inițiate au vizat adesea numai testarea unor algorit rni de
inteligență artificială.[6]
În cazul general, prin localizarea momentană (sau instantanee) a un ui robot mobil
într-o scenă de operare se înțelege raportarea acestuia la un sistem de referintă fix, cel mai
adesea atașat unui punct din scena de operare, în scopul determinării cu exactitate a două
categorii de informații:
– Poziția robotului mobil, poziț ie reflectată prin ansamblul coordonatelor punctului
caracteristic al robotului în sistemul de referință universal.
– Orientarea robotului mobil, mărime reflectată prin valoarea unghiului dintre axa
longitudinală a robotului și direcția unei axe din cadru· s istemului de
referință considerat, axa predefinită î n ace st scop. ”

“Cu timpul a aparut din ce în ce mai evident, că numeroase operații repetitive,
obositoare, periculoase sau chiar irealizabile de către operatorii umani pot fi preluate de
roboții mobili. Se pot cita ca exemple sarcinile din mediile ostile, cu aer viciat, din centralele
nucleare (supraveghere functională, manipularea combustibilului nuclear), din spațiul cosmic
(explorarea planetelor), din oceane (montarea conductelor petro liere și a cablurilor telefonice,
explorări geologice, recuperarea navelor scufundate), sau cele din mediul industrial și sfera
serviciilor (transport, curățenie ambientală, tunderea gazonului).[6]”

11
– Localizarea unui robot mobil imbr acă cel mai adesea d ouă aspecte particulare:

– Localizarea relativă, soluție prin care se identifică de obicei localizarea unui robot
mobil "prin estimare pe termen scurt''. Sunt folosite dispositive ieftine și metode
relativ simple, ce se bazează pe integrarea unor informaț ii elementare de deplasare.
– Localizarea absolută, procedeu care face apel la dispozitive mai costisitoare, ce
materializează metode de triangulație, în diverse variante tehnologice și spectrale:
ultrasonor, infraroșu, vizibil, laser, vedere artificială, GP S, etc. Sunt necesare în mod
obișnuit și modificări ale scenei de operare, în care trebuie introduse diverse
dispozitive auxiliare, passive sau active, cu funcție de tip baliză (reflectori, marcaje
grafice, emițători sau receptori, etc.).

Fig. 3 Robot mobil ce verifică scurgeri de gaze

12
2.5 Domenii de utilizare a roboților mobil i
a) “Industria prelucrătoare (transportul componentelor și produselor finite, supravegherea
procesului de fabricație).
b) Industria nucleară (supravegher ea incintelor, manipularea matri cialelor radioactive,
întreț inerea instalaț iilor din centralele nucleare) .
c) Jndustria chimică (supravegherea tehnologică, manipularea substanțelor toxice).
d) Industria militară (supraveghere și patrulare, Minării și deminării d e terenuri sau
obiective, manipularea munitiei).
e) Securitatea civilă (neutralizarea activităților teroriste, deminări sau montarea
explozivilor, supravegherea depozitelor de explozibili).
f) Submarin (montarea cablurilor sau conductelor , prospecțiuni geologic e , recuperarea
navelor scufundate).
g) Industria minieră ( asistență de urgență, abataje complect automate și autonome
funcțional).
h) Lupta contra incendiilor (localizarea sursei, patrulare pentru detecția emanațiilor
periculoase, stingerea incendiilor).
i) Agricu ltură (tunderea gazonului, operații asupra solului, culegerea fructelor sau
legumelor ).
j) Construcț ii (realizarea autonomă a lucrărilor specifice, transport de materiale).
k) Curățenie (Curățarea suprafețelor în mediul civil sau industrial).
l) Educație și diverti sment (dezvoltarea aptitudinilor tehnice, jucării inteligente).
m) Sănătate (supraveghere în spitale, transportul medicamentelor către bolnavi).
n) Birotica (distribuirea corespondenței în birouri, deservirea locurilor de muncă).
o) Umanitar (ajutor handicapaților locomotori sau orbilor, companie copiilor sau
persoanelor în etate).[6]”

13
Fig. 4 TALON – robot mobil de detectare a minelor

Fig. 5 Robot mobil care ajută la prelucrearea vinului

14
2.6 Clasificarea roboților mobili
“Din pun ct de vedere al nivelului de autonomic a l unui robot mobil, se pot distinge
urmatoarele soluții:
– Robot mobil telecomandat permanent de un operator uman, la care operatorul
comandă și controlează într -o manieră continuă toate sarcinile elementare ce urrnea ză
a fi realizate de către robot.

– Robot mobil telecornandat periodic de un operator uman, la care operatorul intervine
numai pentru a asigura nivelul decizional global, robotul controlând acțiunile sale
între comenzile primite de la operator.

– Robot mob il autonom, ce realizează obiectivele predefinite cu ajutorul capacității
decizionale proprii (sistem de ghidare, de navigație, bază de cunoștințe dinamice, etc.)
într-un mediu parțial cunoscut și structural. Această clasă prezintă cel mai mare
interes științific din punct de vedere al autonomiei și inteligenței artificiale
îmbarcate.[6]”

2.7 Autonomia și mobilitatea
“Mobilitalea și autonomia în robotică sunt două noțiuni ce evoluează rapid odată cu
progresul tehnic și reducerea prețului de cost al echipamente lor electronice complexe. Pentru
roboții mobili, funcția de mobilitate reprezintă în cazul general capacitatea de deplasare fără
ajutor extern între două poziții, sau mai precis:
– Capacitatea de evoluție într -un mediu ostil (periculos, gen labirint, etc.) și pe diverse
tipuri de soluri, inclusiv cele nepregătite aprioric (nisip, pietriș).

– Posibilitățile existente în evitarea sau depășirea obstacolelor (obstacole naturale, scări,
șanțuri, plane înclinate, etc.).

– Performanțele rcalizate: viteze, accelerații, raza de acțiune, capacitate de transport,
durata independenței energetice, etc.[6]

15

Autonomia u nui robot mobil trebuie asigurată din c el puțin două puncte de vedere, după
cum urmează :
– Autonomia energetică. Sursa energetică, cel mai adesea un accumulator e lectric, este
îmbarcată. Robotul poate reîncărca acumulatorul cu ajutorul uneia sau a mai multor
instalații fixe prevăzute în spațiul său de operare.

– Autonomia de decizie sau inteligență a robotului mobil. Variantele industriale uzuale
pot fi filoghidate , optoghidate, radioghidate sau cu traiectorii memorate, și evoluează
într-un mediu definit și aprioric cunoscut. Autonomia de decizie apare dacă robotul
trebuie să rezolve evenimente neaștep tate pe parcursul deplăsării sale. Nivelul
superior de inteligenț ă presupune capacitatea robotului de a se orienta singur într -o
scenă a carei topografie este sumar cunoscută. Trebuie atunci modelat mediul,
reactualizată permanent baza de cunoștințe în timpul deplasării și elaborate deciziile
corespunză toare.[6]
Bazei e lectromecanice a unui robot mobil ii revine deci sarcina asigură rii mobilităț ii și
motricității întregii structuri î n vederea ex ercită rii sarcinilor specifice. Soluț iile globale avute
în vedere la realizarea aceste ia influențează esențial performanț ele fin ale ale robotului mobil.
Deși există o multitudine de soluț ii concrete pentru realizarea propulsiei unui robot mobil,
calea energetică asociată fiecărei acționări este în principial aceeaș i. Ansamblul Controler –
Convertizor de putere – Element de ex ecuție – Senzori constituie ceea ce de numim acționare
inteligentă .
Pentru asigurarea locomoției unui robot mobil sunt posibile mai multe soluții ce pot fi
grupate în două clase principale:
– Contact direct cu solul. Această clasă include cele trei soluții c onstructive tradiționale:
cu roți, cu șenile și cu structuri antropomorfe pășitoare sau șerpuitoare.

– Fără contact direct cu solul. Această clasă include soluțiile neconvenționale:
cu pernă de aer, sustentație magnetică sau de navigație propriu -zisă, ca î n cazul vehiculelor
spațiale sau submersibile.[6]

16
Multe dintre aplicaț iile industriale ale roboț ilor mobili (și nu numai) s -au concentrat
până în prezent asupra soluție i cu roți, fiind de prevă zut și în viitor aceeaș i direcție datorită
prețului de cost in comparabil mai mic raportat la specificul și funcționalitatea caracteristicii.
De altfel, pr in prisma funcției de navigaț ie, problematica este cvasi identică pentru
toate structurile de roboți mobili, diferenț e semnificative fiind mai ales la nivelul sol uțiilor
mecanice constructive .[6]”

2.8 Construcția și dimensionarea roboților mobil i
Arhitectura generală a unui robot mobil perrnite evidențierea a patru componente
fundamentale.
Fiecare dintre acestea asigură pentru robotul mobil o clasă de sarcini curen te și
specifice, din a căror integrare rezultă funcționarea globală dorită precum și integrarea în
aplicația curentă:
– Structura mecanică: cu roți, cu șenile, pășitoare, șerpuitoare.
– Sursă energetică : acumulatori sau sursă de current electric
– Sistemul senso rial: senzor de lumină, sensor de proximitate, sensor de presiune,
sensor de mișcare etc.
– Unitatea de control și gestiunea sarcinilor.[6]

17

Fig. 6 ADAM, robot mobil pentru transportul materialelor

Planificarea traiectoriilor roboțilo r mobili are în vedere un caz elementar pentru
fundamentarea teoretică a planificării traiectoriilor roboților mobili, respectiv considerarea
unui singur robot mobil, plasat într -o scenă de operare ce conține mai multe obstacole fixe cu
poziții și orientă ri invariabile în timp față de scenă.
Se acceptă ipoteza că obstacolele fixe nu pot fi escaladate, ci numai ocolite. Se vor
neglija în totalitate aspectele dinamice ale deplăsării robotului și parțial cele cinematice.[6]

18
3 DESCRIEREA COMPONENT ELOR
3.1 Descrierea aplicației ARDUINO IDE
Arduino este o companie open -source care produce atât plăcuțe de dezvoltare bazate
pe microcontrolere, cât și partea de software destinată funcționării și programării acestora.
Pe lângă acestea include și o comunitate uriașă care se ocupă cu creația și distribuirea
de proiecte care au ca scop crearea de dispozitive care pot sesiza și controla diverse activități
sau procese în lumea reală.
Proiectul este bazat pe designul plăcilor cu microcontroler produse de câțiva furnizori,
folosind diverse tipuri de microcontrolere.
Aceste plăci pun la dispoziția utilizatorului pini I/O, digitali și analogici, care pot fi
interfațați cu o gamă largă de plăcuțe numite scuturi (shield -uri) și/sau cu alte circuite.
Plăcile au interfețe de co municații seriale, inclusiv USB pe unele modele, pentru a
încărca programe din calculatorele personale. Pentru programarea microcontrolerelor,
Arduino vine cu un mediu de dezvoltare integrat (IDE) bazat pe proiectul Processing, care
include suport pentru limbaje de programare ca C și C++.
Primul Arduino a fost lansat în 2005, având ca țintă asigurarea unei soluții ieftine și
simple pentru începători și profesioniști spre a crea dispozitive capabile să interacționeze cu
mediul, folosind senzori și sisteme de acționare. Cele mai comune exemple sunt dispozitivele
pentru utilizatorii începători precum: roboții simpli, termostatele și/sau detectoarele de
mișcare.
Plăcuțele Arduino sunt disponibile comercial sub formă preasamblată sau sub forma
unor kituri de asam blat acasă (do -it-yourself). Specificațiile schemelor sunt disponibile
pentru orice utilizator, permițând oricui să fabrice plăcuțe Arduino. Adafruit
Industries estimase la mijlocul anului 2011 că peste 300.000 de plăcuțe oficiale Arduino au
fost produse, iar în 2013 700.000 de plăcuțe oficiale erau în posesia utilizatorilor.
Arduino a început în 2005 ca un proiect al unui student al Institutului de Interacțiune a
Designului din Ivrea, Italia. La acea vreme studenții foloseau o plăcuță de dezvoltare BASIC
Stamp care costau 100 de dolari, ceea ce era considerat foarte scump pentru studenți.[7]
Massimo Banzi, unul dintre fondatori, era student la Ivrea. Numele "Arduino" provine
de la un bar din Ivrea, locul unde o parte din fondatori obișnuiau să se întâlneas că.

19
Studentul columbian Hernando Barragán a creat platforma de dezvoltare Wiring care a
servit ca bază pentru Arduino. După finalizarea platformei Wiring, mai multe versiuni, mai
light și mai ieftine, au fost create și puse la dispoziția comunităților open -source. Din echipa
inițială Arduino au făcut parte Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca
Martino și David Mellis.
Programele Arduino pot fi scrise în orice limbaj de programare cu
un compilator capabil să producă un cod mașină binar. Atmel oferă un mediu de dezvoltare
pentru microcontrolerele sale, AVR Studio și mai nou, Atmel Studio.
Proiectul Arduino oferă un mediu integrat de dezvoltare (IDE), care este o
aplicație cross -platform, scrisă în Java.
Acesta își are originile în mediul de dez voltare pentru limbajul de programare
Processing și în proiectul Wiring. Este proiectat pentru a introduce programarea în lumea
artiștilor și a celor nefamiliarizați cu dezvoltarea software.
Include un editor de cod cu funcții ca evidențierea sintaxelor, potrivirea acoladelor și
spațierea automată și oferă mecanisme simple cu un singur click, pentru a compila și a
încărca programele în plăcuța Arduino. Un program scris în IDE pentru Arduino se
numește sketch.[7]
Arduino IDE suportă limbajele de programare C și C++ folosind reguli speciale de
organizare a codului. Arduino IDE oferă o librărie software numită Wiring, din proiectul
Wiring, care oferă multe proceduri comune de intrare și ieșire. Un sketch tipic Arduino scris
în C/C++ este compus din două funcți i care sunt compilate și legate cu un ciot de
program main() , într-un program executabil cu o execuție ciclică:
– setup() : o funcție care este rulată o singură dată la începutul programului, când se
inițializează setările.
– loop() : o funcție apelată în mod re petat până la oprirea alimentării cu energie a
plăcuței.
După compilarea și legarea cu GNU toolchain inclus, de asemenea, în IDE, mediul de
dezvoltare Arduino trimite comandă către programul avrdude pentru a converti codul
executabil într -un fișier text co dat hexazecimal, care poate fi încărcat în placa Arduino de un
program de încărcare.[7]

20

Fig.7 Interfață Software
3.2 Componentele electronice
Arduino UNO
Arduino Uno este o placă cu microcontroler seria ATmega pe 8 biți bazată
pe ATmega328 cu o frecvență de ceas tipică între 8 și 16MHz.

21
Platforma conține tot ceea ce este necesar pentru start -up-ul unui microcontroler;
pentru start trebuie realizată conectarea la un computer cu un cablu USB si alimentarea plăcii
de la un adaptor sau de la o baterie.
Arduino este furnizat cu un IDE care folosește limbajul de programare C++ și niște
biblioteci ce au fost proiectate pentru ușurința în utilizare și pentru a asigura suportul celor
care nu sunt programatori avansați.
În felul a cesta, în câteva minute de la instalare pot fi realizate aplicații cu LED -uri
care clipesc, se pot citi senzori de temperatură, se pot afișa date cu usurință pe ecrane LCD
sau se pot transmite date către PC utilizând consola pentru portul serial.
Începând cu partea de sus, plăcuța are 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().
Fiecare pin poate primii sau trimite o intensitate de maxim 40 mA și au o rezistență
internă între 20 -50 kOhmi (default deconectată). În afară de semnalul standard I/O, unii
dintre pini mai au și alte funcții specializate:
– 0 (serial) RX – pin serial, utilizat în special pentru recepția (intr are – 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 protocol este implementat în dispozitiv numit UAR T (Universal
Asynchronous Receiver/Transmitter )[8]
– 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 configura t pentru a
declanșa o întrerupere la o valoare mică, un front crescător sau descrescător, sau o
schimbare în valoare. Vezi detalii despre posibile comenzi la attachInterrupt()
– 3 (External Interrupts + PWM) întrerupere externă. Identic cu pinul 2. Supliment ar,
toți pinii marcați cu semnul ~ pot fi folosiți și pentru PWM (pulse with modulation )
– 4 (I/O) pin standard intrare/iesire
– 5 (PWM ) poate furniza control de ieșire pe 8 -bit pentru controlul PWM. Vezi detalii
despre posibile comenzi la analogWrite()
– 6 (PWM )[8]

22
– 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 specifice iar acest pin se foloseste
pentru SS – Slave Select (active low; output din master). Pinii SPI pot fi controlați
folosind libraria 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 pi n se folosește pentru 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 a cest pin. Când pinul 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 p oate controla folosind funcția analogReference() .
– 16 (SDA ) – comunicare I2S
– 17 (SCL ) – comunicare I2S[8]
În partea de jos, există 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 suplimen tare descrise mai jos:
– A0 standard analog pin
– A1 standard analog pin
– A2 standard analog pin
– A3 standard analog pin

23
– 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 .[8]
Lângă pinii analogici arătați mai există o secțiune de pini notată POWER .
Acestia sunt ( începând de lâng ă pinul analog A0) :
– 1 Vin – intrarea pentru tensiune din sursă externă (input Voltage)
– 2 GND – negativul pentru tensiune din sursă externă (ground Voltage)
– 3 GND – negativ. Se folosește pentru piesele și componentele montate la arduino ca
și masă/împământ are/negativ.
– 4 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)
– 5 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.
– 6 RESET – se poate seta acest pin pe LOW pentru a reseta controlerul 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.
– 7 5VRE F – 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)
– 8 pin neconectat, este rezervat pentru utilizări ulterioare (la reviziile următoa re ale
plăcii probabil).[8]
Comunicarea cu calculatorul, altă placă arduino sau alte microcontrolere se poate realiza
fie prin portul USB (și este văzut ca un port standard serial COMx), fie prin pinii 0 și 1
(RX și TX) care facilitează comunicarea serială UART TTL (5V), f olosind biblioteca de
funcții SoftwareSerial .[8]
Se po t face comunicații seriale folosind oricare din pinii digitali.
Pentru comunicarea I2C (TWI ) este inclusă o librărie Wire . Pentru comunicarea SPI se
poate folosi librăria SPI .[8]
Placa mai are o serie de pini marcați ICSP (In-Circuit Serial Programming ). Acești
pini pot fi folosiți pentru reprogramarea microcontrolerului , sau ca pini de expansiune cu
alte microcontrolere compatibile.
Sunt conectați standard și se poate folosi un cablu de 6 fire ( MOSI, MISO, SCK, VCC,
GND, și pinul RESET ).[8]

24

Fig. 8 Plăcuța de dezvoltare Arduino UNO

Placuta Arduino este un instrument prin care se pot crea sisteme informatice capabile
să „perceapă‟ și să „controleze‟ lumea înco njurătoare . Acest instrument este open -source și
este compus dintr -un mediu de dezvoltare (o varianta de Wiring – platforma folosită pentru
procesare multimedia) și o placă de dezvoltare cu microcontroler AVR .
Placuta Arduino poate fi folosit pentru dezvo ltarea de obiecte interactive. Informația
este preluată de la o gamă variată de senzori și comutatoare, se procesează în interiorul
microcontrolerului AVR, și este transmisă către o gamă la fel de variată de lumini, motoare,
actuatoare etc.
Pe pia ță există o gamă foarte variată de sisteme de dezvoltare bazat e pe microcontroler,
avantajele pe n care le are Arduino față de aceste sisteme sunt:
-Costuri de achiziție reduse
-Poate fi folosit pe orice sistem de operare (Linux,Windows sau MacOS). Majori tatea
plăcilor de dezvoltare fiind limitate la sistemul de operare Windows.
-Un mediu de programare simplu și usor de învățat.

25
-Este open source, atât placa de dezvoltare cât și mediul de programare. Microcontrolerul
ATmega328 are 32 KB de memorie din ca re 0.5 KB sunt utilizați pentru bootloader. Conține
de asemena 2 KB de SRAM și 1 KB de memorie EEPROM. Fiecare din cei 14 pini digitali al
lui Arduino Uno pot fi utilizați ca input sau output, utilizând funcțiunile pinMode(),
digitalWrite() si digitalRead( ). Pinii funcționează la 5 volți și pot furniza sau absorbi un
curent de maximum 40 mA și datorită unui pull -up rezistor, care sunt deconectate by default
având valoarea de 20 -50 khms.

Shield controlor motoare L293D
Shieldul include două drive re de motoare de tip L293D , si este capabil sa controleze 4
motoare clasice, de dimensiuni mici, sau 2 motoare de tip servo. Acest shield are rolul de a
controla 2 sau 4 motoare primind informația de la microcontroller pentru a executa mișcarea. De
asemenea , shield -ul conține un shift register de tip 74HC595 pentru a fi mai ușor de co ntrolat.
Shift-ul register este un circuit integrat ce co nține un registru de deplasare cu ajutorul căruia poți
transforma informația transferată prin interfață serială în infor mație pe interfața paralelă.

Specificații:
– Tensiune de alimentare circuite logice: 5V;
– Tensiune de alimentare motoare: 4.5V – 36V;
– Curent motoare in mod continuu: 0.6A;
– Curent motoare pe peak: 1.2A;

26
– Protectie la supracurent și la
supratemperatură.

Fig. 9 Shield controlor motoare L293D

L293D este un dispozitiv monolitic integrat de tensiuni înalte, are un driver de 4 canale
de curenți înalți concepute să accepte standardele nivelelor logice DTL sau TTL și
încărcările inductive ale ale driver -ului (cum ar fi releele solanoide, motoare de current
continuu sau motoare pas cu pas).
Are un conector de intrare logică pentru alimentare separat, permițând operațiuni de
tensiuni mici și în interior sunt incluse diode cleme.
Acest dispoziti v este bun la schimbarea frecvenței de până la 5kHz la aplicațiile folosite.
L293D se prezinta sub forma unei capsule de plastic cu 16 pini, din care 4 pini centrali
sunt conectați împreună și sunt folosiți ca și radiator, pentru a răci circuitul.

27

Circuit ul L293D

28

Fig. 10 Motor cu reductor și roată

Motoare cu reductor și roți
Caracteristici tehnice:
– Diametru roată: 65mm;
– Reducție motor: 1:48;
– Tensiun e de alimentare motor: 3V – 6V DC;
– Cuplu: 0.8 kg * cm;
– RPM: 3V:125rpm, 5V:200rpm, 6V:230rpm;
– Curent: 3V:60mA, 5V:100mA, 6V:120mA.

29

Aceste tipuri de motoare pot fi folosite la diferite tipuri de roboți, cum ar fi rez olvarea
labirint ului, urmăritor de linie sau evitarea obstacolelor .
Am ales acest t ip de motor deoarece se potriveste foarte bine când doresti să creezi un
robot mobil și este ideal pen tru aplicația pe care am facut -o.
Aceste motoare sunt de cu rent continuu. Curentul continuu este o mișcare de sarcini electrice
într-un singur sens printr -un mediu oarecare.

30

Modul senzor ultrasonic – detector distanță HC -SR04

Specificații:
– Tensiune de alimentare: 5V;
– Curent consumat: 15mA;
– Distanță de f uncționare: 2cm – 4m;
– Unghiu de măsurare: 15o;
– Eroare de doar 3mm;
– Durată semnal input: 10us.
– Dimensiuni: 45mm x 20mm x 15mm.

Senzorul ultrasonic HC -SR04 este unul dintre cei mai populari și ușor de utilizat senzori
de distanță.
Este compatibil cu Arduin o și prezintă câteva avantaje față de senzorii de distanță
analogici: necesită doar pini I/O digitali, are imunitate mai mare la zgomot.
Acesta are o precizie de 3mm și măsoară la un unghi de 15˚. Este ușor de folosit și
consumă puțină energie, principalul dezavantaj fiind distanța relativ mică de măsurare: 2-4
cm.
Senzorul este foarte ușor de folosit, având doar 4 pini: VCC și GND, care sunt folosiți
pentru alimentare și doi pini digitali, utilizați pentru unda emisă (trigger) și unda recepționată
(echo).
Măsurarea distanței se bazează pe diferența dintre momentul de timp la care s -a transmis
trigger -ul și momentul la care acesta se detectează înapoi.

31

Fig. 11 Modul senzor ultrasonic – detector distanță HC -SR04

Fig.12. Baterie de 9V

32

Pentru sursa de alimentare, am folosit o baterie de 9V care este conectată la shield -ul
motor pentru a alimenta întreg robot
mobil.

33

Desigur, se poate alimenta si cu ajutorul cablului cu care se transfera pro gramul scris in
plăcuța Arduino cân d este introdus în PC.

34
Fig. 13 Cablu de date

3.3 Componentele fizice

Șasiul robotului mobil este făcut din placa de cablaj , material în formă de plăci,
constituit din straturi de țe sături impregnate cu rășini sintetice , un material ușor, rezistent și
fiabil. Mai este atașat un pexiglass pentru susținere a senzorului când este montat.
Șasiul l-am primit de la un coleg gata tăiat, pentru că nu mai avea nevoie de el și asta
m-a scutit de cumpărarea sau crearea unui șasiu nou .
Textolitul este un m aterial în formă de plăci, constituit din straturi de țesături
impregnate cu rășini sintetice de tipul bachelitei, prelucrabil prin așchiere, utilizat ca material
electroizolant în electrotehnic ă și radiotehnică, în construcția de mașini .

35

Fig. 14 Șasiu robot mobil

Suport polulu cu bilă din plastic

Acest suport are inclusă o carcasă ABS neagră, o bilă din metal cu diametrul de 9.5
mm, 2 dista nțiere din plastic (în care s -a folosit decât una singură), și 2 seturi de șuruburi .
Rolul suportului este de a susține par tea frontală a robotului mobil dar este util si
pentru deplasare, deoarece atunci când apare un obstacol în cale, să -i fie ușor ro botului să
întoarcă.

36

Fig. 15 Suport Polulu cu bilă din plastic

37
Ustensilele pe care le -am folosit au fost : o șurubelniță pentru fixarea firelor de la motoare și
acumulator pe shield, ș i o bandă dublă adezivă cu ajutorul că reia am fixat pe șasiu plăcuța
arduino , motoarele, senzorul .
Pentru senzorul ultrasonic,am improvizat un suport din placa de cablaj ,pe care am folosit -o si
ca drept caroserie a masinii.
Am mai folosit pistol cu silicon pentru lipirea pe placuta a compone ntelor,pistol cu fludor
pentru lipirea firelor.
Fig.17 Ustensilele folosite

38

4 PREZENT AREA APLICȚIE I

4.1 Schema bloc a robotului mobil

Fig. 17 Sch ema bloc

Arduino UNO este microcontroller -ul robotului mobil, ori blocul decizional sau pe
scurt, „creierul ”. Senzorul HC -SR04 este cel pe baza căruia se vor lua deciziile importante
pentru ca sistemul să funcționeze cum trebuie .
Rolul motoarelo r este de a pune robotul mobil î n mișcare cu ajutorul shield -ului de
motoare L293D, în funcție de semnalele de intrare primite de la microcontroller , acestea pot
realiza înaintarea, oprirea și reluarea mișcării.
Microcontroller -ul transimte aceste operații shield -ului de motoare.

39
În partea din față a robotului, se află senzorul de distanță HC-SR04 , care are rolul de a
detecta obstacolele ..
Pornirea robotului mobil se face conectând bateria la shield pentru a alimenta robotul.
Pentru a nu mai funcționa, se deconecte ază bateria de la shield.

4.2 Protocolul de funcționare
Când conectăm bateria de 9 V la shield , robotul mobil își începe procesul de mișcare,
deplasându -se oriunde in jur, dar când apare un obstacol în cale, el se ferește, schimbându -și
orientarea și apoi co ntinuându -și mișcarea dar pe o altă rută. Cu ajutorul servomotorului
,senzorul ultrasonic este miscat pentru a detecta obstacole.
Este bine dacă își face procesul pe o suprafață netedă pentru a nu perturba senzorul,
deoarece pe suprafețele văluroase îl mai saltă în sus și împiedică senzorul de a detecta mai
bine obstacolele pe care le întâlnește în cale .

4.3 Conectarea componentelor

40

Fig. 18 Conectarea senzorului HC -SR04 la Arduino(microcontroller)

Am conectat senzorul HC -SR04 la microcontr oller cu ajutorul unor fire la pinii
analogici de pe Arduino.
Pentru alimentare, am conectat pinul VCC al său la pinul de 5 V de pe plăcuță , iar ca
circuitul să fie realizat, s -a făcut conectarea prin pinii GND(GROUND) al ambelor
componente.
Pentru a pr imii și transmite semnalul, s -a realizat legarea pinului Trigger(TRIG) de la
senzor la pinul 12 digital de pe microcontroller, iar Echo la pinul 13 digital de pe
microcontroller.
Pentru că este o aplicație simplă, am folosit decât 4 pini de pe Arduino.

Fig. 19 Conectarea Shield -ului cu Arduino UNO

41

Shield -ul de motoare este alimentat prin pinul VCC care este conectat prin pinul de 5
V al microcontroller -ului și închiderea circuitului se face prin pinii GND ale celor 2
componente.
Rolul shield -ului , cum s -a precizat mai devreme,este de a pune în mișcare
motoroașele primind informația direct de la microcontroller.

Fig.20 Motoarele si bateria conectate la shield -ul motor

Cele 2 motoare cu reductor sunt conectate la shi eld.

42
Motoarele sunt notate cu M1, respectiv M2 și sunt conectați la pinii corespunzători
lor. Motorul 1 este conectat la pinii M1 iar motorul 2 la pinii M2.
Bateria de 9V, este sursa de alimentare, care se conectează la pinii M+ si GND pentr u
alimentarea shield -ui si a microcontroller -ului.

Fig. 21 Schema completă a robotului mobil care evită obstacolele

Când robotul mobil începe să fie alimentat, cu ajutorul shield -ului, motoarele pornesc
si înaintează.
Când un obs tacol apre în cale, senzorul preia informația pe care o trimite mai intâi
microcontroller -ului, care începe să proceseze informația repede, și apoi o transmite shield –
ului pentru a executa manevra de evitare.
Acest proces se repetă ori de câte ori robotul mobil dă peste un obstacol.

43

4.4 Programul de control a Robotului Mobil

C este un limbaj de programare standardizat . Este implementat pe majoritatea
platformelor de calcul existente azi, și este cel mai popular limbaj de programare pentru
scrierea de software de sistem .
Este apreciat pentru eficiența codului obiect generat de compilatoarele C, și
pentru portabilitatea sa.
A fost dezvoltat la începutul anilor 1970 de Ken Thompson și Dennis Ritchie , care
aveau nevoie de un limbaj simplu și portabil pentru scrierea nucleului sistemului de
operare UNIX .
Sintaxa limbajului C a stat la baza multor limbaje create ulterior și încă populare
azi: C++, Java, JavaScript , C#, D.
C este un limbaj de programare relativ minimalist ce operează în strânsă legătură
cu hardware -ul, fiind cel mai apropiat de limbajul de asamblare față de majoritatea celorlalte
limbaje de programare.
Cu ajutorul acesui limbaj de programare, am scris liniile de cod în Arduino IDE, cu
ajutorul căruia am reușit să compilez codul și apoi tr ansferat in microcontroller -ul Arduino
UNO.

Funcționarea programului

44

1) #include <AFMotor.h> // Am apelat această funcție pentru a accesa bibliotecile care
includ funcțiile de control a vitezei și sensului de rotație a motoarelo
#include <Servo.h>
#include <NewPing.h>
#define TRIG_PIN A4 // Pinul A4 de pe driveul de motoare se conecteaza cu senzorul
ultrasonic
#define ECHO_PIN A5 // Pinul A5 de pe driveul de motoare se conecteaza cu senzorul
ultrasonic
#define MAX_DISTANCE_POSSIBLE 1000 // Stabileste d istanta de masurare maxima
utilizabila a senzorului
#define MAX_SPEED 150 // Stabileste viteza motoarelor de tractiune DC la 150/256 sau
aproximativ 48% din viteza maxima pentru a reduce scurgerea energiei
#define MOTORS_CALIBRATION_OFFSET 3 //Aceasta se teaza offset pentru a permite
diferentele intre cele doua motoare de current continuu
#define COLL_DIST 20 // Stabileste distanta la care obstacolul pe care il evita robotul ,se
opreste si se inverseaza la 10 cm
#define TURN_DIST COLL_DIST+10 NewPing sonar( TRIG_PIN, ECHO_PIN,
MAX_DISTANCE_POSSIBLE); //Stabileste distanta la care obstacolul care evita robotul se
indeparteaza de obiect(nu invers) pana la 20 cm (10 + 10)
AF_DCMotor leftMotor(4, MOTOR12_8KHZ); //Se creaza motorul din stanga,legat la pinul
4 al shield -ului,cu frecventa PWM de 8 kHz
AF_DCMotor rightMotor(3, MOTOR12_8KHZ); // Se creaza motorul din dreapta,legat la
pinul 3 al shield -ului,cu frecventa PWM de 8 kHz

Servo neckControllerServoMotor; // Cream un obiect servo pemtru a putea controla
servom otorul
int pos = 0; // Stabileste variabilele pentru a fi utilizate in cod
int maxDist = 0;
int maxAngle = 0;
int maxRight = 0;
int maxLeft = 0;

45
int maxFront = 0;
int course = 0;
int curDist = 0;
String motorSet = "";
int speedSet = 0;
//BUCLA DE CONFIGURARE

void setup()
{ neckControllerServoMotor.attach(10); Atasam servo pe pinul 10
neckControllerServoMotor.write(90); Spune servomotorului sa se pozitioneze la 90 de grade
privind inainte
delay(2000); O intarziere de 2 s
checkPath(); Executa o rutina pentru a gasi cea mai buna cale pentru a incepe calatoria
motorSet = "FORWARD"; Se seteaza variabila indicator la FORWARD
neckControllerServoMotor.write(90); Ne asiguram ca servo este inca in fata
moveForward(); Rulam functia pentru a face robotul sa evite obstacolele si sa inainteze
} //––––––––––––––––––––––––––––––––––––-
–––––
//–––––––––––––––––––– BUCLA PRINCIPALA ––––- ––––
–––––
void loop() {
checkForward(); Verificam daca in cazul in care obstacolul de evitare al robotului ar trebui sa
se deplaseze inainte ,motoarele sunt setate sa avanseze ,acest lucru este necesar pentru a depasi unele
probleme

check Path(); Se seteaza senzorul ultrasonic sa scaneze pentru orice posibile obstacole
}
//––––––––––––––––––-
void checkPath() {
int curL = 0;
int curF = 0;
int curR = 0;
int curD = 0;
neckControllerServoMotor.write(14 4); Se seteaza servo sa se confrunte cu partea stanga la
54 de grade fata de inainte

46
delay(120); Asteptam 120 de milisecunde pentru ca servo sa atinga pozitia
for(pos = 144; pos >= 36; pos -=18) Pentru a misca servomotorul (si senzorul) de la 144 de
grade pana la 36 de grade la dreapta,la intervale de 18 grade.
{
neckControllerServoMotor.write(pos); //Ii spunem servomotorului sa mearga in pozitia
variabilei pos
delay(90); //Asteapta 90ms pentru ca servo sa ajunga pe pozitie
checkForward(); //Verifica evitar ea obstacolelor,Robotul se misca in continuare
curDist = readPing(); //Obtine distanta curenta la orice obiect din fata senzorului
if (curDist < COLL_DIST) { //Daca distanta curenta fata de obiect este mai mica decat
distanta de coliziune
checkCourse(); // Se executa functia checkCourse
break; //Se iese din aceasta bucla
}
if (curDist < TURN_DIST) { // Daca distanta curenta este mai mica decat distanta de viraj
changePath(); // Se executa functia changePath (schimba directia)
}
if (curDist > curDist ) {maxAngle = pos;}
if (pos > 90 && curDist > curL) { curL = curDist;}
if (pos == 90 && curDist > curF) {curF = curDist;}
if (pos < 90 && curDist > curR) {curR = curDist;}
}
maxL = cur L;
maxR= curR ;
maxF = curF ;
}
void setCourse() { // Se seteaza directia de deplasare pe baza unei harti de distanta foarte
simple,pe ce directive are cea mi mare distanta si obiect de intoarcere spre dreapta sau spre stanga
if (maxAngle < 90) // {turnR ();} Daca unghiul maxim este mai mic decat 90 de grade masina
o ia la dreapta
if (maxAngle > 90) // {turnL ();} Daca unghiul maxim este mai mare decat 90 de grade masina
o ia la stanga
maxL = 0;
maxR = 0;
maxF = 0;

47
}
void checkCourse() { // Este pe punctul de a lovi ceva asa ca se misca inapoi ,opreste si afla
unde este ruta goala
moveBackward();
delay(500);
moveStop();
setCourse();
}
void changePath() {
if (pos < 90) {
lookL (); //Cand pozitia actuala a senzorului este mai mica de 90 de grade inseamna ca
obiectul este pe partea dreapta,asa ca aratati pe partea stan ga
}
if (pos > 90) {
lookR ();//Cand pozitia actuala a senzorului este mai mare de 90 de grade inseamna ca
obiectul este pe partea stanga,asa ca aratati bine
}
}
int readPing() { //Se citeste distanta senzorului ultrasonic
delay(70);
unsigned int uS = sonar.ping();
int cm = uS/US_ROUNDTRIP_CM;
return cm;
}

void checkForward() {
if (motorSet=="FORWARD") {
leftMotor.run(FORWARD); // Ne asiguram ca motoarele merg inainte
rightMotor.run(FORWARD); }
}
void checkBackward() {
if (motorSet=="BACKWARD ") { // Ne asiguram ca motoarele merg inapoi
leftMotor.run(BACKWARD);
rightMotor.run(BACKWARD);
}

48
}
void moveStop() {
leftMotor.run(RELEASE); //Se opresc motoarele
rightMotor.run(RELEASE);
}
void moveForward()
{ motorSet = "FORWARD";
leftMotor.run( FORWARD); //Se porneste inainte
rightMotor.run(FORWARD); //Se porneste inainte
for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) //Se reduce viteza pentru a evita
descarcarea rapida a bateriilor
{ leftMotor.setSpeed(speedSet+MOTORS_CALIBRATION_OFFSE T);
rightMotor.setSpeed(speedSet);
delay(5); }
}

void moveBackward()
{ motorSet = "BACKWARD";
leftMotor.run(BACKWARD); // Se porneste inapoi
rightMotor.run(BACKWARD); //Se porneste inapoi
for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) // Se reduce viteza pentru a evita
descarcarea rapida a bateriilor
{
leftMotor.setSpeed(speedSet+MOTORS_CALIBRATION_OFFSET);
rightMotor.setSpeed(speedSet);
delay(5); }
}
void turnRight(){
motorSet = "RIGHT";
leftMotor.run(FORWARD); //Se roteste motorul 1 inainte
rightMotor.run(BACKWARD); // Se rot este motorul 2 inapoi
delay(400);
motorSet = "FORWARD";
leftMotor.run(FORWARD); //Se seteaza ambele motoare inapoi spre inainte
rightMotor.run(FORWARD);

49
}
void turnLeft()
{ motorSet = "LEFT";
leftMotor.run (BACKWARD); //Se roteste motorul 1 inapoi
rightMotor.run(FORWARD); //Se roteste motorul 2 inainte
delay(400);
motorSet = "FORWARD";
leftMotor.run(FORWARD); //Porniti -o inainte
rightMotor.run(FORWARD); //Porniti -o inainte
}
void lookRight()
{rightMoto r.run(BACKWARD); // Se seteaza motorul din dreapta ,inapoi pentru 400 ms
delay(400);
rightMotor.run(FORWARD);}
void lookLeft()
{leftMotor.run(BACKWARD); //Se seteaza motorul din stanga ,inapoi pentru 400 ms
delay(400);
leftMotor.run(FORWARD);}

50

Fig. 22 Proiectul final – Robot mobil care evită obstacolele

O problemă pe care am întâmpinat -o la montarea robotului, a fost conectarea inversa
motoarelor , determinand învârtirea în loc a robotului, creând fără să vreau un tit irez.
O altă proble mă a fost cu cablul de transfer a codului care mi s -a intrerupt , fiind
nevoit să schimb cu unul nou,deoarece aveam un cablu vechi de imprimanta.

51
5 CONCLUZII
În Capitolul 1 mi -am prezentat scopul, motivația de a realiza acest proiect de diplomă,
adică ce m-a determinat să duc la bun sfârșit.
În Capitolul 2 am prezentat u nscurt istoric despre apariția roboților mobili și
clasificări.
În Capitolul 3 sunt prezentate componentele pe care le -am folosit pentru crearea
robotului mobil care evită obstacolele : M icrocontroller Arduino UNO, Shiled de motoare
L293D, Motoare cu reductor si roți, Senzorul de distanță HC -SR04 și Bateria de 9V.
În Capitolul 4 am prezentat principiul de funcționare, schema bloc al robotului,
schemele electrice și apoi prezentarea program ului.
Capitolul 5 este încheiat cu descrierea proiectului meu de diplomă, descris în câteva
cuvinte.

52
BIBLIOGRAFIE
[1] https://ro.wikipedia.org/wiki/Cele_trei_legi_ale_robot icii
[2] https://ro.wikipedia.org/wiki/Robotic%C4%83
[3] https://ro.wikipedia.org/wiki/Robot
[4] http://www.robotiksistem.com/robotics_history.html
[5] http://www.scrigroup.com/tehnologie/tehnica -mecanica/Robotul -Clasifi carea –
robotilor12177.php
[6] Roboți mobili, Mircea Nițulescu, Sintech, 1998
[7] https://ro.wikipedia.org/wiki/Arduino
[8] http://roboromania.ro/2016/11/15/descrierea -pinilor -la-placa -arduino -uno-r3/
[9] https://microcontrolere.wordpress.com/2016/08/10/arduino -uno/
[10] http://roboromania.ro/2016/11/15/descrierea -pinilor -la-placa -arduino -uno-r3/
[11] http://www.roroid.ro/prima -lectie/
[12] https://ro.wikipedia.org/wiki/C_(limbaj_de_programare)
[13] http://www.yourduino.com/sunshop/index.php? l=product_detail&p=292 (L293D)

53
Referințe WEB

1. https://ardushop.ro/ro/
2. https://ardushop.ro/ro/electronice/13 3-shield -controlor -motoare -l293d.html
3. https://ardushop.ro/ro/home/64 -motor -dc-3v-6v-cu-reductor –
148.html?search_query=Moto r+cu+reductor+si+roata&results=26
4. https://ardushop.ro/ro/home/63 -riata-roboti -cauciuc -65mm –
diametru.html?search_query= Motor+cu+reductor+si+roata&results=26
5. https://ardushop.ro/ro/home/47 -modul -senzor -ultrasonic -detector –
distanta.h tml?search_query=Senzor+ultrasonic+HC -SR04&results=39
6. https://www.arduino.cc/en/Main/Software
7. http://fritzing.org/home/

54
6 CODUL SURS Ă

#includ e <AFMotor.h>
#include <Servo.h>
#include <NewPing.h>
#define TRIG_PIN A4
#define ECHO_PIN A5
#define MAX_DISTANCE_POSSIBLE 1000
#define MAX_SPEED 150 //
#define MOTORS_CALIBRATION_OFFSET 3
#define COLL_DIST 20
#define TURN_DIST COLL_DIST+10 NewPi ng sonar(TRIG_PIN, ECHO_PIN,
MAX_DISTANCE_POSSIBLE);
AF_DCMotor leftMotor(4, MOTOR12_8KHZ);
AF_DCMotor rightMotor(3, MOTOR12_8KHZ);
Servo neckControllerServoMotor;
int pos = 0;
int maxDist = 0;
int maxAngle = 0;
int maxRight = 0;
int maxLeft = 0;
int maxFront = 0;
int course = 0;
int curDist = 0;
String motorSet = "";
int speedSet = 0;

void setup()
{ neckControllerServoMotor.attach(10);
neckControllerServoMotor.write(90);
delay(2000);

55
checkPath();
motorSet = "FORWARD";
neckControllerSer voMotor.write(90);
moveForward();
}
void loop() {
checkForward();
checkPath();
}
void checkPath() {
int curLeft = 0;
int curFront = 0;
int curRight = 0;
int curDist = 0;
neckControllerServoMotor.write(144);
delay(120);
for(pos = 144; pos >= 3 6; pos -=18)
{
neckControllerServoMotor.write(pos);
delay(90);
checkForward();
curDist = readPing();
if (curDist < COLL_DIST) {
checkCourse();
break;
}
if (curDist < TURN_DIST) {
changePath();
}
if (curDist > curDist) {maxAngle = pos;}
if (pos > 90 && curDist > curLeft) { curLeft = curDist;}
if (pos == 90 && curDist > curFront) {curFront = curDist;}
if (pos < 90 && curDist > curRight) {curRight = curDist;}
}
maxLeft = curLeft;

56
maxRight = curRight;
maxFront = curFront;
}
void setCourse() {
if (maxAngle < 90) {turnRight();}
if (maxAngle > 90) {turnLeft();}
maxLeft = 0;
maxRight = 0;
maxFront = 0;
}
void checkCourse() {
moveBackward();
delay(500);
moveStop();
setCourse();
}
void changePath() {
if (pos < 90) {lookLeft();}
if (pos > 90) {lookRight();}
}
int readPing() {
delay(70);
unsigned int uS = sonar.ping();
int cm = uS/US_ROUNDTRIP_CM;
return cm;
}

void checkForward() {
if (motorSet=="FORWARD")
{leftMotor.run(FORWARD);
rightMotor.run(FORWARD); }
}
void checkBa ckward() {
if (motorSet=="BACKWARD")
{leftMotor.run(BACKWARD);

57
rightMotor.run(BACKWARD); }
}
void moveStop()
{leftMotor.run(RELEASE);
rightMotor.run(RELEASE);}
void moveForward()
{ motorSet = "FORWARD";
leftMotor.run(FORWARD);
rightMotor.run(FOR WARD);
for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2)
{ leftMotor.setSpeed(speedSet+MOTORS_CALIBRATION_OFFSET);
rightMotor.setSpeed(speedSet);
delay(5); }
}

void moveBackward()
{ motorSet = "BACKWARD";
leftMotor.run(BACKWARD);
rightMotor. run(BACKWARD);
for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2)
{ leftMotor.setSpeed(speedSet+MOTORS_CALIBRATION_OFFSET);
rightMotor.setSpeed(speedSet);
delay(5); }
}
void turnRight()
{ motorSet = "RIGHT";
leftMotor.run(FORWARD);
rightMotor. run(BACKWARD);
delay(400);
motorSet = "FORWARD";
leftMotor.run(FORWARD);
rightMotor.run(FORWARD); }
void turnLeft()
{ motorSet = "LEFT";
leftMotor.run(BACKWARD);

58
rightMotor.run(FORWARD);
delay(400);
motorSet = "FORWARD";
leftMotor.run(FORWARD);
rightMotor.run(FORWARD);
}
void lookRight()
{rightMotor.run(BACKWARD);
delay(400);
rightMotor.run(FORWARD);}
void lookLeft()
{leftMotor.run(BACKWARD);
delay(400);
leftMotor.run(FORWARD);} ”

CD / DVD
Autorul atașează în această anexă obl igatorie, versiunea electronică a aplicației, a acestei
lucrări, precum și prezentarea finală a tezei.

59

Similar Posts