This is an old revision of the document!


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:

  • Arduino UNO R3: Placa de bază a proiectului, folosită pentru a controla și coordona toate celelalte componente.
  • Breadboard: Placă de prototipare folosită pentru a conecta toate componentele între ele, facilitând construirea circuitului.
  • LCD Display: Ecranul care afișează codul culorii detectate pe un fundal corespunzător culorii, oferind un feedback vizual clar.
  • Buzzer: Componenta care oferă impulsurile necesare pentru persoanele cu deficiențǎ de vedere sǎ înțeleagă culoarea pe care a detectat-o dispozitivul.
  • Senzor de Culoare TCS230: Componentă esențială, responsabilă pentru detectarea și recunoașterea culorii obiectelor analizate.
  • Rezistoare: Elemente de circuit folosite pentru a limita curentul, protejând astfel componentele sensibile.
  • Fire: Conectează toate componentele între ele, asigurând funcționarea corectă a dispozitivului.

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:

  • Pin digital 3: Conectat la buzzer-ul pasiv pentru a genera sunete.
  • Pin digital 8: Conectat 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

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

  • 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

Concluzii

Download

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

pm/prj2024/avaduva/bogdan.dragomir2809.1716564825.txt.gz · Last modified: 2024/05/24 18:33 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