Dispozitiv purtabil pentru controlul la distanță al unui vehicul cu sistem de stabilizare [302802]

[anonimizat]

Ș.L.dr. ing. Răzvan BOGDAN

Timișoara

2017

Listă figuri

Fig. 2.1 [anonimizat] [9] 8

Fig. 2.2 Mecanismul Veebot [10] 9

Fig. 2.3 Lumină infraroșie și procesarea imaginii venelor [11] 10

Fig. 2.4 Ultrasunetele care determină fluxul de sânge[11] 10

Fig. 2.5 Prezentare generală a sistemului de frânare [12] 11

Fig. 2.6 Circuitul hidraulic al sistemului ESP [13] 11

Fig. 2.7 Amplasarea senzorilor în sistemul ESP [14] 12

Fig. 3.1. Placă Arduino UNO [15] 14

Fig. 3.2 Arduino Mega și Interfața Software Arduino IDE [16] 15

Fig. 3.3 Cabluri, Bandă, Material velostat; 19

Fig. 3.4 Shield cu driver de motoare L293D [17] 20

Fig. 3.5 Modul accelerometru și giroscop [17] 21

Fig. 3.6 Servomotor de metal 12g ES08MA [17] 22

Fig. 3.7 Motor DC 10000 RPM, 12V [17] 22

Fig. 4.1 Descrierea pasului 3 23

Fig. 4.2 Rezultatul după pasul 5 24

Fig. 4.3 Forma finală a senzorului 24

Fig. 4.4 Rezistența senzorului de îndoire 25

Fig. 4.5 Senzorii de îndoire montați pe poziție 25

Fig. 4.6 Mecanismul de fixare 26

Fig. 4.7 Circuitul senzorului de îndoire 26

Fig. 4.8 Configurația pinilor aferenți mănușii 26

Fig. 4.9 Circuitele mănușii 27

Fig. 4.10 Vehiculul după pasul 3. 28

Fig. 4.11 Vehiculul după pasul 5. 28

Fig. 4.12 Vehiculul în stadiul final. 29

Fig. 4.13 Diagrama bloc a dispozitivului portabil pentru control la distanță 30

Fig. 4.15 Diagrama bloc a întregului sistem 32

Fig. 4.16 Declararea pinilor aferenți senzorilor 33

Fig. 4.17 Citirea valorilor trimise de senzori 33

Fig. 4.18 Detectarea pozitiei mâinii 34

Fig. 4.19 [anonimizat] 35

Fig. 4.20 Declararea celor 4 [anonimizat]() 36

Fig. 4.21 Funcția receiveEvent(int) – verificarea conexiunii 36

Fig. 4.22 Funcția receiveEvent(int) – acționarea motoarelor în funcție de informațiile primite 37

Fig. 4.23 Bibliotecile necesare implementării codului 38

Fig. 4.24 Declararea motorului servo și a conexiunii Bluetooth 38

Fig. 4.25 Funcția void setup() 38

Fig. 4.26 Funcția void loop() 39

Fig. 4.27 Arhitectura software 40

Fig. 5.1 Conexiunea Bluetooth pentru modul Master 42

Fig. 5.2 Interfața Serial Monitor 43

Fig. 5.3 Valorile degetului 1 respectiv 2 44

Fig. 5.4 Valorile degetului 3 respectiv 4 44

Fig. 5.5 Setul de date suprapus 45

Fig. 6.1 Rezultatul final 47

Listă tabele

Tabelul 3.1: Specificații tehnice Arduino MEGA 16

Tabelul 3.2 Caracteristici tehnice modul Bluetooth HC06/HC06 18

Tabelul 3.3 Specificații tehnice Shield cu driver de motoare L293D 20

Tabelul 3.4: Specificații tehnice Modul accelerometru și giroscop 21

Tabelul 3.5: Specificații tehnice servomotor de metal 12g ES08MA 22

Tabelul 3.6 Specificații tehnice Motor DC 10000 RPM, 12V 22

Capitolul 1: Introducere

1.1 Abstract

Această lucrare surprinde două aspecte. Primul aspect se referă la controlul unor diferite dispozitive de la distanță prin intermediul gesturilor/mișcărilor efectuate de către mână. Pentru realizarea dispozitivului s-a utilizat placa de dezvoltare Arduino Uno R3, programată utilizând interfața Arduino.

Al doilea aspect se referă la construirea unui vehicul cu tracțiune integrală în vederea implemantării unui sistem de stabilizare a acestuia, sistem bazat pe un accelerometru cu trei axe. Pentru realizarea vehiculului s-au utilizat de asemenea două placi Arduino Uno, programate utilizând interfața Arduino.

Prima parte a lucrării constă într-o analiză a pieții în ceea ce privește dispozitivele purtabile pentru control la distanță bazate pe mișcările mâinii, dar și a autovehiculelor și a sistemului lor de frânare. Cea de-a doua parte a lucrării va descrie informații generale despre echipamentele hardware și software utilizate pentru a dezvolta proiectul precum și despre modul în care proiectul a fost asamblat și programat. Partea practică va consta dintr-o mănușă modernizată cu senzori de îndoire și un vehicul dezvoltat astfel incât să poată prelua și gestiona informațiile provenite de la sensorul de accelerație astfel incât în cazul in care se pierde controlul vehiculul, codul aflat in spate să îl redreseze pe traseul dorit.

Impelementarea sistemului de stabilizare face obiectul unei lucrări viitoare.

1.2 Scopul Proiectului

Scopul proiectului este acela de a realiza un dispozitiv care să poată controla un vehicul sau orice alt dispozitiv de la distanță prin gesturile/mișcările mâinii, dar și realizarea unui concept de vehicul electric al viitorului, al cărui sistem de frânare nu este bazat pe un circuit hidraulic (cum sunt cele din prezent) ci este bazat pe frânarea individuală a fiecarui motor.

Capitolul 2: Analiza stadiului actual

Dispozitivul purtabil pentru control la distanță poate fi configurat pentru a fi compatibil într-o varietate de domenii, de la divertisment la domeniul militar, dar și pentru medicină la distanță, deoarece acesta furnizează un set de comenzi care pot controla orice tip de dispozitiv prin conexiune Bleutooth sau Wireless. Mișcările/gesturile mâinii pot fi preluate de un dispozitiv care copiază mâna umană și poate fi folosit pentru a efectua intervenții chirurgicale pe distanțe lungi, doar oferind chirurgului o conexiune la internet și o transmisie video. Același principiu poate fi folosit pentru a controla un robot construit pentru a dezamorsa bombe sau poate fi aplicat în viitor pentru jocuri cu realitate virtuală.

Vehiculul cu sistem de stabilizare bazat pe controlul individual al fiecărui motor electric poate fi privit ca o nouă perspectiva asupra vehiculelor viitorului. În momentul de față fie ca vorbim despre autovehicule cu motoare cu combustie internă, autovehicule hybrid sau autovehicule 100% electrice, toate au sistemul de frânare bazat pe un circuit hidraulic.

2.1 Analiză în ceea ce privește dispozitivul purtabil pentru control la distanță

În prezent există câteva dispozitive inteligente pe piață care se dezvoltă pentru a ajuta medicii în rutina lor zilnică sau pentru a face un set de sarcini specifice care necesită un calcul rapid al datelor.

Un exemplu de acest tip de dispozitiv este Charlie Robot, care a fost construit pentru a fi cel mai bun prieten al copiilor care suferă de diabet zaharat și au nevoie de analize sanguine sau analize alimentare. Acest dispozitiv este defapt un program care oferă sprijin emoțional acelor copii, oferind un set de întrebări și informații despre boala de care suferă. Ei învață despre aceasta toate informațiile necesare. Mai exact: care sunt efectele exercițiilor sau alimentației precum și cum să facă față acestei boli.

Fig. 2.1 Copil jucându-se cu Charlie Robot [9]

Robotul este capabil să aibă o conversație despre un anume subiect, poate măsura cu grijă zahărul din sânge și numără carbohidrații dintr-un pahar de lapte. Asemenea abilități sunt foarte importante pentru copiii mici care sunt diagnosticați cu diabet zaharat, deoarece, celilalți copii de vârsta lor, se bucură de petreceri aniversare, biciclete, de echitatie sau joacă fotbal, dar acele acțiuni pot avea un impact foarte mare asupra nivelului de zahăr din sânge. Din acest motiv, copiii trebuie să învețe cum să navigheze în astfel de zone periculoase, pline de tentații dulci, gestionând o boală pe care o vor avea pentru tot resul vieții.

În concluzie, acest robot este un antrenor real, care pregătește copiii cu un set de abilități și informații despre boala lor și îi învață cum să facă față acestei boli și cum să aibă o viață ușoară.

Un alt robot care este util în jurul medicilor este Robotul Veebot, un robot care extrage sângele mai rapid și mai sigur decât un om.

Fig. 2.2 Mecanismul Veebot [10]

Robotul foloseste lumina infrarosie si analiza imaginii pentru a găsi vena, ultrasunete pentru a determina fluxul de sânge din vena precum și robotica pentru a introduce nidula în venă. După ce pacienții își pun brațul în arcadă, o lumină infraroșie iluminează partea interioară a cotului pentru camera foto. Software-ul compară ceea ce se vede prin intermediul camerei foto cu un model construit din mii de imagini cu vene pentru a localiza vena cea mai potrivită pentru a introduce nidula.

Fig. 2.3 Lumină infraroșie și procesarea imaginii venelor [11]

Odată ce software-ul selectează vena corectă, robotul trece în modul cu ultrasunete pentru a confirma dacă vena selectată are suficient flux de sânge. Acest lucru este necesar pentru o colectare reușită de sânge.

Fig. 2.4 Ultrasunetele care determină fluxul de sânge[11]

2.2 Analiză în ceea ce privește vehiculul electric cu sistem de stabilizare

Incă de la inceputul sistemelor de frânare a autovehiculelor aceste sisteme au fost hidraulice. Un sistem de frânare este alcătuit din pedală, rezervor pentru lichidul de frână, circuite hidraulice, actuatori și discul de frână.

Pentru a frâna un autovehicul, șoferul apasă pedala de frâna, aceasta creează presiune in rezervorul pentru lichid de frână, iar aceasta presiune este transmisă la roată prin circuitele hidraulice. Aceasta presiune actionează actuatorii care la randul lor vor aplica presiune asupra discului de frână, rezultând incetinirea autovehiculului.

Fig. 2.5 Prezentare generală a sistemului de frânare [12]

În prezent sistemul de frânare a evoluat foarte mult fiind cunoscut sub denumirea de ESP (Electronic Stability Program). Acest nou tip de sistem conține de asemenea sistemul hidraulic, dar în acelați timp se bazează pe informații primite in timp real de la senzori (senzori de viteza, de girație, de accelerație laterală/longitudinală sau senzor de rotire a volanului)

Fig. 2.6 Circuitul hidraulic al sistemului ESP [13]

Fig. 2.7 Amplasarea senzorilor în sistemul ESP [14]

De asemenea pentru autovehiculele hybrid sau cele electrice s-a dezvoltat o nouă funcționalitate derivată din sistemul de frânare și anume: Frâna regenerativă.

O frână regenerativă este un mecanism de recuperare a energiei care încetinește vehiculul sau obiectul prin transformarea energiei sale cinetice într-o formă care poate fi utilizată imediat sau care poate fi stocată până când aceasta este necesară. Acest lucru contrastează cu sistemele de frânare convenționale, unde energia cinetică excesivă este transformată în căldură nedorită și risipită prin frecare în frâne sau cu frâne dinamice, unde energia este recuperată prin utilizarea motoarelor electrice ca generatoare, dar este instantaneu disipată sub formă de căldură în rezistențe. În plus față de îmbunătățirea eficienței totale a vehiculului, regenerarea poate prelungi considerabil durata de viață a sistemului de frânare, deoarece piesele sale nu se consumă atât de repede.

Capitolul 3: Cerințe de proiect și informații generale

3.1 Placa Arduino UNO/

Arduino UNO  este o platformă de procesare open-source (permite accesul utilizatorilor să acționeze liber asupra procesului), bazată pe software și hardware flexibil și simplu de folosit. Constă într-o platformă de mici dimensiuni (6.8 cm / 5.3 cm) construită în jurul unui procesor de semnal și este capabilă de a prelua date din mediul înconjurător printr-o serie de senzori și de a efectua acțiuni asupra mediului prin intermediul luminilor, motoarelor, servomotoarelor și alte tipuri de dispozitive mecanice. Procesorul este capabil să ruleze cod scris într-un limbaj de programare care este foarte similar cu limbajul C++.

Există multe alte microcontrolere și platforme de microcontroler disponibile pentru calculul fizic. Parallax Basic Stamp, BX-24 Netmedia, Phidgets, MIT's Handyboard și multe altele oferă funcționalități similare. Toate aceste unelte iau detaliile dezordonate ale programării microcontrolerului și le înfășoară într-un pachet ușor de utilizat. Arduino simplifică, de asemenea, procesul de lucru cu microcontrolerele, dar oferă un anumit avantaj pentru profesori, studenți și amatori interesați față de alte sisteme:

• Ieftin – plăcile Arduino sunt relativ ieftine în comparație cu alte platforme de microcontroler. Versiunea cea mai puțin costisitoare a modulului Arduino poate fi asamblată manual, iar modulele Arduino pre-asamblate costă mai puțin de 50 $

• Cross-platform – Software-ul Arduino (IDE) rulează pe sisteme de operare Windows, Macintosh OSX și Linux. Cele mai multe platforme de microcontrolere sunt limitate la Windows.

• Mediu de programare simplu și clar – Software-ul Arduino (IDE) este ușor de utilizat pentru începători, dar suficient de flexibil pentru ca utilizatorii avansați să profite de asemenea. Pentru profesori, se bazează convenabil pe mediul de programare procesare, astfel încât studenții care învață să programeze în acel mediu vor cunoaște modul în care funcționează IDE-ul Arduino.

• Software open source și extensibil – Software-ul Arduino este publicat ca instrument open source, disponibil pentru extensie de către programatori experimentați. Limba poate fi extinsă prin biblioteci C++, iar oamenii care doresc să înțeleagă detaliile tehnice pot face saltul de la Arduino la limbajul de programare AVR-C pe care acesta se bazează. În mod similar, puteți adăuga codul AVR-C direct în programele dvs. Arduino dacă doriți.

• Open source și hardware extensibil – Planurile plăcilor Arduino sunt publicate sub licență Creative Commons, astfel încât designerii de circuite experimentați pot să facă propria versiune a modulului, să o extindă și să o îmbunătățească. Chiar și utilizatorii relativ neexperimentați pot să construiască versiunea de breadboard a modulului pentru a înțelege cum funcționează și pentru a economisi bani.

Placa Arduino UNO se conectează la portul USB al calculatorului folosind un cablu de tip USB A-B. Poate fi alimentată extern (din priză) folosind un alimentator extern. Alimentarea externă este necesară în situația în care consumatorii conectați la placă necesită un curent mai mare de câteva sute de mA. În caz contrar, placa se poate alimenta direct din PC, prin cablul USB. [19]

Fig. 3.1. Placă Arduino UNO [15]

1 – Conector USB Tip B (Mamă),  pentru alimentarea cu 5V și transmisii de date;
2 – Alimentare placă Arduino. Se recomandă ca tensiunea de alimentare să fie între 7V-12V;
3 – Buton de reset –  resetează placa fără însă a se pierde programul scris în aceasta;

4 – Șir pini digitali, conține 14  intrări/ieșiri din care 6 pot fi folosite ca ieșiri PWM (3,5,6,9,10,11);
Pinii 0(rx), 1(tx) sunt folosiți pentru a primi (rx) și transmite (tx) date. Pinul 13 are conectat un led (L pe placă) în serie cu o rezistență. LED-ul ne indică starea pinului: aprins pentru HIGH, și stins pentru LOW; GND este conectat la masă; AREF – Analogic Reference

5 – Șir pini alimentare:
– IOREF – Se poate măsura tensiunea la care operează microcontrolerul (3.3 V sau 5V);
– RESET – Resetează placa când acesta este conectat la masă (GND);
– 3.3V – Furnizează o tensiune de 3,3V;
– 5V – Furnizează o tensiune de 5V;
– GND – Este conectat la masă
– Vin – Prin intermediul acestui pin se poate alimenta placa Arduino Uno respectându-se tensiunea recomandată de alimentare (în cazul în care alimentăm placa prin acest pin, tensiunea trece prin stabilizator);

6 – Șir pini analogici, A0…A5. Valoarea acestori pini se poate citi cu funcția analogRead(), din citire rezultă numere între 0-1023 pentru 0V – 5V.
7 – Pini ICSP (In-Circuit Serial Programming); [20]

Arduino Mega 2560

Mega 2560 este o placă de microcontroler bazată pe ATmega2560. Dispune de 54 de intrări / ieșiri digitale (dintre care 15 pot fi utilizate ca ieșiri PWM), 16 intrări analogice, 4 UART-uri (porturi seriale hardware), un oscilator de cristal de 16 MHz, o conexiune USB, o mufă de alimentare și un buton de resetare. Conține tot ceea ce este necesar pentru a susține microcontrolerul; pur și simplu conectați-l la un computer cu un cablu USB sau alimentați-l cu un adaptor AC-DC sau acumulator pentru a începe. Placa Mega 2560 este compatibilă cu cele mai multe shield-uri proiectate pentru Arduino Uno și fostele plăci Duemilanove sau Diecimila.

Fig. 3.2 Arduino Mega și Interfața Software Arduino IDE [16]

Mega 2560 este o actualizare a Arduino Mega, pe care o înlocuiește.

Conectându-vă prima dată la Arduino, va trebui să parcurgeți următorii pași:

• Instalați software-ul Arduino (IDE);

• Conectați placa utilizând un cablu USB;

• Selectați portul USB care a fost alocat pentru acest dispozitiv;

• Selectați tabelul pe care îl utilizați (ex .: UNO, MEGA, etc);

• Scrieți cod, compilați dupa care flash-uiți soft-ul .

Tabelul 3.1: Specificații tehnice Arduino MEGA

3.2 Modulul Bluetooth

Modulul serial Bluetooth este utilizat pentru conversia portului serial în Bluetooth. Aceste module pot fi setate în două moduri: dispozitivul master respectiv slave. Dispozitivul având număr par în denumire va fi definit ca fiind master sau slave în momentul în care a iesit din fabrică, acetse valori neputând fi interschimbate într-un alt mod. Pentru dispozitivul în a cărui denumire se ragasește un număr impar, utilizatorii pot seta modul de lucru (master sau slaver) al acestuia prin comenzi AT.

Funcția principală a modulului serial Bluetooth este înlocuirea liniei port serial, în următoarele situații:

Există două MCU care doresc să comunice între ele. Se conectează la dispozitivul principal Bluetooth, în timp ce celălalt se conectează la dispozitivul slave. Conexiunea lor poate fi stabilită odată ce împerecherea a fost realizată. Această conexiune Bluetooth este echivalentă cu o conexiune port serial pe fir, incluzând semnale RXD și TXD. Și pot utiliza modulul serial Bluetooth pentru a comunica între ele.

Când modulul MCU are modul slave Bluetooth, acesta poate comunica cu adaptorul Bluetooth al computerelor și telefoanelor inteligente. Apoi, există o linie virtuală portabilă între MCU și computer sau telefonul inteligent.

Dispozitivele Bluetooth de pe piață sunt în general dispozitive slave, cum ar fi imprimanta Bluetooth, Bluetooth GPS. Deci, deci putem folosi modulul master pentru a face pereche și a comunica cu oricare din dispozitivele enumerate

Selectarea modulului

Modulul serial Bluetooth având in denumire număr par este compatibil unul cu celălalt; Modulul slave este, de asemenea, compatibil unul cu altul. Cu alte cuvinte, modulele HC-04 și HC-06, HC-03 și HC-05 sunt reciproc compatibile unul cu cealălalt. HC-04 și HC-06 sunt versiuni anterioare pe care utilizatorul nu le poate reseta modul de lucru (master sau slave). Pe aceste module pot fi utilizate doar câteva comenzi și funcții AT, cum ar fi resetarea numelui de Bluetooth (numai abonatul), resetarea parolei, resetarea ratei de transfer și verificarea numărului versiunii. Modulele HC-03 și HC-05 sunt mai flexibile decât HC-04 și HC-06. În general, Bluetooth-ul HC-03 / HC-05 este recomandat utilizatorului. Iată parametrii principali setați la ieșire din fabrică a HC-05 respectiv HC-06. Acordați atenție diferențelor.

Tabelul 3.2 Caracteristici tehnice modul Bluetooth HC06/HC06

3.3 Cerințe hardware pentru dispozitivul purtabil

Echipamentul hardware necesar pentru construirea dispozitivului purtabil pentru control la distanță:

1x pereche de mănuși;

1x placă Arduino UNO;

1x modul Bluetooth (master);

4x senzori de îndoire;

4x rezistențe 10k ohm ;

1x placă de dezvoltare;

cabluri și sursă de alimentare.

3.3.1 Senzori de îndoire

Senzorul de îndoire este o rezistență care își modifică valoarea în momentul în care acesta este îndoit și se comportă asemeni unui potențiometru.

Pentru a construi un senzor de îndoire avem nevoie de urmatoarele materiale:

cabluri;

bandă izolatoare;

bandă de hârtie;

material velostat.

Fig. 3.3 Cabluri, Bandă, Material velostat;

3.4 Cerințe hardware pentru vehicul

Echipamentul necesar pentru construirea vehiculului:

plastic pentru realizarea șasiului;

4x roți mașinuță RC;

1x placă de dezvoltare;

4x motor DC la 12V (10000 RPM);

1x servo motor

4x gearbox;

2x placă Arduino UNO;

1x shield cu driver de motoare L293D;

1x modul Bluetooth;

1x modul accelerometru și giroscop;

1x suport pentru 8 baterii AA;

Cabluri

3.4.1 Shield cu driver de motoare L293D

Fig. 3.4 Shield cu driver de motoare L293D [17]

Tabelul 3.3 Specificații tehnice Shield cu driver de motoare L293D

3.4.2 Modul accelerometru și giroscop

Fig. 3.5 Modul accelerometru și giroscop [17]

Tabelul 3.4: Specificații tehnice Modul accelerometru și giroscop

3.4.3 Servomotor de metal 12g ES08MA

Fig. 3.6 Servomotor de metal 12g ES08MA [17]

Tabelul 3.5: Specificații tehnice servomotor de metal 12g ES08MA

3.4.4 Motor DC 10000 RPM, 12V

Fig. 3.7 Motor DC 10000 RPM, 12V [17]

Tabelul 3.6 Specificații tehnice Motor DC 10000 RPM, 12V

Capitolul 4: Implementare

4.1 Asamblarea echipamentului

Asamblarea dispozitivului purtabil pentru control la distanță respectiv a vehicului cu sistem de stabilizare s-a realizat în două etape după cum este descris în continaure.

4.1.1 Asamblarea dispozitivului purtabil pentru control la distanță

Etapele de montaj ale senzorilor de îndoire:

Se alege lungimea senzorului. (10 cm în cazul nostru);

Se pregătesc componentele, iar apoi se taie la lungimea stabilită anterior;

Se lipește firul peste banda de hârtie peste care se aplică primul strat de material velostat;

Fig. 4.1 Descrierea pasului 3

Se repetă pasul 3 pentru a avea două părți identice;

Se lipesc cele două părți, iar intre ele se mai adaugă un strat de velostat.

Fig. 4.2 Rezultatul după pasul 5

Se folosește bandă izolatoare pentru întării banda de hârtie și pentru a ne asigura ca nu există conexiuni nedorite între fire

Fig. 4.3 Forma finală a senzorului

Se testeaza senzorul. Se poate observa că este o diferență foarte mare intre momentul în care senzorul este in pozitie dreaptă respectiv când senzorul este îndoit.

Fig. 4.4 Rezistența senzorului de îndoire

Etapele realizării mănușii propriu-zise

Asamblarea mănușilor începe prin conectarea la fiecare senzor de îndoire a unui fir și apoi lipirea în poziția dreapta a senzorului cu ajutorul unui pistol cu lipici la cald.

Fig. 4.5 Senzorii de îndoire montați pe poziție

Se folosește o placă de dezvoltare pentru montarea plăcii Arduino UNO si a celorlalte componente. Se lipește placa de dezvoltare de manușă, după care se folosește un tub flexibil pentru a proteja cablurile. Pentru prinderea de mână, se folosesc centuri de fixare.

Fig. 4.6 Mecanismul de fixare

Fiecare senzor de îndoire are montată o rezistență de 10k ohm și datorită faptului că senzorul de îndoire funcționează ca un potențiometru, se va detecta o diferență de tensiune aplicată pinului analogic al plăcii.

Fig. 4.7 Circuitul senzorului de îndoire

Urmând configurația de fixare de mai jos și lipirea a patru circuite de senzori de îndoire pe placa de dezvoltare, se vor acoperi toate conexiunile necesare pentru configurația mănușilor.

Fig. 4.8 Configurația pinilor aferenți mănușii

Fig. 4.9 Circuitele mănușii

4.1.2 Asamblarea vehiculului cu sistem de stabilizare

Șasiul vehiculului s-a realizat din plastic folosind tiparul unei mașinuțe RC;

S-au relizat cele două punți (față/spate);

S-a asigurat mobilitatea punții față astfel incât vehciulul să poata vira stânga/dreapta;

Puntea spate este fixă;

Pe cele doua punți s-au montat roțile dințate aferente gearbox-ului astfel incât să se realizeze o transmisie mai bună a puterii motorului la roată;

Fig. 4.10 Vehiculul după pasul 3.

S-au montat cele 4 motoare pe șasiu;

S-a integrat atat prima placa Arduino UNO cât și Shield-ul cu driver de motoare L293D;

Fig. 4.11 Vehiculul după pasul 5.

S-a integrat cea de-a doua placă Arduino UNO pe care s-a cablat modulul Bluetooth;

Tot pe aceeastă placă s-a montat servomotorul de metal 12g ES08MA care asigura virarea vehiculului;

Fig. 4.12 Vehiculul în stadiul final.

4.2 Diagramele bloc

4.2.1 Diagrama bloc a dispozitivului portabil pentru control la distanță

Fig. 4.13 Diagrama bloc a dispozitivului portabil pentru control la distanță

4.2.2 Diagrama bloc a vehiculului cu sistem de stabilizare

Fig. 4.14 Diagrama bloc a vehiculului cu sistem de stabilizare

4.2.3 Diagrama bloc a întregului sistem

Fig. 4.15 Diagrama bloc a întregului sistem

4.3 Structura Codului

4.3.1 Structură cod: dispozitiv purtabil pentru control la distanță

Placa Arduino UNO montată pe manușă primește datele de la senzorii de îndoire. Din această cauză trebuie să definim patru variabile care au rolul de a prelua aceste informații prin intermediul pinilor analogici

Fig. 4.16 Declararea pinilor aferenți senzorilor

Functia void loop() execută intreg algoritmul. Valorile sunt citite de la pinii analogici si sunt afișate în Serial Monitor pentru a vedea rezultatele.

Fig. 4.17 Citirea valorilor trimise de senzori

Algoritmul utilizat pentru sortarea valorilor și generarea unei comenzi pentru vehicul a fost scris utilizând IF ELSE, dar și prin atribuirea unei valori fixe

Fig. 4.18 Detectarea pozitiei mâinii

Există 16 combinații de comandă, dar sunt utilizate numai 4:

‘S’ – STOP

‘F’ – Forward

‘B’ – Backward

‘L’ – Left

‘R’ – Right

Acestea sunt caracterele care sunt trimise ca și comenzi pentru vehicul pentru a executa acțiunile.

4.3.2 Structură cod: vehicul cu sistem de stabilizare

Prima placă Arduino UNO montată pe vehicul are rolul de a controla cele patru motoare DC. Pe această placă a fost montat Shield-ul cu driver de motoare L293D. Datorită faptului că acest shield contine o bibliotecă pusă la dispozitie de către producator, am optat pentru utilizarea acesteia. Aceasta biblioteca se numeste AFMotor.h, iar în cadrul ei este definită maparea pinilor astfel încât comunicarea între shield și placa Arduino UNO să fie realizată cu succes. Tot în cadrul acestei biblioteci sunt definite si comenzile pe care le pot prelua cele patru motoare DC.

Fig. 4.19 Declararea pinilor utilizați de shield-ul pentru motoare

De asemenea această placă a fost interconectată cu cea de-a doua placă Arduino UNO de pe vehicul prin intermediul comunicației seriale.

Interconectarea celore două plăci a fost necesară deoarece informațiile sunt recepționate prin intermediul modulului Bluetooth de către placa numărul 2, iar apoi aceste informații sunt transmise plăcii numarul 1 pentru a pune in mișcare vehiculul.

Codul aferent plăcii numarul 1:

Fig. 4.20 Declararea celor 4 motoare DC, funcția void setup()

În această situație funcția void loop() este folosită doar pentru a introduce un delay. Deoarece comenzile către motoare se execută doar în momentul în care placa numarul 2 transmite informații către placa numărul 1, a fost necesară implementarea funcției void receiver(), care se apelează de fiecare dată când placa numărul 2 trimite informații catre placa numărul 1.

Fig. 4.21 Funcția receiveEvent(int) – verificarea conexiunii

Informațiile primite sunt evaluate în cadrul unui switch case, rezultând comenzile propriu zise către cele 4 motoare DC.

Fig. 4.22 Funcția receiveEvent(int) – acționarea motoarelor în funcție de informațiile primite

Placa Arduino UNO numărul 2 are urmatoarele roluri:

Preia informațiile prin intermediul modulului Bluetooth;

Preia informațiile provenite de la sensorul de accelerație

(Notă: această funționalitate face obiectul unei lucrări viitoare).

Transmite informațiile plăcii numărul doi, informații necesare controlului celor patru motoare DC;

Controlează servomotorul destinat direcției.

Codul aferent plăcii numărul 2 este următorul:

La fel ca pentru placa Arduino UNO numărul 1, și placa Arduino UNO numarul 2 folosește bilbioteci predefinite pentru a facilita scrierea codului.

Fig. 4.23 Bibliotecile necesare implementării codului

Se declară servomotorul dupa care se definește poziția standard a acestuia. De asemenea este necesară declararea comunicației Bluetooth.

Fig. 4.24 Declararea motorului servo și a conexiunii Bluetooth

Pasul următor constă în inițializarea tuturor variabilelor

Fig. 4.25 Funcția void setup()

În acest caz este din nou nevoie de funcția void loop(), care are rolul de a executa intreg algoritmul.

În cadrul acestei funcții se verifică dacă există transmisiune de date intre dispozitivul purtabil pentru control la distanță și vehicul.

După aceea, cu ajutorul unui switch case se evaluează informațțile primite, care mai apoi sunt transmise mai departe către placa numarul 1 sau spre servomotor.

Fig. 4.26 Funcția void loop()

4.4 Arhitectura software

Fig. 4.27 Arhitectura software

Capitolul 5: Testare si rezultate

Capitolul 5 al acestei lucrări constă în testarea echipamentelor după ce s-au realizat toate conexiunile. De asemenea, tot în cadrul acestui capitol se testează comenzile pe care le trimite precum și modul în care informațiile sunt recepționate de către vehicul.

5.1 Conexiunea Bluetooth – Bluetooth

Modulele Bluetooth utilizate pentru acest proiect sunt de tipul HC-05. Aceste module sunt setate în mod implicit cu următoarea configurație:

Nume: HC-05;

UART: 38400 baud rate

Modul slave

Parolă: 1234

Adresa: este specifică fiecarui modul

Pentru a conecta două module bluetooth, primul pas a fost cpnectarea bluetooth-ului la una dintre plăcile Arduino UNO. După aceea este necesar a intra în modul comandă. Conexiunile necesare pentru a intra în modul comandă sunt urmatoarele:

Alimentare la 5 V respectiv GND.

Activați pinul conectat la 3.3V sau 5V.

Comutați cablurile Rx și Tx. Conectați Rx la Tx și Tx la Rx.

Alimentați placa.

Opriți modulul Bluetooth.

În timp ce alimentarea este oprită, apăsați pe butonul Bluetooth de mai jos și porniți Bluetooth

Dacă LED-ul clipește încet (1 dată în 2 secunde) atunci procedura a fost relizată cu succes, iar Bluetooth-ul este în modul Master.

Fig. 5.1 Conexiunea Bluetooth pentru modul Master

Monitorul serial al software-ului Arduino vă oferă posibilitatea de a trimite comenzi prin comunicația serială. Dacă introduceți "AT" și apăsați Send, va fi afișat un răspuns. Acest răspuns poate fi "Error (0)" sau "OK".

Comenzi utile pentru configurarea Bluetooth-ului

“AT+NAME= ….” – utilizând această comandă puteți schimba numele dispozitivului;

“AT+UART?” – verifică rata de transfer;

“AT+UART=9600” – schimbă rata de transfer. Rata de transfer poate fi setată de la 9600 la 115200.

“AT+ADDR?” – va afișa adresa MAC a dispozitivului.

“AT+ROLE?” – rolul dispozitivului, MASTER(1) sau SLAVE(0).

“AT+CMODE= 1 sau 0” – 1 este pentru conectarea automată la dispozitivele din apropiere, iar 0 este pentru conectarea manuală.

“AT+BIND= ‘MAC_Address’ “ – utilizând această setare, dispozitivul se va conecta automat la dispozitivul din apropiere care are această adresă MAC. Principiul pare să fie mai sigur pentru transferul de date și date confidențiale ..

Fig. 5.2 Interfața Serial Monitor

Înainte de prima comandă, monitorul serial trebuie setat la 38400 Baud rate (rata de transfer implicită a Bluetooth-ului) și modul "Both NL% CR".

Conectarea Bluetooth-urilor necesită ca unul dintre module să fie configurat ca Master, iar celălalt ca Slave. De aceea trebuie să citim adresa Mac a dispozitivului Slave.

5.2 Valorile senzorilor de îndoire

După ce senzorii de îndoire au fost instalați și alimentați, datele au fost analizate pentru fiecare senzor individual. Acest lucru a fost necesar, deoarece valorile diferă de la senzor la senzor, iar acest lucru poate influența comenzile transmise vehiculului.

Cu un total de 2800 de valori măsurate, 384 pentru fiecare senzor, am făcut o investigație a valorilor masurate pentru a determina parametrii în care aceștia funcționează. În momentul în care senzorii nu sunt îndoiți, valorile oscilează între 0 și 200, iar în momentul în care senzorii sunt îndoiți, valorile oscilează în între 400-500. A fost ales 250 ca valoare de referință pentru funcțiile If ELSE care detectează senzorii îndoiți și ce fel de comandă trebuie să fie transmisă.

În continuare se pot vedea graficele aferente fiecarui senzor de îndoire.

Fig. 5.3 Valorile degetului 1 respectiv 2

Fig. 5.4 Valorile degetului 3 respectiv 4

Dacă valorile detectate sunt mari, acest lucru înseamnă că senzorul este îndoit respectiv rezistența circuitului este mai mică. Dacă valorile sunt mici, acest lucru înseamnă că senzorul nu este îndoit respectiv rezistența materialului este ridicată (în jur de 40-50k Ohm).

Valorile diferă de la senzor la senzor, deoarece senzorii au o lungime diferită, pentru fiecare deget. Din această cauză materialul poate fi mai scurt ca lungime, deci și rezistența a acestuia va fi implicit mai mică . După cum se poate vedea în graficul de mai jos, diferențele între cei patru senzori nu sunt foarte mari

Fig. 5.5 Setul de date suprapus

5.3 Comportamentul vehiculului

În timpul testării comportamentului vehiculului, rezultatele au fost cele așteptate. Comenzile sunt transmise și decodate exact cum ne așteptăm. În funcție de gesturile/mișcările mâinii, vehiculul se pune în mișcare cu următoarele posibilități: mișcare înainte, înapoi, la stânga și la dreapta.

Operatorul trebuie să aibă în vedere faptul că vehiculul poate procesa doar o comandă la un moment dat, iar din cauza faptului că datele de la senzori nu sunt optimizate și calibrate, atunci pot apărea câteva variații bruște ale informațiilor transmise de senzori rezultând astfel comenzi neașteptate.

Capitolul 7: Concluzii

Această lucrare de licență are rolul de a prezenta un vehicul, care este controlat folosind gesturile/mișcările mânii și de a descrie un concept care poate fi îmbunătățit în continuare pentru diferite aplicații. Hardware-ul utilizat a fost un echipament cu costuri reduse, având scopul de a arăta că și cu un buget redus pot fi dezvoltate proiecte interesante.

Prin utilizarea acestui echipament hardware în alte scopuri decât conectarea la un telefon inteligent, s-a demonstrat că Arduino UNO poate fi conectat cu fir sau fără fir la un alt dispozitiv Arduino și poate fi programat să funcționeze ca un dispozitiv autonom. În primul rând, proiectul a folosit placa Arduino UNO pentru preluare, prelucrarea și controlul datelor, dar există mai multe posibilități de proiect care sunt compatibile cu placa Arduino MEGA. Arduino Mega 2560 a fost conceput pentru proiecte mai mari și mai ambițioase. Numărul mare de pini analogici și digitali, împreună cu o memorie mai mare, îl face ideal pentru dispozitive precum imprimantele 3D și alte aplicații exigente. Deși placa Arduino MEGA a fos dezvoltată ulterior celei Arduino UNO, totuși se oferă compatibilitate cu shield-urile și schițele existente. De asemenea exista shield-uri care sunt concepute special pentru Arduino MEGA, exploatând întregul potențial al acestei plăci.

Ideea mea despre proiect a fost să creez un concept care să poată fi folosit în domeniul medical pentru a ajuta oamenii cu boli motoare sau oameni care trebuie să rămână în pat pentru a controla dispozitivele din jurul lor folosind gesturi de mână. De exemplu, dacă doresc mai multă lumină în casă, pot activa lumina, acționează servomotoarele care vor ridica sau coborî jaluzelele ferestrelor sau chiar pentru a deschide fereastra pentru aer curat. O altă utilizare ar putea fi pentru persoanele aflate în scaune cu rotile care trebuie să aplice ceva de pe podea sau de pe raft, prin controlul unui braț robotic atașat scaunului rulant.

A doua parte a proiectului se referă la autovehiculele viitorului, mai exact la mașinile elctrice. Considerând că în timp dimensiunile motoarelor electrice vor scadea, iar puterea lor va crește, putem lua in calcul dezvoltarea unor vehicule, care să conțină cate un motor electric la fiecare roată.

În concluzie, după avantajele prezentate, pot spune că proiectul a fost o modalitate bună de a învăța cum să lucrez cu plăcile Arduino MEGA și Arduino UNO, cum să creez un dispozitiv care nu are nevoie de alte conexiuni pentru a funcționa ca un dispozitiv autonom. Provocarea a fost conectarea celor două module Bluetooth, dar și interconectarea celor doua placi Arduino. De asemenea in timpul implementării proiectului, un alt aspect important a fost acționarea celor patru motoare DC utilizând shield-ul pentru motoare. Echipamentul hardware a fost relativ ieftin și ușor de procurat.

Contribuțiile mele din această teză sunt următoarele:

Materiale bibliografice ale părții teoretice și practice:

Căutarea și achiziționarea online a echipamentelor și software-ului hardware;

fișele tehnice ale componentelor;

Documentație, folosind internetul, despre plăcile Arduino MEGA și UNO și modulele sale, limbaje de programare Arduino Software (IDE), utilizând manualul de ajutor al software-ului și cartea ROBOFUN.

Implementarea unei părți practice:

Asamblarea și lipirea celor două echipamente;

Conceptul de cod;

Analiza datelor și reprezentarea grafică.

Fig. 6.1 Rezultatul final

Bibliografie

[1] Arduino for beginners, www.robofun.ro

[2] https://www.arduino.cc

[3] https://www.adafruit.com

[4] http://www.farnell.com

[5] http://spectrum.ieee.org/robotics/

[6] https://learn.sparkfun.com/

[7] http://www.dnaindia.com/scitech/

[8] http://cdn.makezine.com/uploads/2014/03/hc_hc-05-user-instructions-bluetooth.pdf

[9] http://www.dnaindia.com/scitech/report-charlie-robot-new-best-buddy-for-kids-with-diabetes-2233360

[10] https://www.medgadget.com/2013/07/robotic-phloebotomist.html

[11] https://singularityhub.com/2013/02/18/veebots-needle-wielding-robot-to-automate-blood-draws/

[12] http://mechanicalmania.blogspot.ro/2011/07/hydraulic-brake.html

[13] https://www.google.ch/patents/US20120161507

[14] http://www.edn.com/Home/PrintView?contentItemId=4011081

[15] http://www.nooelec.com/store/arduino-uno-r3.html

[16] https://www.arduino.cc/en/Main/arduinoBoardMega

[17] https://www.optimusdigital.ro/

ANEXE

Similar Posts