PROGRAMUL DE STUDIU AUTOMATICĂ ȘI INFORMATICĂ [625489]
UNIVERSITATEA DIN ORADEA
FACULTATEA DE INGINERIE ELECTRICĂ ȘI TEHNOLOGIA
INFORMAȚIEI
PROGRAMUL DE STUDIU AUTOMATICĂ ȘI INFORMATICĂ
APLICATĂ
FORMA DE ÎNVĂȚĂMÂNT ZI
Proiect de diplomă
COORDONATOR ȘTIINȚIFIC
CONF. DR. ING. BARABA S TIBERIU
ABSOLVENT: [anonimizat] __________________________________________________
TEMA_________
Proiectul de Finalizare a studiilor a student: [anonimizat]________________________
1). Tema proiectului de finalizare a studiilor:___________________________ ______________
_______________________________________________________________________________
______________________ _________________________________________________________
2). Termenul pentru predarea proiectului ____________________________________________
3). Elemente inițiale pentru elaborarea proiectului de finalizare a studiilor ________________
_________________ _______________________________________________________________
________________________________________________________________________________
4). Conținutul proiectului de finalizare a studiilor _____________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________ ________________________
________________________________________________________________________________
5). Material grafic:________________________________________________________________
_________________________________________________________________ _______________
________________________________________________________________________________
6). Locul de documentare pentru elaborarea proiectului :
________________________________________________________________________________
______________________ __________________________________________________________
7). Data emiterii temei_____________________________________________________________
Coordonator științific ,
UNIVERSITATEA DIN ORADEA
FACULTATEA DE INGINERIE ELECTRICĂ ȘI TEHNOLOGIA
INFORMAȚIEI
PROGRAMUL DE STUDIU AUTOMATICĂ ȘI INFORMATICĂ
APLICATĂ
FORMA DE ÎNVĂȚĂMÂNT ZI
Comanda prin control ler PS2 a
unui robot mobil dotat cu un braț
robotic
COORDONATOR ȘTIINȚIFIC
CONF. DR. ING. BARABA S TIBERIU
ABSOLVENT: [anonimizat]
1
Cuprins
Introducere ………………………….. ………………………….. ………………………….. …………… 2
Capitolul 1 Roboți industriali ………………………….. ………………………….. …………….. 3
1.1. Istoria roboților industriali ………………………….. ………………………….. ………………………….. …….. 3
1.2. Clasificarea roboților industriali ………………………….. ………………………….. …………………………. 5
1.3.Sisteme de acționare a roboților industrial ………………………….. ………………………….. ………………… 9
Capitolul 2 Roboți mobili ………………………….. ………………………….. …………………. 12
2.1.Descrierea roboților mobili ………………………….. ………………………….. ………………………….. ………… 12
2.2.Clasificarea roboților mobili ………………………….. ………………………….. ………………………….. ………. 12
2.3. Aplica ții ale roboților mobili ………………………….. ………………………….. ………………………….. ……… 18
Capitolul 3 Prezentarea robotului ………………………….. ………………………….. …….. 21
3.1.Descrierea robotului ………………………….. ………………………….. ………………………….. ………………….. 21
3.2.Structura robotului ………………………….. ………………………….. ………………………….. ……………………. 22
3.2.1. Structura șasiului ………………………….. ………………………….. ………………………….. ……………….. 22
3.2.2. Structura brațului robot ………………………….. ………………………….. ………………………….. ……… 27
Capitolul 4 Proiectarea hardware a sistemului de comandă ……………………….. 31
4.1.Alegerea sistemului de comandă ………………………….. ………………………….. ………………………….. …. 31
4.2.Alegerea sistemului de comunicare ………………………….. ………………………….. …………………………. 33
Capitolul 5 Microcontrolerul Arduino Uno ………………………….. …………………… 36
5.1.Prezentarea microcontrolerului Arduino UNO ………………………….. ………………………….. ……….. 36
5.2. Specificațiile tehnice ale plăcii Arduino Uno ………………………….. ………………………….. …………… 37
5.3. Funcțiile generale ale pinilor ………………………….. ………………………….. ………………………….. ……… 37
5.4.Arduino IDE ………………………….. ………………………….. ………………………….. ………………………….. …. 41
Capitolul 6 Implementarea Programului de comandă ………………………….. …….45
Concluzii ………………………….. ………………………….. ………………………….. ……………… 56
Bibliografie ………………………….. ………………………….. ………………………….. …………. 57
2
Introducere
Această lucrare își propune prezentarea modului de proiectare și realizare a unui robot
mobil dotat cu un braț robotic și comandat printr -un controller compatibil cu PS2.
Pornind de la premisa anterior prezentată,părțile care intră în componența robotului au
fost alese ca ata re, după cum urmează: un șasiu de tip tanc cu șenile,pentru a avea un robot
capabil să se deplaseze la comanda operatorului, un braț robotic cu un gripper ca efector final,
prin intermediul căruia robotul să poată să execute diverse sarcini,un sistem pentr u alimentarea
motoarelor aferente șasiului și brațului robot și nu în ultimul rând, un sistem de comandă prin
conexiune WI -FI și controller compatibil cu PS2.
Având deja toate componentele robotului alese,am început asamblarea acestora și
realizarea conexi unilor electrice între acestea.La finalizarea contrucției robotului și a legăturilor
electrice între componente, se identifică fiecare motor la ce pin al plăcii este conectat pentru o
mai ușoară realizare a codului sursă pentru acesta.
Pentru realizarea programului,munca se organizează pe structuri (inițializare
motoare,comunicare cu controllerul PS2 și alte structuri de acest gen). Pentru depanarea codului
am rulat treptat secvențele de cod pentru a mă asigura că fiecare structură în parte est e
functională și doar apoi am rulat tot programul ca atare,în vederea evitării unor defecțiuni
datorită unor inițializări proaste sau a altor factori necunoscuți.
Prima parte a lucrării face o scurtă descriere și clasificare pentru evidențierea tipologiei
de robot folosită,robot mobil dotat cu un braț robot.
A doua parte a lucrării descrie elementele folosite, de la partea mecanică până la
microcontrollerul folosit pentru comanda robotului,dar și modul în care acestea au fost alese. În
finalul acestei părți ,este prezentată structura și descrierea programului de comandă.
3
Capitolul 1 Roboți industriali
1.1. Istoria roboților industriali
Termenul de robot a fost folosit pentru prima dată intr -o lucrare de tip science -fiction scrisă de
Josef și Karel Capek în urmă cu aproape 100 de ani.Originea cuvântului este slavă și se traduce
prin muncă silnică sau clacă.
Acest temen este folosit pentru descrierea unui operator ma șină,mecanic sau virtual. Un robot
este compus din elemente de acționare mecanică,actuatori,senzori și un mecanism de direcționare.
Mișcările posibile pe durata timpului de funcționare sunt date de mecanica robotului. Senzorii si
actuatorii facilitează interacțiunea robotului cu mediul prin prelucrarea semnalelor primite prin
intermediul acestora.Mecanismul de direcționare asigură îndeplinirea sarcinilor cu succes,prin
evaluarea datelor primite de la senzori. Totodată acesta planifică succesiunea mișcărilor ce
trebuiesc realizate și reglează motoarele. Roboții cu o formă asemăn ătoare ființelor umane se
numesc androizi.Termenul de robot se mai folosește și pentru descrierea unui program software
care îndeplinește în mod automat funcșii sau operațiuni.
Deși pare ireal,primul robot a fost construit în anul 350 î.Hr. de către un ma tematician grec
cu numele de Archytas din Tarent.Dispozitivul acestuia semăna cu o pasăre și era defapt un
mecanism propulsat cu abur.Acesta și -a numit invenția ”Porumbelul”,aceasta având să fie studiată
de oamenii de știință în secolele următoare și era considerată ca fiind prototipul aparatului de zbor.
Fig 1.1 .1 Schema porumbelului lui Achytas , [1]
4
Următoarea invenție memorabilă a fost făcută în anul 1495 de către Leonardo da
Vinci.Omul de știință italian a reușit să conceapă o mașinărie asemănătoare unui cavaler în armură
care reda mișcările naturale ale omului.
Fig 1.1.2 Replică a cavelerului în armură , [2]
La începutul secolului XIX, Joseph Jacquard a contruit primul model de război de țesut
automat. Sistemul repeta un model,urmări nd perforațiile executate pe cartele de hârtie.În anul
1822, matematicianul Charles Babbage a schițat primele idei pentru realizarea unui ”motor
analitic”, care avea încorporat un bloc de memorare pe bază de cartele perforate, inspirate din
descoperirile l ui Joseph Jacquard. Deți acest model de ”motor analitic” nu a fost construit, ideile
prezentate de Babbage în cadrul lucrărilor sale bazate pe acesta constituie baza sistemului binar.Un
alt moment important a fost construirea și testarea unei bărcuțe telec omandate de către Nikola
Tesla în anul 1898.
În anul 1940,scriitorul Isaac Asimov introduce în literatură termenul de ”robotică” și
formulează trei legi pe care orice robot trebuie să le respecte:
5
• Robotul nu poate face rău unei ființe umane și nici nu -i poate permite omului să se
rănească singur
• Robotul trebuie să se supună ordinelor primite de la oameni,excepție făcând
ordinele care pot intra în conflict cu prima lege
• Robotul trebuie să -și protejeze propria existență atâta vreme cât acest lucru nu
contrav ine primei legi.
Unul dintre cele mai importante momente în evoluția robotici de până acum este
dezvoltarea și activarea unui robot umanoid, de către compania Hanson Robotics din Hong
Kong,acest robot umanoid poartă numele de Sophia și a fost proiectat pe ntru a învăța și a se adapta
la comportamentul uman pentru a lucra cu oamenii. Ea a devenit cetățean al Arabiei Saudite în
Octombrie 2017,astfel devenind primul robot care a obținut titlul de cetățean. Potrivit
surselor,Sophia a fost activată în 19 aprilie 2015.
Fig 1.1.3. Robotul umanoid Sophia , [3]
1.2.Clasificarea roboților industriali
Principalele criterii pentru clasificarea roboților industriali:
• După forma mișcării,roboții industriali sunt:
6
1.Robot cartezian – este robotul care poate să realizeze operații intr -un spațiu definit
de coordonate carteziene
Fig 1.2.1. Schema de principiu a unui robot cartezian , [4]
2.Robot cilindric – este robotul care opereaza intr -un spatiu definit in coordonate
cilindrice
Fig 1.2.2. Schema de principiu a unui robot cilindric , [5]
7
3.Robot sferic – este robotul al cărui braț operează intr -un spațiu dat de coordonate
polare sau sferice
Fig 1.2.3. Schema de principiu a unui robot sferic , [6]
4. Prosthetic robot – un manipulator cu un b raț articulat
5.Roboți în alte tipuri de coordonate – aceștia se definesc în mod corespunzător
• După modul de învățare și datele de intrare,roboții industriali se clasifică în:
1.Manipulator manual -acționat direct de operator
8
Fig 1.2.4. Manipulatorul manual, [7]
2.Robot secvențial – are un număr de pași ce funcționează pe baza unei proceduri
predeterminate și pot să fie:
-roboți secvențiali fixi -informația predeterminată nu poate fi schimbată in
mod facil
-roboți secvențiali variabili -informația predeterminată poate să fie
schimbată ușor
3.Robot repetitor -acest robot e învățat de operator o procedură pe care apoi poate
să o repete de câte ori este nevoie
4.Robot cu control numeric -acesta execută operații în funcție de informa țiile
numerice primitedespre poziții,condiții și succesiunea de operații
5.Robot inteligent -acesta își decide comportamentul pe baza informațiilor recepționate de
la senzorii pe care îi are la dispoziție și prin posibilitățile sale de recunoaștere.
• După nu mărul de grade de libertate,roboții industriali pot fi:
1.Robot cu un numar mic de grade de mobilitate (2-3)
2.Robot cu un numar mediu de grade de mobilitate (4-5)
3.Robot cu un numar mare de grade de mobilitate (6-7)
9
• După metoda de control,roboții industr iali pot fi:
1.Manipulatoare simple:dispun în general de 2 -3 grade de libertate
2.Roboți programabili:au în general mai mult de 3 grade de libertate,indepenți de
mediu,fără senzori și lucrează în buclă ănchisă
3.Roboți inteligenți:sunt dotați cu senzori,lu crează în buclă închisă
• După tipul de comandă,roboții industriali se împart în 4 categorii:
1.Tip A,cu servocomandă și conturare
2.Tip B,cu servocomandă punct cu punct
3.Tip C,fără servocomandă,programabil
4.Tip D,neprogramabil,cu dispozitive de transfer “pick and place”
• După tipul de comandă și performanța inteligenței artificiale,roboții industriali pot
să fie:
1.Roboți industriali de generația 1 -au la bază un program flexibil,prestabilit în etapa
de programare și care nu poate să fie schimbat î n timpul execuției
2. Roboți industriali de generația 2 -programul flexibil de la baza acestuia poate să
fie modificat în măsură restrânsă,în urma unor reacții specifice ale mediului
3. Roboți industriali de generația 3 – posedă însușirea de a -și adapta sing uri, cu
ajutorul unor dispozitive logice, în măsură restrânsă propriul program la condițiile
concrete ale mediului ambiant, în vederea optimizării operațiilor pe care le execută
• După posibilitatea acestora de a se deplasa,roboții pot fi:
1.Roboți statici -folosiți în diverse fabrici și laboratoare (în general brațe robot)
2.Roboți mobili -acei roboți care se pot deplasa într -un anumit mediu fără
intervenția omului
1.3.Sisteme de acționare a roboților industrial
Sistemul de acționare al unui robot industrial este compus din totalitatea surselor de energie
ale acestuia cât și elementele de control direct dedicate lor.Astfel, prin sistem de acționare se
înțelege ansamblul de motoare si convertoare prin intermediul c ărora se obține energia mecanică
10
necesară deplasării robotului precum și dispozitivele suplimentare ce ajută la controlul acestui
transfer energetic.
Un astfel de sistem va cuprinde :
1)o sursa primara de energie
2)un sistem de conversie al energiei prima re în energie mecanica
3)un sistem pentru transmisia energiei mecanice la articulatia corespunzatoare
4)un control al parametrilor caracteristici ale acestor sisteme
Fig 1.3.1.Structura generala a unui sistem de actionare este prezentata în figura
11
Sistemele de acționare se folosesc în general de trei surse primare de energie:
electrică,pneumatică și hidraulică.Cele mai întâlnite sisteme de acționare în cazul roboților
industriali sunt cele pneumatice,datorită caracteristicilor specifice pe ca re acestea le oferă,în ceea
ce privește raportul dintre forța exercitată la dispozitivul motor și greutatea acestuia. De
asemenea,o arie largă o au acționările electrice,utilizate în special datorită facilităților de control
pe care le asigură.Acționarile pneumatice ocupă o pondere mai redusă și se folosesc în general în
ssitemele de comandă a dispozitivelor auxiliare.
12
Capitolul 2 Roboți mobili
2.1.Descrierea roboților mobili
Termenul de robot mobil este folosit în descrierea unui robot capabil de locomo ție. Acești
roboți au posibilitatea de a naviga prin mediul căruia sunt destinați și nu au un punct fix de care să
fie dependenți.Roboții mobili au ajuns să fie una din principalele zone de cercetare datorită
aplicațiilor lor în diferite domenii cum ar fi medicina,explorarea și nu în ultimul rând în domeniul
militar.
2.2.Clasificarea roboților mobili
Există diferite tipuri de roboți mobili,în funcție de domeniul destinat utilizării lor.
În funcție de mediul de lucru,roboții mobili pot să fie:
– roboți tereștri, care au ca mediu de lucru solul și pot să fie folosiți în transporturi, cercetări,
domeniul medical sau domeniul militar;
Fig. 2.2.1. Robot terestru , [9]
– roboți subacvat ici, care au ca mediu de lucru masele de apă, sunt folositi la cercetare;
13
Fig. 2.2.2. Robot subacvatic , [10]
– roboți aerieni, care au ca mediu de lucru spațiul aerian, sunt folosiți la misiuni militare sau
misiuni spațiale.
Fig. 2.2.3. Robot aerian , [11]
În funcție de modul prin care se deplasează,roboții mobili pot fi:
14
– roboți care se deplaseaza cu ajutorul roților sau șenilelor;
Fig. 2.2.4. Robo t care se deplasează cu ajutorul roților , [12]
– roboți pășitori: bipezi,patrupezi,hexap ozi;
Fig. 2.2.4. Robot pășitor hexaped, [12]
– roboți de forma sferică, aceștia se deplasează prin rostogolire;
15
Fig. 2.2.5. Diferite modele de roboți rostogolitori, [13]
– roboți săritori, imită mersul animalelor;
Fig. 2.2.6. Robot săritor, [14]
– roboți târâtori, sunt asemănători șerpilor;
16
Fig. 2.2.7. Robot târâtor, [15]
In functie de dimensiunile robotului sunt:
– macro -roboti;
Fig. 2.2.8. Macro robot, [16]
– micro -roboti;
17
Fig. 2.2.8. Micro robot, [1 7]
– nano -roboți;
Fig. 2.2.9. Nano -roboți, [18]
În funcție de gradul de automatizare,roboții mobili pot fi:
– roboți mobili autonomi,capabili să navigheze într -un mediu necunoscut fără a
folosi echipamente de ghidaj
18
– roboți mobili autonomi ghidați,capabili să navigheze într=un mediu pe o rută
predeterminată
– roboți mobili controlați de la distanță,capabili să se deplaseze prin mediu doar la
comanda unui utilizator
2.3. Aplica ții ale roboților mobili
Roboții mobili sunt folosiți în diverse domenii pentru gradul ridicat de libert ate și
mobilitate pe care îl posedă, dar și pentru rezistența la factorii de mediu.Aceștia au numeroase
aplicații, de la roboți militari până la simpli roboți de casă.
Exemple de roboți mobili și aplicațiile acestora:
–DRDO Daksh este un robot militar comandat de la distanță care a fost proiectat pentru
dezamorsarea și detonarea în siguranță a pachetelor explozive. Acesta e complet automatizat,poate
să urce și să coboare scări,coridoare înguste și chiar să navigheze în medii toxice. Este dotat s i cu
un braț robotic cu ajutorul căruia poate ridica pachetele suspecte și să le scaneze folosind un aparat
portabil cu raze X. Comanda acestuia la distanță se face pe o rază de 500 de metri,indiferent de
terenul sau clădirile din zonă.
Fig 2.3.1. Robotul DRDO Daksh , [19]
19
-General Atomics MQ -1 Predator este o dronă controlată de la distanță folosită de către Air Force
și de CIA. Proiectată inițial în ani 90 ca o dronă de survolare și observare. Această dronă a fost
modificată ulterior să poată să la nseze 2 focoase de tip AGM -114 Hellfiremissiles și alte tipuri,
fiind folosită în mai multe misiuni militare de acest gen,de la punerea ei în folosință în anul 1995.
Fig 2.3.2. Drona aeriană MQ -1 Predator , [20]
20
-Roomba este o serie de roboți de tip aspiratoare casnice autonome produși de iRobot. Introduși în
Septemrie 2002,aceștia veneau dotați cu seturi de senzori ce le permitea să navigheze pe podea și
astfel să curețe toată casa. Spre exemplu,aceștia aveau senzori pentru detectarea obstacolelo r, a
petelor de murdarie de pe podea sau a diferențelor de nivel,pentru a nu cădea pe scări. Deplasarea
era realizată cu ajutorul a două roți laterale care funcționau independent,astfel putând să realizeze
întoarceri de 360° pe loc.
Fig 2.3.3. Deplasarea robotului casnic Roomba , [21]
21
Capitolul 3 Prezentarea robotului
3.1.Descrierea robotului
Robotul prezentat în cadrul acestei lucrări este un robot mobil alcătuit dintr -un șasiu cu
șenile și un robot industrial cu 6 grade de mobilitat e. În cadrul lucrării se va face referire la acest
robot sub numele de MR -Handler(Mobile Robot Handler).
Fig. 3.1.1. Robotul MR -Handler asamblat
22
Fig. 3.1.2. Partea de comandă a robotului MR -Handler
3.2.Structura robotului
Robotului MR -Handler este alcătuit din 2 structuri care pot să funcționeze independent,
șasiul și brațul robot. Aceste structuri conferă robotului mobilitatea și posibilitatea efectuării
unor operații complexe prin intermediul efectorului final al brațului robot.
3.2.1. Structura șasiului
Șasiul are o structură simplă, fiind alcătuit din 7 componente,2 laterale și 5 elem ente de
legătură care îi conferă rigiditatea. Deplasarea se realizează prin intermediul șenilelor care sunt
acționate de către 2 motoare de curent continuu situate în partea din spate a șasiului.
23
Fig. 3.2.1.1. Vederea frontală a șasiului
Părțile laterale au orificii destinate prinderii patinelor și a roților dințate cu ajutorul cărora
se acționează șenilele.Roțile dințate sunt acționate prin intermediul unor motoare de curent
continuu.
Părțile de legatură a șasiului au diferite găuri folosite pentru prinderea unor module
auxiliare cum ar fi un braț robot, o placă cu microcontroler, leduri, senzori, o sursă de alimentare
sau alte module de acest fel.
24
Fig. 3.2.1.2. Vederea laterală a șasiului
După cum se poate observa în figura anterioară, pentru fiecare șenilă avem o roată dințată
de acționare și 5 patine,dintre care una are și rolul de a întinde șenila,pentru ajustări finale.
Fig. 3.2.1.3. Modul de ajustare a lungimii șenilelor
Șenilele se pot desface pentru a fi scurtate,astfel fiind posibilă ajustarea lungimii
lor pentru diferite modele de șasiu. Acestea sunt formate din mici module de plastic,prinse între
25
ele prin intermediul unor tije subțiri de metal. După cum se vede și în figura anterioară,tijele
metalice au un capăt cu striații,astfel că acestea trebuie scoase într -un anumit sens.
Fig. 3.2.1.4. Vederea de jos a șasiulu i
26
Fig. 3.2.1. 4. Motoarele folosite pentru acționarea șenilelor
În figura anterioară putem observa motoarele folosite pentru acționarea șenilelor. Acestea
sunt motoare de curent continuu,alimentate la 9V și dotate cu senzor Hall. Parametrii specifici
acestora sunt:
• Viteză: 150±10% rpm
• Consum fără sarcină: 200mA (Max)
• Consum standard: 4500mA(max)
• Cuplu standard: 9.5kg/cm
• Zgomot: 56dB
• Tensiune de alimentare: 9V
• Encoder:2 impulsuri/circuit
27
Fig. 3.2.1. 5. Alimentarea și comanda motoarelor șasiului
3.2.2. Structura brațului robo t
Brațul robot face parte din grupa roboților industriali cu 6 grade de libertate(RRRRRR),
având ca efector final un gripper. Acest braț robot este actionat electric prin intermediul unor
motoare MG996r servo comandate prin microcontrollerul Arduino Uno și a limentate de la baterii
prin intermediul unui shield compatibil cu placa Arduino Uno .
28
Fig. 3.2.2.1. Vederea laterală a brațului robot
În figura anterioară se poate observa structura brațului robot, pârghiile mecanice acționate
de către motoare pentru a putea realiza mișcările brațului robot și efectorul final, un gripper.
Brațul robot are o structură simplă, dar practică.
29
Fig. 3.2.2.2. Gripperul brațului robot
Gripperul este și el acționat prin intermediul unui motor MG996r servo . Acest gripper este
făcut integral din metal și prezintă striații pentru a face prinderea obiectelor mai ușoară și pentru a
nu permite mișcarea lor,după ce acestea sunt fixate în grippe r.
Fig. 3.2.2.3. Servo motorul MG996r și accesoriile acestuia
30
Fig. 3.2.2.4. Alimentarea și comanda servomotorului MG996r servo
În cadrul pozei anterioare se poate observa conectorul utilizat pentru alimentarea și
comanda motoarelor MG996r servo : cablul maro corespunde sensului -, cablul roșu corespunde
sensului +, iar cablul portocaliu este folosit pentru comanda motorului prin Pu lse Width
Modulation (PWM).
31
Capitolul 4 Proiectarea hardware a sistemului de comandă
Pe parcursul acestui capitol se vor prezenta alegerile făcute pentru dezvoltarea sistemului
de comandă al robotului MR -Handler, ca robot mobil comandat de la distanță.
4.1.Alegerea sistemului de comandă
Roboții mobili pot fi comandați în diferite moduri,în funcție de mediul și scopul acestora,
fiind comandați fie prin programe prestabilite fie comandați de la distanță de un operator.
În cazul actual, sistemul de comandă al robotului trebuie să permită comanda de la distanță,
astfel avem următoarele posibilități:
-Roboți controlați prin unde de radiofrecvență se folosesc de un emitor și un receptor prin
intermediul cărora se realizează comunicarea în timp real cu robotul. Dezavantajul major pe care
îl are această metodă e riscul ca semnalul recepționat de robot să fie perturbat de aparatele electrice
din preajmă care funcțio nează la o frecvență asemănătoare cu cea pe care funcționează robotul.
Robo ții controlați prin Bluetooth sunt utilizați în general în scopuri educaționale cu ajutorul
plăcilor de dezvoltare Arduino și a modulelor Bluetooth dedicate acestora.
4.1.1. Pla ca de dezvoltare Arduino UNO , [22]
Robo ții controlați prin Wi -Fi au tot un scop educativ, dar pot fi găsiți și în industrie .Pentru
scopuri educative, plăcuța de dezvoltare Raspberry -Pi este foarte des întâlnită .
32
Raspberry Pi este o serie de SBC ( Single -board computer ) de dimensiuni relativ
mici,asemănătoare unui card de credit. Este inspirat de BBC Micro și produs în UK de
către Raspberry Pi Foundation .Compania a pornit pe ideea de a produce un microcalculator la un
preț accesibil care să poată să fie folosit de către oamenii din țările defavorizate.
Wikipedia afirmă faptul c ă: ‘Raspberry Pi este mai lent decât un laptop sau PC, dar care
poate oferi majoritatea aplicațiilor acestora precum conectare la internet , procesare de text, redare
de conținut video /audio , jocuri video , la un nivel de consum redus de energie. În plus, Raspberry
Pi are o caracteristică specială pe care computerele nu o folosesc: port generic de
intrare/ieșire (General -Purpose Input/Output)(GPIO). Acesta oferă posibilitatea de a conect a
diverse componente electronice specifice sistemelor înglobate : senzori , butoane, ecran LCD ,
relee, și crearea de noi proiecte electronice.’
4.1.2. Placa de dezvoltare Raspberry Pi 3 Model A+ , [23]
Specificațiile tehnice ale plăcii Raspberry Pi 3 Model A+ :
• Procesor Broadcom BCM2837B0, Cortex -A53 64 -bit SoC @ 1.4 GHz
• Memorie SDRAM 512MB LPDDR2
• Wireless LAN de 2.4GHz/5GHz 802.11 b/g/n
• Bluetooth Low Eenergy 4.2 (BLE)
33
• HDMI in marime completa, port afisaj MIPI DSI, port camera MIPI CSI
• Jack stereo audio/video compozit de 4 poli
• Slot pentru card MicroSD pentru sistemul de operare si stocarea datelor
• Alimentare DC de 5V, 2.5A prin micro USB sau GPIO , [24]
Din punct de vedere tehnic placa de dezvoltare Raspberry Pi , prezentată anterior este
superioară față de placa de dezvoltare Arduino Uno (care va fi prezentată în capitolul care
urmează) , totuși, în ciuda acestui fapt, pentru comanda robotului MR -Handler este suficientă și
placa de dezvoltare Arduino U no, dată fiind diferența mare de preț dintre acestea.
4.2.Alegerea sistemului de comunicare
Sistemul de comunicare între controller și placa Arduino Uno a fost realizat pornind de la
ideea de a avea un robot mobil, astfel, pentru a obține un grad cât mai mare de mobilitate, nu am
mai luat în calcul modalități le de transmisie de date prin fir, fie ele de tip serial sau Ethernet ,
rămânând u obțiunea de a folosi un modul de transmisie a datelor prin WI -FI.
Fig. 4.2.1. Modulul de comunicare prin WI -FI și controllerul compatibil cu PS2
Modulul pe care l -am ales pentru transmisiile de date către controllerul compatibil cu PS2
lucrează la o frecvență de 2.4. Ghz, fiind o soluție simplă dar eficientă pentru a comanda robotul
MR-Handler.
34
Fig. 4.2.2. Poziționarea pe placă a receptorului controllerului PS2
4.3.Alegerea modulului de alimentare motoare
Ținând cont de faptul că robotul este comandat prin intermediul unei plăci de dezvoltare
Arduino Uno, modulul de alimentare al motoarelor trebuie ales corespunzător acesteia și în funcție
de numărul de motoare comandate și tensiunea la care acestea sunt al imentate. Prin urmare, avem
nevoie de un modul de alimentare care poate să alimenteze 2 motoare de curent continuu la 9V cu
senzor Hall și 8 servomotoare MG996r . Luând toate acestea în considerare, am ales un shield
produs de Doit.am care are toate caracte risticile necesare.
35
Fig. 4.3.1. Modulul de alimentare , [25]
36
Capitolul 5 Microcontrolerul Arduino Uno
5.1.Prezentarea microcontrolerului Arduino UNO
Arduino UNO este o un microcontroler open -source care are la baza microchipul
ATmega328P dezvoltat de Arduino.cc. Placa vine echipată cu mai multe seturi de pini, analogici
și digital i pentru intrări și ieșiri(I/O),cu un total de 14 pini digitali și 6 pini analogici,putând fi
programată în Arduino IDE prin intermediul unui cablu USB tip B.Această placă de dezvolare se
poate interfata cu multiple plăci de extensie și alte circuite. Plac a se alimentează fie prin
intermediul cablului USB fie de la o baterie externă de 9 volți.
Cuvântul uno înseamnă unu în italiană și a fost ales pentru a marca lansarea software -ului
Arduino. Placa Uno este prima din seria plăcilor USB Arduino și împreună cu versiunea 1.0 a
Arduino IDE sunt versiunile de referință ale Arduino. Cipul ATmega328 de pe această placă vine
preprogramat cu un bootloader care permite upload -ul unei noi versiuni de cod fără a fi necesară
utilizarea unui hardware de programare extern .
Placa Uno comunică prin protocolul STK500, spre deosebire de alte plăci care folosesc un
cip FTDI USB -serial, acesta folosește Atmega16U2 programat ca un convertor USB -serial.
5.1.1. Modelul preproducție al Arduino UNO , [26]
Proiectul Arduino a luat naștere la Interaction Design Institute Ivrea (IDII) în Ivrea,Italia.
La vremea respectivă studenții foloseau un microcontroller BASIC Stamp care costa aproximativ
37
100 de dolari,sumă considerabilă pentru mulți dintre studenți. În 2003 Hernando Barragan a creat
platforma de dezvoltare Wiring ca teză de masterat. Scopul proiectului a fost de a dezvolta
ustensile uș or de utilizat și ieftine pentru crearea proiectelor digitale. Platforma avea o placă de
circuite imprimate(PCB) cu un microcontroller ATmega168 și un IDE bazat pe procesarea și
utilizarea funcțiilor din librării pentru a fi mai ușor de programat.
În 2003, Massimo Banzi și David Mellis,alți studenți la IDII au dezvoltat o versiune bazată
pe placa ATmega8 pentru platforma Wiring.Ulterior platforma a fost redenumită Arduino. Primele
plăci arduino foloseau un cip driver FTDI USB -serial și un ATmega168. Spre de osebire de toate
plăcile precedente, Unoavea un microcontroller ATmega328 și un ATmega16U2 programat ca un
convertor USB -serial.
5.2. Specificațiile tehnice ale plăcii Arduino Uno
• Microcontroler: ATmega328
• Tensiune de lucru: 5V
• Tensiune de intrare (recom andat): 7 -12V
• Tensiune de intrare (limita): 6-20V
• Pini digitali: 14 (6 ieșiri PWM)
• 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 , [27]
5.3. Funcțiile generale ale pinilor
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().
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.
38
• 0 (serial) RX – pin serial, utilizat în special pentru recepția (intrare – Rx) datelor seriale
asincrone ( asynchronous serial communication ) Protocolul serial asincron este o me todă
foarte răspândită în electronică pentru a trimite și recepționa date între dispozitive. Acest
protocol este implementat în dispozitiv numit UART (Universal Asynch ronous
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ă, 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. Suplimentar, toți
pinii marcați cu semnul ~ pot fi folosiți și pentru PWM (pulse w ith 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 )
• 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 control aț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 pin se folosește pentru MISO /SOMI – Master Input, Slave
Output (output d in 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 pinul este setat pe valoarea HIGH este pornit, când are valoarea LOW este
oprit.
• 14 (GND ) – împământare. Aici se pune negativul.
39
• 15 (AREF ) – Analog REFference pin – este utilizat pentru tensiunea de referință pentru
intrările analogice. Se poate controla folosind funcția analogReference() .
• 16 (SDA ) – comunicare I2S
• 17 (SCL) – comunicare I2S
În partea de jos.
Există o serie de 6 pini pentru semnal analogic, numerotați de la A0 la A5.
Fiecare pin poate furniza o rezoluție de 10 biți (adică maxim 1024 de valori diferite). În mod
implicit, tensiune se măsoară de la 0 la 5 volți, deși este posibil să se schimbe limita superioară a
intervalului folosind pinul 15 AREF și funcția analogRefer ence() . De asemenea, și aici anumiți
pini au funcții suplimentare:
1. A0 standard analog pin
2. A1 standard analog pin
3. A2 standard analog pin
4. A3 standard analog pin
5. 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.
6. 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 .
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ântare/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.
40
• 6 RESET – se poate seta acest pin pe LOW pentru a reseta controlerul de la Arduino. Este
de obicei folosit de sh ield-urile care au un buton de reset și care anulează de obicei butonul
de reset de pe placa Arduino.
• 7 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)
• 8 pin neconectat, este rezervat pentru utilizări ulterioare (la reviziile următoare ale plăcii
probabil).
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). Folosind librăria SoftwareSerial .
Se poate face comunicații seriale fo losind oricare din pinii digitali.
Pentru comunicarea I2C (TWI ) este inclusă o librărie Wire . Pentru comunicarea SPI se poate
folosi librăria SPI .
După cum vedeți în imagine,in partea dreapta, 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, MI SO, SCK, VCC, GND, și pinul RESET ). [28]
41
5.3.1. Pinii plăcii Arduino Uno
5.4.Arduino IDE
Mediul de programare Arduino IDE este destinat programării și testării software -ului
destinat plăcilor Arduino. Acesta se poate descărca gratuit de pe site-ul oficial Arduino, fiind foarte
ușor de utilizat.
42
5.4.1. Fereastra de start a Arduino IDE
Programul are și exemple preprogramate,pentru verificarea plăcii sau pentru o aprofundare
cât mai ușoară a comenzilor din cadrul Arduino IDE.Aceste exemple variază în complexitate și
sunt foarte utile pentru orice persoană care începe să programeze în Arduino IDE.
43
5.4.2. Fereastra de selectare a exemplelor
Pentru a se reuși transferul de date între calculator și placa arduino și pentru a ne asigura
că programul va rula corespunzător, trebuie să selectăm tipul de placă cu care lucrăm și portul prin
intermediul căruia se face transferul către placa noastră.
44
5.4.3. Selectarea plăcii utilizate
Înainte de a încărca codul pe placă,acesta trebuie verifi cat pentru erori de compilare și
apoi se poate încarca pe placă.
45
Capitolul 6 Implementarea Programului de comandă
Pe parcursul acestui capitol se dorește prezentarea programului de comandă și explicarea
funcțiilor folosite în cadrul acestuia.
#include <Servo.h>
#include <Wire.h>
#include <PS2X_lib.h> // pentru versiunea v1.6
#include "PWMServoDriver.h"
//se includ librăriile folosite în cadrul programului de față
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
//în funcție de producătorul servomotoarelor,semnalul PWM pentru minim și maxim poate să
//varieze,astfel că acesta trebuie adaptat după caz și definite ca atare în următoa rele structuri
#define SERVOMIN 125
#define SERVOMAX 625
#define SERVOMID 375
#define SERVOMIN_3 240
#define SERVOMAX_3 510
#define SERVOMIN_12 300
#define SERVOMAX_12 450
#define SERVOMIN_7 280
#define SERVOMAX_7 470
// în secvența de cod ce urmează se vo r definii diferite variabile pe care le vom utiliza pe
//parcursul programului
uint16_t pulselen_0=SERVOMID;
float pulselen_1=SERVOMID;
float pulselen_2=SERVOMID;
uint16_t pulselen_3=SERVOMID;
uint16_t pulselen_4=SERVOMID;
uint16_t pulselen_5=SERVOMID;
uint16_t pulselen_6=SERVOMID;
uint16_t pulselen_7=SERVOMID;
uint16_t angle=0;
float angle1=0;
bool pt0=0;
bool pt1=0;
bool pt2=0;
bool pt3=0;
bool pt4=0;
bool pt5=0;
bool pt6=0;
// se declară o funcție prin intermediul căreia se inițializeaza semnalul PWM pentru servomotorul
//”n”
void setServoPulse(uint8_t n, double pulse) {
double pulselength;
46
pulselength = 1000000; // 1,000,000 unități pentru o second ă
pulselength /= 60; // 60 Hz
Serial.print(pulselength); Serial.println(" microsecu nde pentru o perio adă");
pulselength /= 4096; // 12 bits pentru o rotație
Serial.print(pulselength); Serial.println(" microsecunde per bit");
pulse *= 1000;
pulse /= pulselength;
Serial.println(pulse);
pwm.setPWM(n, 0, pulse); //se folosește pentru ajustarea semnalului PWM
}
//funcțiile servo0,servo1,servo0_12 și servo1_12 sunt folosite pentru modificarea poziției
//servomotoarelor cu -1,1,-0.5 respectiv +0.5
void Servo0(uint16_t pulselen,int i){
angle=pulselen -1;
for(;pulselen>angle;pulselen=pulselen -1){
pwm.setPWM(i,0,pulselen);
}
}
void Servo1(uint16_t pulselen,int i){
angle=pulselen+1;
for(;pulselen<angle;pulselen=pulselen+1){
pwm.setPWM(i,0,pulselen);
}
}
void Servo1_12(float pulselen,int i){
angle1=pulselen+0.5;
for(;pulselen<angle1;pulselen=pulselen+0.5){
pwm.setPWM(i,0,pulselen);
}
}
void Servo0_12(float pulselen,int i){
angle1=pulselen -0.5;
for(;pulselen>angle1;pulselen=pulselen -0.5){
pwm.setPWM(i,0,pulselen);
}
}
//definire variabile pentru PS2;
#define PS2_DAT 13
#define PS2_CMD 11
#define PS2_SEL 10
47
#define PS2_CLK 12
#define DIRA 8
#define DIRB 7
// definire variabile pentru PWM;
#define PWMA 9
#define PWMB 6
int speed;
#define pressures true
#define pressures false
#define rumble true
PS2X ps2x; // crează clasa PS2 control ler
//programul nu suportă conectarea în timpul funcșionării a controllerului,astfel,după conectarea
//controllerului, trebuie resetată placa Arduino sau apelată funcția config_gamepad(pins)
int error = 0;
byte type = 0;
byte vibrate = 0;
void (* resetFunc) (void) =0; //forțează o resetare software
void setup(){
pinMode(DIRA, OUTPUT);
pinMode(DIRB, OUTPUT);
pinMode(PWMA, OUTPUT);
pinMode(PWMB, OUTPUT);
Serial.begin(115200);
double val=ps2x.read_gamepad();
delay(500) ; // întârzierea pentru a permite modulului PS2 timpul necesar pentru pornire,înainte
//de configurare a
error = ps2x.config_gamepad(PS2_CLK, PS2_CMD, PS2_SEL, PS2_DAT, pressures, rumble);
if(error == 0){
Serial.print("Controller ul a f ost găsit , configur are reușită ");
Serial.print("pressures = ");
if (pressures)
Serial.println("true ");
else
Serial.println("false");
Serial.print("rumble = ");
if (rumble)
Serial.println("true)");
else
Serial.println("false");
48
Serial.println(" Test pentru butoane,la apăsarea X,controllerul o să vibreze în funcție de cât de
tare se apasă
Serial.println(" ținerea apăsată a L1 sau R1 va printa valoarea an alogica a manetei .");
}
else if(error == 1)
Serial.println(" A apărut o eroare ");
else if(error == 2)
Serial.println(" A apărut o eroare ");
else if(error == 3)
Serial.println("Controller nu funcționează pe modul Pressures ");
//verifi cări pentru diferite tipuri de controller
type = ps2x.readType();
switch(type) {
case 0:
Serial.println("Unknown Controller type găsit ");
break;
case 1:
Serial.println("DualShock Controller găsit ");
break;
case 2:
Serial.println("GuitarHero Controller găsit ");
break;
case 3:
Serial.println("Wireless Sony DualShock Controller găsit ");
break;
}
Serial.println("test!");
pwm.begin();
pwm.setPWMFreq(60);
pwm.setPWM(0,0,SERVOMID);
pwm.setPWM(1,0,SERVOMID);
pwm.setPWM(3,0,SERVOMID);
pwm.setPWM (2,0,SERVOMID);
pwm.setPWM(4,0,SERVOMID);
pwm.setPWM(5,0,SERVOMID);
pwm.setPWM(6,0,SERVOMID);
pwm.setPWM(7,0,SERVOMID);
}
void turnLeft(int speed) //Întoarcere stânga
{
digitalWrite(DIRA,HIGH);
digitalWrite(DIRB,HIGH);
analogWrite(PWMA, speed);
49
analogWrite(PWMB, speed);
}
void turnRight(int speed) //Întoarcere dreapta
{
digitalWrite(DIRA,LOW);
digitalWrite(DIRB,LOW);
analogWrite(PWMA, speed);
analogWrite(PWMB, speed);
}
void forward(int speed) //Înainte
{
digitalWrite(DIRA,LOW);
digitalWrite(DIRB,HIGH);
analogWrite(PWMA, speed);
analogWrite(PWMB, speed);
}
void back(int speed) //Înapoi
{
digitalWrite(DIRA,HIGH);
digitalWrite(DIRB,LOW);
analogWrite(PWMA, speed);
analogWrite(PWMB, speed);
}
void stop() //STOP
{
digitalWrite(DIRA,LOW);
digitalWrite(DIRB,LOW);
analogWrite(PWMA, 0);
analogWrite(PWMB, 0);
delay(20);
}
void loop(){
//această funcție buclă verifică dacă oricare din butoanele controllerului a fost apăsat și în funcție
de butonul apăsat,se acționeaza motoarele corespunzătoare
if(error == 1) // sare peste buclă dacă nu se detectează vreun controller
return;
if(type == 2) {//Guitar Hero Controller
return;
}
else {
ps2x.read_gamepad(false, vibrate); // citește controllerul și determină vibrații în funcție de
//viteza motorului
50
vibrate = ps2x.Analog(PSAB_CROSS); // determină vibrații în funcție de cât de tare este
//butonul X
if (ps2x.NewButtonState()) { // adevărat dacă oricare din butoane e apăsat
if(ps2x.Button(PSB_L2)){
Serial.println("L2 apăsat ");
pt0=0;
pt1=0;
pt2=0;
pt3=0;
pt4=0;
pt5=1;
pt6=0;
}
if(ps2x.Button(PSB_R2)){
Serial.println("R2 apăsat ");
pt0=0;
pt1=0;
pt2=0;
pt3=0;
pt4=0;
pt5=0;
pt6=1;
}
if(ps2x.Button(PSB_TRIANGLE)){
Serial.println(" Triunghi apăsat ");
pt0=0;
pt1=1;
pt2=0;
pt3=0;
pt4=0;
pt5=0;
pt6=0;
}
}
if(ps2x.ButtonPressed(PSB_CIRCLE)){ // adevărat dacă butonul cerc a fost apăsat
Serial.println(" Cerc a fost apăsat ");
pt0=0;
pt1=0;
pt2=0;
pt3=1;
pt4=0;
pt5=0;
pt6=0;
}
if(ps2x.NewButtonState(PSB_CROSS)){ // adevărat daca butonu a fost apăsat sau eliberat
Serial.println(" S-a modificat starea butonului X ");
51
pt0=0;
pt1=0;
pt2=0;
pt3=0;
pt4=1;
pt5=0;
pt6=0;
}
if(ps2x.ButtonReleased(PSB_SQUARE)){ // adevărat dacă butonul nu mai este apăsat
Serial.println(" Pătratul nu mai este apăsat ");
pt0=0;
pt1=0;
pt2=1;
pt3=0;
pt4=0;
pt5=0;
pt6=0;
}
//start;
if(ps2x.Button(PSB_START)) {
Serial.println(" A fost acționat butonul de start ");
pt0=1;
pt1=0;
pt2=0;
pt3=0;
pt4=0;
pt5=0;
pt6=0;
}
if(ps2x.Button(PSB_PAD_UP)){
Serial.println(" Butonul sus este apăsat : ");
speed= 200;
forward(speed);
}
if(ps2x.Button(PSB_PAD_DOWN)){
Serial.print(" Butonul jos este apăsat : ");
speed= 150;
back(speed);
}
if(ps2x.Button(PSB_PAD_LEFT)){
Serial.println(" întoarcere stânga ");
speed=50;
turnLeft(speed);
}
if(ps2x.Button(PSB_PAD_RIGHT)){
52
Serial.println(" întoarcere dreapta ");
speed=50;
turnRight(speed);
}
// Stop
if(ps2x.Button(PSB_SELECT)){
Serial.println("stop");
speed = 0;
stop();
}
delay(20);
}
if(ps2x.Button(PSB_L1)||ps2x.Button(PSB_R1)){
int LY=ps2x.Analog(PSS_LY);
int LX=ps2x.Analog(PSS_LX);
int RY=ps2x.Analog(PSS_RY);
int RX=ps2x.Analog(PSS_RX);
if(pt0){
if((RY<100)&&(pulselen_0>=SERVOMIN)){
Servo0(pulselen_0,0);
pulselen_0=pulselen_0 -1;
}
else if((RY>=150)&&(pulselen_0<=SERVOMAX)){
Servo1(pulselen_0,0);
pulselen_0=pulselen_0+1;
}
else{
pwm.setPWM(0,0,pulselen_0);
}
}
if(pt1){
if((RY<100)&&(pulselen_1>=SERVOMIN_12)){
Servo0_12(pulselen_1,1);
pulselen_1=pulselen_1 -0.5;
}
else if((RY>=150)&&(pulselen_1<=SERVOMAX_12)){
Servo1_ 12(pulselen_1,1);
pulselen_1=pulselen_1+0.5;
}
else{
53
pwm.setPWM(1,0,pulselen_1);
}
}
if(pt1){
if((RY<100)&&(pulselen_2<=SERVOMAX_12)){
Servo1_12(pulselen_2,2);
pulselen_2=pulselen_2+0.5;
Serial.println("pulselen_2");
Serial.println(pulselen_2);
}
else if((RY>=150)&&(pulselen_2>=SERVOMIN_12)){
Servo0_12(pulselen_2,2);
pulselen_2=pulselen_2 -0.5;
}
else{
pwm.setPWM(2,0,pulselen_2);
}
}
if(pt2){
if((RY<100)&&(pulselen_3>=SERVOMIN_3)){
Servo0(pulselen_3,3);
pulselen_3=pulselen_3 -1;
}
else if ((RY>=150)&&(pulselen_3<=SERVOMAX_3)){
Servo1(pulselen_3,3);
pulselen_3=pulselen_3+1;
}
else{
pwm.setPWM(3,0,pulselen_3);
}
}
if(pt3){
if((RY<100)&&(pulselen_4>=SERVOMIN)){
Servo0(pulselen_4,4);
pulselen_4=pulselen_4 -1;
}
else if((RY>=150)&&(pulselen_4<=SERVOMAX)){
Servo1(pulselen_4,4);
pulselen_4=pulselen_4+1;
54
}
else{
pwm.setPWM(4,0,pulselen_4);
}
}
if(pt4){
if((RY<100)&&(pulselen_5>=SERVOMIN)){
Servo0(pulselen_5,5);
pulselen_5=pulselen_5 -1;
}
else if((RY>=150)&&(pulselen_5<=SERVOMAX)){
Servo1(pulselen_5, 5);
pulselen_5=pulselen_5+1;
}
else{
pwm.setPWM(5,0,pulselen_5);
}
}
if(pt5){
if((RY<100)&&(pulselen_6>=SERVOMIN)){
Servo0(pulselen_6,6);
pulselen_6=pulselen_6 -1;
}
else if((RY>=150)&&(pulselen_6<=SERVOMAX)){
Servo1(pulselen_6,6);
pulselen_6=pulselen_6+1;
}
else{
pwm.setPWM(6,0,pulselen_6);
}
}
if(pt6){
if((RY<100)&&(pulselen_7>=SERVOMIN_7)){
Servo0( pulselen_7,7);
pulselen_7=pulselen_7 -1;
}
else if((RY>=150)&&(pulselen_7<=SERVOMAX_7)){
55
Servo1(pulselen_7,7);
pulselen_7=pulselen_7+1;
}
else{
pwm.setPWM(7,0,pulselen_7);
}
}
else{
pwm.setPWM(0,0,pulselen_0);
pwm.setPWM(1,0,pulselen_1);
pwm.setPWM(2,0,pulselen_2);
pwm.setPWM(3,0,pulselen_3);
pwm.setPWM(4,0,pulselen_4);
pwm.setPWM(5,0,pulselen_5);
pwm.setPWM(6,0,pulselen_6);
pwm.setPWM(7,0,pulselen_7);
}//dacă nu se acționează controllerul,servomotoarele răman neacționate
}
delay(5);
}
56
Concluzii
În concluzie, pentru finalizarea acestei lucrări am aprofund at o mare parte a cunoștințel or
teoretice dobân dite în cei 4 ani de studii universitare ,cunoștințe pe care le -am folosit pentru
realizarea practică a acestui robot.
Acest proiect a constituit o provocare , de la alegerea pieselor mecanice, până la dezvoltarea
sistemului de comandă, însă cea mai mare provocare întâlnită pe parcursul realizării acestei lucrări
a fost elaborarea programului pentru comanda robotului MR -Handler, program care a trecut prin
mai multe iterații pentru a ajunge în forma sa finală,preze ntată pe parcursul acestei lucrări.
Putem să spunem că acest proiect poate să -și găsească o întrebuințare educativă sau
didactică, acesta putând fi folosit în cadrul lucrărilor de laborator la diferite discipline ca
microcontrolere, acționări electrice , robotică etc.
Îmbunătățire se pot aduce acestui robot prin implementarea unor alte rutine de
funcționare,fie prin programarea metodei de învățare sau prin instalarea unei camere video și
implementarea unui program care să permită recunoașterea unor obiecte,astfel robotul devenind
autonom.
Prin intermediul acestui robot am încercat să demonstrez accesibilitatea componentelor din
punct de vedere economic cât și multitudinea de obțiuni alternative disponibile pe piața, astfel că
proiectele de genu l pot fi realizate mult mai ușor și mai specific sarcinilor pentru care acestea au
fost realizate.
57
Bibliografie
1. https://www.ancient -origi ns.net/sites/default/files/field/image/steam -powered -pigeon -of-
Archytas.jpg
2. https://www.leonardorobotsociety.org/uploads/2/3/7/2/23729156/knight4_orig.jpeg
3. https://www.azernews.az/media/2018/07/27/2111767321001_5631116130001_56311129940
01-th.jpg
4. https://encrypted -tbn0.gstatic.com/images?q=tbn:ANd9GcRh14qfg_KohAGl –
hl1G6ZxQnPk1OgTTGfAcNsTPt_tFEHls0bk
5. http://www.allonrobots.com/cylindrical -robot.html
6. https://www.brighthubengineering.com/robotics/29493 -spherical -base -robot -construction –
and-workspace/
7. https://lh5.googleusercontent.com/HesSqtN_obfg_jHcu6nNBUJM67W –
oHj6Gj_biEFgSHsBO8Ep_BVW23JYUCdbUZEKyJJY98CvDtu7pc1egy92hvf0L78s_SQS7nIgVMIg36m
rdubNuaSUBRptcL3OKZVopg =s412
8. https://prod -discovery.edx -cdn.org/media/course/image/b50e13ca -c828 -4619 -88b3 –
43d6b76f11d9 -7f49ee92dbe3.small.jpg
9. http://www.rasunetul.ro/sites/default/files/articole/2017/04/img8489.jpg
10. https://www.sciencenewsforstudents.org/sites/default/files/scald -image/860_main_RSE –
Lionfish -Capture.png
11. https://c.pxhere.com/images/82/6f/ddff080ef8a620c7f89cb3717136 -1446071.jpg!d
12. http://lspvs .ro/siteuri/proiect039/final.files/image038.jpg
13. https://storage0.dms.mpinteractiv.ro/media/401/321/5109/4684801/1/lighionm.jpg
14. https://www.researchgate.net/profile/Harry_Duong_Nguyen/publication/322876978/figu re/fig
1/AS:638365628133377@1529209634472/The -evolution -of-the-design -of-our-spherical -rolling –
robot -Virgo.png
15. https://media.wired.com/pho tos/595d30c584f92619f4021069/master/pass/JumpingRobot –
SALTO -on-platform.jpg
16. https://i.pinimg.com/originals/2e/a2/0e/2ea20e561a99789e5f1037f47c7f8131.jpg
17. https://3c1703fe8d.site.internapcdn.net/newman/csz/news/800/2016/avatarstyles.jpg
18. https://i.ytimg.c om/vi/k8IsYb31He8/maxresdefault.jpg
58
19. https://3.bp.blogspot.com/ -ChLalVBM22k/W_rkpMf7urI/AAAAAAAAAD4/
MwHTs4iRbMgMdAFbfWG2jRanq4dcPV4eACLcBGAs/s1600/C__Data_Users_DefApps_AppData
_INTERNETEXPLORER_Temp_Saved%2BImages_images%25289%2529.jpg
20. http://aermech.in/wp -content/uploads/2015/10/daksh5.jpg
21. https://upload.wikimedia.org/wikipedia/commons/thumb/c/c7/MQ –
1_Predator%2C_armed_with_AGM -114_Hellfire_missiles.jpg/300px -MQ-
1_Predator%2C_armed_with_AGM -114_Hellfire_missiles.jpg
22. https://www.pentruacasa.com/continut/produse/17675/1000/aspirator -roomba -896-3-
27702.jpg
23. https://core –
electronics.com.au/media/catalog/product/cache/1/image/650×650/fe1bcd18654db18f328c2fa
aaf3c690a/a/0/a000066_front_2_1_1_1.jpg
24. https://cdn.vox -cdn.com/thumbor/P2DChSa –
TAR1aa028zIraFG2Qds=/0x0:2894×1920/1200×800/filte rs:focal(1187×797:1649×1259)/cdn.vox –
cdn.com/uploads/chorus_image/image/62330778/770A9411.0.jpg
25. https://www.robofun.ro/SBC -Raspberry -Pi-3-Model -A-plus
26. https://ae01.alicdn.com/kf/HTB1dXUoKbSYBuNjSspiq6xNzpXaH.jpg
27. https://upload.wikimedia.org/wikipedia/com mons/thumb/6/6c/Arduino316.jpg/259px –
Arduino316.jpg
28. https://store.arduino.cc/arduino -uno-rev3
29. https://components101.com/microcontrollers/arduino -uno
DECLARAȚIE DE AUTENTICITATE
A
LUCRĂRII DE FINA LIZARE A STUDIILOR
Titlul lucrării ________________________________________________________
___________________________________________________________________
___________________________________________________________________
Autorul lucrării ________ _____________________________________
Lucrarea de finalizare a studiilor este elaborată în vederea susținerii examenului de
finalizare a studiilor organizat de către Facultatea
_________________________________________ din cadrul Universității din Oradea,
sesiunea_______________________ a anul ui universitar ______________.
Prin prezenta, subsemnatul (nume, prenume, CNP)_____________________
___________________________________________________________________
___________________________________________________________________,
declar pe proprie r ăspundere că această lucrare a fost scrisă de către mine, fără nici un
ajutor neautorizat și că nici o parte a lucrării nu conține aplicații sau studii de caz publicate
de alți autori.
Declar, de asemenea, că în lucrare nu există idei, tabele, grafice, hă rți sau alte surse
folosite fără respectarea legii române și a convențiilor internaționale privind drepturile de
autor.
Oradea,
Data Semnătura
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: PROGRAMUL DE STUDIU AUTOMATICĂ ȘI INFORMATICĂ [625489] (ID: 625489)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
