This shows you the differences between two versions of the page.
|
pm:prj2022:agmocanu:money_counter [2022/05/27 20:43] silvia.dragan [Jurnal] |
pm:prj2022:agmocanu:money_counter [2022/06/02 15:28] (current) silvia.dragan [Concluzii] |
||
|---|---|---|---|
| Line 21: | Line 21: | ||
| * Arduino UNO | * Arduino UNO | ||
| * Display OLED 128x32 - I2C | * Display OLED 128x32 - I2C | ||
| - | * Senzor culoare | + | * Senzor culoare TCS3200 |
| * Senzor IR | * Senzor IR | ||
| * Buton | * Buton | ||
| Line 27: | Line 27: | ||
| Schema bloc: | Schema bloc: | ||
| - | {{:pm:prj2022:agmocanu:dragan_silvia_schema_bloc.png?200|}} | + | {{:pm:prj2022:agmocanu:dragan_silvia_schema_bloc.png?600|}} |
| + | {{:pm:prj2022:agmocanu:circuit-tinker.png?600|}} | ||
| + | Nota: nu am gasit piesele exacte in tinkercad, am folosit piese asemanatoare | ||
| ===== Software Design ===== | ===== Software Design ===== | ||
| - | <note tip> | + | |
| - | Descrierea codului aplicaţiei (firmware): | + | Pentru dezvoltare am folosit IDE-ul Arduino si bibliotecile: |
| - | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * <SPI.h> |
| - | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * <Wire.h> |
| - | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * <Adafruit_GFX.h> |
| - | * (etapa 3) surse şi funcţii implementate | + | * <Adafruit_SSD1306.h> |
| - | </note> | + | |
| + | === Functiile implementate sunt: === | ||
| + | |||
| + | - setup() - setare pini | ||
| + | - loop() - apel celelalte functii | ||
| + | - checkProximitySensor() - preia valoarea citita de senzorul de proximitate | ||
| + | - writeOnDisplayStart() - scrie pe display textul de inceput | ||
| + | - readColorsFromSensor() - detecteaza valorile frecventelor culorilor RGB ale obiectului scanat | ||
| + | - detectBill() - determina valoarea bancnotei in functie de culoarea sa | ||
| + | - printColors() - afiseara pe serial monitor valorile frecventelor RGB detectate de senzor. folosit pentru debug si incadrare bancnote in intervale de culori. | ||
| + | - reset() - reseteaza procesul de numarare | ||
| + | - writeOnDisplayTotal() - scrie pe display valoarea toala numarata - * Ordered List Item | ||
| + | |||
| + | |||
| + | === Implementare Generala: === | ||
| + | |||
| + | Cat timp senzorul de proximitate nu transmite ca ar avea in apropiere vreun obstacol, pe ecran se afiseaza | ||
| + | un mesaj de start. | ||
| + | Cand senzorul de proximitate detecteaza prezenta unui obstacol (o bancnota este introdusa), se calculeaza | ||
| + | valorile frecventelor culorilor RGB detectate de senzorul de culoare. | ||
| + | Am scanat anterior in ce range de valori se afla fiecare bancnota si am stabilit criteriile de determinare a | ||
| + | valorii bancnotei dupa aceste valori. | ||
| + | Valoarea determinata se aduna la suma totala ce este afisata pe ecran. | ||
| + | Daca vrem sa restam suma si sa reincepem numaratoarea, apasam pe butonul galben. | ||
| + | |||
| + | |||
| + | |||
| ===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
| - | <note tip> | + | {{:pm:prj2022:agmocanu:sdd1.jpeg?400|}} |
| - | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | {{:pm:prj2022:agmocanu:sdd2.jpeg?400|}} |
| - | </note> | + | {{:pm:prj2022:agmocanu:sdd3.jpeg?400|}} |
| + | {{:pm:prj2022:agmocanu:sdd4.jpeg?400|}} | ||
| + | {{:pm:prj2022:agmocanu:sdd5.jpeg?400|}} | ||
| + | <note important>**Video functionare:** | ||
| + | https://www.youtube.com/watch?v=vZWu6h1S5ME&ab_channel=SilviaDaniela</note> | ||
| + | |||
| + | |||
| + | === Observatii: === | ||
| + | |||
| + | |||
| + | |||
| + | Initial am incercat sa detectez si sa numar banconte de tip RON, dar prin testare | ||
| + | am ajuns la concluzia ca senzorul acesta de culoare nu detecta bine culorile. | ||
| + | Nu am descoperit exact cauza, dar presupun ca are de a face cu materialul, de plastic. | ||
| + | Bancnotele de tip EURO sunt detectate mult mai bine, fiind de hartie. | ||
| + | |||
| + | O dificultate a implementarii a fost faptul ca lumina din incapere afecteaza valorile returnate | ||
| + | de senzorul de culoare. Am incercat sa folosesc intervale flexibile pentru frecventele culorilor, | ||
| + | dar suficient de restranse pentru a nu fi confundate. De exemplu, bancnotele de 10E si de 50E sunt | ||
| + | asemanatoare in culoare (rosu/portocaliu), asa ca un interval prea permisiv poate produce confuzie intre | ||
| + | acestea. | ||
| + | |||
| + | De asemenea, am descoperit ca senzorul IR are un comportament cam imprevizibil in lumina solara puternica. | ||
| + | |||
| + | <note tip>Pentru o functionare optima, proiectul trebuie plasat intr-o camera cu lumina artificiala buna.</note> | ||
| ===== Concluzii ===== | ===== Concluzii ===== | ||
| + | Am reusit sa implementez numaratorul de bancnote, acesta recunoaste bancnote de 10, 20, si 50 euro. | ||
| + | Proiectul poate fi extins si pentru alte banconte dar acestea sunt cele pe care le aveam la dispozitie. | ||
| + | Pe viitor, ar putea fi imbunatatit prin adaugarea unui senzor optic | ||
| + | pentru a detecta si bancnote de tip RON. | ||
| + | Prin realizarea acestui proiect am invatat sa folosesc senzorii de culoare si proximitate, | ||
| + | sa tratez intreruperi si sa folosesc un ecran OLED cu protocolul I2C. | ||
| + | |||
| + | Experienta de a conecta toate piesele, asambla cutiile si a crea tot felul de improvizatii | ||
| + | a fost foarte faina. | ||
| ===== Download ===== | ===== Download ===== | ||
| Link Github: https://github.com/SilviaDragan/MoneyCounter-Arduino.git | Link Github: https://github.com/SilviaDragan/MoneyCounter-Arduino.git | ||
| Line 54: | Line 116: | ||
| * 20.04.2022: Ales tema | * 20.04.2022: Ales tema | ||
| - | * ==== 05.05.2022: Comanda piese ==== | + | * 05.05.2022: Comanda piese |
| * 08.05.2022: Completat pagina wiki | * 08.05.2022: Completat pagina wiki | ||
| * 20.05.2022: Circuit hardware | * 20.05.2022: Circuit hardware | ||
| * 26.05.2022: Program software | * 26.05.2022: Program software | ||
| * 27.05.2022: Pagina wiki | * 27.05.2022: Pagina wiki | ||
| - | * | + | * 30.05.2022: Adaugare buton si imbunatatire software |
| ===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
| **Resurse Software** | **Resurse Software** | ||
| + | |||
| + | * https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/ | ||
| + | * https://create.arduino.cc/projecthub/Raushancpr/arduino-with-ir-sensor-1579b6 | ||
| + | * https://create.arduino.cc/projecthub/SurtrTech/color-detection-using-tcs3200-230-84a663 | ||
| + | |||
| + | Pentru a scrie pe ecranul OLED am folosit librariile adafruit_SSD1306.h si adafruit_GFX.h | ||
| **Resurse Hardware** | **Resurse Hardware** | ||
| + | * https://www.youtube.com/watch?v=MwdANEcTiPY&ab_channel=DroneBotWorkshop | ||
| <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||