MONEY COUNTER

331CB Silvia Dragan

Introducere

Proiectul ales de mine reprezinta un numarator de bancnote. Aparate complexe ce numara bani exista (in banci si alte locuri) si mi s-a parut interesant faptul ca acel aparat poate recunoate tipul de bancnota inserat. Aparatul este util deoarece automatizeaza o activitate costisitoare din punct de vedere al timpului atunci cand este facuta manual, si elimina riscul de a numara gresit din neatentie, asa ca am ales sa implementez si eu propriul meu numarator de bani.

Descriere generală

Numaratorul de bani va fi o cutie improvizata de mine ce va avea atasati doi senzori: sezorul IR pentru a detecta prezenta unei bancnote, si un senzor de culoare pentru a recunoaste tipul bancnotei. Utilicatorul va apasa un buton pentru a reseta numaratorul, iar suma totala va fi afisata si actualizata constant pe un ecran OLED.

Hardware Design

Lista componente:

  • Arduino UNO
  • Display OLED 128×32 - I2C
  • Senzor culoare TCS3200
  • Senzor IR
  • Buton
  • breadboard & cabluri de legatura

Schema bloc:

Nota: nu am gasit piesele exacte in tinkercad, am folosit piese asemanatoare

Software Design

Pentru dezvoltare am folosit IDE-ul Arduino si bibliotecile:

  • <SPI.h>
  • <Wire.h>
  • <Adafruit_GFX.h>
  • <Adafruit_SSD1306.h>

Functiile implementate sunt:

  1. setup() - setare pini
  2. loop() - apel celelalte functii
  3. checkProximitySensor() - preia valoarea citita de senzorul de proximitate
  4. writeOnDisplayStart() - scrie pe display textul de inceput
  5. readColorsFromSensor() - detecteaza valorile frecventelor culorilor RGB ale obiectului scanat
  6. detectBill() - determina valoarea bancnotei in functie de culoarea sa
  7. printColors() - afiseara pe serial monitor valorile frecventelor RGB detectate de senzor. folosit pentru debug si incadrare bancnote in intervale de culori.
  8. reset() - reseteaza procesul de numarare
  9. 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

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.

Pentru o functionare optima, proiectul trebuie plasat intr-o camera cu lumina artificiala buna.

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

Jurnal

  • 20.04.2022: Ales tema
  • 05.05.2022: Comanda piese
  • 08.05.2022: Completat pagina wiki
  • 20.05.2022: Circuit hardware
  • 26.05.2022: Program software
  • 27.05.2022: Pagina wiki
  • 30.05.2022: Adaugare buton si imbunatatire software

Bibliografie/Resurse

pm/prj2022/agmocanu/money_counter.txt · Last modified: 2022/06/02 15:28 by silvia.dragan
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