Proiectul constă in construirea unui dispozitiv pe care utilizatorul il poate folosi pentru a scana una sau mai multe culori. Pentru a putea fi… [306541]
Capitolul 1: Introducere
1.1. Tema proiectului
Proiectul constă in construirea unui dispozitiv pe care utilizatorul il poate folosi pentru a scana una sau mai multe culori. Pentru a [anonimizat] o [anonimizat]. [anonimizat] (am ales un LCD 16×2).
Dispozitivul se adresează în special utilizatorilor specializați in domeniul grafica web. Un astfel de dispozitiv le va permite sa obtină culorile dorite din mediul inconjurator iar apoi sa le utilizeze in creații lor.
1.2. [anonimizat]-au avut inceputurile in dezvoltarea tehnologiei circuitelor integrate. Această dezvoltare a facut posibilă înmagazinarea a [anonimizat], într-un singur cip. Aceasta a [anonimizat], [anonimizat], timeri si altele. A urmat apoi o creștere a volumului capsulei care a dus la crearea circuitelor integrate. Aceste circuite integrate înglobeaza atât procesorul cat si perifericele. Din această manieră a [anonimizat].
La modul general un controler ("controller" – [anonimizat], cu un domeniu de cuprindere vast) este, actualmente, o [anonimizat], [anonimizat]. [anonimizat] (de exemplu relee). [anonimizat] (cu circuite integrate numerice standard SSI și MSI ) și a [anonimizat], consum energetic pe măsură și o fiabilitate care lăsa de dorit. [1]
Apariția și utilizarea microprocesoarelor de uz general a dus la o reducere consistentă a costurilor, dimensiunilor, consumului și o îmbunătățire a fiabilității. Si in prezent se folosesc o [anonimizat] Z80 (Zilog), 8086/8088 (Intel), 6809 (Motorola), etc.
Pe măsură ce procesul de miniaturizare a continuat, a fost posibil ca majoritatea componentelor necesare realizării unei astfel de structuri să fie integrate la nivelul unui singur microcircuit (cip). Astfel că un microcontroler ar putea fi caracterizat ca fiind și o soluție a problemei controlului cu ajutorul a aproape unui singur circuit.
[anonimizat] (MicroProcessor Unit), [anonimizat], [anonimizat] a acestui acronim este MicroComputer Unit.
Dacă ar trebui sa dăm o definiție, [anonimizat] o unitate centrală (CPU) și o memorie împreună cu resurse care-i permit interacțiunea cu mediul exterior.
Resursele integrate la nivelul microcircuitului includ următoarele componente:
a. o unitate centrală (CPU), cu un oscilator intern pentru ceasul de sistem
b. o memorie locală tip ROM/PROM/EPROM/FLASH și eventual una de tip RAM
c. un sistem de întreruperi
d. I/O – intrări/ieșiri numerice (de tip port paralel)
e. un port serial de tip asincron și/sau sincron, programabil
f. un sistem de timere-temporizatoare/numărătoare programabile
g. un sistem de conversie analog numerică (una sau mai multe intrari analogice)
h. un sistem de conversie numeric analogic și/sau ieșiri PWM (cu modulare în durată)
i. un comparator analogic
j. o memorie de date nevolatilă de tip EEPROM
k. facilități suplimentare pentru sistemul de temporizare/numărare (captare și comparare)
l. un ceas de gardă (timer de tip watchdog)
m. facilități pentru optimizarea consumului propriu [1]
Un microcontroler tipic mai are, la nivelul unității centrale, facilități de prelucrare a informației la nivel de bit, de acces direct și ușor la intrări/ieșiri și un mecanism de prelucrare a întreruperilor rapid și eficient.
Utilizarea unui microcontroler constituie o soluție prin care se poate reduce masiv numărul componentelor electronice precum și costul proiectării și al dezvoltării unui produs.
Toate aplicațiile în care se utilizează microcontrolere fac parte din categoria așa ziselor sisteme încapsulate-integrate (“embedded systems”), la care existența unui sistem de calcul incorporat este (aproape) transparentă pentru utilizator.
Pentru ca utilizarea lor este de foarte multe ori asimilată cu ideea de control, microcontrolerele sunt utilizate masiv în robotică și mecatronică.
Automatizarea procesului de fabricație-producție este un alt mare beneficiar: CNC Computerised Numerical Controls- comenzi numerice pentru mașinile unelte, automate programabile- PLC, linii flexibile de fabricație, etc.). Printre multele domenii unde utilizarea lor este practic un standard industrial se pot menționa: industria de automobile (controlul aprinderii/motorului, climatizare, diagnoză, sisteme de alarmă, etc.), în industri bunurilor de larg consum (sisteme audio, televizoare, camere video și videocasetofoane, telefonie mobilă, GPS-uri, jocuri electronice, etc.), în aparatura electrocasnică (mașini de spălat, frigidere, cuptoare cu microunde, aspiratoare), în controlul mediului și climatizare (sere, locuințe, hale industriale), în industria aerospațială, în mijloacele moderne de măsurare – instrumentație (aparate de măsură, senzori și traductoare inteligente), la realizarea de periferice pentru calculatoare, în medicină si altele. [2]
Ca un exemplu din industria de automobilelor, unde numai la nivelul anului 1999, un BMW seria 7 utiliza 65 de microcontrolere, iar un Mercedes din clasa S utiliza 63 de microcontrolere.
Capitolul 2: Spatii de culoare RGB
2.1. Prezentarea modelului RGB
Culoarea fiecarui pixel (atât pentru camere digitale) cât și pentru afișare (TV, CRT, LCD) se obține prin combinația a trei culori primare: roșu, verde si albastru. (Red, Green si Blue). [3]
Înainte de vârsta electronică, modelul de culoare RGB avea deja o teorie solidă în spatele ei, bazată pe percepția umană asupra culorilor. Scopul principal al acestui model este pentru detectarea, reprezentarea si afisarea imaginilor in sistemele electronice, cum ar fi in computer si televizoare.
Aparatele de intrare RGB sunt: televizoarele color, camerele video, scanere de imagini si camere digitale. Aparatele de iesire RGB sunt: televizoarele cu diverse tehnologii (CRT, LCD, OLED), afișaje pentru telefoane mobile, videoproiectoare.Imprimantele color nu sunt dispozitive RGB, ci dispozitive de colorare subtitrate .
Pentru a forma o culoare cu RGB, trebuie suprapuse trei fascicule de lumină (roșu, verde și albastru). Fiecare fascicul poartă numele de componentă a acelei culori. Fiecare dintre aceste componente poate avea o intensitate arbitrară, de la complet, în întregime sau în amestec.
Modelul de culoare RGB este aditiv. Spunem asta deoarece cele trei fascicule de lumină sunt adăugate împreună. Spectrul lor de lumină adaugă lungimea de undă pentru a realiza spectrul culorii finale. Intensitatea zero pentru fiecare componentă dă culoarea cea mai întunecată, iar intensitatea completă a fiecăruia dă o culoare albă. Când intensitățile pentru toate componentele sunt aceleași, rezultatul este o nuanță de gri. Atunci când intensitățile sunt diferite, rezultatul este o nuanță colorată, mai mult sau mai puțin saturată, în funcție de diferența dintre cele mai puternice și cele mai slabe dintre intensitățile culorilor primare folosite. [4]
Atunci când una dintre componente are cea mai mare intensitate, culoarea este o nuanță de această culoare. O culoare secundară este formată din suma a două culori primare de intensitate egală (cian-ul este verde + albastru, magenta este roșu + albastru, iar galbenul este roșu + verde).
Fiecare culoare secundară este complementul unei culori primare. Când culoarea primară și culoarea sa secundară complementară sunt adăugate împreună, rezultatul este alb: completarea ciană roșie, completarea magenta cu verde și completarea galbenă albastră.
Fig.1 Aditivarea amestecului de culori [5]
Alegerea culorilor primare este legată de fiziologia ochiului uman. Cele trei tipuri de celule fotoreceptoare luminoase din ochiul uman răspund cel mai mult la galben, verde și lumină violetă. Diferența dintre semnalele primite de la cele trei tipuri, permite creierului să diferențieze o gamă largă de culori diferite.
O aplicație obișnuită a modelului color RGB este afișarea culorilor pe un tub cu raze catodice (CRT), un afișaj cu cristale lichide (LCD), un afișaj cu plasmă sau un ecran cu diode emițătoare de lumină organică (OLED), cum ar fi televizorul sau monitorul unui computer. Fiecare pixel de pe ecran este construit din trei surse de lumină RGB mici și foarte apropiate, dar separate.
În timpul procesării digitale a imaginilor, fiecare pixel poate fi reprezentat în memoria calculatorului sau în hardware-ul interfeței ca valori binare pentru componentele de culoare roșie, verde și albastră. Atunci când sunt gestionate corespunzător, aceste valori sunt convertite în intensități sau tensiuni prin corecția gamma pentru a corecta neliniaritatea inerentă a unor dispozitive, astfel încât intențiile intenționate să fie reproduse pe afișaj.
RGB este, de asemenea, termenul referitor la semnalul video component utilizat în industria video. Se compune din trei semnale – roșu, verde și albastru – purtate pe trei cabluri separate. Acest tip de semnal video este utilizat pe scară largă în Europa, deoarece este cel mai bun semnal de calitate care poate fi purtat pe conectorul standard SCART. În afara Europei, RGB nu este utilizat ca un format de semnal video. S-Video are loc în majoritatea regiunilor neeuropene. Cu toate acestea, aproape toate monitoarele de computer din întreaga lume utilizează RGB. [4]
O culoare în modelul de culoare RGB este descrisă prin indicarea cantității din fiecare roșu, verde și albastru inclus. Culoarea este exprimată ca un triplet RGB (r, g, b). Fiecare componentă poate varia de la zero la o valoare maximă definită. Dacă toate componentele sunt la zero rezultatul este negru iar dacă toate sunt la maxim, rezultatul va fi alb.
Aceste intervale pot fi cuantificate în mai multe moduri diferite:
-De la 0 la 1, cu orice valoare fracționată între ele. Această reprezentare este folosită în analizele teoretice și în sistemele care utilizează reprezentări în virgulă mobilă.
-Fiecare valoare componentă de culoare poate fi de asemenea scrisă ca procent:de la 0% la 100%.
-În computere, valorile componentelor sunt adesea stocate ca numere întregi în intervalul 0 până la 255, intervalul pe care un singur byte pe 8 biți îl poate oferi. Acestea sunt reprezentate adesea ca numere zecimale sau hexazecimale.
Modelul de culoare RGB pentru HTML a fost adoptat oficial ca un standard în HTML 3.2, deși a fost folosit de ceva timp înainte. Inițial, adâncimea de culoare limitată a majorității materialelor video a dus la o paletă de culori limitată de 216 de culori RGB. Cu predominanța afișărilor pe 24 biți, utilizarea celor 16,7 milioane de culori ale codului de culori HTML RGB nu mai prezintă probleme pentru majoritatea spectatorilor. [5]
Fig. 2 Reprezentare numerica a culorilor [5]
2.2. Reprezentare geometrică
Acest model se bazează pe sistemul cartezian de coordonate. Subspatiul de culori este un cub, care utilizează valori non-negative într-un interval 0-1(ca in figura de mai jos). Nuanțele de gri se situează pe diagonala cubului, de la punctul Black(0,0,0) la punctul White(1,1,1), iar culorile sunt puncte din interiorul cubului.
Un triplet RGB (r, g, b) reprezintă coordonatele tridimensionale ale punctului culorii date în interiorul cubului sau al fețelor sale sau de-a lungul marginilor acestuia. Această abordare permite calcularea asemănării culorilor a două culori RGB date prin simpla calculare a distanței dintre acestea: cu cât distanța este mai mică, cu atât este mai mare asemănarea. [4]
Fig. 3 Reprezentare geometrica a modelului RGB [6]
Capitolul 3: Componentele hardware ale detectorului
Elemente componente:
-Breadboard si cabluri -LCD 16×2
-placa Arduino UNO -Senzor de culoare RGB, Model TCS3200 [7]
3.1. Placa de dezvoltare Arduino
Componenta de bază a proiectului o constituie placa Arduino UNO.
Principalul motiv pentru care am ales să folosesc placa de dezvoltare Arduino UNO 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. Un mare avantaj de care am profitat este posibilitatea de a găsi componente compatibile. Spre exemplu LCD-ul 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. 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.
Ideea de bază a conceptului Arduino este să aducă oameni neinițiați mai aproape de domeniul tehnologiei informației. Aici putem vorbi atât despre studenți sau amatori, cât și despre persoane care nu au nici o legătură cu sectorul tehnic.
Când discutăm despre Arduino, nu ne referim strict la placa de dezvoltare, ci și la mediul de programare complet accesibil de către oricine dorește să realizeze aplicații specifice. Acestea pot fi de complexități diferite și cu utilități în tot felul de domenii, de la termometre cu Bluetooth și LED-uri ce se aprind la apăsarea unui buton, până la sisteme de securitate, aplicații bazate pe senzori și chiar sisteme biometrice. Acest concept a prins odată cu timpul o popularitate extrem de ridicată, iar astăzi este studiat în facultățile tehnice tocmai pentru că studenții îl pot înțelege ușor și astfel devin mai interesați de programare și sisteme integrate.
Conceptul Arduino a luat naștere în Italia, în anul 2004 la „Interaction Design Institute Ivrea” și a reprezentat tema de disertație a unui student columbian pe nume Hernando Barragán [8]. Acesta a denumit platforma „Wiring” și s-a aflat pe tot parcursul dezvoltării în coordonarea Sistem electronic pentru monitorizarea prezenței studenților la activitățile didactice 42 profesorului Massimo Banzi. Motivația era să realizeze o unealtă cât se poate de ieftină, întrucât microcontrolerele folosite în respectiva universitate reprezentau o problemă pentru unii studenți, costul lor fiind de aproximativ o sută de dolari. [8]. În anul 2005, același Massimo Banzi împreună cu un alt student al universității, David Mellis au reușit să facă platforma compatibilă cu un microcontroler și mai ieftin decât cel folosit cu un an în urmă. Este curios faptul că în loc să continue sub numele inițial, aceștia au preluat codul sursă și au numit proiectul „Arduino”. În plus, Hernando Barragán nu a fost nici măcar invitat să participe la dezvoltarea ulterioară a proiectului. [8]
Cu timpul, versiuni și mai ieftine au fost dezvoltate și puse la dispoziția pasionaților de tehnologie din jurul lumii. „Adafruit Industries”, un comerciant american de plăci bazate pe conceptul Arduino a estimat că până la jumătatea anului 2011, peste 300.000 de plăci oficiale au fost produse. În plus, aceiași companie a venit cu altă statistică din care reiese că în anul 2013 erau deja 700.000 de plăci oficiale vândute în toată lumea [8]. La aceste statistici se adaugă și plăcile așa-zise „pirat” care sunt și ele de cele mai multe ori compatibile cu mediul de programare oficial disponibil gratuit.
Etimologia numelui se explică prin faptul că o parte din echipa de dezvoltare se întâlnea să discute la un bar din Ivrea denumit „Arduino” după regele Italiei din perioada 1002-1014, „Arduin of Ivrea”. [8]
Arduino este o platformă de procesare open-source, bazată pe software și hardware flexibil și relativ simplu de folosit. Aceasta constă într-o platformă de mici dimensiuni (6.8 cm / 5.3 cm – varianta cea mai utilizata) 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, servomotoare, și alte tipuri de dispozitive mecanice. Procesorul este capabil să ruleze un cod scris într-un limbaj de programare care este foarte similar cu limbajul C++. [8]
Ce este cu adevărat interesant este ecosistemul dezvoltat in jurul Arduino. Vorbim aici atât despre comunitatea care este foarte activa, cât și despre numărul impresionant de dispozitive create special pentru Arduino.
Câteva exemple de senzori disponibili – senzori de distanță (capabili să măsoare de la câțiva centimetri până la 7-9 metri), senzori de sunet, senzori de câmp electromagnetic, senzori de fum, senzori de tip GPS, senzori de tip giroscopic, senzori de flux lichid (ca cei folosiți la pompele de benzină), senzori de temperatură, senzori de monoxid de carbon, senzori de lumină, senzori capabili să detecteze doar o anumită culoare, senzori de prezență, senzori de umiditate, senzori de nivel pentru lichid, senzori capabili sa măsoare concentratia de alcool în aerul expirat. Pentru a efectua acțiuni asupra mediului înconjurator, există o largă varietate de motoare, servomotoare, motoare pas cu pas, led-uri, actuatoare. Ca și conectivitate, există disponibile componente capabile sa conecteze Arduino la rețeaua Ethernet (“Ethernet Shield”), componente pentru rețea wireless, componente capabile să realizeze conectare pe rețeaua de date GSM / 3G, sau componente de tip XBEE utile pentru a realiza comunicații de tip personalizat. [8]. Platforma Arduino este disponibilă într-o serie de variante, fiecare cu diferite capabilități și dimensiuni.
În concluzie, Arduino este un concept complex ce se bazează pe idei apreciate în ziua de azi, precum modularitate, transparență și standardizare. Este o soluție extrem de bună în cazul în care se dorește dezvoltarea unui sistem integrat atât datorită faptului că e ușor de utilizat, cât și datorită comunității care a reușit să dezvolte de-a lungul timpului biblioteci întregi de funcții dedicate. În plus, se pare că și pe viitor acest concept va câștiga popularitate datorită aplicațiilor de tip „Internet of Things”.
3.2. Exemple de plăci Arduino
A. Arduino Uno – Aceasta este cea mai recenta placă de dezvoltare de la Arduino. Se conectează la computer prin intermediul cablului USB standard A-B și conține tot ceea ce ai nevoie pentru a programa și utiliza placa. Acestuia i se poate adăuga o varietate de Shild-uri (placă cu caracteristici speciale, specifice unor tipuri de aplicații). Este similar cu Duemilanove, dar are un chip diferit USB-to-serial – ATMega8U2, și cu un design nou de etichetare pentru a identifica mai ușor intrările și ieșirile. [9]
Fig. 4 Placa de dezvoltare Arduino UNO [9]
B. Mega 2560 – versiune a modelului Mega lansat cu Uno, această versiune dispune de Atmega2560, care are de două ori mai mult spațiu pentru memorie, și folosește 8U2 ATMega pentru comunicare USB-to-serial.
Caracteristici principale:
-CPU(Atmega I 280): 16MHz
-128KB Flash (4KB bootloader)
-8KB SRAM
-4KB EEPROM
-54 pini digitali
-16 pini pentru intrari analogice
Fig. 5 Placa de dezvoltare Arduino Mega2560 [10]
C. Mini – Aceasta este cea mai mica placa de dezvoltare de la Arduino. Aceasta functioneaza bine intr-un breadboard sau pentru aplicatii in care spatiul este limitat. Se conecteaza la calculator prin intermediul unui cablu mini USB Adapter.
Fig. 6 Placa de dezvoltare Arduino Mini [11]
D. Nano – O placă de dezvoltare compactă proiectată pentru utilizarea pe un breadboard. Nano se conectează la computer utilizând un cablu USB Mini-B.
Caracteristici principale:
-CPU(ATmega I 68 sau Atmega328): 16MHz
-16 sau 32KB Flash (2KB bootloader)
-1 sau 2KB SRAM
-512B sau 1KB EEPROM
-16 pini digitali
-8 pini pentru intrari analogice
Fig. 7 Placa de dezvoltare Arduino Nano [12]
E. Duemilanove – Arduino Demilanove este o platformă de procesare bazată pe microcontrolerul ATmega168 sau ATmega328. Are 14 pini de intrări/ieșiri digitale.
LED: 13. Există un LED încorporat în placă, conectat la pinul 13. Cand valoarea pe pin este HIGH, LEDul este aprins, când valoare este LOW, LEDul este stins.
Placa Arduino UNO are 6 intrări analogice, denumite dela A0 la A5, fiecare oferă o rezoluție de 10 biți. Implicit, ieșirile măsoară de la masa la 5v, deși este posibil ca limita superioară să fie schimbată cu ajutorul pinului AREF si funcția analogReference(). [13]
Fig. 8 Placa de dezvoltare Arduino Duemilanove [13]
F. LilyPad – Proiectat pentru aplicații ușor de implementat pe materiale textile, acest microcontroler poate fi cusut pe țesătură și are o culoare atrăgătoare, mov.
Fig. 9 Placa de dezvoltare Arduino LilyPad [14]
G. Fio – Proiectată pentru aplicații fără fir. Acesta are inclusă o priză dedicată pentru un modul radio Wi-Fi XBee, un conector pentru o baterie Li Polymer și circuite integrate de încărcare a bateriei.
Fig. 10 Placa de dezvoltare Arduino Fio [15]
H. Pro – Acestă placă de dezvoltare este concepută pentru utilizatorii avansați care doresc să încorporeze această placă într-un proiect: este mai ieftin decât un Diecimila și ușor de alimentat la o baterie, dar necesită componente suplimentare și asamblare.
Fig. 11 Placa de dezvoltare Arduino Pro [16]
I. Pro Mini – Ca Pro, Pro Mini este conceput pentru utilizatorii avansați care au nevoie de un cost scăzut, plăci de dezvoltare mici și care sunt dispuși să facă ceva lucru suplimentar pentru a o putea utiliza în proiecte.
Fig. 12 Placa de dezvoltare Arduino Pro Mini [17]
J. Serial – Este o placă de dezvoltare, care utilizează ca interfață un RS232 (COM) la un calculator pentru programare sau de comunicare. Acestă placă este ușor de asamblat, chiar ca un exercitiu de învățare. (Inclusiv scheme și fișiere CAD)
Fig. 13 Placa de dezvoltare Arduino Serial [18]
K. Serial Single Sided – Acestă placă de dezvoltare este concepută pentru a fi gravată și asamblată de mână. Este puțin mai mare decât Duemilanove, dar este compatibilă cu toate shield-urile Arduino.
Fig. 14 Placa de dezvoltare Arduino Serial Single Sided [19]
3.3. Placa Arduino UNO
Fig. 15 Elementele componente ale plăcii Arduino UNO [20]
A. Prezentare generală
Arduino Uno este o placă de procesare bazată pe microcontrollerul ATmega328. Are 14 pini de intrări\ieșiri digitale (din care 6 pot fi utilizate ca ieșiri PWM), 6 intrări analogice, un cristal oscilator de 16 MHz, o conexiune USB, o mufă de alimentare, un ICSP, și un buton de resetare.[21] Aceasta conține tot ceea ce este necesar pentru a ajuta la funcționarea microcontrolerului; pur și simplu conectați la un computer cu un cablu USB sau alimentați la un adaptor AC-DC sau baterie pentru a începe.
Pinii digitali sunt utilizati pentru a oferii un feedback in lumea reala: a face sa functioneze un motoras, a aprinde un bec, a aprinde un led, a afisa ceva pe un LCD, etc.
Pinii digitali de tip PWM(pulse with modulation) sunt utilizati pentru a emite un semnal analogic. Fara acesti pini, de exemplu, un led ar putea doar stins si aprins. Cu PWM putem face un efect de „fade”. Pinii analogici sunt utilizati pentru a prelua informatii din mediul inconjurator.
Uno diferă de toate plăcile precedente, prin aceea că nu folosește cip driver FTDI USB la un serial. În schimb, este dotat cu Atmega8U2 programat ca și convertor USB.
"Uno" înseamnă unu în limba italiană și este numită pentru a marca lansarea viitoare a Arduino 1.0. Uno și versiunea 1.0 vor fi versiunile de referință Arduino, pentru a avansa. Uno este ultima dintr-o serie de plăci Arduino USB, și modelul de referință pentru platforma Arduino.
B. Caracteristici [21]
Tabelul 4.1
C. Alimentare
Arduino Uno poate fi alimentat prin intermediul conexiunii USB sau cu o sursă de alimentare externă, sursa de alimentare fiind selectată automat.
Sursele externe de alimentare (non-USB) pot fi, fie un adaptor AC-DC sau baterie. Adaptorul poate fi conectat printr-un conector de 2.1mm cu centru-pozitiv în mufa de alimentare de pe placă. Traseele de la baterie pot fi introduse în pinii GND și V-in ai conectorului de alimentare.
Placa poate funcționa cu o sursă externă de 6-20 volți. Dacă este alimentată cu mai puțin de 7V, atunci pinul de 5V scoate o tensiune mai mica de 5V și placa poate deveni instabilă. Dacă se utilizează mai mult de 12V, regulatorul de tensiune se poate supraîncălzi și deteriora placa. Intervalul recomandat este de 7-12 volți.[22]
Placa Arduino UNO are 6 intrări analogice, denumite de la A0 la A5, fiecare oferă o rezoluție de 10 biți. Implicit, ieșirile măsoară de la masa la 5V, deși este posibil ca limita superioară să fie schimbată cu ajutorul pinului AREF și funcția analogReference(). În plus, unii pini au funcționalități specializate [21]:
I2C:A4 (SDA) și A5 (SCL). Suportă comunicare I2C folosind librăria Wire.
Mai există câțiva pini pe placă:
AREF. Tensiune de referință (numai de la 0 la 5V) pentru intrările analogice. Folosit cu funcția analogReference().
Reset. Aduce linia la zero pentru a reseta microcontrolerul. De obicei folosit pentru a adauga un buton de reset Shield-urilor care blochează acțiunea celui de pe placă.
F. Harta pinilor – ATMega 328 [23]
G. Comunicația
Arduino UNO are câteva posibilități de comunicare cu un calculator, o altă placă Arduino sau un alt microcontroler. Microcontrolerul ATmega328 furnizează comunicație serială UART TTL (5V) care este disponibilă pe pinii digitali 0(RX) și 1(TX). Un microcontroler ATmega8U2 direcționează comunicația serială către USB și apare ca un port serial virtual în software-ul de pe calculator. Firmware-ul microcontrolerului folosește driverele standard ale portului USB al calculatorului și nu este nevoie de un driver din exterior. Software-ul Arduino este prevăzut cu o fereastră care permite preluarea și trimiterea de date de tip text de la placa Arduino. LEDurile corespunzătoare semnalelor RX și TX de pe placă vor pâlpâi când informația este trimisă prin portul USB către cipul serial prin intermediul unei conexiuni USB cu calculatorul (dar nu pentru comunicația serială de pe pinii 0 și 1). [22]
O bibliotecă a programului (SoftwareSerial) permite comunicația serială pentru oricare dintre pinii placii.
Microcontrolerul ATmega328 suportă, de asemenea comunicație I2C (DST) și SPI. Software-ul Arduino include o bibliotecă de conexiuni (wire library) pentru a simplifica utilizarea portului I2C .[21]
H. Programare
Arduino uno poate fi programată cu software-ul Arduino. Selectați "Arduino Uno din meniul
Tools Board (în conformitate cu microcontrolerul de pe placă).
Microcontrolerul ATmega328 de pe placa Arduino Uno vine cu un program de butare (bootloader) care vă permite încărcarea unui program nou fără a utiliza un compilator extern. Acesta comunică folosind protocolul STK500 original.
Se poate evita, de asemenea, bootloader –ul și, microcontrolerul se poate programa prin ICSP (In-Circuit Serial Programming).
Codul sursă al Firmware –ul microcontrolerului ATmega8U2 este disponibil, el este încărcat cu un program de butare DFU care poate fi activat cu ajutorul unui jumper de pe spatele placii, ATmega8U2 fiind resetat. Apoi se pot folosi programele Atmel’s FLIP (windows) sau DFU (Mac si Linux) pentru a încărca un nou firmware.[22]
I. Resetarea automată (Software)
Arduino Uno este proiectată astfel încât îi permite sa fie resetată de către software, atunci când este conectată la calculator, fara a fi nevoie de resetare manuala, inainte de incarcarea unui program. Una dintre liniile de control a funcționării hardware (DTR) a microcontrolerului ATmega8U2 este conectata la linia de reset al microcontrolerului ATmega328 printr-un condensator de 100 nanofarad. Atunci când această linie este activată, linia de reset este activă suficient de mult timp pentru a reseta microcontrolerul. Software-ul Arduino folosește această capacitate pentru a vă permite să încărcați un cod prin simpla apăsare a butonului de încărcare din mediul de programare Arduino, ceea ce înseamnă că bootloader-ul are o perioadă scurtă de pauză.
Această configurare are alte implicații. Când Uno este conectată fie la un computer pe care rulează fie un sistem de operare Mac OS X sau Linux, aceasta se resetează de fiecare dată când o conexiune este realizată între ea și software (prin USB). Pentru următoarele jumătăți de secundă sau așa ceva, aplicația bootloaderul rulează pe Uno. Deși este programat să ignore date necorespunzătoare (adică nimic în afară de o încărcare a noului Cod), se vor intercepta primii biți din datele trimise către placă după ce conexiunea este deschisă.[22]
Uno conține un traseu care poate fi înterupt pentru a dezactiva resetarea automată. Zonele de pe fiecare parte a traseului înterupt pot fi lipite pentru a activa din nou resetarea automată. Traseul este denumit ”RESET_EN”. O altă modalitate de a dezactiva resetarea automată este prin a conecta un resistor de 110 ohm între linia de 5V și linia de reset.
J. Protecția la suprasarcină a portului USB
Arduino Uno are o siguranță resetabilă care protejează porturile USB ale computerului de scurtcircuit și suprasarcină. Deși majoritatea calculatoarelor au protecție internă proprie, siguranța oferă o protecție suplimentară. Dacă un curent mai mare de 500 mA trece prin portul USB, siguranța va întrerupe în mod automat conexiunea până la îndepărtarea suprasarcini sau scurtcircuitului.
K. Caracteristici fizice
Lungimea și lățimea maximă a plăcii este de 6.8 cm respective 5.3 cm, cu conectorul USB și conectorul de alimentare care ies din dimensiunile plăcii. Patru orificii de șurub care permite plăcii să fie atașată la o suprafață sau carcasă. Observați că distanța dintre pinii 7 și 8 este de 160 mm.
3.4. LCD 16×2
A.Prezentare Generala
Afișaj alfanumeric cu 32 de caractere dispuse pe 2 rânduri a câte 16 caractere fiecare, echipat cu unul din cele mai des intâlnite chip-uri HD44780. Acesta poate fi comandat paralel pe 4 sau 8 biti sau chiar si I2C folosind un modul de expansiune cu PCF8574T.
Modul de expansiune cu PCF8574T este special construit in vederea conectării unui LCD 16×2 sau 20×4 caractere, făcând astfel posibilă transmiterea de date catre LCD via I2C.
Datorită circuitului integrat PCF8574T, care este un expender pe 8 bit I2C, acesta ne permite folosirea pinililor acestuia atât ca input cat si ca output. Astfel modulul poate fi folosit si in alte scopuri, cum ar fi citirea unor switch-uri, comandarea unor led-uri, comandarea unui display cu 7 segmente etc. [24]
Este prevăzut cu iluminare de fundal albastră si caractere albe ceea ce conferă o citire usoara a textului. Tensiunea de lucru a acestui modul LCD 16×2 este de 5v si poate fi conectat cu usurinată la un modul Arduino . Mediul de dezvoltare Arduino dispune in mod implicit de librărie pentru acest tip de ecran. De altfel se pot construi cu usurintă caractere speciale.
În cazul in care se doreste folosirea acestui modul LCD impreună cu alte platforme de dezvoltare care lucrează cu tensiuni logice diferite de 5V se recomandă folosirea adaptoarelor de nivel logic.
Fig. 16 Diagramă pini Lcd [25]
B.Functionare
Diagrama bloc de funcționare :
Modulul de afișare este construit dintr-un controler LSI care la rândul lui este format din doua registre pe 8 biți, un registru de instrucțiuni (IR) si un registru de date (DR). Codurile de instrucțiuni IR stochează informații pentru datele de afișare RAM (DDRAM). DR memorează temporar datele care urmează sa fie scrise sau citite de la DDRAM. Cand informațiile de adresă sunt sunt scrise in IR atunci datele sunt stocate in DR. [24]
3.5. Senzor de culoare RGB (TCS3200)
Fig.17 Senzor de culoare TCS3200 [7]
Prin intermediul senzorului TCS3200 putem determina intensitatea luminii corespunzătoare fiecărei culori. Funcționarea senzorului se bazează pe conversia lungimii de undă a luminii într-un semnal dreptunghiular de o anumită frecvență pentru fiecare culoare. Modulul TCS3200 folosește o matrice de fotodiode. Acestea sunt elemente de circuit ce permit trecerea curentului în prezența unei radiații luminoase de o anumită frecvență .TCS3200 conține o matrice de 8×8 fotodiode, folosind câte 16 diode ce se deschid în prezența luminii roșu, 16 pentru albastru, 16 pentru verde și 16 pentru lumina albă (lumina alba se obține combinând toate culorile). Modulul va genera la ieșire un semnal dreptunghiular cu o frecvență dependentă de culoare. [7]
A. Detalii tehnice:
-Tensiunea de alimentare: 2.7V – 5.5V
-Consum: 3mA
-Ieșire: Semnal dreptunghiular specific fiecarei culori
-Dimenisuni: 32mm x 25mm;
B. Diagramă funcționalitate [7] :
C. Descriere terminale [7]:
Culoarea ce trebuie detectată de senzorul de culoare este selectată de către doi pini S2 și S3. Cu ajutorul acestor două elemente de control logic putem spune senzorului ce intensitate a luminii de culoare trebuie măsurată. Odată ce acest lucru se face, senzorul detectează intensitatea și transmite valoarea către sistemul de control din interiorul modulului.
` Capitolul 4: Asamblarea detecorului de culoare
A. Am folosit ca suport pentru piese un breadBoard confecționat din material plastic.
Fig. 18 BreadBoard
B. La placa Arduino conectăm LCD-ul dupa cum urmează :
-GND -> GND
-5V-> Vcc
-SDA -> SDA
-SCL -> SCL
Fig. 19 Placa Arduino
Fig. 20 Conectarea LCD-ului la placa Arduino
Fig. 21 Placa Arduino impreuna cu LCD-ul
C. În cele ce urmeaza am conectat senzorul de culoare la placa Arduino.
Fig. 22 Conectarea senzorului la placa Arduino
CAPITOLUL 5: Aplicația software
5.1. Programarea placii 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. [26]
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. [26] 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.
Fig. 23 Arduino IDE
La fel ca în majoritatea software-urilor, există meniuri care ne permit să efectuăm diverse acțiuni, cum ar fi crearea de fișiere noi, salvarea lor și multe altele în partea de sus a interfeței software. Există pictograme de butoane care ne permit, de asemenea, să accesam rapid unele dintre cele mai des efectuate acțiuni. Dacă facem clic pe butonul de verificare, verificam dacă nu există erori în cod. Dacă facem clic pe încărcare, transferam codul de la computer la arduino, pentru a putea rula pe placa Arduino. Există o fereastră în care introducem programul și zone de mesaje care ne oferă informații despre program.
Aceste butoane ne permit să accesăm rapid acțiunile pe care le vom efectua cel mai des cu fereastra de cod. Aceste actiuni includ verificarea codului de eroare (verificarea), trimiterea codului la placa Arduino (incărcarea), crearea unui fișier nou, deschiderea unui fișier si salvarea lui.
Fig. 24 Butoanele de baza ale programului
Pentru început, am luat placa ARDUINO și am așezat-o pe masă în fața mea. Am luat cablul de USB și am conectat mufa B (partea mai goasă si dreptunghiulară) în mufa de USB de la Arduino.
Fig. 24 Arduino IDE
Am folosit Arduino IDE de la secțiunea de download de pe www.arduino.cc. În momentul de față, cea mai recentă versiune de software Arduino IDE este 1.8.3 urmând ca actualizările să se facă în momentul aparițiilor unor versiuni noi. Fișierul este un fișier de tip ZIP astfel încât am fost nevoit să-l dezarhivez (Un utilitar bun este WinRAR). Dupa ce sa dezarhivat am instalat programul. După instalare am făcut cateva Setari cum ar fi, in meniul Tool am selectat placa noastră Arduino Uno.
Fig. 25 Alegerea plăcii
Pentru conectarea placii Arduino la PC m-am asigurat că jumperul de selectare a alimentării este setat la USB și nu la alimentare externă .
Fig. 6.3 Jumperul de selectare a alimentării
Folosind acest jumper se poate: fie sa se alimenteze microcontrolerul de la Portul USB (bun pentru curenți slabi, aplicații cu LED-uri, etc) sau sa se alimenteze de la o alimentare externa (6-12V DC – Curent Continu). Apoi, am conectat celalalt capăt al cablului USB (A) în mufa de USB de pe PC. Pentru a ma convinge ca placa este alimentata am observat ca LED-ul de putere mică (marcat PWR mai sus de comutatorul RESET) este aprins.
6.3 Programul
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Proiectul constă in construirea unui dispozitiv pe care utilizatorul il poate folosi pentru a scana una sau mai multe culori. Pentru a putea fi… [306541] (ID: 306541)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
