REALIZAREA SI IMPLEMENTAREA UNUI ROBOT DE EXPLORARE FOLOSIND O PLACA DE DEZVOLTARE ARDUINO COORDONATOR STINTIFIC: s.l. dr. Ing. Otto Poszet… [305398]

UNIVERSITATEA DIN ORADEA

FACULTATEA DE INGINERIE ELECTRICA SI TEHNOLOGIA INFORMATIEI

SPECIALIZAREA CALCULATOARE

FORMA DE INVATAMANT LA ZI

LUCRARE DE LICENTA

COORDONATOR STINTIFIC:

s.l. dr. Ing. Otto Poszet

ABSOLVENT: [anonimizat]:

s.l. dr. Ing. Otto Poszet

ABSOLVENT: [anonimizat]_________

Lucrare de Finalizare a studiilor a student: [anonimizat]________________________

1). Tema lucrării de finalizare a studiilor:________________________________________ ______________________________________________________________________________________________________________________________________________________

2). Termenul pentru predarea lucrării____________________________________

3). Elemente inițiale pentru elaborarea lucrării de finalizare a studiilor ______________________________________________________________________________________________________________________________________________________

4). Conținutul lucrării de finalizare a studiilor :___________________________________

____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

5). Material grafic:__________________________________________________ ______________________________________________________________________________________________________________________________________________________

6). Locul de documentare pentru elaborarea lucrării:_______________________ _____________________________________________________________________________________________ ____________________________________________

7). Data emiterii temei____________________________________________

Coordonator ștințific:

Cuprins

Introducere

Lucrarea are numele de „Realizarea și implementarea unui robot de explorare folosind o placă de dezvoltare Arduino”și prezintă în detaliu procesul de asamblare și programare.

Această temă a fost aleasă datorită faptului că implică pe langă programearea software a microcontrolerului Arduino și o [anonimizat].

Scopul acestei lucrări este realizarea unui robot controloabil de la distanță care să poată intra în zone nesigure și sa analizeze mediul trimițând feedback .

Ansamblul acestuia va fi construit în jurul plăcii de dezvoltare Arduino .

Pentru comunicarea la distanță se va folosi tehnologia bluetooth .

Conexiunea între cipul Arduino și modulul bluetooth a fost facută cu ajutorul unui modul (shield) USB .

Analiza mediului se va face cu ajutorul senzorului de gaz și fum (MQ-2) , iar pentru depistarea obstacolelor roborul este dotat cu un senzor de proximitate (HC-SR04).

Mobilitatea este asigurată cu ajutorul unui șasiu motorizat cu roți conectat prin intermediul unui driver L293D .

Robotul poate fi controlat folosind un controller pentru PlayStation sau alt dispozitiv care emuleaza aceste comenzi. Acest model de controler are integrate leduri și vibrații pentru feedback.

Pentru ca totul să fie usor de folosit robotul va fi controlat cu ajutorul butoanelor diracționale de pe controller , în cazul unui obstacol întâlnit va avertiza utilizatorul prin vibrații iar ledurile vor fi folosite pentru a indica prezența gazului sau a fumului.

Cipul Arduino UNO folosește un limbaj asemănător cu C++

Acesta se programează folosind aplicația gratuită disponibilă pe website-ul producatorului .

Capitolul 1

1.Descrierea componentelor hardware

Acest proiect este construit în jurul unei plăci de dezvoltare Arduino UNO folosind senzori și module compatibile pentru a obține rezultatul dorit.

Conexiunea între componente în varianta finală a fost facuta folosind conectori sau mufe standardizate.

Modulele au fost testate separat și individual cu ajutorul unui Arduino nano montat pe o plcă pentru montaje folosind fire.

Placa de dezvoltare Arduino UNO este de fapt un calculator în miniatură. Aceasta contine un microprocesor și memorie precum și pini de intrare și ieșire.

Modulul de bluetooth folosit este de fapt un adaptor USB – bluetooth de generatie Bluetooth 2.0 mai veche compatibil însa cu majoritatea dispozitivelor de azi.

Usb Host Shield-ul este componenta necesară pentru a putea folosi dispozitive usb conectate usor și simplu ansamblului.

HC-SR04 este un senzor pentru măsurarea distanței care foloseste unde ultrasonice .

MQ-2 este un senzor care poate detecta fum și gaze inframabile precum butan, propan, metanol , hidrogen s.a.

Driverul L293D este un controller pentru motoare care de asemenea amplifică voltajul pentru semnalele date de cip.

1.1.Descrierea plăcii Arduino UNO

Plăcile de dezvoltare Arduino sunt microcontrolere cu o structură simplă din punct de vedere hardware și un software ușor de folosit .

Scopul acestor plăci este de a capta date în mod analog sau digital cu ajutoul unor senzori sau module și de a raspunde acestoa după procesare cu altele cu ajutorul ieșirilor sau prin intermediul unor module de ieșire precum leduri , afișaje sau module de transmitere a datelor .

Plăcile Arduino sunt open-source și se găsesc sub diferite forme și modele în general de dimensiuni relativ mici . În funcție de scopul folosiri putem alege un Arduino simplu, unul mai dotat cu mai multe intrări și ieșiri sau unulul cu module integrate direct pe placă cum ar fi un modul wifi. Modelele mai complexe pot avea dimensiuni mai mari iar cele mai simple dimensiuni foarte mici .

1.1.1. Alegerea plăci Arduino

Din varietatea mare de plăci de dezvoltare diponibile am ales un Arduino pentru că :

Este ușor de folosit și programat , codul fiind intuitiv și usor de înțeles.

Poate fi folosit pe Windows , MacOS sau Linux

Are un raport calitate preț foarte bun

Este ușor de găsit

Poate fi programat prin USB și nu necesită un modul separat

Este open-source

Are disponibile o gamă largă de module compatibile și instrucțiuni pentru acestea

În primele faze ale dezvoltări acestui proiect am folosit un cip Arduino Nano pentru că era extrem de accesibil și ușor de găsit . Acesta are un conector mini-usb care este folosit atât pentru programare cât și pentru alimentarea microcontrolerului . Arduino Nano are un format mic , aproximativ 2 x 4.5cm , 12 pini pentru semnal digital și 7 pentru cel analog , destul de multe pentru dimensiunea sa .

Figura 1.1.1. Placa de dezvoltare Arduino NANO

Prima problemă întâlnită cu acesta a fost faptul că prin mufa de alimentare micro usb nu puteam alimenta intreg ansamblul , aceasta fiind limitară .

A doua problemă a fost indiponibilitatea modulelor compatibile cu acest cip.

După aceste observații am decis să îl schimb cu un Arduino cu alimentare separată și cu conectori modulari compatibili cu diferite module pentru a elimina eventualele probleme de conexiune în timpul funcționării , ținând cont că acesta va fi un ansamblu mobil expus vibrațiilor.

Arduino Uno era urmatoarea varianta ce are caracteristicile necesare acestui proiect . Acesta are următoarele caracteristici:

Microcontroller Atmel ATmega328p

Clock Speed             16 MHz

Memory Flash     32 KB

SRAM                   2 KB

EEPROM              1 KB

Converter serial – usb

14 intrari și ieșiri digitale din care 6 PWM

6 intrari și ieșiri analogice

Alimentare 12V sau 5V-Usb

DC Current pe I/O Pin      40 mA

Iesiri de 3.3V si 5V

Buton de reset integrat

Led integrat pentru debugging (pin 13)

Capcitori pentru stabilizarea curentului de intrare

Figura 1.1.2 Placa de dezvoltare Arduino UNO

Alimentarea acestui cip se poate face folosind o sursă de 6 și până la 24 volți recomandat de către producător este 7-12 volți.

În cazul în care voltajul de alimentare nu este suficient, să zicem mai puțin de 5 volți cipul poate să aibă simptome precum nefurnizarea semnalelor pentru pini de ieșire sau restart în timpul rulării .

Alimentarea cpiului cu un voltaj mare, mai mult de 14 volți duce la supraîncălzirea circuitului de stabilizare și in condiții grave distrugerea acestuia.

Spre deosebire de alte cipuri, Arduino nu este foarte pretențios în privința alimentări iar in cazul unei alimentări necorespunzătoare în cele mai multe cazuri acesta ori nu funcționează de fel ori își dă restart datorita sarcini prea mari.

Pe scurt este un cip greu de stricat excelent pentru a încerca și dezvolta.

Pini I/O am putea să îi împărțim astfel :

Pini de alimentare unde avem importanți : VIN ca fiind o alimentare alternativă pentru cei 12 volți recomandați pentru funcționarea cipului , iesirile de 3.3 respectiv 5 volți si pini GND pentru împământare.

Avem și un pin alternativ pentru reset printre aceștia.

Pini pentru semnale digitale sunt în număr de 14 din care 6 sunt capabili PWM 8-bit (Pulse width modulation ) .

Pini pentru semnale analogice toți 6 au o sesivitate de 10-bit

Procesarea informației se face cu ajutorul unui microcontroler Atmel Mega328p amplasat în centrul cipului.

Specificații tehnice:

1.2 Shield-ul USB

Shield-ul pentru expansiune usb permite conectarea dispozitivelor USB cu cipul Arduino UNO

Acest modul este conceput cu un cip de expansiune MAX3421E.

MAX3421E este un controller care conține componete logice digitale și analogice ale circuitului necesare pentru comunicarea cipului arduino cu dispozitive USB 2.0 la viteza maximă a portului .

Revizia 2.0 este compatibil cu Arduino UNO , Duemilanove ,Mega si Mega 2560.

Figura 2.2 Keyes USB host shield

Specificații tehnice ale acestuia sunt :

Voltaj de alimentare dual 3.3V/5V

În cazul cipurilor Arduino Pro poate fi folosit doar cu o alimentare de 3.3V

Temperatura de funcționare -40°C până la 85°C

Compatibil cu dispozitive USB revizia 2.0 la viteză de pană la 12Mb/sec în regim full speed, sau low-speed 1.5Mb/sec .

Cu ajutorul acestui shield putem folosi dispozitive de tip HID precum tastatură , mouse sau joystick .

Functionează de asemenea cu unitați de stocare cum ar fi stick de memorie USB , cititor de carduri USB sau hard disk extern în format FAT 32.

Transmiterea datelor de la cip la shield-ul usb se face folosind interfața SPI a conectorului ICPS

Pinii folosiți de acest shield sunt pinii digitali 9 si 10 dar in cazul de față și pinii 11, 12, 13 care sunt conectați direct la conectorul ICPS in cazul cipului Arduino UNO

1.3.Modulul bluetooth

Modulul bluetooth folosit este un stick-USB generic cu un controller fabricat de Broadcom modelul BCM2046.

Interfața de comunicare cu cipul Arduino UNO este una USB 2.0

Tehnologia bluetooth folosită pentru a comunica cu Controllerul este bluetooth 2.0

Conexiunea între acest modul și cipul Arduino UNO este facuta prin intermediul modulului Shield USB

Figura 1.3. Modul bluetooth USB

Specificații tehnice:

Conexiunea acestuia la shildul usb se va face prin intermediul conexiuni USB 2.0

Ansamblul va comunica cu dispozitivul de comandă (controllerul bluetooth pentru Ps3) pe frecvența de 2.4Ghz folosind tehnologia bluetooth 2.0 .

1.4 Senzorul ultrasonic

Senzorul Ultrasonic modelul HC-SR04 este un modul compatibil Arduino care măsoară distanța folosind unde ultrasonice asemenea unui sonar . În partea din față acesta are un emițător care emite un puls și un receptor care captează pulsul după ce acesta a fost reflectat de potențialul obstacol.

HC-SR04 este capabil sa măsoare distanțe de până la 4 metri cu o precizie de 2 cm.

Figura 2.4 Senzor ultrasonic (sonar)

Specificații tehnice:

Conexiunea acestui modul cu cipul Arduino UNO se va face folosind două linii de conexiune în regim analog. Una este pentru pinul Trig destinat emițătorului de puls și cealaltă pentru pinul Echo care este receptorul ecoului.

Alimentarea se va face cu 5 volți de pe linia de iesire din Arduino.

1.5 Senzorul de gaze.

Acest senzor de gaze , modelul MQ-2 , poate să detecteze gaz Propan, gaz Metan , Hidrogen , GPL sau fum .

Senzorul funcționează folosindu-se de conductivitatea gazului între doua terminale SnO2 care în aer curat au o conductivitate slabă . Astfel acest senzor convertește conductivitatea electrică într-un semnal analog.

Senzorii precum acesta sunt ușor de achiziționat si extrem de durabili.

Figura 2.5 Senzor MQ-2

Se pot folosi in diferite alicații cele mai intalnite fiind sisteme de detecție a diferitelor gaze inflamabile sau fum .

Specificații tehnice:

Având o structură atât de simplă folosește o singură conexiune de date cu cipul Arduino și anume un pin analog .

Alimentarea este cea standard de 5 volți însa trebuie ținut cont de faptul că are un consum de curent destul de mare și de asemenea se incălzeste destul de tare .

1.6. Modulul pentru motoare ( L293D Bridge)

Pentru a putea folosi motoare bidirectionale DC multiple sau motoare pas cu pas este nevoie de o punte H cu diode ( H-Bridge-L293D Driver ). Acest model de punte permite schimbarea polarități alimentări motorului pentru a schimba sensul de mers.

În majoritatea cazurilor motoarele au un consum destul de mare și pentru a evita eventualele problleme de alimentare am ales să folosesc un modul Arduino motor shield.

1.6 Arduino motor shield

Pe langă cele 2 drivere L293D acest modul conține și un cip 74HC95 shift register care expandează semnalele a 3 pini Arduino la 8 pini.

Se pot conecta astfel la acest shield 4 motoare DC bidirectionale sau 2 motoare pas cu pas .

L293D în aceasta configurație poate beneficia de un circuit ajutator („piggyback”) prin montarea unui al 2-lea cip L293D peste cel inițial .

Curentul furnizat este de 0.6A pentru fiecare punte (sau 1.2A peak) cu protecție pentru supraîncălzire .

Alimentarea acestora se poate face folosind alimentarea de la Arduino de 5V sau se poate face de la o sursă separată de până la 36v crescând astfel forța motoarelor.

După cum se observă în poză avem și 2 mufe pentru servomotoare însa acestea nu sunt modulate în nici un fel de shield , ele sunt doar prelungiri ale pinilor 9 și 10 de pe placa Arduino cu acces ușor.

1.7 Display (Lcd 5110)

Inițial nu am vazut rostul unui display în această configuratie datorită faptului că acesta nu poate fi vizualizat în permanență .

Displayul însă este util pentru a afișa starea programului , diferite variabile și eventualele erori de conexiune .

Rezoluția acestui display este de 84 x 48 pixeli și este iluminat cu leduri.

Displayul are un controler PCD8544 asemenea unui telefon Nokia 3310.

Toate funcțiile acestui display sunt controlate de controlerul integrat in modul cu un consum minim de energie .

Alimentarea se poate face cu 3 – 5V iar luninozitatea poate fi reglata in funcție de voltajul furnizat pinului BL (back light) cu un maxim recomandat de 3.3v.

1.7. Display LCD Nokia 5110

Conexiunea între cipul Arduino și controlerul pentru display PCD8544 se face cu ajutorul unei interfețe serial . Aceasta foloseste 5 pini pentru transmiterea datelor , un pin pentru alimentarea controlerului , unul pentru alimentarea ledurilor de backlight și impamantare.

Spre deosebire de alte module de display , acesta are 48 randuri si 84 coloane , afisarea se poate face pe orice pozitie dorim .

Folosind diferite librarii arduino putem afișa diferite fonturi în diferite dimensiuni sau chiar și imagini grafice monocrome.

1.8 Controllerul bluetooth Dualshock 3

Acest model de controller face parte din a 3-a generație de controllere Sony pentru Play Station . A fost lansat în 2008 ca manetă de control pentru Play Station 3 . Spre deosebire se modelul precedent din 2006 numit Sixaxis, acesta beneficiază de „force feedback” o tehnologie mai veche de la Sony care face ca , controllerul sa vibreze pentru o experiență cat mai reala .

1.8 Maneta de control (controller Dualshock 3)

Alimentarea este asigurată de un acumulator intern li-ion iar comunicarea se face prin bluetooth 2.0 sau conexiunea USB folosită și prentru încărcare .

Pe langă butoanele normale acest model de controller are doua trăgace analog (L2, R2) , doua joystick-uri cu precizie de 10 biți , butoane sensibile la presiune ( , , , , L1, R1 ) și senzori de mișcare pe 6 axe.

Deși a apărut de aproape 10 ani, datorită multiplelor variante de înregistrare a comenzilor și accesibilitați sale acest controller este comercializat până și in ziua de azi individual sau alături de produse precum PS TV sau Ps3 superslim și a ajuns sa poată fi conectat, folosind drivere customizate, la majoritatea dispozitivelor cu bluetooth precum smartphone, PC, cipuri de dezvoltare s.a.

Pentru a putea comunica cu modulul bluetooth controllerul trebuie să cunoască adresa bluetooth a acestuia. Împerecherea lor se va face separat folosind un PC pentru a simplifica procesul de inițializare și punere în funcțiune a robotului .

Scopul acestuia în acest proiect este să transmita comenzi și sa dea feedback utilizatorului .

Capitolul 2

Proiectarea si conectarea componentelor

2.1 Metodologia de funcționare

Scopul robotului de explorare este să transmită de la distanță informația catre utilizator pentu a evita contactul acestuia cu un mediu periculos.

Transmiterea informației către utulizator se va face folosind ledurile de avertizare ale controllerului și motoarele pentru vibrații. Pentru detectarea unui obstacol controllerul va vibra iar în cazul detectări unui gaz periculos acest lucru va fi semnalizat prin aprinderea ledurilor în funcție de substanța detectată.

2.1.leduri de avertizare

De asemenea cotrollerul este folosit și pentru transmiterea comenzilor direcționale pentru deplasare , astfel , acesta va acționa ca un dispozitiv de intrare și ieșire pntru ansamblu.

Un rol important pentru comunicarea între cipul Arduino și controllerul bluetooth îl are shieldul usb care asigură transmiterea datelor astfel:

Controller bluetooth modul usb bluetoolh usb shield Arduino

Conectarea Shieldului USB

Modulul este conectat cu cipul Arduino prin pini digitali 9 (INT), 10 (SS) și conectrorul ICSP (In Circuit Serial Programmer). Acesta din urma foloseste o interfață de tip SPI (Serial Peripheral Interface ).

Pini conectorului ICSP sunt de asemenea conectați la pini digitali 11 (MOSI), 12 (MISO), 13 (SCK), Reset, 5V și GND .

conector ICSP

Schema de conectare a shieldului USB

Conectarea modulului Bluetooth.

Având în vedere faptul că am ales un modul cu o conexiune usb, conectarea și deconectarea acestuia este foarte simplă, mufele usb fiind extrem de cunoscute și fară posibilitatea de a conecta ceva greșit.

Am ales să folosesc module cu o conexiune usb pentru faptul că acestea oferă flexibilitatea de a folosi o gama larga de dispozitive fară nici o modificare hardware.

Conectarea modulului pentru motoare

Similar Posts