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> | ||