AUTOMATICĂ ȘI INFORMATICĂ APLICATĂ FORMA DE INVĂȚĂMÂNT ZI Proiect de diplomă COORDONATOR ȘTIINȚIFIC Conf.dr.ing.Barabaș Tiberiu ABSOLVENT Patca… [309694]

UNIVERSITATEA DIN ORADEA

FACULTATEA DE INGINERIE ELECTRICĂ ȘI TEHNOLOGIA INFORMAȚIEI

PROGRAM DE STUDIU

AUTOMATICĂ ȘI INFORMATICĂ APLICATĂ

FORMA DE INVĂȚĂMÂNT ZI

Proiect de diplomă

COORDONATOR ȘTIINȚIFIC

Conf.dr.ing.Barabaș Tiberiu

ABSOLVENT: [anonimizat] 3

Capitolul I. Roboti mobili 4

I.1 Roboti . Generalități 4

I.1.1 Tehnica de baza 6

I.1.2 Tipuri de roboti 7

I.2 Roboți mobili 7

I.2.1 Clasificarea roboților mobili 7

Capitolul II. Platforma de dezvoltare Raspberry PI 10

II.1 Prezentarea generala. Caracteristici. 10

II.2 Compararea modelelor Raspberry PI 13

II.3. Accesorii tipice pentru Raspberry PI 14

II.3.1. Camera video 14

II.3.2. Ecranul de tip LCD 15

II.3.3. Audio 17

II.3.4. Dispozitive conectabile la portul GPIO 18

II.4. Sistemul de operare : Instalare 18

II.4.1. Procedura de instalare a sistemului de operare (Linux) pentru Raspberry PI 19

II.4.2. Procedura instalarii bibliotecii Python pentru accesarea porturilor I/O 20

II.4.3. Crearea unui fisier Pythin pentru comanda robotului mobil 21

II.4.4. Procedura pentru lansarea automata in executie a programului de comanda la pornirea/alimentarea placii Raspberry PI 22

Capitolul III. Prezentarea robotului mobil 24

III.1. Sasiul robotului 24

III.1.1 Descrierea robotului asamblat 24

III.2. Platforma de dezvoltare Raspberry PI utilizata (model A+) 26

III.3. Driver-ul de motoare 28

III.4. Regulatorul de tensiune de 5 V 32

III.5. Senzorul de distanta 34

III.6. Camera video 36

Capitolul IV. Schema de comanda a robotului mobil 38

IV.1. Descrierea schemei de comanda 38

Capitolul V. Programul de comanda in limbaj Python pentru robotul mobil 40

V.1. Algoritmul de functionare 40

Capitolul VI. Transmitere video in timp real 44

VI.1 Aplicatiile caracteristice ale camerei Raspberry PI 44

VI. 2 Configurarea camerei Raspberry PI 44

VI.3 Configurarea Software 44

VI.4 Utilizarea de baza Raspivid 46

VI.5.1 VLC Media Player 47

VI.5.2 [anonimizat] 49

Concluzii 51

Bibliografie 52

INTRODUCERE

Această lucrare își propune sa prezinte un modul de proiectare si de realizare a unui robot mobil care este programat sa evite obstacolele si sa transmită imagini in timp real care se vor putea viziona cu ajutorul unui stream. Robotul mobil trebuie sa funcționeze autonom si sa execute acțiunile de ocolire a obstacolelor fără intervenția utilizatorului. [anonimizat]. [anonimizat], componentele ramase ce alcătuiesc robotul mobil. In partea inferioara a șasiului se afla rotile motoare cu reductor si roata de susținere. Pe partea superioara sunt așezate părțile digital/analogice, [anonimizat], camera video Raspberry Pi iar in fata se afla senzorul de distanta pentru detectarea obiectelor.

Acest ansamblu este controlat de o placa de dezvoltare Raspberry Pi care rulează programul încărcat si este scris in limbajul de programare Python.

Prima parte a [anonimizat] Raspberry Pi, driverul pentru controlul motoarelor, stabilizatorul de tensiune, motoarele electrice, camera Raspberry Pi si senzorul de distanta.

A doua parte a lucrării se refera la schema de comanda, sistemul de operare si descrierea programului de comanda, programul de comanda robot si camera.

Capitolul I. Roboti mobili

I.1 Roboti . Generalități

De-a lungul timpului au fost formulate mai multe definiții ale robotului , de unele companii constructoare sau asociații naționale din domeniu, toate încercând prin moduri diferite sa definească aceeași entitate, același produs al inteligentei umane. Unele dintre aceste definiții sunt următoarele:

JIRA ( Japan Industrial Robot Association) : „Robotul este un dispozitiv versatil si flexibil care conferă funcții de deplasare similare celor ale membrelor umane sau ale cărui funcții de deplasare sunt comandate de senzori si de mijloace proprii de recunoaștere”

GM (General Motors ) : „Robotul este un echipament fizic cu funcționare programabila capabil sa efectueze anumite operații si secvențe de operații orientate spre manipularea de piese, scule, subansamble”

RIA ( Robot Institute of America) : „Robotul este un manipulator multifuncțional, reprogramabil, destinat deplasării materialelor, pieselor, sculelor sau altor dispozitive specializate prin mișcări variabile, programate pentru a îndeplini anumite sarcini”

BRA ( British Robot Association) : „Robotul este un dispozitiv reprogramabil realizat pentru manipularea si transportul pieselor, sculelor sau altor mijloace de producție prin mișcări variabile programate pentru a îndeplini sarcini specifice de fabricație”

Se poate observa, din aceste definiții , ca in cele mai multe cazuri, accentul se pune pe latura industriala a robotului. Una dintre primele definiții date acestei entități mecanice evidențiază ca aceasta imita omul si posibilitățile sale de acțiune. Având in vedere evoluția cercetării in domeniu si exemplarele fizice de roboti mobili construite , care imita diferite vietăți , am putea completa definițiile de mai sus cu următoarea definiție : „Robotii sunt sisteme mecanice cu structura variabila, controlate de sisteme complexe si concepute pentru executarea de operații asemănătoare acțiunilor ființelor umane si nu numai.”

Un robot este un operator mecanic sau virtual, artificial. Robotul este un sistem compus din mai multe elemente: mecanica, senzori si actuatori precum si un mecanism de direcționare. Mecanica stabilește înfățișarea robotului si mișcările posibile. Senzorii si actuatorii sunt responsabili de interacția cu mediul de lucru. Mecanismul de direcționare are grija ca robotul sa-si îndeplinească obiectivul cu succes, pe baza informațiilor primite de la senzori. Acest mecanism reglează turația motoarelor si planifica mișcările care urmează a fi efectuate. Robotii cu mai mult de cinci grade de libertate se numesc roboti industriali, iar cei care imita forma umana se numesc androizi.

De asemenea termenul „robot” sau prescurtat „bot” , se utilizează si la denumirea unor programe software care îndeplinesc automat anumite funcții sau operații. Astfel robotii sunt virtuali si nu doar mecanici.

Cuvântul „robot” si-a schimbat sensul de-a lungul timpului. Inițial termenul „robot” a fost folosit de frații Josef Capek si Karel Capek in lucrările lor de science-fiction la începutul secolului XX. La originile sale, cuvântul „robot” este de origine slava si se traduce prin munca, clacă sau munca silnica. Karel Capek a descris in piesa sa R.U.R din anul 1921 muncitori de asemănare umana, care sunt crescuți in rezervoare. Capek folosește in lucrarea sa motivele clasice de golem. Denumirea de astăzi a creaturilor din operele celor doi poarta numele de android. Înaintea apariției termenului de robot s-au utilizat ,de exemplu, in uzinele lui Stanislaw Lem termenii automat si semiautomat.

Bazele roboților de astăzi stau mult mai departe. Primele modele de mașini pot fi mai degrabă numite automate (provenind din grecescul automatos, care se mișcă singur). Acestea nu puteau executa decât cate un singur obiectiv , fiind constrânse de construcție.

Odată cu descoperirea ceasului mecanic din secolul XIV s-a deschis calea unor posibilități noi si complexe. Nu mult după aceea au apărut si primele mașini, care semănau îndepărtat cu robotii de azi. Era posibil însă numai ca mișcările sa urmeze una după alta, fără sa fie nevoie de intervenția manuala in acel sistem.

Dezvoltarea electrotehnicii din secolul XX a adus cu sine si o dezvoltare a roboticii. Printre primii roboti mobili se numără sistemul Elmer si Elsie construit de Wiliam Grey Walter in anul 1948. Aceste triciclete se puteau îndrepta spre o sursa de lumina si puteau sa recunoască coliziuni in împrejurimi.

Anul 1956 este considerat ca anul nașterii robotului industrial. George Devol a depus candidatura in acest an in S.U.A. pentru un patent, o schiță, pentru „transferul programat de articole”. Câțiva ani după aceea a construit împreuna cu Joseph Engelberger UNIMATE. UNIMATE era un robot de circa doua tone, care a fost mai întâi introdus in montarea de iconoscoape pentru televizoare, găsindu-si apoi drumul in industria automobila. Programele pentru acest robot au fost salvate sub forma de comenzi direcționate pentru motoare pe un cilindru magnetic. Pornind din acest moment se introduc roboti industriali ca UNIMATE in mai multe domenii ale producției fiind permanent dezvoltați mai departe pentru a putea face fata cererilor complexe care li se impun. Apariția din ce in ce mai frecventa a roboților in film si literatura a atras atenția științei asupra acestui tip de mașini. Domeniul științific, care se ocupa de construcția roboților se numește robotica. Termenul a fost folosit pentru prima data in anul 1942 de Isaac Asimov in cartea sa, Runaround in care a enunțat cele 3 reguli de baza ale roboților:

Legea 1. Un robot nu poate leza o ființă umana sau nu poate asista inactiv atunci când acesta este in primejdie.

Legea 2. Orice robot trebuie sa se supună comenzilor primite de la ființele umane, cu excepția acelor comenzi care nu respecta prima lege.

Legea 3. Orice robot trebuie sa se autoprotejeze atunci când este pusa in pericol integritatea sa, cu excepția cazurilor in care s-ar încălca cel puțin una dintre primele doua legi.

Un domeniu general teoretic științific, care se ocupa de roboti, nu există. Acestea sunt mai ales subdomenii ale informaticii.

Robotii oferă beneficii substanțiale muncitorilor, industriilor si implicit tarilor. In situația folosirii in scopuri pașnice, robotii industriali pot influenta pozitiv calitatea vieții oamenilor prin înlocuirea acestora in spatii periculoase, cu condiții de mediu dăunătoare omului, cu condiții necunoscute de exploatare, etc.

Domeniile de aplicare a tehnicii roboților se dezvolta mereu, ei putând fi utilizați in industrie, transporturi si agricultura, in sfera serviciilor, in cunoașterea oceanului si a spațiului cosmic, in cercetarea științifică, etc.

I.1.1 Tehnica de baza

Robotii sunt realizați mai ales prin combinația disciplinelor: mecanica, electrotehnica si informatica. Intre timp s-a creat din legătura acestora mecatronica.

Pentru realizarea de sisteme autonome (care sa găsească singure soluții) este necesară legătura a cat mai multe discipline de robotica. Aici se pune accent pe legătura conceptelor de inteligenta artificiala sau neuroinformatica, precum si idealul lor biologic sau biocibernetica. Din conexiunea dintre biologie si tehnica s-a dezvoltat bionica.

Cele mai importante componente ale roboților sunt senzorii, care permit mobilitatea acestora in mediu si o dirijare cat mai precisa. Un robot nu trebuie neapărat sa poată sa acționeze autonom, fapt pentru care se distinge intre robotii autonomi si cei teleghidați.

I.1.2 Tipuri de roboti

Termenul de „robot” reprezintă un domeniu destul de vast, cauza din care robotii sunt sortați in multe categorii. Unele dintre acestea sunt:

Robot autonom mobil

Robot umanoid

Robot industrial

Robot explorator

Robot medical

Robot pășitor

Robot educațional

Robot militar

I.2 Roboți mobili

Robotii mobili sunt roboti care sunt capabili sa-si modifice locația. Mobilitatea

roboților rezulta posibilitatea pentru implementări într-o multitudine de domenii.

I.2.1 Clasificarea roboților mobili

Robotii mobili pot fi clasificați după mediul in care sunt destinați sa funcționeze Ș

Robot tereștrii in medii exterioare

Robot transportator pe drumuri sau medii de lucru interioare

Robot aerian

Robot subacvatic

Robot polar (destinat pentru gheață si zăpadă)

Roboți terestriali in medii exterioare, cu aplicații in agricultura si in armata. Modul de locomoție este prin senile sau cu roti. Dezvoltările in ultimul deceniu de către Boston Dynamics a rezultat roboti cu pășire cu fiabilitate ridicata astfel încât sunt fezabile pentru aplicații militare.

Robotii transportatori sunt roboti care transportă marfa in interiorul unei clădiri sau chiar pe drumuri special amenajate. Implementările de interior includ transportarea mărfii in depozite, echipamente si medicamente in spitale. Implementările in exterior sunt limitate din cauza lipsei legislației pentru reglementar pe drumuri publice, dar deja includ mega-camioane autonome in mine de suprafață pe drumuri private.

Robotii aerieni sunt roboti zburători cu metode de propulsie obișnuite in industria aeronautica. Implementările, pana recent, erau in primul rând militare, cuprinzând drone de recunoaștere autonome si drone armate operate prin teleghidare. Scăderea prețului de achiziție a dronelor domestice a rezultat aplicații care cuprind de la industria foto-video pana la proiecte de transport rapid de către firme de curierat.

Robotii subacvatici au aplicații diverse , cuprinzând de la cercetare științifică , la aplicații militare sau comerciale si chiar personale. In cazul in care robotul este echipat cu manipulatori si efectori, aceștia pot îndeplini sarcini de constricție , recuperare, salvare si de reparații.

Clasificare după metoda de locomoție :

Roti

Senile

Pășire

Elice aeriene sau subacvatice

Târâre

Rostogolire

Metoda de locomoție a robotului mobil trebuie selectata in așa fel încât sa fie optima din punct de vedere al vitezei de deplasare, iar terenul anticipat sa fier parcurs astfel încât sa găsească cel mai economic drum din punct de vedere al consumului de energie pentru diverse aplicații.

Rotile sunt ideale pentru drumuri sau teren solid ușor de parcurs. Acestea sunt, de regulă, propulsate de motoare electrice. In cazul in care consumul de energie este mare sau autonomia de funcționare trebuie sa fie îndelungată, ca si in cazul roboților transportatori in exterior sunt de preferat motoarele cu combustibili fosili.

De asemenea, robotii mobili pot fi clasificați după metoda de navigare :

Teleghidare manuala

Teleghidare manuala cu protejare automată

Autonom cu mișcare întâmplătoare

Ghidat autonom

Navigare variabila sau glisanta

Teleghidarea manuala si teleghidarea manuala cu protejare automată sunt implementări cu complexități diferite. In cazul in care se utilizează teleghidarea manuala se poate implementa cu senzori si programare minimă pentru controlul robotului. Pe de alta parte, funcția de protejare automata are nevoie de un sistem de o complexitate considerabila. Protejarea automata este o funcție prin care robotul poate fi ghidat fără accidente, menținându-si traseul.

Robotii programați sa urmărească linii au senzori adecvați pentru detectarea traseelor preconfigurate într-o clădire, astfel încât cu un sistem relativ simplu pot sa parcurgă traseele.

Robotii autonomi cu mișcare întâmplătoare sunt roboti echipați cu senzori pentru detectarea obstacolelor si pereților ,iar odată detectate sunt programați sa le evite sau sa le ocolească.

Robotii ghidați autonom au informații legate de poziția lor si traseuri pentru a ajunge la destinație. Poziția robotului este calculata cu mai mulți senzori complecși , cum ar fi cu vedere stereoscopica , sisteme de poziționare si triangulare.

Cele mai recente si mediatizate dezvoltări in robotica se regăsesc in categoria roboților mobili.

Capitolul II. Platforma de dezvoltare Raspberry PI

II.1 Prezentarea generala. Caracteristici.

Se poate numi mini-calculator sau platforma cu microprocesor. Indiferent de cum este numit, Raspberry PI se prezinta sub forma unei plăcuțe de circuit imprimat, fără carcasa.

Pe aceasta plăcuță se afla un microprocesor, o memorie RAM de 512 MB si un nucleu de procesare video, cu o ieșire HDMI si RCA. Raspberry PI este un calculator de dimensiunea unui card de credit si rulează un sistem de operare de operare de tip Linux. Se poate face cu el aproape tot ceea ce se face cu un calculator obișnuit.

In plus, fata de un calculator obișnuit, Raspberry PI oferă si posibilitatea realizării de conexiuni hardware directe cu alte dispozitive (senzori de temperatura, umiditate, lumina, presiune atmosferica, butoane, relee driver de motoare, etc.) prin intermediul pinilor GPIO.

Pinii GPIO sunt expuși într-o zona din lateralul plăcii si pot fi controlați prin orice limbaj de programare care ruleaza pe placa Raspberry PI (Python, C, C++, Java, PHP, .NET, etc.).

Datorita avantajelor legate de dimensiunea mica si pretul de achizitie mic raportat la performantele oferite, placa Raspberry PI reprezinta o alegere buna pentru proiecte din numeroase domenii : robotica, imprimare 3D, servere web, ftp, statii meteo, jocuri 3D ; acestea fiind doar cateva exemple.

Figura 2.1.1 Raspberry PI model B+

Ideea din spatele Rapberry PI a fost de a construi un calulator accesibil, de dimensiuni mici, care sa poata fi utilizat in scopuri didactice pentru promovarea tehnologiei informatiei si a programarii. Pe langa scopurile sale didactice, Raspberry PI a fost adoptat e catre diversi producatori de disozitive electronice cat si depasionati de electronica si programare cae il folosesc in proiectarea si modelareasiferitelor aplicatii.

Raspberry PI a fost creat in 2006 de un grup de ingineri de la Universitate din Cambridge. Primele generatii de Raspberry PI, care au fost testate intre anii 2006 – 2008 , nu ofereau o performanta foarte ridicata deoarece in cuantumul sumei mici de incadrare dorite, nu se putea realiza acest lucru. Abia dupa 2008 echipamentele mobile de procesare au inceput sa fie mai accesibile si totodata mai performante, ajungandu-se in 2012 cand au fost lansate oficial primele modele Raspberry PI (model A si model B) care se apropiau ca potential de lucru de calculatoarele personale,

Pe langa avantajul dimensiunilor relativ mici, mai precis dimensiunea unui card de credit, Raspberry PI poate concura cu performantele unui calculator personal, avand psibilitati diverse, cum ar fi :

Navigarea pe internet

Redarea fisierelor video de rezolutie inalta

Server web

Rularea unor jocuri

Pentru cele mentionate anterior e necesara doar conectarea unor periferice, cum ar fi, de exemplu, un monitor, o tastatura, un mouse, etc. si acest „card de credit” numit Raspberry PI devine un sistem de calcul independent din toate punctele de vedere. Raspberry PI mai ofera si o interfata GPIO (intrari si iesiri de uz general) care pot fi utilizate pentru a conecta diferite echipamente si sisteme electronice, pe care in acest mod le putem programa si controla usor in mediul de dezvoltare integrat in sistemul de operare.

Ca si optiuni de redare video, Raspberry PI suporta conexiunile video HDMI si

TV – OUT (pe mufa RCA). Acest lucru inseamna ca se poate conecta la orice monitor, LCD sau LED care are conector video HDMI. Datorita faptului ca procesorul video este hardware (ruleaza independent de procesorul principal), Raspberry PI ofera o rezolutie Full HD. Conexiunea video TV – OUT (standard PAL sau NTSC) mai este disponibila si prin mufa de tip RCA, de calitate redusa insa si la o rezolutie mai mica decat prin conexiunea HDMI.

Raspberry PI necesita o sursa de tensiune de 5V si minim 700 mA pentru a deveni operational, conectarea alimentarii fiind facuta printr-o mufa micro-USB. Sursa de alimentare fiind o parte foarte importanta a sistemului, este necesar sa se aleaga cu atentie. Daca susrsa de alimentare nu ofera suficinet curent sau mai rau, da o tensiune de iesire mai mare de 5V, se ajunge la diferite rezultate nedorite cum ar fi : resetari ale sistemului de operare, pierderi de date, blocarea cardului sau distrugerea ireversibila a placii Raspberry PI.

Raspberry PI suporta mause si tastatura prin USB, chiar si pe wireless. Dupa conectarea lor la portul USB, sistemul de operare le recunoaste automat.

In functie de tipul de conexiune video pe care o suporta monitorul se foloseste un cablu HDMI sau HDMI – DVI.

Se alege un sistem de operare (de exemplu Raspbian), se utilizeaza utilitarul descris pe pagina web de unde se descarca imaginea prin care aceasta este scris direct pe card.

Dupa ce s-a scris imaginea, se introduce cardul in slotul aferent pe placa, se conecteaza monitorul, tastarura si mouse-ul, cablul de retea si in sfarsit alimentarea. Pe ecran se va obtine interfata grafica a sistemului.

Pinii GPIO sunt acei pini tata (26 de pini, grupati in linii a cate 13 pini) care sunt dispusi pe zona de margine a placii. Acesti pini ofera posibilitatea de a interfata placa Raspberry PI cu o multitudine de dispozitive externe.

Pot fi controlate LED-uri , motoare, LCD-uri, senzori etc. De exemplu, se pot masura acceleratii folosint accelerometrul ADXL335, se poate masura nivelul de alcool in aerul expirat folosind un senzor MQ3, concentratiile de gaze GPL, gaz metan sau monoxid de carbon, dradul de indoire sau forta de apasare, se pot masura distante cu senzori Sharp sau cu senzori ultrasonici, nivelul de lumina din incapere, temperatura, sau nivelul de umiditate, se poate detecta prezenta umana intr-o incapere, sau sunetul, asta ca sa amintim doar o parte din aplicatiile posibile cu aceasta placa de dezvoltare.

Pinii Raspberry PI pot suporta o tensiune de maxim 3,3V. Aplicarea unei tensiuni mai mari va distruge iremediabil placa de dezvoltare. Aceleasi precautii trebuie luate si in ceea ce priveste curentul tras din pinii GPIO. Acesta este limitat la 10 mA – 16 mA pe pin, dar suma curentilor pe toti pinii nu trebuie sa depaseasca 50 de mA.

II.2 Compararea modelelor Raspberry PI

Dupa cum se poate observa in tabelul de mai jos, placile Raspberry PI model B si Raspberry PI model B+ sunt dotate in plus cu port Ethernet si cu o memorie RAM mai extinsa, fata de modelul A, iar modelul B3 este capabil sa comunice si prin Bluetooth si Wifi. Modelul A este o alegere foarte buna in aplicatiile in care finctionarea aparatului este asigurata de la baterie. Are o dimensiune mai mica, iar consumul redus de energie al placii asigura o autonomie energetica mai buna a echipamentului, decat Raspberry PI model B2 si Raspberry PI model B3.

Tabel 2.1.1. Compararea modelelor Raspberry PI

II.3. Accesorii tipice pentru Raspberry PI

Fata de un calculator obisnuit, Raspberry PI mai ofera posibilitatea realizarii conexiunilor hardware directe cu alte dispozitive prin porturile specifice video, audio, GPIO si USB.

II.3.1. Camera video

Un update al Firmware-ului Raspberry instaleaza toate programele driver necesare pentru utilizarea camerei video. Pentru aceasta se procedeaza conform indicatiilor luate de pe site-ul oficial. Dupa instalarea programelor se restarteaza sistemul de calcul, se lanseaza programul de aplicatie, si camera devine utilizabila pentru a face poze sau clipuri video.

Modulul de camera este conectat la interfata pentru camera (CSI) din Raspberry PI printr-un cablu lat, de tip panglica, de 15 pini.

Specificatiile tehnice ale unei camere video imbunatatita pentru Raspberry PI sunt :

Senzorul de 8 megapixeli (fata de 5 megapixeli in versiunea 1)

Rezolutie foto : 3280 x 2464 pixeli (fata de 2592 x 1944 pixeli in versiunea 1)

Format video : 1080p / 720p

Dimensiuni : 25 mm x 23mm x 9 mm

Figura 2.3.1. Camera video Raspberry PI

II.3.2. Ecranul de tip LCD

Ecranul de tip LCD poate sa afiseze 16 caractere pe 2 randuri, are o lumina de fundal albastra, si dispune de un conector care permite ajustarea luminozitatii si conectarea la Raspberry PI utilizand 8 fire de tip mama – mama.

Figura 2.3.1 Ecranul de tip LCD 16×2 pentru Raspberry PI

Placa Raspberry PI este prevazuta cu un nucleu de procesare video care este capabil sa redea filme si imagini cu o rezolutie foarte inalta (Full HD). Pentru proiecte din multe domenii sunt disponibile display-uri touchscreen imbunatatind mult posibilitatile micro-calculatorului.

Display-ul si touchscreen-ul folosesc pinii I2C (SDA & SCL), pini SPI (SCK, Mosi, MISO, CE0), precum si pinii GPIO #25 si #24. Ceilalti pini GPIO pot fi folositi pentru senzori, drivere si LED-uri.

Figura 2.3.2. Ecran LCD cu rezolutie Full HD

Specificatiile tehnice ale unui display Raspberry PI sunt :

Dimensiuni ecran : 50 mm x 69 mm x 4mm

Dimensiuni PCB : 56 mm x 85 mm x 11mm

Greutate : 47 g

II.3.3. Audio

Computerul Raspberry PI are capacitatea de a prelucra semanale analogice si digitale audio. Iesirea audio este abordata pe doua cai :

Calea analogica – prin intermediul mufei Jack stereo de 3,5 mm aflata pe placa de sunet. Sunetul obtinut este recunoscut ca fiind la un nivel de calitate acceptabil.

Calea digitala – prin intermediul conectorului HDMI. Iesirea HDMI ofera un potential de redare audio de inalta calitate, depinzand desigur si de calitatea dispozitivelor aflate in sistem care sunt implicate in convertirea semnalelor audio din format analogic in format digital si viceversa.

Figura 2.3.4. Dispunerea conectorilor cardului audio Cirrus Logic

Caracteristicile cardului audio sunt urmatoarele :

Compatibil cu Raspberry PI model A+ si B+ (cu 40 de pini de extensiu GPIO)

Iesire si intrare analogica

Intrare audio stereo digitala si iesire (SPDIF)

Iesire pentru casti ,cu facilitatea de microfon

Microfoane digitale la bord stereo bazate pe tehnologia MEMS

Amplificator de putere pentru actionarea difuzoarelor direct de la bord

Terminal de extensie pentru a permite conectarea unitatii, altele decat placile Raspberry PI

Suport de software universal

II.3.4. Dispozitive conectabile la portul GPIO

Pinii GPIO sunt acei pini tata (26 de pini, grupati pe 2 linii a cate 13 pini) care sunt dispusi pe zona de margine a placii. Acesti pini ofera posibilitatea de a interfata placa Raspberry PI cu o multitudine de dispozitive externe.

Asemeni cum a mai fost mentionat mai sus, exista o multitudine de aplicatii care se pot face atasand dispozitive la portul GPIO.

II.4. Sistemul de operare : Instalare

Pentru a folosi calculatorul Raspberry PI, stau la dispozitia utilizatorului o serie de sisteme de operare. Raspberry PI ruleaza un sistem de operare de tip Linux. Sistemul de operare ales se stocheaza pe o memorie externa, mai exact pe un card microSD. Dupa ce s-a scris imaginea pe card, se introduce cardul in slotul placii, se conecteaza monitorul, tastatura si mouse-ul, cablul de retea si cablul de alimentare. Pe ecran se va obtine interfata grafica a sistemului. Cu acest sistem de calcul Raspberry PI se poate face aproape tot ceea ce se poate face cu un calculator obisnuit.

Figura 2.4.1 Interfata grafica a sistemului Raspberry PI

II.4.1. Procedura de instalare a sistemului de operare (Linux) pentru Raspberry PI

Procedura pentru a instala sistemul de operare pe o placa de dezvoltare Raspberry PI este urmatoarea :

Se descarca pe un calculator PC fisierul „2016-03-18-raspian-jessie.zip” care contine imaginea sistemului de operare „RASPIAN JESSIE”, de pe site-ul oficial

Se deazarhiveaza fisierul descarcat si se obtine fisierul : „2016-03-18-raspian-jessie.img”

Acest fisier se instaleaza de pe PC pe o memorie microSD cu ajutorul programului „Win32DiskImager” care se poate descarca de pe site

Instalarea fisierului „2016-03-18-raspian-jessie.img” pe memoria microSD se face conform descrierii de pe pagina web

Dupa instalare se introduce mmoria microSD in slot-ul aferent de pe placa Raspberry PI

Se ataseaza la portul USB al placii Raspberry PI un mouse, o tastatura si un adaptor Wifi (sau cablu de retea) necesar pentru accessarea internetului. In acest scop se poate folosi un USB hub cu rol de multiplicator port USB

Se ataseaza la portul HDMI un monitor sau un TV, prevazute cu port HDMI

Se scoate din soclu regulatorul de 5V „Step Up/ Step Down S7V7F5”. La instalarea sistemului de operare se va utiliza un adaptor de retea in locul bateriilor de pe robotul mobil. Este interzisa utilizarea simultana regulatorului de 5V si a adaptorulu de retea.

Se alimenteaza de la retea placa Raspberry PI pri portul microUSB, cu un adaptor de reteade 5V DC/1A de tipul celor utilizate la incarcareatelefoanelor mobile.

Pe monitorul pornit se vede instalarea automata a sistemului de operare

Dupa instalarea completa apare mouse-ul si desktop-ul sitemului de operarare

Se acceseaza de pe desktop tab-ul „conexiuni internet” (partea dreapta sus a desktop-ului) si se selecteaza legatura Wifi dorita. Daca este necesar, se introduce de la tastatura parola conexiuni Wifi dorite. Aceasta legatura internet se poate utiliza prntru descarcari sau actualizari programe, sau chiar browsing pe internet

! Observatie : Pentru a salva o imagine curenta a desktop-ului se poate utiliza comanda „scrot” din ecranul de comanda „Terminal”. Imagine va fi salvata in director-ul „/home/pi” care se poate dechide din tab-ul „File Manager”.

II.4.2. Procedura instalarii bibliotecii Python pentru accesarea porturilor I/O

Sistemul de operare „RASPIAN JESSIE” contine deja o varianta instalata a mediului de programare Pythin versiunea 2.7.9. Insa pentru programarea porturilor I/O (input/output) este necesara descarcarea de pe internet si instalarea bibliotecilor corespunzatoare : WiringPi si WiringPi2-Python urmand urmatorii pasi :

Se ataseaza la portul USB al placii Raspberry PI un mouse, o tastatura si un adaptor Wifi

Se ataseaza la portul HDMI un monitor

Se scoate din soclu regulatorul de 5V „Step Up/ Step Down S7V7F5” si se alimenteaza de la adaptorul de retea de 5V DC/1A prin portul microUSB

Se asteapta incarcarea completa a sistemului de operare , aparitia mouse-ului si a desktop-ului

Se porneste ecranul de comanda „Terminal”

Pentru descarcarea si instalarea bibliotecii WiringPI se introduce de la tstatura urmatoarele linii de comanda :

git clone git://git.drogon.net/WiringPi

cd wiringPI

./build

Pentru descarcarea si instalarea bibliotecii WiringPi2-Python se introduc de la tastatura urmatoarele linii de comanda:

cd

git clone https://github.com/Gadgetoid/WiringPi2-Python.git

cd WiringPi2-Python

sudo apt-get install python-dev python-stuptools

sudo pythin setup.py install

II.4.3. Crearea unui fisier Pythin pentru comanda robotului mobil

Pentru crearea unui fisier Python se parcurg urmatoarele etape:

Se ataseaza la portul USB al placii Raspberry PI un mouse si o tastatura

Se ataseaza la portul HDMI un monitor

Se scoate din soclu regulatorul de 5V „Step Up / Step Down S7V7F5”

Se alimenteaza de la retea placa Raspberry PI prin portul microUSB cu un adaptor de retea de 5V DC/1A

Se aspteapta incarcarea completa a sistemului de operare, aparitia mouse-ului si a desktop-ului

Se deschide directorul „File Manager”

Se deschide directorul „WiringPi2-Python”

Se apasa click dreapta si se alege optiunea crearii unui fisier nou si gol (Create New…Empty File)

Se introduce numele fisierului, cu extensia „ .py”. Exemplu : „nume_fisier.py”

Se deschide fisierul nou creat

Se introduce de la tastatura in fisierul deschis programul de comanda a robotului mobil

La sfarsit se salveaza cu comanda „Save” din meniul „File”

Se inchide directorul „File Manager”

Pentru testarea programului , acesta se poate lansa in executie din ecranul de comanda urmand urmatorii pasi :

Se lanseaza in executie ecranul de comanda „Terminal”

Se acceseaza directorul „WiringPi2-Python” cu comanda : „cd WiringPi2-Python”

Se lanseaza in executie fiserul nou creat cu comanda: : „sudo python nume_fisier.py”

! ObservatiI :

Pentru functionarea motoarelor este necesara si alimentarea de la baterie a driver-ului de motor.

Daca testarea se face cu alimentarea placi Rapberry PI de la retea atunci regulatorul de 5V „Step Up / Step Down S7V7F5” trebuie sa fie demontat.

Daca testarea se face cu alimentarea placii Raspberry PI de la bateriile robotului mobil atunci regulatorul de 5V „Step Up / Step Down S7V7F5” trebuie sa fie montat pe soclul de pe driverul de motor.

II.4.4. Procedura pentru lansarea automata in executie a programului de comanda la pornirea/alimentarea placii Raspberry PI

Avand in vedere ca in mod normal, in timpul functionarii robotului mobil, la placa Raspberry PI nu este conectat nici mouse, nici tastatura si nici monitor, este necesar ca programul de comanda inscris in fisierul „proiect.py” sa fie lansat automat, la pornirea/ alimentarea placii Rapberry PI (dupa incarcarea sistemului de operare). In aceast scop se poarcurg urmatoarele etape :

Se ataseaza la portul USB a placii Rapberry PI un mouse si o tastatura

Se ataseaza la portul HDMI un monitor

Se scoate din soclu regulatorul de 5V „Step Up / Step Down S7V7F5”

Se alimenteaza de la retea placa Raspberry PI prin portul microUSB , cu un adaptor de reatea de 5V DC/1A

Se asteapta incarcarea completa a sistemului de operare, aparitia mouse-ului si desktop-ului

Pe desktop se apasa click-dreapta si se alege optiunea crearii unui fisier nou si gol (Create New…Empty File)

Se inteoduce numele fisierului, cu extensia „ .desktop”. Exemplu: lansareProiect.desktop

Se deschide fisierul creat

Se introduce de la tastatura, in fisierul nou creat, urmatoarel linii de program :

[Desktop Entry]

Encoding=UTF-8

Type=Aplication

Name=lansareProiect

Comment=

Exec=sudo python/home/pi/WiringPi2-Python/proiect.py

StartupNotify=false

Terminal=false

Hidden=false

La sfarsit se salveaza cu comanda „Save” din meniul „File” si se inchide editorul de texte cu „Quit”

Se deschide directorul „File Manager”

Se inscrie in linia de adrese (address bar) : „/home/pi/.config” si se apasa tasta „Enter”

Se cauta directorul „autostart”. Daca acesta nu exista in directorul curent se creaza apasand click-dreapta, apoi se selecteaza „Create New…Folder”. Se introduce numele „autostart” pentru directorul nou creat

Se intra in directorul „autostart”

Se cauta pe desktop fisierul „lansareProiect” creat anterior. Se apasa click-dreapta pe fisier si din meniul deschis se selecteaza „Cut”

Se revine in directorul „autostart” si se muta fisierul „lansareProiect” in acesta apasand click-dreapta si din meniul deschis se selecteaza „Paste”

Concluzie: Din acest moment, fisierul „lansareProiect” va fi executat (si ca urmare va fi lansat in executie si programul de caomanda „proiect.py”) la fiecare pornire/ repornire a sistemului de operare, chiar daca la placa Raspberry PI nu este conectat nici mouse, nici tastatura si nici monitor.

Capitolul III. Prezentarea robotului mobil

III.1. Sasiul robotului

Sasiul robotului prezentat in aceasta lucrare este realizat dintr-un kit pentru robot mobil. Kitul contine platforma pentru montare, organele de asamblare, motoarele cu reductoare, rotile de tractiune, roata pentru suport si suportul de baterii.

Figura 3.1.1. Elementele de baza la sasiului robotului mobil

III.1.1 Descrierea robotului asamblat

Componenta principala a sasiului motorului o reprezinta platforma principala pe care cu ajutorul elementelor de montaj sunt montate pe partea inferioara cele doua motoare cu reductor , rotile motrice si a treia roata pentru suport. In partea superioara a sasiului este montat suportul de baterii, intrerupatorul general, placa Raspberry PI impreuna cu driverul pentru motoare si stabilizatorul de tensiune. Tot aici pe partea superioara este montat un modul suplimentar al carui circuit imprimat a fost realizat manual in laborator. Acest modul contine LED-ul indicator al starii de pregatire pentru deplasare, impreuna cu o rezistenta de 1KΩ care in acest montaj functioneaza ca si element de protectie impotriva curentilor prin LED, butonul pentru lansarea deplasarii automate si un element rezistiv de 20KΩ semireglabil care asigura adaptarea semnalului senzorului de distanta la intrarea GPIO a calculatorului Rapberry PI. Aceasta adaptare este vitala pentru placa Raspberry PI deoarece intrarile portului GPIO suporta doar 3,3V iar semnalul senzorlui de distanta masoara 5V care poate sa distruga calculatorul, irecuperabil.

Fugura 3.23 Robotul Mobil asamblat

Conform structurii si modulului de functionare, robotul poate fi clasificat ca si robot mobil educational autonom neghidat cu miscare intamplatoare, locomotie cu roti si transmisie de imagini in timp real.

Cu ocazia modificarilor efectuate pe sasiul robotului, in scopul atingerii unor adaptari mecanice si operatii de montaj bune, s-au luat in considerare problemele privind mentinerea stabilitatii robotului in timpul deplasarrii precum si robusticitatea montajului fizic.

Fugura …..

figua …..

III.2. Platforma de dezvoltare Raspberry PI utilizata (model A+)

Figura 3,2,1 Platforma de dezvoltare Raspberry PI utilizata (model A+), vedere din fata

Figura 3,2,1 Platforma de dezvoltare Raspberry PI utilizata (model A+), vedere din spate

Raspberry PI model A+ dispune de o memorie RAM de 256 MB, oiesire HDMI, o iesire audio, o iesire video composit RCA prin mufa Jack de 3,5 mm, un port USB si un port GPIO. Raspberry PI necesita un card microSD cu un sistem de operare instalat pe acesta. Pretul de achizitie redus, o multime de exemple de proiecte si informatii disponibile on-line fac acest sistem de calcul foarte popular in randul utilizatorilor.

Raspberry PI model A+ se bazeaza pe BCM2835 System-on-chip (SoC), care include un procesor ARM11 si un GPU destul de abil. Acest model este recomandat pentru mai multe proiecte integrate care absoarbe o putere mai mica de la sursa de energie si nu necesita Ethernet.

Pinii GPIO sunt acei pini tata (40 de pini, grupati pe 2 linii a cata 20 de pini) care sunt dispusi pe zona de margine a placii. Acesti pini ofera posibilitatea de a interfata placa Raspberry PI cu o multitudine de dispozotive externe.

Figura 3,2,1 Specificatiile tehnice ale placii Raspberry PI model A+

III.3. Driver-ul de motoare

Aceasta placa compacta de extensie se conecteaza diract la pinii 5, 6, 12, si 13 ai portului GPIO si ofera o solutie simpla si low-cost pentru a controla o pereche de motoare cu perii de curent continuu . Driverul de motoare DRV8835 integrat functioneaza pe o plaja de tensiune cuprinsa intre limitele de tesiune de la 1,5 V pana la 11 V, ceea ce asigura o optiune de control mare pentru motoare de joasa tensiune. Placa poate livra cu curent continuu de 1,2 A (1,5 A fiind limita maxima) pentru fiecare motot in parte sau un curent de 2,4 A (3 A fiind limita maxima) la un singur motor, cand este configurat cu ambele canale conectate in paralel. Placa de circuite imprimate a driver-ului DRV8835 este populata cu componenete SDM si cu un element de protectie FET la conectarea incersa a bateriei.

Actionarea motoarelor se face cu curent continuu si tensiunea necesara alimentarii motoarelor se obtine in urma unei modulatii in impulsuri (PWM). PWM este o prescurtare pentru „Pulse-Width Modulation” sau modularii in latime a impulsurilor. Aplicatia principala a metodei este controlul motoarelor electrice fiinca emuleaza variarea tensiunii prin metode analogice cu metode digitale.

Prin controlul digital este generat un semnal de tip treapta care este oprit si pornit. Raportul dintre oprit si pornit in ciclul pornit-oprit ne arata ciclul de lucru. Ciclul de lucru este indicatorul simularii de arierea tensiunii analogice.

Graficul urmator arata functionarea modularii PWM la valori diferite ale functiei „wiringpi2.pwmWrite” :

Figura 3.3.1 Ciclul de lucru in relatie cu valoarea functiei „wiringpi2.pwmWrite”

Figura 3.3.2 Dispunerea conectorilor circuitului imprimat

Specificatiile tehnice ale driverului motor sunt :

PWM : 250 kHz

Dimensiune : 0,4 cm x 0,7 cm

Driver : DRV8835

Canale motor : 2

Tensiune de lucru minim : 0 V

Tesnsiune maxima de functionare : 11 V

Curent de iesire continuu per canal : 1,2 A

Curent de iesire de varf per canal : 1,5 A

Curent continuu de iesire in paralel 2,4 A

Tensiune logica minima : 2 V

Tensiunea maxima de logica 7 V

Protectie la tensiune inversa : Da

Figura 3.3.3. Diagrama de conectare a driverului

Semnificatia conectorilor driver-ului motor este urmatoarea :

VIN – Intrarea alimentarii, protejata la tensiunea inversa

VCC – tensiune logica de minim 2 V (2 V – 7 V). Logica de alimentare a curentului este de obicei doar cativa miliamperi cel mult, astfel incat in multe aplicatii acest pin poate fi optional alimentat dinamic printr-o iesire digitala microcontroler

VMM – Sursa de alimentare protejata la tensiunea inversa. Acest pin ofera acces la sursa de alimentare a motorului dupa MOSFET de protectie inversa de tensiune (a se vedea schema de bord de mai jos). Acesta poate fi utilizat pentru alimentarea cu energie electrica protejata la tensiune inversa si pentru alte componente ale sistemului

GND – Puncte de conectare GND la sol pentru surse de alimentare logica si sursa de alimentare motor. Cele doua surse trebuiesc conectate la masa comuna

AOUT1 – Iesire semipunte pentru motor A

AOUT2 – Iesire semupunte pentru motor A

BOUT1 – Iesire semipunte pentru motor B

BOUT2 – Iesire semipunte pentrumotor B

AIN1 / APHASE LOW – Intrare logica pentru controlul motorului canal A

AIN2 / AENABLE LOW – Intrare logica pentru controlul motorului canal A

BIN1 / BPHASE LOW – Intrare logica pentru controlul motorului canal B

BIN2 / BENABLE LOW – Intrare logica pentru controlul motorului canal B

MODE LOW – Acest nivel logic determina interfata de control. Nivelul logic mic configureaza pinul IN / IN iar nivelul logic inalt configureaza pinul PHASE / ENABLE.

Motoarele si sursele de alimentare trebuie conectate la conectoarele adecvate ale driver-ului. Driverul motor furnizeaza motorului o tensiune cuprinsa intre 0 – 11 V care este asigurata din sursa de tensiune conectata la pinul VIN sau pinul VMM. O tensiune logica curpinsa intre 1,8 V si 7 V se conecteaza la pinul VCC.

Pinul VIN este protejat la tensiune inversa, de aceea este recomandat ca sursa de tensiune necesara alimentarii motoarelor sa fie conectata la aceasta borna. Este de remarcat insa ca daca nivelul tensiunii scade la aceasta borna sun 1,5 V, buna functionare a driver-ului este grav afectata. Pentru aplicatii de foarte joasa tensiune, alimentarea motorului trebuie sa fie conectata direct la VMM care sunteaza circuitul de protectie inversa.

figura 3.3.4 Schema electrica a driver-ului si a circuitului de protectie

III.4. Regulatorul de tensiune de 5 V

Figura 3.4.1. Regulatorul step p /step down conectat la un kit format din driverul DRV8835 si Raspberry PI

Regulatorul de tensiune S7V7F5 este o sursa de tensiune care este capabil sa asigure dintr-o tensiune de alimentare fluctuabila intre limitele 2,7 V si 11,8 V, o tensiune stabila de 5 V. Din tensiunea de alimentare a modului driver motor, regulatorul de tensiune S7V7F5 poate furniza placii Raspberry PI energia necesara functionarii la o tensiune de 5 V si pana la 1 A intensitate de curent.

Capacitatea sa de a converti atat tensiuni mari cat si tensiuni mici de intrare, il face util pentru aplicatii in care tensiunea de alimentare poate varia foarte mult, ca de exemplu cu baterii care pornesc de la o tensiune mai mare , dar exploatate da u o tensiune mai mica de 5 V. Este un modul foarte compact, are o eficienta de peste 90 % si poate furni9za pana la 1 A, atunci cand reduce tensiunea si aproximativ 500 mA cand amplifica.

Figura 3.4.2 Eficienta regulatorului de tensiune step up/ step down S7V7F5

Insertia regulatorului te tesiune in soclul adecvat de pe placa de driver motor trebuie facuta cu atentie pentru ca o conectare inversa determina o defectare iremediabila a sistemului. De asemenea nu se va conecta sursa de alimentare la portul microUSB al sistemului cat timp se afla regulatorul de tensiune montat in sistem pentru a evita distrugerea definitiva a sistemului.

Figura 3.4.3 Limita maxima a curentului de iesire a regulatorului de tensiune step up/ step down S7V7F5

Caracteristicile tehnice la regulatorului S7V7F5 sun urmatoarele :

Tensiunea de alimentare : 2,7 V 11,8 V

Tensiunea de iesire 5 V fix cu o precizie ± 3 %

Curent continuu de iesire : 1 A, atunci cand lucreaza in regim reductor de tensiune; 500 mA atunci cand amplifica tensiunea (curentul continuu real de iesire depinde de tensiunea de intrare)

Facilitate de economisire a energiei : mentine o eficienta ridicata la curenti mici (curentul Quiescent este mai mic de 0,1 A )

Protectie integrata la scurcircuit si supra-temperaturi

Dimensiuni mici : 9 mm x 12 mm x 3 mm

III.5. Senzorul de distanta

Acest mic senzor de distanta digitala detecteaza obiectele aflate la o distanta intre 2 cm si 10 cm. Cu timpul sau rapid de raspuns, dimensiunile sale mici si consumul de curent scazut, acest senzor este o alegere buna pentru detectarea obiectelor de baza de non-contact.

Figura 3.5.1 Senzorul de distanta Sharp GP2Y0D810Z0F

Exista cativa milimetri de histerezis in jurul pragului maxim de raza de actine si nici in histerezis la pragul de interval minim. Este de retinut ca acesti senzori spun doar daca exista un obiect de-a lungul intervalului de detectie cuprins in unghiul lor ingust de actiune; acestia nu vor spune cat de departe este obiectul. Cu detectie la distante de pana la 150 mm si o rata tipica de esantionare de 400 Hz, acesti senzori ofera o alternativa atractiva. Iesirea VO este comutata la valoarea logica 0 atunci cand senzorul detecteaza un obiect, in caz contrar iesirea VO sete comutata la valoarea logica 1.

Codul sursa utilizat pentru acest tip de senzor este urmatorul :

void setup(){

Serial.begin(9600)

pinMode(7,INPUT);

pinMode(8,INPUT);

}

void loop()

{

int valoareSenzor10cm = digitalRead(7);

int valoareSenzor5cm = digitalRead(8);

Serial.print(”Senzor 10cm: ”);

Serial.print(valoareSenzor10cm,DEC);

Serial.print(”Senzor 5cm: ”);

Serial.println(valoareSenzor5cm,DEC);

}

Figura 3.5.2 Schema electrica a detectorului de distanta Scharp GP2Y0D810Z0F

Specificatiile tehnice ale senzorului de distanta sunt :

Distanta maxima de detectie : 10 cm

Distanta minima de detectie : 2 cm

Frecventa de esantionare : 390 Hz

Tensiune de operare : de la 2,7 V la 6,2 V

Consumul mediu de curent : 5 mA

III.6. Camera video

Camera video folosita in aceasta lucrare este modulul de camera v1. Acesta are o rezolutie de 5 megapixeli si a fost lansata in 2013. Varianta molului de camera v1 folosita este cea pentru vedere normala pe timp de zi, dar exista si o varianta cu vedere pe timp de noapte, cu infrarosu. Aceasta are o frecventa de luminanta automata de 50 / 60 Hz, calibrare automata la al si negru (Automatic white balance & Automatic Black level calibration) si un frame rate de pana la maxim 90 fps. Are de asemenea o functie de oglindire si rotatie de 360 de grade a imaginii , iar confirmarea pornirii camerei este data de un mic LED, care se va aprinde de fiecare data cand camera este pornita. Modulul de camera v1 are incorporat un regulator de 1,5V.

Camera video modul v1 suporta mai multe formate de imagine cum ar fi JPEG, GIF, BMP, PNG, YUV420 si RGB888. Foematul video suportat este h.264. Modulul v1 de camera dispune preinstalat cu mai multe efecte de captura de imagini sau video cum ar fi : negativ, schita, saturare ș.a. Modurire prin care se activeaza sau dezactiveaza camera sunt prin apasarea unei taste de la tastatura, un semnal UNIX sau un intervar prestabilit de functionare definit de unilizator.

Figura 3.6.1. Camerea Raspberry PI modul v1

Specificatiile tehnice ale modulului de camera v1 sunt urmatoarele:

Dimensiune : 25 x 24 x 9 mm

Greutate : 3g

Rezolutie : 5 megapixeli

Moduri video : 1080p-30fps, 720p-60fps, 640 x 420p – 60 sau 90 fps

Driver inclus : V4L2 Linux integration driver

Senzor : OmniVision OV5647

Rezolutia senzorului : 2592 x 1944 pixeli

Sensibilitate : 680 mV/lux-sec

Capitolul IV. Schema de comanda a robotului mobil

IV.1. Descrierea schemei de comanda

Figura 4.1. Schema de comanda a robotului mobil

Comanda robotului mobil se realizeaza cu o placa de dezvoltare Raspberry PI model A+

La aceasta placa se conecteaza un driver de motor de tip DRV8835 care comanda direct cele 2 motoare de curent continuu : Motor 1 si Motor 2

Turatia motorului este data de factorul de umplere a semnalului PWM (de la iesirea digitala D12 pentru Motor 1 si de la iesirea D13 pentru Motor 2). Directia de miscare (rotire „Inainte” sau rotire „Inapoi”)este data de nicelul logic „0” sau nivelul logic „1” a desmanului de directie (DIR) emis de placa Raspberry PI, prin iesirile D5 si D6

Detectarea obstacolelor se realizeaza cu un senzor digital de distanta de 10 cm. Acest senzor emite permanent un semnal de nivel logic 1 (adica 5V) daca nu este prezent nici un obstacol. La aparitia unui obstacol senzorul emite un semnal de nivel logic 0 (aproape 0 V) si mentine acest nivel logic 0 pana la disparitia obstacolului. Avand in vedere ca intrarea digitala D25 suporta doar semanale de pana la 3,3 V, se utilizeaza un potentiometru de 20 K pentru reducerea nivelului semnalului 1 logic, de la 5 V la 3,3 V

Pentru controlul functionarii robotului mobil se utilizeaza un „Buton” si un „LED”. LED-ul este conectat la iesirea digitala D7 iar butonul la intrarea digitala D8. Conform schemei, daca butonul nu este apasat atunci intrarea D8 este la nivelul logic 1 (3,3 V) iar daca este apasat atunci este la nivel logic 0 (0 V)

Dupa incarcarea completa a sistemului de operare se dechide ecranul de comanda Terminal si se introduce de la tastatura linia de comanda pentru camera Raspberry PI

Odata stabilit streamul se ruleaza fisierul proiect.py. La terminarea incarcari, LED-ul se aprinde si odata cu apasarea butonului se poate porni miscarea robotului. Dupa pornirea miscarii LED-ul se va stinge. La apasare, din nou, a butonului robotul se va opri si LED-ul se va aprinde din nou.

Robotul mobil este alimentat de 4 baterii de tip AA ,in total 6V, dar se poate utiliza si 6 baterii obtinand astfel o alimentare de 9 V

Driver-ul motor se alimenteaza direct de la baterie, iar Raspberry PI se alimenteaza cu 5 V stabilizat, furnizat de regulatorul de tensiune de tip S7V7F5

Tensiunea de 3,3 V este furnizata de placa de dezvoltare Raspberry PI

Capitolul V. Programul de comanda in limbaj Python pentru robotul mobil

V.1. Algoritmul de functionare

Programul robotului mobil indeplineste sarcina de a ocoli obstacolele prin implementarrea detaliata a algoritmului urmator :

Figura 5.1.1. Algoritmul de functionare al robotului mobil

Acest algoritm este realizat folosint urmatorul cod in mediul de programare Python:

#PROGRAM ROBOT MOBIL CU RASPBERRY PI SI DRIVER MOTOR DRV8835

import wiringpi2 # biblioteca Python pentru Raspberry PI

import time # biblioteca pentru temporizari de tip „ sleep”

VitezaMAXIMA = 480 # Pentru factorul de umplere 100% (PWM)

# la driverul de motor drv8835

#alocare pini pentru driverul de motor

motor1_PWM_pin=12

motor1_DIR_pin=5

motor_2_PWM-pin=13

motor_2_DIR_pin=6

#alocare pini pentru led, buton si senzor

led_pin=7

buton_pin=8

senzor_pin=25

#setari mod de functionare pini : 0=INPUT 1=OUTPUT 2=PWM OUTPUT

wiringpi2 . wiringPiSetupGpio ( )

wiringpi2 . pinMode (led_pin , 1 )

wiringpi2 . pinMode (buton_pin , 0 )

wiringpi2 . pinMode (senzor_pin , 0 )

wiringpi2 . pinMode (motor1_DIR_pin , 1 )

wiringpi2 . pinMode (motor2_DIR_pin , 1 )

wiringpi2 . pinMode (motor1_PWM_pin , 2 )

wiringpi2 . pinMode (motor2_PWM_pin , 2 )

#setari mod PWM (0=MS ) pentru driverul de motor drv8835

wiringpi2 . pwmSetMode ( 0 )

wiringpi2 . pwmSetRange (VitezaMAXIMA )

wiringpi2 . pwm SetClock (2 )

#definire functii de miscare

def stopDeplasare ( ) :

wiringpi2 . pwmWrite ( motor1_PWM_pin , 0 ) # 0= stop miscare

wiringpi2 . pwmWrite (motor2_ PWM_pin , 0 )

def deplasareInainte ( viteza )

wiringpi2 . digitalWrite (motor1_DIR_pin , 0 ) # 0= directie inainte

wiringpi2 . pwmWrite ( motor1_PWM_pin , viteza )

wiringpi2 . digitalWrite ( motor2_DIR_pin , 0 )

wiringpi2. PwmWrite ( motor2_PWM_pin , viteza )

def deplasareInapoi (viteza ) :

wiringpi2. DigitalWrite ( motor1_DIR_pin , 1 ) # 1= directie inapoi

wiringpi2 . pwmWrite (motor1_PWM_pin , viteza )

wiringpi2 . digitalWrite ( motor2_DIR_pin , 1 )

wiringpi2 . pwmWrite ( motor2_PWM_pin , viteza )

def virajLaStanga ( viteza ) :

wiringpi2 . digitalWrite ( motor1_DIR_pin , 1 )

wiringpi2 . pwmWrite ( motor1_PWM_pin , viteza )

wiringpi2 . digitalWrite ( motor2_DIR__pin , 0 )

wiringpi2 . pwmWrite ( motor2_PWM_pin , viteza )

def virajLaDreapta ( viteza ) :

wiringpi2 .digitalWrite ( motor1_DIR_pin , 0 )

wiringpi2 . pwmWrite ( motor1_PWM_pin , viteza )

wiringpi2 . digitalWrite ( motor2_DIR_pin , 1 )

wiringpi2. PwmWrite ( motor2_PWM_pin , viteza )

#definire functie pentru apasare butor ( 0= buton apasat )

def asteptareApasareSiEliberareButon ( ) :

buton=1

while buton==1 : # Bucla asteptare

buton=wiringpi2 . digitalRead ( buton_pin ) # apasare buton

wiringpi2 . digitalWrite ( led_pin , 0 ) # Stingere LED

time . sleep ( 1 ) # Asteptare elibare buton : 1sec

wiringpi2 . digitalWrite ( led_pin , 1 ) # Aprindere LED = se poate porni robotul

asteptareApasareSiEliberareButon ( ) # Asteptare comanda pornire robot

# BUCLA executat continuu = PROGRAM PRINCIPAL

while 1 :

buton= wiringpi2 . digitalRead ( buton_pin ) # Citire buton

if buton = = 0 : # Daca butonul a fost apasat

stopDeplasare ( ) # atunci oprire robot

wirinpi2 . digitalWrite ( led_pin , ,1 ) # aprindere LED

time . sleep ( 1 ) # asteptare pentru

# eliberare buton

AsteptareApasareSiEliberareButon ( ) # Asteptare comanda pt

# repornire robot

deplasareInainte( 300 ) # Deplasare inainte daca

# nu este detectat obstacol

# 300 = viteza

senzor = wiringpi2 .digitalRead ( senzor_pin ) # Citire senzor ( 0 = obstacol )

if senzor = = 0 : # Daca este obstacol atunci :

stopDeplasare ( ) # oprire miscare

time . sleep ( 0 . 5 ) # 0,5 sec

deplasareInapoi ( 300 ) # deplasare inapoi

time . sleep ( 0. 25 ) # 0,25 sec

virajLaStanga ( 300 ) # ocolire obstacol

time . sleep ( 0.25 ) # 0. 25 sec

# Daca nu este obstacol

# atunci continua BUCLA

# sfarsit BUCLA ( sfarsit PROGRAM PRINCIPAL )

Capitolul VI. Transmitere video in timp real

VI.1 Aplicatiile caracteristice ale camerei Raspberry PI

Exista 3 aplicatii oferite de dezvoltatorii Raspberry PI : RASPISTILL, RASPISTILLYUV si RASPIVID. RASPISTILL si RASPISTILLYUV sunt foarte similare si destinate pentru captare de imagini RASPIVID este destinat capturii video. Toate aplicatiile sunt conduse de la linia de comanda si scrise pentru a profita de API MMAL( Aplication Programming Interface – Multimedia Abstraction Layer ) care ruleaza peste OpenMAX( driverul preinstalat al camerei ). API-ul MMAL ofera un sistem mai facil decat cel prezentat de OpenMAX.

Aplicatiile folosesc pana la 4 componente OpenMAX (MMAL ) : aparat de fotografiat, previzualizare, encoder, null_sink . Toate aplicatiile folosesc camera in sine; RASPISTILL foloseste componenta codare imagine ( Image Encode ) , RASPIVID utilizeaza componenta de codare video ( Video Encode ) iar RASPISTILLYUV nu foloseste un codificator dar trimite YUV sau RGB direct de la componenta aparatului foto la fisier. Ecranul de previzualizare este optional dar poate fi utilizat fuul-screen sau poate fi directionat catre o anumita zona dreptunghiulara pe ecran. Daca previzualizarea e dezactivata, componenta null_sink este utilizata pentru a ,,absorbi’’ cadrele de previzualizare. Camera trebuie sa produca cadre de previzualizare, chiar daca acestea nu sunt necesare pentru display, deoarece sunt utilizate pentru calcularea expunerii si setarii balansului de alb.

In plus este posibil sa se omita optiunea de numire a fisierului ( caz in care se afiseaza previzualizarea dar nici un fisier nu este scris ) sau sa redirectionezi toate iesirile spre stdout.

VI. 2 Configurarea camerei Raspberry PI

Camerele Raspberry PI sunt sensibile la energii statice. Inainte de manipularea PCB-ului ( Printed circuit board ) ar trebuie sa existe impamantare. Placa camerei se ataseaza la placa de dezvoltare Raspberry PI printr-un cablu de tip panglica cu 15 pini. Se pot face doar 2 conexiuni : cablul panglica trebuie sa fie atasat la camera si la placa Raspberry PI . Cablul trebuie montat pe partea potrivita altfel camera nu va functiona. Cablu are pe panglica portiuni albastre una conecata la camera care trebuie pusa cu sapele si cea conectata la placa trebuie sa fie cu fata spre mufa audio Jack de 3,5 mm ( model A+ ) . Desi conectorii de pe camera si de pe placa sunt diferiti, acestia lucreaza in mod similar.

VI.3 Configurarea Software

Pentru prima utilizare a camerei Raspberry PI trebuie sa urmam urmatorii pasi

Pasul 1 . Conectam camera Raspberry PI asemeni cum a fost precizat in subcapitolul anterior

Pasul 2 . Pornim placa de dezvoltare Raspberry PI

Pasul 3. Deschidem din meniul principal, Raspberry PI Cnfiguration Tool

Pasul 4. Se verifica daca interfata camerei este activata. In caz contrar se ctiveaza si apoi se restarteaza placa de dezvoltare.

Pasul 5. Pentru testarea camerei se creeaza un fisier nou ,se deschide cu editor de text si se introduce urmatorul cod:

from picamera import PiCamera

from time import sleep

camera =PiCamera()

camera.start_preview()

sleep(10)

camera.stop_preview ( )

Acest cod se salveaza cu Ctrl + S si apoi inchidem fisierul. Se deschide fereastra Terminal din bara de meniu se acceseaza directorul in care a fost salvat fisierul camera.py , din ecranul de comanda Terminal cu comanda ,,cd „(mentionat in capitolul anterior ) si apoi este lansat in executie fisierul camera.py folosind comanda ,,sudo python camera.py „. Acest program ofera un clip de 10 secunde si apoi se opreste automat.

VI.4 Utilizarea de baza Raspivid

Cu modulul camerei conectat si activat se poate inregistra un clip video untilizand urmatoarea comanda : ,, raspivid -o vid.h264 ”. In cazul in care imaginea este rasturnata sau intr- o parte se pot adauga in comanda anterioara sintagmele „-hf” ( horizontal flip ) sau „-vf” ( vertical flip) Comanda anterioara va salva un fisier video de 5 secunde care se va salva in fisierul vid.h264. Pentru a specifica durata videoclipurilor luate se foloseste sintagma -t urmat de o valoare a timpului in milisecunde, de exemplu „ raspivid -o video.h264 -t 10.000 ” (va inregistra un clip de 10 secunde ). Pentru o lista completa de optiuni posibile executam comanda raspivid in fereastra de comanda Terminal .

O parte din optiunile cele mai utilizate alaturi de comanda raspivid sunt:

-n → opreste videoclipul sa fie vizualizat ( eliminati daca doriti sa vizualizati videoclipul pe iesirea hdmi )

– w → se refera la latimea video-ului (width ) cuprinsa intre 64-1920

-h → se refera la inaltimea video-ului care este cuprinsa intr 64-1080

-fps → semnifica cadre pe secunda care pot ajunge de la 2 pana la 30

VI.5 Realizarea transmisunii in timp real

Trasmisiunea in timp real se realizeaza prin intermediul unui stream RTSP (Real Time Streaming Protocol) folosind un lector multimedia VLC Media Player instalat pe ambele componente, atat pe placa de dezvoltare Raspberry PI cat si pe computer PC sau alte dispozitive care pot receptiona fluxul de retea.

VI.5.1 VLC Media Player

VI.5.1.1 Instalarea VLC Media Player pe placa de dezvoltare Raspberry PI

Inainte de a instala VLC Media Player pe place de instalare Raspberry PI trebuie sa ne asiguram ca sistemul de operare este actualizat. Acest lucru se efectueaza cu ajutorul comenzilor : sudo-apt get update; sudo-apt get upgrade. Dupa executarea celor 2 comenzi se poate avansa cu instalarea VLC Media Player.

Instalarea VLC Media Player se face lansand in executie ecranul de comada Terminal si apoi se introduce de la tastatura urmatoarea linie de comanda : sudo apt-get install vlc.

VI.5.1.2 Instalarea VLC Media Player pe un computer PC

Pentru instalarea VLC Media player pe un computer PC, mai intai se acceseaza pagina web a VideoLan Organization, de unde este posibila descarcarea gratuita a executabilulul. In continuare, se ruleaza executabilul si se urmeza pasi din VLC Install Wizard.

VI.5.2 Streamul RTSP

RTSP este un protocol de retea proiectat pentru utilizarea in siteme de divertisment si comunicatii. Protoculul este folosit pentru a stabili si controla conexiuni media.

In acest proiect streamul RTSP este realizat intre robotul mobil si un laptop prin intermediul unui router wireless Tenda N300. Portul utilizat pentru a crea conexiunea este 8554.

Pentru ca aceasta conexiune sa fie posibila a fost necesara crearea unui forward port. Acest lucru se realizeaza din setarile router-ului. Intai adresa IP a robotului mobil trebuie memorata in lista de clienti DHCP ca si o adresa statica. In acest fel vom sti intodeauna adresa IP pe care router-ul o va aloca robotului mobil.

In continuare se va crea forward port-ul. In acest fel orice conexiune venita sau transmisa la portul 8554 va fi directionat automat spre adresa IP a robotului mobil.

VI.5.2 Transmisunea propriu-zisa in timp real

Dupa cum s-a precizat anterior, pentru realizarea transmisiuni este necesara intalarea media player-ului VLC cat si crearea unui flux de retea.

Pentru crearea trrasnmisiunii se parcurg urmatoarele etape:

Se porneste placa de dezvoltare Raspberry PI

Se conecteaza robotul mobil prin intermediul adaptorului Wifi USB la router-ul wireless Tenda N300

Se lanseaza in executie ecranul de comanda Terminal

Se introduce de la tastatura urmatoarea linie de comanda :

raspivid -o – -t 0 -w 600 -h 400 -fps 12| cvlc -vvv stream:///dev/stdin – sout ’#rtp{sdp=rtsp://:8554/}’ :demux=h264

unde :

„cvlc” reprezinta VLC Media Player

„-vvv” impreuna cu argumentul sau specifica de unde se obtine streamul

„-sout” impreuna cu argumentul sau specifica unde se trimite stream-ul

„-t 0” dezactiveza limita de timp a filmarii

„-o” determina iesirea sa fie scrisa la stdout

„-h” se refera la inaltimea video-ului care este cuprinsa intr 64-1080

„-w” se refera la latimea video-ului (width ) cuprinsa intre 64-1920

„-fps” semnifica cadre pe secunda care pot ajunge de la 2 pana la 30

Se porneste media player-ul VLC pe computer-ul PC

Se acceseaza bara de meniu, tabul „Media”

Din meniul rezultat se aceseaza comanda „Open Network Stream”

In continuare, va aparea o fereastra unde se va cere o adresa URL. Se va introduce de la tastatura urmatoarea adresa : rtsp://192.168.1.100:8554/

Unde :

192.168.1.100 – reprezinta adresa IP a robotului mobil

8554 – reprezinta portul de conexiune

Rezultatul final este transmisiunea video in timp real de la camera Rapberry PI la computerul PC.

Concluzii

Scopul acestei lucrari a fost realizarea unei transmisiuni in timp real prin intermediul camerei Raspberry PI Modul v1 si placa de dezvoltare Raspberry PI Model A+. S-a facur referire la componentele alese , rolul lor ,descrierea si functiile fiecaruia, modul de utilizare si modul de implementare.

Prima parte a lucrarii contine partea teoretica, partea in care a fost prezentata fiecare componenta in parte, iar in a doua parte a fost prezentat modul in care acestea lucreaza impreuna ca si un sitem.

Fiecare componenta a acestui sistem are intrebuintari multiple, mult mai multe decat cele prezentate, in continuare existand mult loc de dezvoltare a acestei platforme, la fel cum eu am dezvoltat-o la randul meu, implementand camera Raspberry Pi si realizand stream-ul video in timp real.

Scopul alegerii acestei teme a fost demonstrarea ca se poate realiza la un cost relativ redus, utilizant elemente accesibile, si cu un consum de energie scazut, o dezvoltare a unei platforme deja existente.

Consider ca prin aceasta lucrare s-a demonstrat cum prin un cost redus si prin accesibilitatea documentatiei si componentelor, atat hardware cat si sofware, se poate realiza dezvoltarea unui proces automatizat.

Bibliografie

[1]https://www.adafruit.com/products/1033

[2]https://ro.wikipedia.org/wiki/Robot

[3]http://www.robothalloffame.org/inductees/03inductees/unimate.html

[4]www.mce.utcluj.ro/lucrari/PWM.doc

[5]www.pololu.com

[6]www.robofun.ro

[7]http://www.slideshare.net/SeggySegaran/raspberry-pi-autostarting-a-python-program

[8]https://www.pololu.com/search?query=GP2Y0D810Z0F&x=12&y=10

[9]https://github.com/pololu/drv8835-motor-driver-rpi

[10]https://www.raspberrypi.org/documentation/installation/installing-images/windows.md

[11]https://sourceforge.net/projects/win32diskimager/

[12]www.slideshare.net/guestedb041/prezentare-pwm

[13]http://images1.wikia.nocookie.net/__cb20111123052453/nccmn/ro/images/a/af/Masini_Electrice_8.pdf

[14]https://www.pololu.com/product/2758

[15]https://www.pololu.com/search?query=s7v7f5&x=0&y=11

[16]https://www.robofun.ro/raspberry-pi-si-componente/camera

[17]https://www.raspberrypi.org/downloads/help/quick-start-guide/

[18]https://www.raspberrypi.org/downloads/raspbian/

[19]https://sourceforge.net/projects/win32diskimager/

[20]Alexandru Bara, Ingineria reglarii automate, Universitatea din Oradea 2010

[21]Gacsadi Alexandru, Bazele Roboticii (Curs pentru uzul studentilor), Universitatea din Oradea 2008

[22]Paun Antonescu, Constantin Galmeanu, Ovidiu Antonescu, Roboti mobili utilizati pentru manipularea si neutralizarea minitiei ne-exploatate, Iniversitatea Politehnica Bucuresti, 2001

[23]Radu Bogdan Rusu, Sistem multiagent pentru roboti mobili: Robotux (Proiect de Diploma), 2004

[24]Ing. Radu Bogdan Rusu, Arhitecturi moderne pentru roboti mobili: Javaclient si ZeeRO, [25]Universitatea tehnica din Clij-Napoca

[26]Roland Siegwart, Illah R. Nourbakhsh, Introduction to Autonomus Mobile Robots, 2004

[27]Kovacs Sandor, Comanda unui robot mobil cu sitemul de dezvoltare Raspberry PI (Dizertatie), 2016

[28]http://www.raspberry-projects.com/pi/pi-hardware/raspberry-pi-camera/streaming-video-using-vlc-player

[29]http://www.raspberry-projects.com/pi/pi-hardware/raspberry-pi-camera/using-the-camera

[30]https://www.raspberrypi.org/documentation/hardware/camera/README.md

[31]https://www.raspberrypi.org/documentation/usage/camera/raspicam/raspivid.md

[32]https://www.raspberrypi.org/learning/getting-started-with-picamera/worksheet/

[33]https://www.raspberrypi.org/documentation/raspbian/applications/camera.md

[34]http://www.videolan.org/vlc/download-windows.ro.html

[35]https://en.wikipedia.org/wiki/Real_Time_Streaming_Protocol

[36]https://en.wikipedia.org/wiki/Port_forwarding

Similar Posts