Table of Contents

Sistem pentru detectarea culorilor

Introducere

Proiectul consta în implementarea unui dispozitiv pentru detectarea codurilor de culoare folosind o placuta Arduino, un Breadboard pentru conectarea pieselor, un LCD Display pentru afisarea codului de culoare pe un fundal care sa corespunda culorii detectate, a unui senzor de culoare si nu in ultmul rand a unui buzzer. Acest proiect a fost gandit pentru a putea identifica culorile astfel incat sa fie folosit atat in scop educativ, care va putea fi folosit si de persoanele cu deficienta de vedere datorita buzzer-ului ce va transmite impulsuri ajutatoare.

Descriere generală

Proiectul constă în implementarea unui dispozitiv pentru detectarea codurilor de culoare, folosind o placă Arduino, un breadboard pentru conectarea componentelor, un ecran LCD pentru afișarea codului de culoare pe un fundal care corespunde culorii detectate, un senzor de culoare și un buzzer. Acest proiect a fost conceput pentru a facilita identificarea culorilor, fiind util atât în scopuri educative, cât și pentru persoanele cu deficiențe de vedere, datorită buzzer-ului care va transmite semnale auditive ajutătoare.

Scopul proiectului este de a crea un instrument ușor de utilizat și eficient, capabil să recunoască și să afișeze codurile de culoare într-un mod clar și vizual atractiv. Această soluție oferă beneficii într-o varietate de scenarii, de la utilizarea în scopuri educative până la asistența persoanelor cu deficiențe de vedere, prin semnalele auditive transmise de buzzer. Prin combinarea tehnologiei cu o abordare practică, proiectul se pretează unei game largi de aplicații, inclusiv în medii profesionale, cum ar fi în industria auto pentru vopsirea mașinilor. }

Hardware Design

Ca şi componente hardware vom folosi:

Diagrama

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:

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:

3. Afișaj LCD 1602 cu interfață I2C

Rol: Afișează culoarea detectată și valorile RGB corespunzătoare pe ecran.

Pini:

4. Buzzer pasiv

Rol: Emite sunete diferite în funcție de culoarea detectată, oferind feedback auditiv.

Pini:

Procesul de dezvoltare

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

Mediu de dezvoltare

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

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:

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:

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

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

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

344c1_dragomirbogdan_proiectpm.zip

Resurse