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
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: AUTOMATICĂ ȘI INFORMATICĂ APLICATĂ FORMA DE INVĂȚĂMÂNT ZI Proiect de diplomă COORDONATOR ȘTIINȚIFIC Conf.dr.ing.Barabaș Tiberiu ABSOLVENT Patca… [309694] (ID: 309694)
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.
