This shows you the differences between two versions of the page.
pm:prj2024:avaduva:bogdan.dragomir2809 [2024/05/18 13:14] bogdan.dragomir2809 [Procesul de dezvoltare] |
pm:prj2024:avaduva:bogdan.dragomir2809 [2024/05/25 16:19] (current) bogdan.dragomir2809 [Download] |
||
---|---|---|---|
Line 25: | Line 25: | ||
==== Diagrama ==== | ==== Diagrama ==== | ||
- | {{:pm:prj2024:avaduva:bogdandragomir_diagrama_proiect_pm.png?200|}} | + | {{:pm:prj2024:avaduva:bogdandragomir_diagrama_proiect_pm-2.png?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ță. | 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ță. | ||
Line 108: | Line 108: | ||
- | <note tip> | + | ==== Mediu de dezvoltare ==== |
- | Descrierea codului aplicaţiei (firmware): | + | |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | Pentru dezvoltarea acestui firmware a fost utilizat Arduino IDE, un mediu de dezvoltare integrat specific pentru programarea microcontrolerelor din familia Arduino. Acest IDE oferă un mediu simplu și intuitiv pentru scrierea codului, compilare și încărcare pe microcontroler. |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | ==== Librării și surse 3rd-party ==== |
- | * (etapa 3) surse şi 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 și funcții implementate ==== | ||
+ | |||
+ | === Funcția setup() === | ||
+ | |||
+ | Inițializează pinii senzorului și 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 și 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 ===== | ||
+ | Î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: | ||
+ | ==== 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> |