FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT IOAN SLAVICI TIMIȘOARA [309376]

FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT “IOAN SLAVICI” TIMIȘOARA

UNIVERSITATEA “IOAN SLAVICI” [anonimizat]: [anonimizat]. [anonimizat]

2020

FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT “IOAN SLAVICI” TIMIȘOARA

UNIVERSITATEA “IOAN SLAVICI” [anonimizat] o sursa de lumina

Coordonator științific Absolvent: [anonimizat]. [anonimizat]

2020

UNIVERSITATEA DIN ORADEA

FACULTATEA de Inginerie Electrică și Tehnologia Informației

DEPARTAMENTUL Calculatoare și tehnologia informației

TEMA Robot ghidat de o sursa de lumina

Proiectul de Finalizare a studiilor a student: [anonimizat]

1). Tema proiectului de finalizare a studiilor: Robot ghidat de o sursa de lumina

2). Termenul pentru predarea proiectului de diplomă 30 iulie 2020

3). Elemente inițiale pentru elaborarea proiectului de finalizare a studiilor

Documentație necesara pentru proiect

Platforma Arduino Uno R3

4). Conținutul proiectului de finalizare a studiilor: Succint capitol introductiv cu precizarea domeniului căruia îi aparține lucrarea și a structurii acesteia;

Descrierea construirii robotului care utilizeaza platforma Arduino Uno R3 ;

Elementele constructive;

Proiectare software;

Detalii de punere in functiune si testare;

Concluzii;

5). Material grafic: [anonimizat], [anonimizat].

6). Locul de documentare pentru elaborarea proiectului de diplomă:

Biblioteca Universității „Politehnica” din Timișoara

7). Data emiterii temei 10 Noiembrie 2019

Coordonator științific

Prof. dr. ing. Vlăduțiu Mircea

REFERAT PRIVIND PROIECTUL DE DIPLOMĂ A ABSOLVENT: [anonimizat] : [anonimizat] 2020

Titlul proiectului Robot ghidat de o sursa de lumina

Structura proiectului

Introducere

Aplicabilitate

Alte variante de proiectare

Construcția robotului

Funcționare

Concluzii

Aprecieri asupra conținutului proiectului de DIPLOMĂ (finalizare a studiilor), [anonimizat], actualitate, deficiențe

Lucrarea se caracterizează printr-o construcție echilibrată cu o bună ponderare între partea teoretica si descrierea aplicatiei.Lucrarea este corect divizată pe capitole și paragrafe. Lucrarea conține o [anonimizat], prezentand soluții cu caracterul de originalitate hardware și software. Capitolele cuprind o descriere detaliată a modulelor hardware și software implicate în realizarea practică. [anonimizat]. Lucrarea tratează o problematică de strictă actualitate luând în considerație importanța domeniului.

Aprecieri asupra proiectului (se va menționa: [anonimizat], calitatea și diversitatea surselor consultate; modul în care absolvent: [anonimizat]ral soluționată. Materialul grafic este executat în mod îngrijit, fiind complementar părții redactate.

(se va menționa: opțional locul de documentare și modul în care absolventul a realizat cercetarea menționându-se contribuția autorului)

Informațiile preluate din surse teoretice sunt citate în mod corespunzător, fiind inserate în lucrare doar pe măsură ce sunt utilizate pentru înlesnirea urmăririi părții aplicative.

5. Concluzii (coordonatorul proiectului trebuie să aprecieze valoarea proiectului întocmit, relevanța studiului întreprins, competențele absolventului, rigurozitatea pe parcursul elaborării proiectului, consecvența și seriozitatea de care a dat dovadă absolventul pe parcurs)

În baza celor mai sus menționate apreciez, că lucrarea elaborată de absolvent este deosebit de valoroasă, fiind bazată pe un amplu studiu de literatură de specialitate, aboslventul dovedind reale competențe în domeniul calculatoarelor și tehnologia informației. În baza unui studiu amplu, bine documentat al aspectelor teoretice, autorul realizează o lucrare valoroasă, dovedind competențe certe în domeniul ingineriei. Pe parcursul elaborării lucrării de licență, autorul a dovedit seriozitate și competență.

6. Redactarea proiectului respectă ………………………………………………….cerințele academice de redactare (părți, capitole, subcapitole, note de subsol și bibliografie).

7. Consider că proiectul îndeplinește/ nu îndeplinește condițiile pentru susținere în sesiunea de Examen de LICENȚĂ (finalizare a studiilor) din IULIE 2019 și propun acordarea notei ………………

Oradea,

Data Coordonator științific

10.09.2020 Prof. dr. ing. Vlăduțiu Mircea

СUPRINS

1. Introduсere

1.1 Scurta introducere

1.2 Tema proieсtului de diplomă

1.3 Ѕtruсtură proieсt

2. Descriere functionala la nivel bloc

2.1 Schema electronica

2.2 Ѕсhema bloс a masinutei

3. Componente utilizate

3.1 Struсtura robotului mobil

3.2 Componente utilizate

3.2.1 Plaсa de dezvoltare Arduino Uno R3

3.2.2 Ѕenzor Teleсomandă Infraroșu

3.2.3 Elemente de mobilitate

3.2.4 Сutia сu 4 baterii (4 baterii AA)

3.2.5 Senzor Lumina

3.2.6 Senzor obstacole

3.2.7 Asamblarea componentelor

4. Programarea robotului mobil

4.1 Utilizarea placii Arduino UNO R3

4.2 Utilizarea mediului de dezvoltare UNO (IDE)

4.3 Сoneсtarea plăсii Arduino

4.4 Codul Sursa

4.5 Dezvoltari ulterioare

4.6 Probleme intampinate

5. Сonсluzii

6. Bibliografie

1.Introducere

1.1 Scurta introducere

Cuvântul robot provine din limba cehă (robota) și înseamnă muncitor, sau rob. ProvenienĠa acestui cuvânt este strâns legată de scenaristul Karel Capek, care a introdus acest cuvânt în anul 1921 într-una din scenetele acestuia: R.U.R. (Rossum’s Universal Robots). Tema acestei scenete era despre dezumanizarea persoanei într-o civilizaĠie bazată din ce în ce mai mult pe tehnologie. Pentru prima data cuvântul „robot” a fost introdus în anul 1921 de dramaturgul ceh Karel Capek în piesa de teatru „Roboții universali ai lui Rossum” („Rossum 's Universal Robot”),. Cuvântul este un derivat din „robota” termen care, în limbile slavone, desemnează munca (de obicei munca grea).

Un robot este un operator mecanic sau virtual, artificial. Robotul este un sistem compus din mai multe elemente: mecanică, senzori și actuatori precum și un mecanism de direcționare. Mecanica stabilește înfățișarea robotului și mișcările posibile pe timp de funcționare. Senzorii și actorii sunt întrebuințați la interacția cu mediul sistemului. Mecanismul de direcționare are grijă ca robotul să-și îndeplinească obiectivul cu succes, evaluând de exemplu informațiile senzorilor. Acest mecanism reglează motoarele și planifică mișcările care trebuiesc efectuate.

În momentul de față, roboții industriali reprezintă punctul de intersecție al ultimelor descoperiri dintr-o serie de domenii: mecanica, automatica, electronica, calculatoare și sisteme de acționare. Complexitatea acestei ramuri se reflectă atât asupra arhitecturii mecanice cât și asupra sistemului de conducere. Robotul este rezultatul acestor descoperiri tehnico – științifice, în urma necesității realizării funcțiilor (acțiunilor) umane într-un mediu industrial normal. Astfel, robotul poate fi definit ca un sistem tehnologic complex care poate să înlocuiască sau să asiste munca omului la o linie de producție sau în manipularea unor utilaje. Obiectivele principale avute în vedere prin introducerea manipulatoarelor și roboților sunt: creșterea productivității muncii; eliminarea disconfortului fizic și psihic al unor activități de producție.

Tema proiectului o reprezinta o masina ,care functioneaza pe baza unei placute arduino.

Masina e construita in asa fel incat sa urmareasca o sursa de lumina, si sa se opreasca in cazul detectarii obstaculului.

Odata ce masina este pornita, se asteapta primirea de semnal de la telecomanda, care este pe butonul “Ok” al telecomenzii. Cand a fost apasat acest buton , masina cauta o sursa de lumina, si dupa ce o gaseste, urmareste acea sursa. In timpul functionarii , daca intampina vreun obstacol, aceasta se opreste .

1.2 Tema proiectului de diploma

Lucrarea este formata din descriere, constructie , programare si utilizare a masinii acesteia.

Robotul e dotat cu 3 roti, senzor de obstacole, senzor pentru telecomanda, 2 motoare, fotorezistori pentru detectia luminii, si placuta arduino.

Este directionat de orice sursa de lumina, pana cand intalneste un obstacol sau nu mai receptioneaza lumina in senzori.

Am ales aceasta tema deoarece am vazut o multitudine de modalitati de a controla un robot mobil, si am vrut sa vad daca as putea construi un robot care sa se ghideze dupa flashlight-ul telefonului.

A trebuit sa fac rost de niste materiale cand m-am decis sa fac acest proiect, si anume:

Ciocan de lipit și fludor

Bandă de 1 metru de 60/m RGBW NeoPixel (sau altă bandă de LED-uri WS2812b RGBW)

Fire pentru placa de testare

Clești mici cu vârf ascuțit

Cutter tăietor în diagonală

Dezizolatori sârmă

Multimetru (opțional, dar foarte util)

Pensete

Instrument a treia mână

Panglică de dezlipit sau aspirator fludor

Buton mic

Arduino Uno bord și placă de testare pe o placă de montaj

Cablu A-B USB

1.3 Structura proiect

In urmatorul capitol, voi vorbi despre schemele bloc si electrice ale robotului.

In capitolul 3 voi enumera piesele si vom vedea toate specificatiile lor .

In capitolul 4 voi intra in detaliile programarii unui asemenea robot.

La final voi prezenta cateva dezvoltari ulterioare iar dupa aceea, voi explica solutia catorva probleme pe care le-am intampinat de-a lungul proiectului. Fie ele de software sau hardware.

Voi vorbi despre solutie si despre motivul aparitiei problemelor.

2. Descriere functionala la nivel bloc

2.1 Schema electrica

Pe placuta arduino este amplasat un motorshield L293D , la care sunt atasate 2 motoare .

(Figura 2.1.1 Schema electrica)

Aceasta este schema electrica a placutei arduino , cu componentele interconectate.

Urmatoarea este schema electrica a shieldului de motoare L293D:

(Figura 2.1.2 Schema electrica motor shield)

Placa Arduino Uno, o placă de micro-controler bazată pe ATMega328, este proiectată și dezvoltată în mod specific în scopul învățării și experimentării . Are 28 de pini în total – 14 intrări / ieșiri dig-ital (din care 6 pot fi utilizate ca ieșiri PWM), 6 intrări analogice, rezonator ceramic a16 MHz, conexiune USB, mufă de alimentare, antet ICSP și buton Reset. Placa poate fi alimentată de un port USB sau de un adaptor AC-DC-DC sau o sursă de baterie. Pe placa Arduino Uno pot fi adăugate diferite scuturi precum scut prototip, scut WiFi, scut Bluetooth etc. În afară de viteza de clock de 16 MHz, microcontrolerul are 32KB de memorie Flash, 2KB deSRAM și 1KB de EEPROM.

2.1 Schema bloc

(Figura 2.2 Schema bloc a masinutei)

Avem urmatoarele componente:

4xAA battery holder

Senzor lumina

Senzor obstacol

Buton ON/OFF

Senzor telecomanda

Motor stanga & motor dreapta

2x Roti pentru motoare, 1x roata pentru directie.

In urmatorul capitol , vom aborda parte in parte , fiecare piesa componenta.

Urmatoarea este schema bloc a Shieldului de motoare L293D:

(Figura 2.3 Schema bloc a motor shield-ului)

3.Componentele Robotului

3.1 Structura robotului mobil

Vom parcurge amplasarea fiecarei piesa in parte, atat pe placa de dezvoltare, cat si pe sasiu.

Mobilitatea sistemului:

(Figura 3.1.1 Amplasarea motoarelor si a rotilor)

Avem 2 motoare si 2 roti aferente. In spatele mobilului avem o roata mobila pentru ajutarea la directie. Cablajul se face usor , avand gauri pe sasiu facute din fabrica.

Cutia Bateriilor si siwtchul de pornire/oprire:

(Figura 3.1.2 Cutia bateriilor si butonul on/off)

La circuitul creat de legarea bateriilor la placuta arduino, am adaugat un buton de pornire/oprire pentru siguranta masinii.

Butonul este amplasat langa cutie din motive de estetica.

Placuta Arduino Uno R3:

(Figura 3.1.2 Amplasarea placutei in sine)

Senzorii:

In fata avem 3 senzori si anume: Unul de obstacole, si 2 fotorezistori care sunt meniti sa detecteze sursa de lumina.

(Figura 3.1.3 Senzorii de lumina si senzorul de obstacole)

In spate este amplasat senzorul de telecomanda.

(Figura 3.1.4) Ansamblul final al masinii

În figura 3.1.4 este construcția mașinuței, amplasarea pieselor a fost aleasă cat mai orientativ, pentru a balansa greutatea egal.

În față se află senzorul de obstacole și senzorii de lumină care sunt meniți să urmărească de unde vine lumina. În spate este senzorul de telecomandă amplasat, că să nu ocupe spațiu necesar altor componente. În mijloc avem butonul de pornire și oprire. În partea din față avem plăcuța arduino , și cele 2 motoare cu roți.

Pentru construcție s-au folosit șuruburi și 2 șasiuri de mașină arduino.

3.2 Componente utilizate

Componentele utilizate sunt urmatoarele:

4x AA Battery holder

Senzor lumina Fotorezistor 5528 LDR

Senzor obstacole

Buton ON/OFF

Senzor telecomanda

Telecomanda

Motoare cu roti

Roata mobila spate

3.2.1 Placa de dezvoltare Arduino UNO R3

Arduino UNO R3 este utilizat frecvent ca placă de microcontroler în familia unui Arduino. Aceasta este cea mai recentă versiune a unei plăci Arduino și este lansată în anul 2011. Principalul avantaj al acestei plăci este dacă facem o greșeală putem schimba microcontrolerul de pe placă. Principalele caracteristici ale acestei plăci includ în principal, disponibilitatea în DIP (pachet dual-inline), detașabil și micro-controler ATmega328. Programarea acestei plăci poate fi ușor încărcată folosind un program de calculator Arduino. Această placă are un suport imens din partea comunității Arduino, care va face o modalitate foarte simplă de a începe să lucreze în electronice încorporate și multe alte aplicații.

Arduino este o platformă electronică open-source bazată pe hardware și software ușor de utilizat. Plăcile Arduino sunt capabile sa citească intrări – lumina pe un senzor, un deget pe un buton sau un mesaj Twitter – și să le transforme într-o ieșire – activarea unui motor, comutarea unui LED, publicarea a ceva online. Puteți spune echipei dvs. ce să facă prin trimiterea unui set de instrucțiuni către microcontrolerul de pe placă. Pentru a face acest lucru, utilizați limbajul de programare Arduino (bazat pe cablare) și software-ul Arduino (IDE), bazat pe procesare.

În timp, Arduino a fost creierul a mii de proiecte, de la obiecte de zi cu zi la instrumente științifice complexe. O comunitate mondială de producători – studenți, pasionați, artiști, programatori și profesioniști – s-au adunat în jurul acestei platforme open source, contribuțiile lor adăugându-se la o cantitate incredibilă de cunoștințe accesibile, care pot fi de mare ajutor atât pentru începători, cât și pentru experți.

Arduino s-a născut la Ivrea Interaction Design Institute ca un instrument ușor de prototipare rapidă, destinat studenților fără un background în electronică și programare. De îndată ce a ajuns la o comunitate mai largă, placa Arduino a început să se schimbe pentru a se adapta la noile nevoi și provocări, diferențiind oferta sa de la plăcile simple pe 8 biți până la produsele pentru aplicații IoT, portabile, imprimare 3D și medii încorporate. Toate plăcile Arduino sunt complet deschise, oferind utilizatorilor posibilitatea de a le construi în mod independent și, eventual, de a le adapta la nevoile lor specifice. Software-ul, de asemenea, este open-source, și este în creștere, prin contribuțiile utilizatorilor din întreaga lume.

De ce Arduino?

Datorită experienței sale simple și accesibile de utilizare, Arduino a fost utilizat în mii de proiecte și aplicații diverse. Software-ul Arduino este ușor de utilizat pentru începători, dar suficient de flexibil pentru utilizatorii avansați. Acesta rulează pe Mac, Windows și Linux. Profesorii și elevii îl folosesc pentru a construi instrumente științifice ieftine, pentru a dovedi principiile chimiei, fizicii sau a începe cu programarea și robotica. Designeri și arhitecți construiesc prototipuri interactive, muzicieni și artiști îl folosesc pentru instalații și pentru a experimenta noi instrumente muzicale. Producătorii, desigur, îl folosesc pentru a construi multe dintre proiectele expuse la Maker Faire, de exemplu. Arduino este un instrument cheie pentru a învăța lucruri noi. Oricine – copii, pasionați, artiști, programatori – poate începe să meșterească doar urmând instrucțiunile pas cu pas ale unui kit, sau să împărtășească idei online cu alți membri ai comunității Arduino.

Există multe alte microcontrolere și platforme de microcontroler disponibile pentru calculul fizic. Parallax Basic Stamp, Netmedia's BX-24, 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 microcontrolere, dar oferă unele avantaje 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 sistemele de operare Windows, Macintosh OSX și Linux. Cele mai multe sisteme de microcontroler 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 elevii care învață să programeze în acel mediu vor cunoaște modul în care funcționează IDE Arduino.

Acest arduino are ca microcontroller un ATmega328P.

Microcontroller-ul AVR RISC bazat pe 8 biți Microchip picoPower de înaltă performanță combină memoria flash ISP de 32KB cu capacități de citire în timp-scriere, 1024B EEPROM, 2KB SRAM, 23 de linii I / O de uz general, 32 de registre de lucru general, trei cronometre flexibile / contoare cu moduri de comparare, întreruperi interne și externe, USART programabil în serie, o interfață serială cu 2 fire orientată pe octeți, port serial SPI, convertor A / D pe 6 canale pe 10 biți (8 canale în TQFP și QFN / MLF pachete), temporizator programabil de veghe cu oscilator intern și cinci moduri de economisire a energiei selectabile software. Aparatul funcționează între 1,8-5,5 volți.

Prin executarea instrucțiunilor puternice într-un singur ciclu de ceas, dispozitivul realizează randamente care se apropie de 1 MIPS pe MHz, echilibrând consumul de energie și viteza de procesare.

(Figura 3.2.1.0 ATmega328P)

(Figura 3.2.1.1 Placa de dezvoltare Arduino Uno R3)

Specificatii plăcuța:

Microcontroller: Microchip ATmega328P

Tensiune de funcționare: 5 volți

Tensiune de intrare: 7 până la 20 de volți

Pinii I / O digitali: 14 (dintre care 6 pot oferi ieșire PWM)

UART: 1

I2C: 1

SPPI: 1

Pini analogici de intrare: 6

Curent continuu per pin I / O: 20 mA

Curent continuu pentru pin 3,3 V: 50 mA

Memorie flash: 32 KB din care 0,5 KB utilizate de către bootloader

SRAM: 2 KB

EEPROM: 1 KB

Clock speed: 16 MHz

Lungime: 68,6 mm

Lățime: 53,4 mm

Greutate: 25 g

În prima etapă când trebuia să mă decid ce placa de dezvoltare să aleg, m-am gândit prima oară la Arduino Uno R3 pentru simplu motiv că dacă alegeam raspberry trebuia să instalez un sistem de operare și din pure motive de a nu cheltui resurse degeaba , am recurs la Arduino.

Când vine vorba despre mediul de dezvoltare Arduino, Arduino IDE este de o simplitate considerabil crescută față de Linux. De exemplu, dacă proiectul tău implică doar că un LED să se aprindă și stingă intermitent, cu un Raspberry Pi ar fi trebuit să instalezi mai întâi un sistem de operare și câteva “code libraries”, iar asta însemna doar începutul procesului. Cu un Arduino, poți face un LED să clipească doar cu 8 linii de cod, din moment ce Arduino nu este destinat să ruleze un OS sau prea mult software, îl poți cu foarte mare ușurință doar conecta și porni. Apoi totul este la fel de simplu.

Diferentele dintre raspberry Pi si Arduino Uno R3 sunt urmatoarele:

Arduino UNO Rev3

Clock 16Mhz

Memory 32kb

GPIO pins 14

Operating Voltage 5V

Raspberry Pi Model 3 B+

Clock 1.4Ghz

Memory 1 GB

GPIO pins 40

Operating Voltage

Chit ca placa raspberry pi e mai buna la specificatii, nu aveam nevoie de asemenea specificatii asa ca am apelat la varianta simpla si usoara.

Am sa vorbesc putin si despre placa raspberry pi , ca sa analizam si alte optiuni la ceea ce am eu ca piese.

(Figura 3.2.1.2 Placa de dezvoltare Raspberry pi)

Raspberry Pi 4 B oferă creșteri de ultimă oră în viteza procesorului, performanță multimedia, memorie și conectivitate comparativ cu generația anterioară Raspberry Pi 3 B +, păstrând în același timp compatibilitatea înapoi și un consum similar de energie. Pentru utilizatorul final, Raspberry Pi 4 B oferă performanțe desktop comparabile cu sistemele PC de nivel entry -86.

Caracteristicile cheie ale acestui produs includ un procesor quad-core pe 64 de biți de înaltă performanță, suport dual-display la rezoluții de până la 4K printr-o pereche de porturi micro-HDMI, decodare video hardware până la 4Kp60, până la 4 GB RAM, LAN wireless dual-band 2,4 / 5,0 GHz, Bluetooth 5.0, Gigabit Ethernet, USB 3.0 și PoE (printr-un supliment suplimentar PoE HAT).

(Figura 3.2.1.2 Mediu de dezvoltare Arduino)

Programele Arduino pot fi scrise în orice limbaj de programare cu un compilator capabil să producă un cod mașină binar. Atmel oferă un mediu de dezvoltare pentru microcontrolerele sale, AVR Studio și mai nou, Atmel Studio.

Proiectul Arduino oferă un mediu integrat de dezvoltare (IDE), care este o aplicație cross-platform, scrisă în Java. Acesta își are originile în mediul de dezvoltare pentru limbajul de programare Processing și în proiectul Wiring. Este proiectat pentru a introduce programarea în lumea artiștilor și a celor nefamiliarizați cu dezvoltarea software. Include un editor de cod cu funcții ca evidențierea sintaxelor, potrivirea acoladelor și spațierea automată și oferă mecanisme simple cu un singur click, pentru a compila și a încărca programele în plăcuța Arduino. Un program scris în IDE pentru Arduino se numește sketch.

3.2.2 Senzor telecomanda infrarosu

Un sistem tipic de comunicații cu infraroșu necesită un transmițător IR și un receptor IR. Transmițătorul arată la fel ca un LED standard, cu excepția faptului că produce lumină în spectrul IR în locul spectrului vizibil. Dacă aruncați o privire în partea din față a unei telecomenzi TV, veți vedea ledul emițătorului IR:

(Figura 3.2.2.1 Telecomanda cu senzor infrarosu)

Pentru a recepționa undele infraroșu avemnevoie de un receiver, precum TSOP38238, care poate fi găsit la magazinele de specialitate . Receptorul are o celulă fotosensibilă care reacționează cu radiațiile electro-magnetice din spectrul infraroșu.

(Figura 3.2.2.2 Receiver infrarosu)

Același tip de LED este folosit și în plăcile de declanșare a transmițătorului IR pentru Arduino. O puteți vedea în partea din față a acestui emițătorului:

(Figura 3.2.2.2 Senzorul de receive)

Receptorul IR este un fotodiod și un preamplificator care transformă lumina IR într-un semnal electric. Diodele de receptor IR arată, de obicei, astfel:

(Figura 3.2.2.3 senzorul pentru telecomanda)

Singurul buton folosit de pe telecomandă este „ OK „ , folosit fiind la pornirea și oprirea mașinii.

Că să îmi dau seama ce cod reprezintă butonul ok , tot ce trebuia să fac a fost să scriu un cod care să afișeze ce informație este transmisă ( ce buton este apăsat)

Pentru senzorul de telecomandă, am conceput , și am folosit următorul cod astfel:

#include este Biblioteca pentru telecomandă.

#define REMOTE A0 este referință pinului pe care e pus senzorul de infraroșu pentru

telecomandă, și anume:

(Figura 3.2.2.4 conectarea senzorului pe placa)

#define OK 0xD7E84B1B este definirea tastei ce va fi folosite

void read_remote(void); este functia care citeste telecomanda

Se verifica daca am primit ceva , si anume daca am apasat butonul Ok. Cu butonul acesta pornim/oprim masina. Dupa aceea reluam citirea telecomenzii.

As fi putut folosi senzorul de bluetooth , ca sa pornesc si sa opresc proiectul cu ajutorul unui smartphone, dar pentru ca nu reprezenta niciun fel de aport asupra lucrarii , am ales sa pun o telecomanda cu infrarosu pentru a pastra simplitatea si economisirea resurselor.

Specificatii telecomanda:

Baterie: CR2025 (inclusă în pachet)

Distanța de transmisie: până la 8 m (în funcție de mediul înconjurător, sensibilitatea receptorului etc.)

Unghiul efectiv: 60 °

Curentul static: 3 ~ 5uA

Curentul dinamic: 3 ~ 5mA

Dimensiune: 8,5 x 4 x 0,65 cm (L x W x H)

Pentru ca aceasta sa functioneze, trebuie bineinteles in mediul de dezvoltare, sa includem si libraria IRremote.h .

Senzorul de receive pentru telecomanda cu infrarosu este amplasat in spatele masinii.

3.2.3 Elemente de mobilitate

(Figura 3.2.3.1 Diferite shielduri care puteau fi folosite)

Scuturile sunt plăci care pot fi conectate pe partea de sus a PCB Arduino extinzându-și funcțiile. Diferitele scuturi urmează aceeași filozofie ca și trusa de unelte originală: sunt ușor de montat și ieftine de produs.

Când vine vorba de mobilitate, am ales un modul driver de motoare L293D fiind cel mai folosit și cel mai ușor de amplasat.

Pentru deplasare am ales 2 motoare alimentate la 5v cu reductor universal cu roată.

Iar în fața mașinii am amplasat o roată pivotantă.

Shieldul Arduino are de obicei aceeași poziție a pinului ca placa de dezvoltare Arduino și poate fi stivuit și conectat la Arduino pentru a implementa funcții specifice.

Deși este convenabil să conectăm componentele pe breadboard, trebuie să utilizăm câteva cunoștințe electronice pentru a construi diverse circuite. Utilizarea plăcii de expansiune poate simplifică procesul de construcție a circuitului într-o anumită măsură .

L293D este un driver monolitic integrat, cu tensiune înaltă, curent înalt, cu 4 canale. Se pot utiliza motoare CC și surse de alimentare de până la 36 V. Chipul L293D este, de asemenea, cunoscut ca un tip de H-Bridge ce permite aplicarea unei tensiuni pe o sarcină în ambele direcții către o ieșire, de exemplu, către motor. Pe acest shield, există și un shift register de tip 74HC595 pentru a fi mai ușor de controlat.

Caracteristici tehnice:

Poate conduce 4 motoare cc sau 2 motoare pas cu pas sau 2 servo.

Până la 4 motoare DC bidirecționale cu selecție individuală a vitezei pe 8 biți.

Până la 2 motoare pas cu pas (unipolare sau bipolare) cu o singură bobină, bobină dublă sau trepte intercalate.

4 punți H: pe punte asigură o protecție termică de 0,6A (1,2A vârf), poate rula motoare de la 4.5V la 36V DC.

Rezistențe ce mențin motoarele dezactivate în timpul pornirii.

2 interfețe externe de alimentare pentru terminale

Butonul de resetare.

Dimensiune: 70 x 55mm

(Figura 3.2.3.1 Shield Motoare L293D)

Urmatoarea , este schema electrica a acestui shield .

(Figura 3.2.3.2 Schema electrica a shield-ului)

Ca motoare am folosit 2 motoare cu reductor 3-6 V conectate pe M4A M4B respectiv M3A M3B.

Ca roti am folosit 2 roti simple pentru roboti pentru simplul motiv ca sunt usor de montat si nu necesita mult chin.

(Figura 3.2.3.3 Rotile asamblate pe motoarele DC)

Motor DC – convertește energia electrică în energie mecanică atunci când se aplică electricitate . Bobine de sârmă din interiorul motorului devin magnetizate când curentul curge prin ele.

Aceste câmpuri magnetice atrag și resping magneții, determinând rotirea arborelui. Dacă direcția din electricitate este inversat, motorul se va roti în sens invers.

Tensiune nominală: 3 ~ 6V

Curent continuu de neîncărcare: 150mA +/- 10%

Min. Viteza de operare (3V): 90 +/- 10% RPM

Min. Viteza de operare (6V): 200 +/- 10% RPM

Cuplu: 0,15 Nm ~ 0,60 Nm

Cupl de stall (6V): 0,8 kg

Raport de viteză: 1:48

Dimensiuni corp: 70 x 22 x 18 mm

Lungimea firelor: 200mm 28 AWG

Greutatea produsului: 29g / 1.02oz

Caracteristica roții:

Diametrul roții: 65mm

Grosimea roții: 28mm

3.2.4 Cutia cu 4 baterii

La alegerea tipului alimentarii am avut mai multe variante. Puteam sa aleg sa fie legata la o baterie externa via usb de exemplu, dar atunci era imposibila deplasarea.

Puteam sa pun baterii 18650 dar nu avea rost din moment ce nu necesita atata curent.

Am ales varianta cu 4 baterii de tip AA , fiind mai ieftin si mai convenabil.

Bateriile isi fac lejer treaba , si e simplu de gasit asemenea baterii in cazul descarcarii acestora.

(Figura 3.2.4.1 Cutie baterii amplasata pe sasiu)

Butonul on/off al masinii este legat in serie la firul + al cutiei care vine conectat la power+.

(Figura 3.2.4.2 Legarea butonului in serie)

3.2.5 Senzor lumina

(Figura 3.2.5.1 Senzor Lumina)

Senzorul acesta se numeste Rezistor Dependent de Lumina.

Senzorul este cunoscut și sub denumirea de fotorezistor datorită rezistenței sale care variază în funcție de cantitatea de lumină care cade pe el. Are doi pini și poate fi interfațat foarte ușor cu microcontrolerul Arduino.

Un fotorezistor este combinația de cuvinte "foton" (adică particule de lumină) și "rezistor". Asa cum spune si numele său, un fotorezistor este un dispozitiv sau putem spune un rezistor dependent de intensitatea luminii. Din acest motiv, ele sunt, de asemenea, cunoscute ca senzori de lumina.

Deci, pentru a defini un fotorezistor într-o singură linie putem scrie:

"Fotorezistorul este un rezistor variabil a cărui rezistență variază invers proportional cu intensitatea luminoasa".

Senzorii acestia sunt amplasati pe pinii AD2 si AD3.

Caracteristici tehnice:

Maximum voltage (V-dc): 150

Maximum power consumption (mW): 100

Temperatură: – 30°C – +70°C

Valoarea Spectrală (nm): 540

Rezistența la lumină (10Lux) (KΩ): 10 – 20

(Figura 3.2.5.2 Schema fotorezistorului)

Conducția electrica intr-un semiconductor are loc datorită mișcării purtătorilor de sarcina (electroni si goluri).

Prin fenomenul de fotoconducție se înțelege creșterea conducției unui material datorita generării de purtători de sarcină suplimentari sub influența radiației luminoase.

Printr-un semiconductor supus unei diferențe de potențial U va trece un curent electric slab (de întuneric), care crește, atunci când semiconductorul este iluminat, datorită fotoconducției. Intensitatea fotocurentului, diferită de cea a curentului de întuneric, depinde de temperatură, tensiunea electrică aplicată și de durata iluminării.

3.2.6 Senzor Obstacole

(Figura 3.2.6.1 Senzor obstacole)

Acest senzor este menit sa evite obstacolele, si e adaptabil mediului inconjurator.

Voltajul de functiune este intre 3.3v si 5v.

Are o pereche de tuburi de transmisie și recepție în infraroșu, atunci când detectează direcția care se întâlnește cu obstacole (suprafața reflectoare).

După procesarea circuitului comparator, indicatorul verde se va aprinde, în același timp, interfața de ieșire a semnalului emite un semnal digital (un semnal de nivel scăzut), poate fi reglat distanța de detectare prin butonul potențiometrului, distanța efectivă de 2 ~ 80 cm, ușor de asamblat și utilizat. Așadar, poate fi utilizat pe scară largă în evitarea obstacolelor robotului, numărarea liniilor, etc.

Are o pereche de tuburi de emisie si receptie in infrarosu, tuburile de transmisie emite o anumita frecventa in infrarosu, cand se detecteaza directia unui obstacol (suprafata de reflexie), reflectata in infrarosu este receptionata de tubul de receptie. comparator de procesare a circuitului, lumina verde este pornit, dar iesirea semnalului iesire interfata de iesire semnal digital (un semnal de nivel scazut), aveti posibilitatea sa reglati distanta de detectie potentiometru butonul, distanta efectiva interval de 2 ~ 30cm, tensiunea de lucru de 3.3V – 5V. Domeniul de detectare al senzorului poate fi obtinut prin reglarea potentiometrului, cu interferente reduse, usor de asamblat, usor de utilizat, poate fi utilizat pe scara larga in evitarea obstacolelor robotului, masina de evitare, numarul de linii si urmarirea liniei alb-negru si multe alte ocazii .

Caracteristici tehnice:

Tensiune de alimentare: 3V – 5V;

Distanță sesizare obstacol: 2cm – 30cm;

Unghi observare obstacol: 35o;

Output digital;

Comparator LM393;

Tensiune de referință reglabilă.

(Figura 3.2.6.2 Functionarea senzorului)

3.2.7 Asamblarea componentelor

Principalul proces prin care am construit asemenea robot, este lipirea.

Lipirea este o tehnică de construcție electronică extrem de utilă și este surprinzător de satisfăcătoare.

Lipirea funcționează prin încălzirea componentelor metalice ce urmează a fi îmbinate, apoi permite aliajelor de temperatură scăzută să se topească, să curgă și să se întărească între ele. Aliajul nu este lipici. Dacă topim aliajul pe vârf și apoi îl frecați de cablurile componentelor, nu veți crea o conexiune electrică bună.

Aliajul este folosit cu flux (de obicei încorporat în aliaj, etichetat ca "miez de colofoniu"), care este o substanță care ajută la întârzierea oxidării. Acesta protejează zona imediată a metalelor de lipit și fierbe/arde în timp ce se răcesc. Fumurile de lipire sunt în principal de la rășini, din care se face fluxul.

(Figura 3.2.7.1 Ciocan de lipit)

M-am folosit si de un breadboard care mi-a fost indispensabil. Mi-a usurat cu cel putin 20% tot procesul de creatie.

Un breadboard este o bază de construcție pentru prototiparea electronică. Inițial, cuvântul se referea la o placă de pâine literală, o bucată de lemn lustruit folosită pentru felierea pâinii. În anii '70 a devenit disponibilă placa de pană fără lipit (de exemplu, placa de prindere, o tablă de tablă terminală) și în prezent termenul de „panou” este folosit în mod obișnuit pentru a face referire la acestea.

Deoarece placa breadboard nu necesită lipire, este reutilizabilă. Acest lucru face ușor de utilizat pentru crearea de prototipuri temporare și experimentarea proiectării circuitului. Din acest motiv, plăcile breadboard sunt de asemenea populare pentru studenți și în educația tehnologică.

O mare majoritate dintre componente o reprezenta cablurile jumper.

Cablurile de salt (numite și fire de jumper) pentru boardboardless fără pană pot fi obținute în seturi de sârmă de sărit gata de utilizare sau pot fi fabricate manual. Acesta din urmă poate deveni o muncă obositoare pentru circuite mai mari. Firurile gata de utilizare sunt de diferite calități, unele chiar și cu dopuri minuscule atașate la capetele sârmei. Materialul de sârmă de sărituri pentru sârmele gata fabricate sau de casă ar trebui să fie, de obicei, de 22 AWG (0,33 mm2) din cupru solid, sârm placat cu staniu – presupunând că nu trebuie să fie atașate dopuri minuscule la capetele sârmei. Capetele sârmei trebuie să fie decupate de 3⁄16 până la 5⁄16 in (4,8 până la 7,9 mm). Cablurile decupate mai scurte pot duce la un contact defectuos cu clemele cu arcuri ale plăcii (izolarea fiind prinsă în arcuri). Cablurile decupate mai lungi cresc probabilitatea de scurtcircuite pe bord. Cleștele și penseta sunt utile pentru introducerea sau scoaterea firelor, în special pe plăcile aglomerate.

Firele de culoare diferită și disciplina de codare a culorilor sunt adesea respectate pentru consecvență. Cu toate acestea, numărul de culori disponibile este de obicei mult mai mic decât numărul de tipuri sau căi de semnal. În mod obișnuit, câteva culori de sârmă sunt rezervate tensiunilor de alimentare și la masă (de exemplu, roșu, albastru, negru), unele sunt rezervate semnalelor principale, iar restul sunt pur și simplu utilizate acolo unde este convenabil. Unele seturi de sârmă gata de utilizare folosesc culoarea pentru a indica lungimea firelor, dar aceste seturi nu permit o schemă semnificativă de codare a culorilor.

(Figura 3.2.7.2 Cabluri cu fir de 22 AWG cu vârfuri solide)

4.Programarea robotului mobil

4.1 Utilizarea placii arduino Uno R3

Cu siguranță că principalul motiv pentru care am ales să folosesc o placă de dezvoltare Arduino este legat de simplitatea conceptului. Nu a trebuit să mă gândesc prea mult la noțiuni precum protecția sau interconectarea componentelor. Modulele ce folosesc anumite protocoale specifice le-am conectat corespunzător, iar pentru cele cu LED și „buzzer” pur și simplu am ales câte un pin liber prin care să realizez comanda.

Placa de dezvoltare folosită este de tip Arduino Uno, iar motivul alegerii este evident. Consider că în realizarea unui prototip este bine să dispun de cât mai multe informații și de o marjă de eroare consistentă față de previziunile inițiale. Astfel, chiar dacă nu am avut nevoie de toate avantajele plăcii, precum documentarea amănunțită sau numărul ridicat de pini, pot spune că alegerea a fost una potrivită întrucât, dacă se va pune problema unei producții în serie a sistemului, este ușor de înlocuit placa de dezvoltare folosită cu una mai puțin costisitoare și adecvată cerințelor. Un alt mare avantaj de care am profitat este posibilitatea de a găsi componente compatibile. Spre exemplu cititorul RFID utilizat în cadrul sistemului este frecvent folosit împreună cu plăci de dezvoltare Arduino. Motivul este că orice pasionat are acces absolut gratuit la o bibliotecă de funcții foarte ușor de folosit creată în anul 2012 de către Miguel Balboa, un nume deja cunoscut oricărui amator de aplicații RFID. Personal nu văd rostul folosirii unui alt tip de placă de dezvoltare în aplicații de complexitate redusă, având în vedere toate avantajele pe care le oferă Arduino. S-a întâmplat de- Sistem electronic pentru monitorizarea prezenței studenților la activitățile didactice 44 a lungul timpului să observ o reticență a studenților de a folosi acest concept din cauza faptului că anumiți oameni din industrie îl consideră prea ușor de folosit. Nu văd de ce ar trebui să fie alese soluțiile mai greoaie dacă rezultatul final este același. În plus, societatea caută o dezvoltare cât mai rapidă, iar asta se poate realiza numai dacă se ține cont de concepte precum reutilizarea. Așadar, am ales să realizez acest sistem de monitorizarea a prezenței studenților cu ajutorul conceptului Arduino, pentru că astfel am acces la elemente dezvoltate și perfecționate de-a lungul anilor. Altfel spus, nu trebuie să pierd timpul reinventând roata.

PROGRAMAREA PLĂCILOR DE DEZVOLTARE ARDUINO

Orice amator sau expert în domeniul electronicii a auzit, cel puțin în mod întâmplător, de conceptul Arduino. Acest concept a fost dezbătut anterior și în prezenta lucrare, totuși o tratare a modului în care se pot programa plăcile de dezvoltare este necesară.

Se vorbește uneori despre „Limbajul de programare Arduino” sau de „Limbajul Wiring” ca și cum acestea ar fi limbaje de programare de sine stătătoare precum Java, C sau Ada. Această abordare este profund greșită având în vedere că limbajul folosit pentru programarea plăcilor de dezvoltare este defapt C. Confuzia vine din cauza mediului de dezvoltare integrat disponibil pe site-ul Arduino.

Pentru a înțelege problema, trebuie să plecăm de la începuturile acestui concept. Mai exact, din anul 2003 când Hernando Barragan a pus bazele unei platforme menite să ajute în principal amatorii de electronică.

Această platformă punea la dispoziție un mediu de programare integrat dedicat unei plăci de dezvoltare cu microcontroler. Numele inițial al conceptului a fost „Wiring” și a urmărit continuarea unui proiect dezvoltat anterior în cadrul Massachusetts Institute of Technology, numit „Processing”.

În momentul de față Wiring și Arduino sunt două entități distincte dar cu un scop comun, acela de a ușura modul în care se pot realiza și testa aplicațiile cu microcontrolere. Ambele folosesc mediul de dezvoltare integrat ce a fost introdus încă de creatorii conceptului Processing.

Mediul de dezvoltare cu ajutorul căruia se construiesc proiectele Arduino este gândit ca o modalitate de interconectare a două platforme, una de natură hardware și una de natură software. Ironic, aplicația este scrisă în Java, iar limbajul în care utilizatorul poate scrie cod are la origine C, deci nu numai că nu avem de a face cu un nou limbaj de programare, dar întreg conceptul este construit având în vedere limbajele de programare consacrate. Inovația, atât în cazul Wiring cât și în cazul Arduino vine de la bibliotecile disponibile gratuit, o parte dintre ele dezvoltate de Sistem electronic pentru monitorizarea prezenței studenților la activitățile didactice 50 creatori, iar altele de comunitate.

Cu ajutorul acestor biblioteci se pot realiza de la funcții extrem de simple precum aprinderea unei diode luminiscente, până la aplicații complexe și de precizie. Orice proiect Arduino are două funcții predefinite, una denumită „setup” în care utilizatorul scrie cod ce dorește a fi executat la pornirea sau resetarea plăcii și una denumită „loop” care conține codul ce este executat în mod ciclic de către microprocesor în vederea realizării funcției gândite de programator.

Datorită acestui model, cel mai eficient mod de a programa o astfel de placă de dezvoltare este sub forma unei mașini de stări. Motivele pentru care a fost ales acest concept în dezvoltarea sistemului pentru monitorizarea prezenței au fost dezbătute anterior, trebuie însă adăugate anumite considerente legate exclusiv de mediul de dezvoltare integrat și de modul în care se pot scrie programele. Întrucât comunitatea din jurul conceptului Arduino pune preț pe noțiunea de reutilizare, este foarte convenabil pentru orice utilizator să se folosească de funcții dezvoltate anterior în vederea realizării unor aplicații complexe.

În plus, mediul de dezvoltare este foarte intuitiv și construit astfel încât oricine să își poată pune imaginația în valoare, iar singurele cerințe sunt de a cunoaște bazele programării procedurale și sintaxa limbajului C.

Pentru utilizarea placii Arduino Uno R3 avem nevoie de un cablu (tata-tata) USB.

Conectam cablul la placuta si la pc, si instalam driverele necesare.

Dupa aceea intram in Arduino IDE si selectam portul si tipul de arduino detinut de noi.

(Figura 4.1.1 Cablu usb (male-to-male) )

Există 3 moduri de a alimenta Arduino Uno:

Barrel Jack – Jack Barrel, sau DC Power Jack pot fi utilizate pentru a alimenta placa dvs. Arduino. Mufa de butoi este conectată de obicei la un adaptor de perete. Placa poate fi alimentată cu 5-20 volți, dar producătorul recomandă să-l păstreze între 7-12 volți. Peste 12 volți, regulatoarele s-ar putea supraîncălzi, iar sub 7 volți, s-ar putea să nu fie suficiente.

Pin VIN – Acest pin este utilizat pentru a alimenta placa Arduino Uno folosind o sursă de alimentare externă. Tensiunea trebuie să se încadreze în domeniul menționat mai sus.

Cablul USB – atunci când este conectat la computer, furnizează 5 volți la 500mA.

Există o diodă de protecție a polarității care se leagă între pozitivul mufei butoiului la pinul VIN, evaluat la 1 Ampere.

Sursa de energie pe care o utilizați determină energia disponibilă pentru circuitul dvs. De exemplu, alimentarea circuitului cu USB vă limitează la 500mA. Țineți cont de faptul că acesta este utilizat și pentru alimentarea MCU, perifericele sale, regulatoarele de bord și componentele conectate la acesta. Când alimentați circuitul prin mufa de butoi sau VIN, capacitatea maximă disponibilă este determinată de regulatoarele de 5 și 3,3 volți de la bordul Arduino.

5v și 3v3

Acestea furnizează componente regulate 5 și 3.3v pentru a alimenta componente externe conform specificațiilor producătorului.

GND

În pinul Arduino Uno, puteți găsi 5 pini GND, care sunt toate interconectate.

Pinii GND sunt folosiți pentru a închide circuitul electric și pentru a oferi un nivel logic de referință comun pe întregul circuit. Asigurați-vă întotdeauna că toate GND-urile (ale Arduino, periferice și componente) sunt conectate între ele și au un teren comun.

RESET – resetează Arduino

IOREF – Acest pin este referința de intrare / ieșire. Oferă referința de tensiune cu care operează microcontrolerul.

Arduino Uno are 6 pini analogici, care utilizează ADC (convertor analogic la digital).

Acești pini servesc ca intrări analogice, dar pot funcționa și ca intrări digitale sau ieșiri digitale.

(Figura 4.1.2 Pini analogici Arduino Uno R3 )

ADC înseamnă convertor analogic la digital. ADC este un circuit electronic utilizat pentru a converti semnale analogice în semnale digitale. Această reprezentare digitală a semnalelor analogice permite procesorului (care este un dispozitiv digital) să măsoare semnalul analog și să îl folosească prin funcționarea sa.

Pinii Arduino A0-A5 sunt capabili să citească tensiunile analogice. Pe Arduino ADC are rezoluție pe 10 biți, ceea ce înseamnă că poate reprezenta tensiunea analogică cu 1.024 niveluri digitale. ADC transformă tensiunea în biți pe care microprocesorul poate înțelege.

Un exemplu obișnuit de ADC este Voice over IP (VoIP). Fiecare smartphone are un microfon care transformă undele sonore (voce) în tensiune analogică. Acest lucru trece prin ADC-ul dispozitivului, este transformat în date digitale, care sunt transmise către partea destinatară pe internet.

4.2 Utilizarea mediului de dezvoltare UNO (IDE)

Arduino Integrated Development Environment (IDE) este o aplicație multiplă platformă (pentru Windows, macOS, Linux) care este scrisă în funcții de la C și C ++ . Este utilizat pentru a scrie și încărca programe pe placi compatibile Arduino, dar și, cu ajutorul unor nuclee terțe, alte panouri de dezvoltare a furnizorilor.

Codul sursă pentru IDE este lansat sub licența publică generală GNU, versiunea 2. Arduino IDE acceptă limbile C și C ++ folosind reguli speciale de structurare a codurilor. Arduino IDE furnizează o bibliotecă software din proiectul Wiring, care oferă multe proceduri comune de intrare și ieșire. Codul scris de utilizator necesită doar două funcții de bază, pentru pornirea schiței și bucla principală a programului, care sunt compilate și conectate cu un stub main program () într-un program executiv ciclic executabil cu instrumentul GNU, inclusă și în distribuția IDE. Arduino IDE utilizează avrdude pentru a converti codul executabil într-un fișier text în codificare hexadecimală care este încărcat în placa Arduino de către un program de încărcare în firmware-ul bordului.

Arduino a fost construit special pentru a fi utilizat in educatie, in special pentru scolile tehnice orientate spre electronica. Platforma Arduino se poate fi alimentata la portul USB al oricarui calculator (sau chiar si de catre un incarcator ce ofera un port USB). Poate fi programat cu ajutorul unui limbaj foarte asemanator cu limbajul C ale carui specificatii le gasiti pe situl arduino.cc, situl oficial al platformei Arduino (mai exact la https://www.arduino.cc/en/Reference/HomePage ).

La arduino pot fi conectati diversi senzori si actuatori. Prin intermediul senzorilor sunt preluate informatii din mediul inconjurator, iar actuatorii sunt utilizati pentru a-l modifica intr-un anume fel (de exemplu putem prelua printr-un senzor de lumina faptul ca afara s-a intunecat si putem inchide un releu conectat la becul din sufragerie pentru a-l aprinde). Pentru atasarea echipamentelor hardware, Arduino UNO ofera un numar de 14 conexiuni digitale (numerotate de la 0 la 13) si 6 conexiuni analogice (numerotate de la 0 la 5). De obicei conexiunile digitale sunt utilizate pentru a conecta actuatorii iar cele anlogice pentru a conecta senzorii (desi aceasta nu este o regula).

La fel ca orice calculator (ma intreb daca stiati asta), Arduino functioneaza intr-o bucla infinita. Cand este alimentat (sau dupa ce un program nou a fost uploadat), se executa o sectiune de setari dupa care se intra automat intr-o zona denumita loop. Structura cea mai simpla a unui program ce poate fi rulat de catre Arduino este asadar:

void setup() {

instructiunile de aici se executa o singura data, la inceput iar aceasta sectiune este utilizata pentru setari (de ex. care pin este de intrare si care de iesire)

}

void loop() {

instructiunile de aici sunt executate intr-o bucla, dupa ultima instructiune este reluata iarasi prima

iar aceasta bucla se termina cand alimentarea Arduino-ului este intrerupta

}

(Figura 4.2 Cablu usb (male-to-male) )

Dacă totul a mers fără nicio problemă, putem selecta Sketch>Upload, fapt ce ar trebui să se soldeze cu trimiterea programului în memoria micro-controllerului. Dacă asta s-a întâmplat cu succes, micro-controllerul ar trebui să inceapă să aprindă și să stingă un led la fiecare secundă. Dacă nu se întâmplă asta, resetează placa arduino de la butonul de lângă conectorul serial. Resetarea ar trebui să treacă micro-controllerul în etapa de setup și apoi să înceapă să execute bucla.

4.3 Conectarea placii arduino

Deși dispozitivul Arduino se conectează la computer, acesta nu este un dispozitiv USB adevărat. Placa are un cip special care îi permite să apară pe computer ca un port serial virtual când este conectat la un port USB. Acesta este motivul pentru care este important să conectam placa. Atunci

când placa nu este conectată, portul serial virtual pe care funcționează Arduino nu va fi prezent (deoarece toate informațiile despre el trăiesc pe placa Arduino).

De asemenea, este bine să știm că fiecare placă Arduino are o adresă unică a portului serial virtual. Acest lucru înseamnă că, de fiecare dată când conectam o placă Arduino diferită în computer, va trebui să reconfiguram portul serial care este utilizat.

Arduino Uno necesită un USB A tată la cablu USB B tată.

4.4 Software-ul robotului

Includem biblioteca adafruit care manipuleaza motoarele.

#include <AFMotor.h>

Includem libraria pentru telecomanda

#include <IRremote.h>

Pinul pe care e pusa telecomanda

#define REMOTE A0

Pinul pe care e pus senzorul de obstacole

#define STOP A1

Pinul pe care e pus senzorul de lumina din stanga

#define LEFT A2

Pinul pe care e pus senzorul de lumina din dreapta

#define RIGHT A3

Codul butonului OK

#define OK 0xD7E84B1B

Functie care citeste telecomanda

void read_remote(void);

Cele doua motoare

AF_DCMotor left_motor(4);

AF_DCMotor right_motor(3);

Telecomanda

IRrecv irrecv(REMOTE);

decode_results results;

Modul in care e masina(pornit/oprit)

int mode;

void setup() {

Deschidem portul pentru a primi informatii de la telecomanda

irrecv.enableIRIn();

Setam puterea la aproximativ 4/5 (200/255)

left_motor.setSpeed(200);

right_motor.setSpeed(200);

Oprim motoarele

left_motor.run(RELEASE);

right_motor.run(RELEASE);

}

void loop() {

Citim telecomanda

read_remote();

Masina e oprita

if (mode == 0) {

left_motor.run(RELEASE);

right_motor.run(RELEASE);

} else {

Daca am dat de un obstacol oprim masina

if (!digitalRead(STOP)) {

left_motor.run(RELEASE);

right_motor.run(RELEASE);

return;

}

Citim lumina in stanga si in dreapta

int left = analogRead(LEFT);

int right = 1023 – analogRead(RIGHT);

Daca diferenta este mica mergem in fata

if (abs(left – right) < 80) {

left_motor.run(FORWARD);

right_motor.run(FORWARD);

} else if (left – right > 0) {

Daca in stanga este mai luminos oprim motorul stang

left_motor.run(RELEASE);

right_motor.run(FORWARD);

} else if (left – right < 0) {

Daca in dreapta este mai luminos oprim motorul drept

left_motor.run(FORWARD);

right_motor.run(RELEASE);

}

}

}

Functia care citeste telecomanda

void read_remote() {

Verificam daca am primit ceva

if (irrecv.decode(&results)) {

Daca am apasat butonul OK pornim/oprim masina

if (results.value == OK)

mode = !mode;

Reluam citirea telecomenzii

irrecv.resume();

}

}

In prima parte a codului, citim telecomanda, si daca e actionat butonul ok , masina porneste.

Daca dam de un obstacol, oprim masina. In a doua parte a codului, citim lumina in stanga si in dreapta.

Daca diferenta este mai mica, mergem in fata. Daca in stanga este mai luminos , oprim motorul stang.

Daca in dreapta este mai luminos , oprim motorul drept.

4.5 Dezvoltari ulterioare

1. Senzor ultrasonic/radar pe fata pt a urmari o masina mers in coloana, si a nu se provoca un accident cu alte masini care se misca in fata masinii
2. Module Wifi/Lora sau alte module pentru comunicarea radio prin care sa comunice din timp cu masinile inteligente aflate in trafic in fata si in spate pt a avertiza de schimbarile bruste de viteza: franare/accelerare/oprire pe display acustic si vizual pt prelaarea controlului masinii de catre sofer cand nu mai are dupa ce sa se ghideze in trafic.

3.  Modul de masurare a bateriilor si avertizarii sonore si vizuale cand tensiunea scade sub un prag prestabilit.

4.5 Probleme intampinate

Prima problema intampinata a fost cea legata de conexiunea dintre placuta arduino si pc.

In program ul de dezvoltare Arduino , nu aparea placuta conectata. Am instalat drivere pentru Arduino, am dat restart la pc si tot nu a mers.

Dupa aceea am aflat ca trebuia sa activez board-ul din meniul tools exact cum este descris in figura 4.5 .

(Figura 4.5 Selectare board )

BIBLIOGRAFIE

( https://biblioteca.regielive.ro/referate/mecanica/roboti-industriali-manipulatori-scara-368681.html )

(https://www.circuito.io/blog/arduino-uno-pinout/)

(https://www.elprocus.com/what-is-arduino-uno-r3-pin-diagram-specification-and-applications/)

(https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Arduino_Uno_-_R3.jpg/330px-Arduino_Uno_-_R3.jpg)

(https://roboromania.ro/wp-content/uploads/2015/08/L293D-roboromania-2.jpg)

(https://roboromania.ro/wp-content/uploads/2016/06/Roata-pivotanta-robot-roboromania.jpg)

(https://www.intorobotics.com/wp-content/uploads/2015/01/EL1-002_DetailEnlarge_001_opt.jpg)

(https://www.intorobotics.com/common-budgeted-arduino-light-sensors/)

(https://www.banggood.com/5Pcs-Infrared-Obstacle-Avoidance-Sensor-Smart-Car-Robot-p-951032.html?cur_warehouse=CN)

https://en.wikipedia.org/wiki/Breadboard#Diagram

The arduino project book , Scott Fitzgerald and Michael Shiloh.

Similar Posts