This shows you the differences between two versions of the page.
pm:prj2023:fstancu:ahmad.ramadan [2023/05/04 12:10] 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 ===== | ||
Line 16: | Line 15: | ||
- //Obiectul colorat este plasat în fața senzorului de culoare TCS34725. (de ex. fruct cum ar fi un **mar/portocala**)// | - //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ă bloc: http://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: |