Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2024:avaduva:bogdan.dragomir2809 [2024/05/18 00:05]
bogdan.dragomir2809 [Hardware Design]
pm:prj2024:avaduva:bogdan.dragomir2809 [2024/05/25 16:19] (current)
bogdan.dragomir2809 [Download]
Line 24: Line 24:
   * Fire: Conectează toate componentele între ele, asigurând funcționarea corectă a dispozitivului.   * Fire: Conectează toate componentele între ele, asigurând funcționarea corectă a dispozitivului.
  
-{{:​pm:​prj2024:​avaduva:​color_detect_first.jpeg?200|}} +==== Diagrama ==== 
-{{:pm:prj2024:avaduva:bogdan_dragomir_hardware.jpeg?200|}} +{{:​pm:​prj2024:​avaduva:​bogdandragomir_diagrama_proiect_pm-2.png?200|}} 
-{{:​pm:​prj2024:​avaduva:​bogdan_dragomir_ok.jpeg?​200|}}+ 
 +Senzorul de culoare TCS230 detectează culorile unui obiect, iar informațiile detectate sunt transmise către placa de dezvoltare Arduino UNO. Placa procesează datele și controlează afișajul LCD 1602 pentru a reda culoarea detectată. În plus, buzzer-ul emite un sunet specific atunci când o anumită culoare este detectată. Conexiunea între Arduino și afișajul LCD se realizează prin protocolul I2C pentru eficiență. 
 + 
 +==== Componentele folosite ==== 
 + 
 +**1. Arduino UNO R3**  
 + 
 +**Rol:** Placa de bază a proiectului,​ folosită pentru a controla și coordona toate celelalte componente. 
 + 
 +**Pini:** 
 + 
 +  * Pin digital 3Conectat la buzzer-ul pasiv pentru a genera sunete. 
 +  * Pin digital 8Conectat la pinul S0 al senzorului de culoare pentru controlul scalării frecvenței de ieșire. 
 +  * Pin digital 9: Conectat la pinul S1 al senzorului de culoare pentru controlul scalării frecvenței de ieșire. 
 +  * Pin digital 10: Conectat la pinul S2 al senzorului de culoare pentru selectarea setului de fotodiode. 
 +  * Pin digital 11: Conectat la pinul S3 al senzorului de culoare pentru selectarea setului de fotodiode. 
 +  * Pin digital 12: Conectat la pinul OUT al senzorului de culoare pentru a citi semnalul de frecvență corespunzător culorii detectate. 
 +  * Pin analogic A4: Conectat la linia SDA a afișajului LCD pentru comunicarea I2C. 
 +  * Pin analogic A5: Conectat la linia SCL a afișajului LCD pentru comunicarea I2C. 
 +  * Pin 5V: Alimentarea senzorului de culoare și a afișajului LCD. 
 +  * Pin GND: Referința de masă pentru toate componentele conectate. 
 + 
 +**2.Senzor de culoare TCS230** 
 + 
 +**Rol:** Detectează culorile prin măsurarea intensității luminii reflectate de diferite fotodiode pentru roșu, verde și albastru. 
 + 
 +**Pini:** 
 + 
 +  * S0 - Pinul digital 8: Controlul scalării frecvenței de ieșire. 
 +  * S1 - Pinul digital 9: Controlul scalării frecvenței de ieșire. 
 +  * S2 - Pinul digital 10: Selectarea setului de fotodiode. 
 +  * S3 - Pinul digital 11: Selectarea setului de fotodiode. 
 +  * OUT - Pinul digital 12: Ieșirea semnalului de frecvență corespunzător culorii detectate. 
 +  * VCC - Conectat la 5V: Alimentarea senzorului. 
 +  * GND - Conectat la GND: Referința de masă. 
 + 
 +**3. Afișaj LCD 1602 cu interfață I2C**  
 + 
 +**Rol:** Afișează culoarea detectată și valorile RGB corespunzătoare pe ecran. 
 + 
 +**Pini:** 
 + 
 +  * SDA - Pinul analogic A4: Linie de date pentru comunicarea I2C. 
 +  * SCL - Pinul analogic A5: Linie de ceas pentru comunicarea I2C. 
 +  * VCC - Conectat la 5V: Alimentarea afișajului LCD. 
 +  * GND - Conectat la GND: Referința de masă. 
 + 
 +**4. Buzzer pasiv**  
 + 
 +**Rol:** Emite sunete diferite în funcție de culoarea detectată, oferind feedback auditiv. 
 + 
 +**Pini:** 
 + 
 +  * + - Pinul digital 3: Controlul tonului buzzer-ului. 
 +  * - - Conectat la GND: Referința de masă. 
 + 
 +==== Procesul de dezvoltare ==== 
 + 
 +{{:​pm:​prj2024:​avaduva:​bogdan_dragomir_rezultate.jpeg?​200|}} 
 + 
 +**Configurarea Senzorului de Culoare** 
 + 
 +În prima imagine, vedem senzorul de culoare GY-31 TCS3200/​TCS230 conectat la plăcuța Arduino UNO. Senzorul este poziționat pentru a detecta culoarea unui obiect albastru. Fiecare fotodiodă este controlată de pinii specifici conectați la Arduino (S0, S1, S2, S3 și OUT). 
 + 
 +**Testarea Afișajului LCD** 
 + 
 +În a doua imagine, afișajul LCD 1602 este testat pentru a se asigura că funcționează corect. Mesajul "​Hello,​ world!"​ este afișat pentru a verifica că afișajul poate primi și afișa date. Acest pas este esențial pentru confirmarea funcționării corecte a hardware-ului înainte de integrarea completă în proiect. 
 + 
 +**Debugging și Programare** 
 + 
 +A treia imagine arată procesul de debugging și programare folosind platforma Arduino IDE în Visual Studio Code. Codul este scris și testat în timp real pentru a verifica corectitudinea și funcționalitatea. Utilizarea IDE-ului facilitează gestionarea și testarea codului. 
 + 
 +**Asamblarea hardware** 
 + 
 +În a patra imagine se pot observa componentele cuplate pentru testarea acestora împreună, astfel rezolvând eventualele problemele de cablaj, dar și pentru a avea o viziune asupra stării finale a proiectului. 
 + 
 +**Afișarea Rezultatelor și Feedback-ul Auditiv** 
 + 
 +În ultimele două imagini, vedem proiectul final în funcțiune. Afișajul LCD arată culorile detectate și valorile RGB corespunzătoare (de exemplu, "​Color:​ Green R:72 G:56 B:61" și "​Color:​ Blue R:25 G:25 B:​17"​). Buzzer-ul pasiv emite sunete diferite pentru fiecare culoare detectată, oferind un feedback auditiv utilizatorului.
 ===== Software Design ===== ===== Software Design =====
  
  
-<note tip> +==== Mediu de dezvoltare ==== 
-Descrierea codului aplicaţiei (firmware): + 
-  ​* ​mediu de dezvoltare ​(if any) (e.g. AVR StudioCodeVisionAVR) +Pentru dezvoltarea acestui firmware a fost utilizat Arduino IDE, un mediu de dezvoltare ​integrat specific pentru programarea microcontrolerelor din familia ArduinoAcest IDE oferă un mediu simplu și intuitiv pentru scrierea coduluicompilare și încărcare pe microcontroler. 
-  * librării şi surse 3rd-party ​(e.gProcyon AVRlib) + 
-  * algoritmi şi structuri pe care plănuiţsă le implementaţ+==== Librării și surse 3rd-party ​==== 
-  * (etapa 3surse şfuncţii implementate + 
-</​note>​+  * Wire.h - Aceasta este o librărie standard pentru comunicarea I2C, utilizată pentru a interacționa cu diverse dispozitive periferice
 +  * LiquidCrystal_I2C.h - Aceasta este o librărie utilizată pentru controlul afișajelor LCD cu interfață I2C. Facilitează interacțiunea cu ecranele LCD, reducând numărul de pini necesari pentru conectare. 
 + 
 +==== Algoritmi și structuri ​implementate ==== 
 + 
 +=== Algoritmul de citire a culorilor === 
 + 
 +Utilizarea unui senzor de culoare pentru a detecta valorile RGB. Senzorul utilizează semnale digitale pentru a indica prezența diferitelor culori. 
 +Citirea valorilor pentru fiecare componentă RGB prin configurarea și măsurarea impulsurilor generate de fotodiodă pentru fiecare culoare. 
 + 
 +=== Algoritmul de detectare a culorilor specifice === 
 + 
 +Compararea valorilor RGB citite pentru a determina culoarea dominantă. Condițiile if-else sunt utilizate pentru a diferenția între culorile albe, roșii, albastre, verzi, galbene, portocalii, mov și negre, ​pe baza valorilor RGB detectate. 
 + 
 +=== Interacțiunea cu utilizatorul === 
 + 
 +Afișarea culorii detectate și a valorilor RGB pe un ecran LCD. 
 +Generarea de tonuri specifice utilizând un buzzer pasiv pentru a oferi feedback audio pentru fiecare culoare detectată
 + 
 +==== Surse șfuncții implementate ==== 
 + 
 +=== Funcția setup() === 
 + 
 +Inițializează pinii senzorului șafișajului LCD. 
 +Configurează comunicarea serială pentru debugging și afișajul LCD pentru a prezenta un mesaj de inițializare. 
 +Setează modul de operare al pinii senzorului de culoare pentru a obține frecvența de ieșire la 100%. 
 + 
 +=== Funcția GetColors() === 
 + 
 +Obține valorile RGB utilizând senzorul de culoare. Aceasta implică setarea pinii de selecție (S2, S3) și măsurarea duratei impulsurilor de ieșire pentru fiecare componentă de culoare. 
 + 
 +=== Funcția playTone(int frequency, int duration) === 
 + 
 +Redă un ton specific utilizând un buzzer pasiv. Frecvența și durata tonului sunt specificate ca parametri ai funcției. 
 + 
 +=== Funcția loop() === 
 + 
 +Este funcția principală care rulează continuu și include logica principală a programului:​ 
 +  * Apelează funcția GetColors() pentru a obține valorile RGB. 
 +  * Curăță afișajul LCD șafișează culoarea detectată împreună cu valorile RGB. 
 +  * Redă un ton specific pentru fiecare culoare detectată. 
 +  * Introduce o întârziere de 2 secunde înainte de a repeta procesul. 
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +În urma implementării proiectului pentru detectarea culorilor folosind un senzor TCS3200/​TCS230 și un Arduino UNO, am reușit să realizăm următoarele:​ 
-Care au fost rezultatele ​obţinute în urma realizării proiectului vostru. + 
-</note>+==== Detectarea Culorilor de Bază ==== 
 + 
 +Sistemul poate detecta și afișa corect culorile roșu, verde și albastru pe un ecran LCD. 
 +Fiecare culoare detectată este însoțită de un semnal sonor specific emis de un buzzer, facilitând utilizarea de către persoane cu deficiențe de vedere. 
 + 
 +==== Calibrarea și Maparea Valorilor RGB ==== 
 + 
 +Valorile citite de senzor pentru fiecare componentă RGB au fost calibrate și mapate corect în intervalul 0-255. 
 +Utilizarea funcției map a permis ajustarea frecvențelor citite în valori RGB coerente. 
 + 
 +==== Detectarea Culorilor Specifice ==== 
 + 
 +Am implementat condiții precise pentru detectarea culorilor Orange, Yellow, Black și Purple, pe baza observațiilor și valorilor ​obținute în timpul testelor: 
 +  * Orange: Red Green && Red < Blue && abs(Green - Blue) <= 2 
 +  * Yellow: Red 10 && Red < 21 && Green > 10 && Green < 21 && Blue > 10 && Blue < 21 
 +  * Black: Red > 50 && Green > 50 && Blue > 50 
 + 
 +Culorile detectate sunt afișate pe ecranul LCD și semnalizate prin tonuri specifice buzzer-ului. 
 + 
 +==== Afișarea Valorilor RGB ====
  
 +Pe lângă numele culorii detectate, valorile RGB sunt afișate pe ecranul LCD pentru o monitorizare detaliată și verificare a acurateței.
 ===== Concluzii ===== ===== Concluzii =====
  
-===== Download =====+Proiectul pentru detectarea culorilor folosind un Arduino UNO și un senzor TCS3200/​TCS230 s-a dovedit a fi un succes, îndeplinind scopul de a oferi un instrument educațional eficient și util pentru persoanele cu deficiențe de vedere. În urma testelor și ajustărilor efectuate, am ajuns la următoarele concluzii:
  
 +==== Acuratețea Detecției ====
  
-===== Jurnal ​=====+Sistemul este capabil să detecteze corect o gamă largă de culori, inclusiv cele de bază (roșu, verde, albastru) și culori specifice precum Orange, Yellow și Black. 
 +Ajustările continue și calibrarea pragurilor de detecție au fost esențiale pentru îmbunătățirea acurateței. 
 + 
 +==== Utilizarea în Scopuri Educaționale ​==== 
 + 
 +Proiectul este ideal pentru utilizare în scopuri educaționale,​ oferind o modalitate clară și vizuală de a înțelege cum funcționează detecția culorilor și senzorii de lumină. 
 +Afișarea valorilor RGB și condițiile logice pentru detectarea culorilor oferă un exemplu practic de aplicare a teoriei în electronică și programare. 
 + 
 +==== Asistență pentru Persoanele cu Deficiențe de Vedere ==== 
 + 
 +Buzzer-ul integrat, care emite tonuri specifice pentru fiecare culoare detectată, adaugă o funcționalitate importantă pentru utilizatorii cu deficiențe de vedere, permițându-le să identifice culorile prin semnale auditive. 
 + 
 +==== Îmbunătățiri viitoare ==== 
 + 
 +Pe măsură ce sunt testate mai multe nuanțe și condiții de iluminare, proiectul poate fi extins pentru a include detectarea mai precisă a altor culori și nuanțe. 
 +Implementarea unor algoritmi mai avansați de calibrare și normalizare a valorilor RGB ar putea îmbunătăți și mai mult acuratețea detecției culorilor.  
 + 
 +=====  
 +În concluzie, proiectul a demonstrat viabilitatea și eficiența unui sistem simplu de detecție a culorilor utilizând Arduino și un senzor TCS3200/​TCS230,​ fiind aplicabil într-o varietate de scenarii educaționale și practice. 
 +===== Download ===== 
 + 
 +{{:​pm:​prj2024:​avaduva:​344c1_dragomirbogdan_proiectpm.zip|}} 
 +===== Resurse ​=====
  
 <note tip> <note tip>
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. +1. Documentație Arduino:
-</​note>​+
  
-===== Bibliografie/Resurse =====+Arduino: https://​www.arduino.cc/
  
 +https://​www.arduino.cc/​reference/​en/​
  
 +2. Senzor de culoare TCS230: http://​unihedron.com/​projects/​darksky/​tcs230-e33.pdf
  
-<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</a></html>+https://howtomechatronics.com/​tutorials/​arduino/​arduino-color-sensing-tutorial-tcs230-tcs3200-color-sensor/​
  
 +3. LCD I2C: https://​www.arduinolibraries.info/​libraries/​liquid-crystal-i2-c
 +
 +https://​dronebotworkshop.com/​i2c-lcd-display/​
 +</​note>​
pm/prj2024/avaduva/bogdan.dragomir2809.1715979925.txt.gz · Last modified: 2024/05/18 00:05 by bogdan.dragomir2809
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0