Proiectul pe care îl dezvolt constă într-o pușculiță inteligentă, concepută pentru a oferi o metodă sigură și eficientă de gestionare a banilor fizici. Această inovație folosește tehnologie avansată pentru a monitoriza și a securiza bancnotele introduse de utilizatori. Funcționarea sa începe în momentul în care o bancnotă este introdusă în dispozitiv; un senzor de culoare analizează bancnota și determină valoarea acesteia. Suma detectată este imediat adăugată la totalul acumulat, afișat pe un ecran LCD vizibil.
După identificarea și înregistrarea valorii, bancnota este transferată automat într-o zonă internă de depozitare, securizată și protejată. În același timp, dispozitivul emite un semnal sonor prin intermediul unui buzzer si un semnal vizual prin aprinderea unui LED verde pentru a indica faptul că se poate proceda la introducerea unei noi bancnote, în timp ce pe ecranul LCD apare un mesaj sugestiv referitor la starea actuală a pușculiței.
Securitatea banilor depozitați este asigurată printr-un sistem de acces bazat pe introducerea unui cod PIN, stabilit anterior de utilizator. Pentru extragerea banilor, utilizatorul trebuie să introducă corect codul PIN, ceea ce va declanșa deschiderea compartimentului de depozitare. Acest acces este permis pentru o perioadă limitată de timp, după care sistemul se reînchide automat. În plus, utilizatorul are posibilitatea de a încerca deblocarea pușculiței de până la trei ori. Dacă codul PIN este introdus incorect de trei ori consecutiv, se activează un semnal de alarmă compus din emiterea unui sunet continuu de buzzer și aprinderea unui LED roșu si a celui verde, care indică blocarea temporară a accesului la fonduri.
În final, după un interval prestabilit de timp, buzzer-ul si LED-ul verde se vor activa din nou pentru a notifica utilizatorul că procesul de introducere a bancnotelor poate fi reluat, moment în care pe ecranul LCD suma introdusa anterior si se afișează un mesaj corespunzător. Această pușculiță inteligentă oferă o soluție modernă și sigură pentru economisirea și administrarea eficientă a banilor cash într-un mediu personal sau de afaceri.
In prezent, implementarea hardware a proiectului este aproape finalizata. Toate componentele necesare au fost conectate si sunt functionale, conform specificatiilor initiale(testate separat si impreuna).
Etape urmatoare: pentru a finaliza implementarea hardware, urmatorul pas este proiectarea carcasei (cutiei) seifului. Aceasta va avea rolul de a integra toate piesele hardware si de a le proteja, asigurand totodata un aspect estetic si practic pentru utilizator. Carcasa va fi proiectata astfel incat sa permita accesul ușor la tastatura si ecranul LCD, si sa ofere deschideri adecvate pentru inserarea bancnotelor si accesul la compartimentul de depozitare.
1. Placa de dezvoltare Arduino Uno
Rol: Este creierul proiectului, controland toate celelalte componente si gestionand logica de functionare a sistemului
Pini utilizati:
2. Senzor de culoare TCS34725
Rol: Detecteaza culorile bancnotelor introduse si trimite datele catre Arduino pentru a determina valoarea acestora
Pini utilizati:
3. LCD I2C (LiquidCrystal_I2C)
Rol: Afiseaza suma totala acumulata si alte mesaje de stare pentru utilizator
Pini utilizati:
4. Buzzer
Rol: Emite semnale sonore pentru a indica diferite actiuni si alarme, cum ar fi introducerea unei noi bancnote sau alarme de securitate
Pin utilizat:
5. LED-uri (Roșu si Verde)
Rol: Indicarea vizuala a starii sistemului. LED-ul roșu si verde se aprind in caz de alarma, iar doar LED-ul verde indica funcționarea corecta pentru introducerea bancnotelor
Pini utilizati:
6. Servo Motoare
Rol: Servo motoarele sunt utilizate pentru a misca bancnotele in zona de depozitare si pentru a permite accesul la bani dupa introducerea corecta a codului PIN
Pini utilizati:
7. Tastatura numerica 3×3
Rol: Permite utilizatorului sa introduca codul PIN pentru a accesa banii depozitati
Pini utilizati:
8. Butoane 6x6x6
Rol: Permite utilizatorului să inițieze procesul de introducere a bancnotelor și să reseteze sistemul pentru extragerea banilor după introducerea corectă a codului PIN
Pini utilizati:
Intregul ansamblu hardware
Detectarea culorii, afisarea sa pe display-ul LCD si aprinderea LED-ului corespunzator culorii
Introducerea PIN-ului folosind tastatura
Miscarea servomotoarelor(stiu ca nu se vede dintr-o poza, dar functioneaza)
Implementarea software a pușculiței este aproape completă și cuprinde toate funcționalitățile esențiale pentru gestionarea eficientă și sigură a banilor fizici:
1.Citirea culorilor bancnotelor și determinarea valorii acestora: Sistemul folosește senzorul de culoare TCS230 pentru a detecta frecvențele RGB și a identifica valoarea bancnotelor. Intervalele de frecvență au fost calibrate experimental pentru precizie.
2.Actualizarea și afișarea sumei totale pe ecranul LCD: După identificarea valorii bancnotei, suma totală este actualizată și afișată pe un ecran LCD I2C, care arată și mesaje de stare precum „Insert Bill” și „Please Wait”.
3.Utilizarea unui cod PIN pentru accesul la fonduri: Sistemul de acces bazat pe cod PIN permite utilizatorului să extragă banii doar după introducerea corectă a PIN-ului prin intermediul unei tastaturi numerice.
4.Activarea unui sistem de alarmă: Dacă PIN-ul este introdus greșit de trei ori consecutiv, se activează o alarmă sonoră și vizuală (LED-uri roșu și verde). După un timp, sistemul se resetează și permite reluarea introducerii bancnotelor.
5.Manipularea bancnotelor cu servomotoare: Servomotoarele transferă bancnotele în compartimentul de depozitare și permit accesul la fonduri după introducerea corectă a PIN-ului. Sistemul se reînchide automat după o perioadă de timp.
6.Reluarea introducerii bancnotelor după activarea alarmei: După activarea alarmei și expirarea perioadei de blocare, utilizatorul poate continua să introducă bancnote.
7.Verificarea prezenței bancnotelor: Sistemul verifică dacă senzorul detectează efectiv o bancnotă înainte de actualizarea sumei, prevenind erorile de detectare.
8.Continuarea introducerii bancnotelor după resetarea sumei: După accesarea fondurilor și resetarea sumei totale la zero, utilizatorul poate continua să introducă bancnote și să acumuleze economii.
1. Wire.h (Biblioteca I2C)
Rol: Biblioteca Wire.h este utilizată pentru comunicația I2C (Inter-Integrated Circuit)
Aceasta este necesară pentru a controla ecranul LCD cu interfață I2C. Biblioteca oferă funcții simplificate pentru inițializarea comunicației și transmiterea datelor pe magistrala I2C, facilitând interacțiunea cu ecranul LCD și alte componente compatibile I2C.
2. Servo.h (Biblioteca pentru controlul servomotoarelor)
Rol: Biblioteca Servo.h este utilizată pentru a controla servomotoarele
Aceasta permite mișcarea precisă a servomotoarelor pentru manipularea seifului și accesul la compartimentul de depozitare. Biblioteca oferă funcții ușor de utilizat pentru atașarea servomotoarelor la pini și pentru setarea unghiului acestora, ceea ce simplifică semnificativ implementarea controlului servomotoarelor.
3. LiquidCrystal_I2C.h (Biblioteca pentru ecranul LCD I2C)
Rol: Biblioteca LiquidCrystal_I2C.h este utilizată pentru a interacționa cu ecranul LCD cu interfață I2C
Aceasta oferă funcții pentru inițializarea ecranului, scrierea de text și gestionarea cursorului. Biblioteca simplifică gestionarea ecranului LCD, permițând afișarea facilă a sumei totale și a mesajelor pentru utilizator.
4. Keypad.h (Biblioteca pentru tastatura numerică)
Rol: Biblioteca Keypad.h este utilizată pentru a gestiona tastatura numerică
Aceasta oferă funcții pentru detectarea și citirea tastelor apăsate, facilitând introducerea codului PIN de către utilizator. Biblioteca permite maparea simplă a tastelor la pinii de intrare și gestionarea eficientă a interacțiunilor cu tastatura.
5. Adafruit_I2CDevice.h (Biblioteca pentru interfața I2C)
Rol: Biblioteca Adafruit_I2CDevice.h este utilizată pentru a facilita comunicația I2C cu diverse dispozitive
În special cu senzorul de culoare TCS230. Aceasta oferă funcții pentru inițializarea și gestionarea dispozitivelor I2C, simplificând interacțiunea cu senzorul de culoare și asigurând o comunicare fiabilă.
Proiectul meu se remarcă prin integrarea mai multor inovații. Identificarea și cuantificarea automată a bancnotelor este realizată printr-un senzor de culoare, care detectează și determină automat valoarea bancnotelor, eliminând necesitatea intervenției manuale. Securitatea prin cod PIN oferă un nivel de protecție similar cu sistemele bancare. După trei încercări greșite de acces, sistemul activează o alarmă constând într-un semnal sonor continuu și aprinderea LED-urilor roșu și verde. Automatizarea procesului de introducere și extragere a bancnotelor este realizată cu ajutorul servomotoarelor, care transportă bancnotele în compartimentul de depozitare și permit accesul după introducerea corectă a PIN-ului. Afișarea interactivă a informațiilor este realizată printr-un ecran LCD cu interfață I2C, care afișează suma totală acumulată și diverse mesaje pentru utilizator în timp real. Reluarea introducerii bancnotelor după activarea alarmei permite utilizatorului să continue folosirea pușculiței fără resetare manuală complexă, după expirarea perioadei de blocare post-alarmă. Calibrarea personalizată a senzorului de culoare asigură o identificare precisă a valorilor bancnotelor prin intervale experimentale specifice fiecărei bancnote.
1. Întreruperi și timer-e Utilizate pentru detectarea apăsării butoanelor și pentru gestionarea duratei de activare a servomotoarelor și resetarea alarmei.
2. Pulse Width Modulation (PWM) Folosite pentru controlul precis al servomotoarelor, asigurând mișcarea exactă a bancnotelor în compartimentul de depozitare.
3. Convertorul Analog-Digital (ADC) Utilizat pentru citirea frecvențelor RGB de la senzorul de culoare, determinând valoarea bancnotelor prin conversia semnalelor analogice în date digitale.
4. Protocolul I2C (Inter-Integrated Circuit) Folosit pentru comunicarea eficientă cu ecranul LCD, asigurând afișarea clară și în timp real a sumei totale și a mesajelor de stare.
Scheletul Proiectului
Proiectul este structurat în mai multe module care colaborează pentru a asigura funcționarea corectă și eficientă a proiectului. Aceste module includ citirea bancnotelor, actualizarea sumei, securitatea prin cod PIN, sistemul de alarmă și gestionarea servomotoarelor.
1. Declarația și inițializarea componentelor:
2. Configurarea componentelor in setup:
3. Loop-ul principal:
4. Funcții pentru gestionarea componentelor:
5. Verificarea si actualizarea sumei:
6. Securitate:
Interacțiunea Dintre Funcționalități
Citirea Bancnotelor:
Actualizarea Sumei:
Securitate prin Cod PIN:
Sistemul de Alarmă:
Gestionarea Servomotoarelor:
Validarea Funcționalităților
Citirea Bancnotelor:
Actualizarea Sumei:
Securitate prin Cod PIN:
Sistemul de Alarmă:
Gestionarea Servomotoarelor:
Calibrarea senzorului de culoare s-a realizat prin citirea frecvențelor RGB pentru fiecare bancnotă în diverse condiții și poziții pentru a obține citiri exacte și determinarea intervalelor specifice fiecărei valori. Aceste intervale au fost stabilite experimental, prin măsurători repetate și ajustări pentru a asigura acuratețea detectării.
1.Pentru butoane am implementat un debouncing software pentru butoane pentru a preveni activările multiple accidentale.
2.Pentru a obține valori precise și rapide de la senzorul de culoare, am realizat media a 10 citiri pentru stabilizarea valorilor. Acest lucru a fost implementat în funcțiile de citire a frecvențelor RGB. Timpul de așteptare a fost redus pentru a obține un răspuns mai rapid al sistemului, ajustând valorile delay() fără a afecta funcționalitatea, în special în codul de mișcare a servomotoarelor.
3.Gestionarea eficientă a servomotoarelor a fost realizată prin verificarea poziției înainte de mișcare și ajustarea incrementărilor, pentru a asigura precizia și a evita blocajele. În secțiunea de cod care gestionează PIN-ul, am simplificat verificarea acestuia pentru a asigura rapiditate și eficiență. Pentru stabilitatea sistemului, am optimizat utilizarea memoriei prin declarații globale și utilizarea eficientă a bibliotecilor în întregul proiect.
4.Calibrarea frecvențelor RGB a fost esențială pentru acuratețea detectării bancnotelor. Am realizat această calibrare prin ajustarea intervalelor pentru fiecare bancnotă specifică în funcția de verificare a tipului de bancnotă.
Am finalizat proiectul cu succes, integrand toate functionalitatile propuse la inceput pentru o pusculita inteligenta. Utilizarea senzorului de culoare pentru identificarea automata a valorii bancnotelor, combinata cu sistemul de securitate bazat pe cod PIN si alarma, ofera utilizatorilor o solutie eficienta pentru mentinerea economiilor. Interactiunea dintre modulele hardware si software, validate prin numeroase teste, confirma ca toate functionalitatile proiectate merg conform asteptarilor, rezultand intr-un proiect terminat cu succes.
A fost interesant sa lucrez la acest proiect, un proces destul de captivant si provocator, si diferit de alte proiecte anterioare. Mi-am folosit destul de mult imaginatia pentru a proiecta carcasa pusculitei si pentru modul in care am legat piesele (nu prea mi-au ajuns pinii de pe placuta). Mi s-a parut o experienta interesanta din care am invatat ceva nou si care mi-a consolidat cunostintele.
DEMO cu prezentarea tuturor functionalitatilor in arhiva:
https://ocw.cs.pub.ro/courses/_media/pm/lab/uno.jpg
https://www.hackster.io/SurtrTech/color-detection-using-tcs3200-230-84a663
https://www.hackster.io/camdelk/keypad-entry-lock-4d7a03
https://www.hackster.io/akshayjoseph666/servo-motor-interface-with-arduino-uno-9693ad