Differences

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

Link to this comparison view

pm:prj2023:fstancu:ahmad.ramadan [2023/05/04 12:07]
ahmad.ramadan
pm:prj2023:fstancu:ahmad.ramadan [2023/05/17 18:40] (current)
ahmad.ramadan
Line 1: Line 1:
- 
 ====== Color Identifier - Ramadan Ahmad ====== ====== Color Identifier - Ramadan Ahmad ======
 ===== Introducere ===== ===== Introducere =====
 Acest proiect este un identificator de culori bazat pe Arduino, care are scopul de a detecta și recunoaște culorile diferitelor ​ Acest proiect este un identificator de culori bazat pe Arduino, care are scopul de a detecta și recunoaște culorile diferitelor ​
-obiecte plasate în fața senzorului de culoare TCS34725. Ideea a pornit de la nevoia de a avea un dispozitiv capabil să clasifice  +obiecte plasate în fața senzorului de culoare TCS34725. 
-culorile obiectelor într-un mod simplu și eficient. Acest dispozitiv poate fi util pentru o varietate de aplicații, precum sortarea culorilor  +Ideea a pornit de la nevoia de a avea un dispozitiv capabil să clasifice  
-într-un proces de producție, învățarea culorilor pentru copii sau chiar pentru persoanele cu deficiențe de vedere la culori.+culorile obiectelor într-un mod simplu și eficient.
  
 <note tip> <note tip>
   * **de ce credeţi că este util pentru alţii şi pentru voi?​** ​   * **de ce credeţi că este util pentru alţii şi pentru voi?​** ​
-Acest proiect poate fi util pentru persoanele cu deficiențe de vedere la culori, facilitând identificarea și diferențierea culorilor obiectelor din jurul lor, precum și pentru educatori sau părinți care doresc să îi învețe pe copii despre culori într-un mod interactiv și amuzant. 8-)+Acest proiect poate fi util pentru persoanele cu deficiențe de vedere la culori, facilitând identificarea și diferențierea culorilor obiectelor din jurul lor, precum ​si sortarea culorilor într-un proces de producție, dar și pentru educatori sau părinți care doresc să îi învețe pe copii despre culori într-un mod interactiv și amuzant. 8-)
 </​note>​ </​note>​
  
 ===== Descriere generală ===== ===== Descriere generală =====
  
-  - //Obiectul colorat este plasat în fața senzorului de culoare TCS34725.//+  - //Obiectul colorat este plasat în fața senzorului de culoare TCS34725. ​(de ex. fruct cum ar fi un **mar/​portocala**)//
   - //Senzorul de culoare TCS34725 detectează culoarea obiectului și trimite datele către Arduino Mega2560.//   - //Senzorul de culoare TCS34725 detectează culoarea obiectului și trimite datele către Arduino Mega2560.//
-  - //Arduino Mega2560 procesează datele primite și determină numele culorii detectate.//​+  - //​Arduino ​<​del>​UNO</​del> ​Mega2560 procesează datele primite și determină numele culorii detectate.//​
   - //Numele culorii este afișat pe ecranul OLED 128x64, iar utilizatorul poate vedea și înțelege culoarea detectată.//​   - //Numele culorii este afișat pe ecranul OLED 128x64, iar utilizatorul poate vedea și înțelege culoarea detectată.//​
   - //Ledul RGB este controlat de Arduino Mega2560 pentru a lumina culoarea detectată, oferind astfel o reprezentare vizuală a culorii obiectului.//​   - //Ledul RGB este controlat de Arduino Mega2560 pentru a lumina culoarea detectată, oferind astfel o reprezentare vizuală a culorii obiectului.//​
-  - //​Utilizatorul și obiectul colorat interacționează cu sistemul prin intermediul senzorului de culoare, display-ului OLED și a ledului RGB, permițând identificarea rapidă și eficientă a culorilor diferitelor obiecte.//+  - //​Utilizatorul și obiectul colorat interacționează cu sistemul prin intermediul senzorului de culoare, display-ului OLED și a ledului RGB, cat si a servo-ului atasat,​permițând identificarea rapidă și eficientă a culorilor diferitelor obiecte.// 
 +  - //Butonul are rolul de a produce o intrerupere hardware, prin stingerea becului RGB dupa ce se apasa pe buton.//
  
-<note tip> +==== Schema Bloc: ==== 
-O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează. +{{ :pm:prj2023:​fstancu:​schemablocpm.png |}}
- +
-Exemplu de schemă blochttp://www.robs-projects.com/​mp3proj/​newplayer.html +
-</​note>​+
  
 ===== Hardware Design ===== ===== Hardware Design =====
Line 31: Line 28:
  
  
-  * **Arduino Mega2560:** //Placa de bază a proiectului,​ utilizată pentru a controla și coordona toate celelalte componente.//​+  * **Arduino ​<​del>​UNO</​del> ​Mega2560:** //Placa de bază a proiectului,​ utilizată pentru a controla și coordona toate celelalte componente.//​
   * **Breadboard:​** //​Utilizată pentru a conecta toate componentele între ele.//   * **Breadboard:​** //​Utilizată pentru a conecta toate componentele între ele.//
   * **128×64 OLED display:** //​Afișează numele culorii detectate.//​   * **128×64 OLED display:** //​Afișează numele culorii detectate.//​
Line 39: Line 36:
   * **Rezistoare:​** //Utilizate pentru a limita curentul în circuit și pentru a proteja componentele.//​   * **Rezistoare:​** //Utilizate pentru a limita curentul în circuit și pentru a proteja componentele.//​
   * **Fire:** //​Conectează componentele între ele.//   * **Fire:** //​Conectează componentele între ele.//
 +  * **Servomotor SG90, 180 grade: ** //Alt element care contribuie la identificarea culorii detectate.//​
 +  * **Buton: ** //Utilizat pentru a produce o intrerupere hardware.//
 +
 +
 +==== Schema circuitului:​ ====
 +
 +
 +----
 +
 +
 +  *  **Utilizand Breadboard:​** ​
 +
 +{{:​pm:​prj2023:​fstancu:​schemacircuitccolorpng.png?​600|}}
 +
 +  *  **Schematic Fritzing:​** ​
 +{{:​pm:​prj2023:​fstancu:​circuit_schematicmod.png?​600|}}
 +
 +===== Software Design =====
 +
 +
 +<note tip>
 +Descrierea codului aplicaţiei (firmware):
 +  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
 +  * librării şi surse 3rd-party (e.g. Procyon AVRlib)
 +  * algoritmi şi structuri pe care plănuiţi să le implementaţi
 +  * (etapa 3) surse şi funcţii implementate
 +</​note>​
 +
 +Acest program utilizează mai multe biblioteci terță parte:
 +
 +  * **Biblioteca "​Servo.h":​** o bibliotecă standard Arduino care oferă o interfață facil de folosit pentru controlul servomotoarelor.
 +  * 
 +  * **Biblioteca "​Wire.h":​** o altă bibliotecă standard Arduino care facilitează comunicarea I2C între dispozitivul Arduino și alte dispozitive I2C.
 +  * 
 +  * **Biblioteca "​Adafruit_TCS34725.h":​** o bibliotecă de la Adafruit care facilitează utilizarea senzorului de culoare TCS34725.
 +  * 
 +  * **Biblioteca "​U8glib.h":​** o biblioteca pentru Arduino destinată pentru dispozitive cu afișaj cu matrice de puncte, cum ar fi LCD-uri și OLED-uri.
 +
 +//În ceea ce privește algoritmi și structuri implementate,​ programul folosește o metodă de citire a datelor de la senzorul de culoare TCS34725, apoi normalizarea valorilor RGB prin împărțirea fiecărei la media celor trei. Programul utilizează apoi aceste valori normalizate pentru a determina ce culoare este detectată.//​
 +
 + - Funcțiile implementate în acest cod includ:
 +
 +  * **//​debounce()://​** Aceasta este o funcție de eliminare a zgomotului pentru butonul de intrare. Ea asigură că semnalul de intrare este stabilit și că semnalele nedorite (bounce) sunt ignorate.
 +  * 
 +  * //​**setup():​**//​ Aceasta este o funcție standard Arduino care este executată o singură dată la pornirea programului. Aici, este configurată comunicarea serială, inițializate pinurile și verificată conexiunea cu senzorul de culoare.
 +  * 
 +  * //​**fadeColor():​**//​ Aceasta este o funcție care face ca un LED RGB să estompeze treptat toate culorile la negru.
 +  * 
 +  * **//​draw()://​** Aceasta este o funcție care afișează culoarea detectată pe un ecran OLED.
 +  * 
 +  * //​**loop():​**//​ Aceasta este funcția principală a programului care se execută repetitiv după ce setup() a fost finalizat. În această funcție, sunt citite datele de la senzor, calculată culoarea și controlată poziția servomotorului și culoarea LED-ului RGB în funcție de culoarea detectată.
 +
 +===== Rezultate Obţinute =====
 +{{:​pm:​prj2023:​fstancu:​color1.jpeg?​400|}} {{:​pm:​prj2023:​fstancu:​color2.jpeg?​400|}}
 +{{:​pm:​prj2023:​fstancu:​color3.jpeg?​400|}} {{:​pm:​prj2023:​fstancu:​color4.jpeg?​400|}}
 +
 +
 +===== Concluzii =====
 +
 +În concluzie, acest proiect a fost o experiență de învățare incredibilă și, fără îndoială, cel mai interesant proiect la care am lucrat până acum în cadrul facultății. Am avut ocazia să explorez și să înțeleg mai bine diverse componente hardware precum servomotoarele,​ senzorii de culoare, LED-urile RGB și ecranele OLED.
 +
 +O provocare a fost lucrul cu ecranul OLED 128x64 . A fost nevoie de timp și de multă răbdare pentru a înțelege cum să conectez corect ecranul și cum să controlez afișarea textului pe acesta, inclusiv schimbarea și mărirea fontului. Cu toate acestea, această experiență a fost foarte valoroasă, deoarece am învățat multe despre gestionarea afișajelor. 8-)
 +
 +Deși proiectul a avut provocările sale, a fost, în același timp, foarte distractiv. Am avut posibilitatea de a experimenta,​ de a învăța și de a crea ceva util și tangibil. Sunt încântat de ceea ce am reușit să realizez și sunt nerăbdător să aplic cunoștințele dobândite în proiecte viitoare.:​-D
 +
 +===== Download =====
 +
 +{{:​pm:​prj2023:​fstancu:​ramadan_ahmad_331cb_proiect_pm.zip|}}
 +
 +
 +===== Bibliografie/​Resurse =====
 +**Resurse Software** şi **Resurse Hardware** : 
 +  * [[https://​www.brainy-bits.com/​post/​how-to-connect-and-use-an-spi-oled-display]]
 +  * [[https://​www.makerguides.com/​tcs34725-rgb-color-sensor-with-arduino/​]]
 +  * [[https://​www.electronics-lab.com/​project/​using-sg90-servo-motor-arduino/​]]
 +  * [[https://​www.rapidtables.com/​web/​color/​RGB_Color.html]]
 +
 +
  
 +<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
-Schema circuitului:​ 
pm/prj2023/fstancu/ahmad.ramadan.1683191270.txt.gz · Last modified: 2023/05/04 12:07 by ahmad.ramadan
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