Coin Counter

Introducere

Proiectul presupune implementarea unui model de statie de incarcare electrica ce ar putea fi folosit de orice benzinarie ce dorește sa ofere clientilor o sursa de incarcare electrica eco (se vor folosi panouri solare pentru furnizarea curentului). Clientul isi va parca masina electrica pe locurile destinate incarcarii. Dupa aceea, el este nevoit sa isi valideze cardul(RFID). Daca validarea este aprobata, acesta trebuie sa introduca in aparat taxa stationarii(setata la 2 lei) in monede de 5, 10 sau 50 de bani. Dupa introducerea taxei, clientul isi va putea incarca masina pentru un anumit interval(setat in scop didactic la cateva secunde) iar dupa expirarea timpul se va afisa pe LCD un mesaj relevant.

Descriere generală

Proiectul este format din doua secțiuni principale: validare date(card RFID) si coin counter/sorter . Prima etapă presupune validarea cardului. În acest caz, se va folosi un cititor de carduri(RFID) și se va confirma daca acel card este valid. Validitatea presupune un anumit număr de card. Ulterior, pe un ecran(LCD) se vor afișa mesaje în ambele cazuri: “card valid” și “card invalid”. După aceasta, clientul trebuie să introducă în monede de 5, 10 sau 50 de bani taxa parcarii (fixată in cod, 2 lei sau variabil). Monedele se introduc în partea laterala a aparatului printr-o fantă comună. Acestea sunt însă sortate separat, implicand un prototip realizat din carton. Prototipul presupune realizarea unei rampe cu trei spații decupate (pentru fiecare tip de monedă), așezate în ordine crescătoare pentru a avea posibilitatea de sortare (evitarea intrării unei monede de 50 de bani de exemplu in spațiul destinat celor de 10 bani). Toate monedele cad in niște recipiente separate. Realizarea hardware a coin counter-ului prespune existența a trei senzori IR plasați în proximitatea fiecărui recipient. Atunci cand se detectează o mișcare în recipientul respectiv, acest senzor o va detecta și voi putea folosi acest lucru în cod. În cod, se primesc output-urile venite de la fiecare senzor și cu ajutorul unor formule matematice, se determină dacă utilizatorul a introdus sau nu suma cerută. Acest lucru este exemplificat si pe LCD, clientul avand posibilitatea sa vadă in timp real pe ecran cate monede a introdus și tipul acestora (mesaj de forma “m5:x m10:y m50:z). După primirea sumei, aparatul va scrie pe ecran “Incarcare permisa” si va putea ridica pompa de incarcare. Dupa cateva secunde(interval mic de timp, setat in scop didactic), pe ecran se va afisa un mesaj ce-i va spune clientului ca incarcarea s-a terminat, generarea energiei electrice din pompa va fi dezactivata automat.

Observații:

  • Proiectul implică și o parte de “lucru manual”(realizarea aparatului și a pieselor componente din carton) și partea hardware(piese electronice)
Schemă bloc

Hardware Design

Listă piese:

  • Arduino Uno x 1
  • Senzori IR obstacole x 3
  • Ecran LCD(16×2) cu modul I2C x 1
  • Modul RFID + card/tag x 1
  • Breadbord x 1
  • Fire de legatura -

Observații: Am pus poze separate cu montarea modulului RFID intrucat pe Tinkercad nu exista acest modul iar in Fritzing (in care am conectat RFID-ul) nu existau cei trei senzori ca sa pot face schema completa doar dintr-o poza.

Schemă Tinkercad

Schemă Electrica

Software Design

Pentru dezvoltarea partii software am folosit Arduino IDE. Bibliotecile integrate in cod au un rol pentru doua componente si anume: LCD cu modul I2C integrat si modul RFID.

Pentru LCD:

  • #include <Wire.h>
  • #include <LiquidCrystal_I2C.h>

Pentru RFID:

  • #include <SPI.h>
  • #include <RFID.h>

Codul este structurat in parti logice.

Prima parte: In functia setup() se fac initializarile pentru modulele RFID si LCD. Se afiseaza pe ecran mesajele de inceput (primul “Bine ati venit!/n ECO POWER” + niste emoticoane desenate de mine la nivel de pixel, al doilea la cateva secunde “Apropiati /n CARDUL”). Pentru desenarea emoticoanelor m-am folosit de faptul ca un “dreptunghi” din cele 16*2 ale LCD-ului este reprezentat de fapt ca o matrice de dimensiune 8*5 (cu valori de 1/0, vizual este o matrice, in cod este un vector de Byte). Mi-am ales doua modele, o inima si o masina, realizarea lor constand in plasarea valorilor de 1 de-a lungul formelor.

A doua parte: A doua parte logica va consta in identificarea cardului. In functia loop() voi face aceasta verificare. In primul rand trebuie sa ne asiguram ca se poate realiza o conexiune cu acel card(functia isCard()). Dupa acest pas, se testeaza daca se poate citi codul serial al cardului (format din 4 numere). Daca da, atunci se extrag aceste valori si se compara cu cele de referinta setate de noi. Pentru exemplicare, kit-ul ce continea modulul RFID a venit atat cu un card, cat si cu un tag. Am decis sa folosesc doar cardul. Prin urmare, daca apropiem cardul, pe ecran se va afisa un mesaj de aprobare plus taxa parcarii (“card ACCEPTAT /n PARCARE: 2 lei”). Pentru tag, accesul va fi refuzat, afisandu-se “Card INVALID!”.

A treia parte: A treia parte logica presupune implementarea software a coin counter-ului. Se citesc valorile transmise de catre senzorii IR, output HIGH (de pe pinii A0, A1, A2) timp in care LCD-ul va afisa pe doua randuri statusul introducerii monedelor: “M50 M10 M5 /n x y z”), unde x, y, z sunt numere intregi. Codul este gandit astfel incat sa se evite numararea multipla (accidentala) a aceleiasi monede (in variabilele c1, c2, c3 voi tine evidenta monedelor 5, 10, 50 de bani iar flag-urile f1, f2, f3 sunt pentru a evita ceea ce am precizat anterior). Clientul trebuie sa introduca monede in ce varianta doreste pana se implineste suma de 2 lei (stocata intr-o variabila sum ce se va incrementa cu valorile introduse respectiv 0.05, 0.1 sau 0.5). Am pus conditia ca suma sa fie >= 2 intrucat exista posibilitatea ca persoana respectiva sa aiba la un moment dat introdusa valoarea 1.7 lei de exemplu si sa mai aiba doar o moneda de 50 de bani, suma de 2 lei fiind depasita (dat fiind faptul ca aparatul nu da rest).

A patra parte: Dupa ce suma dorita a fost introdusa, pe ecran se va afisa “Incarcare activa”, timp in care clientul poate incepe incarcarea masinii. Dupa un timp (un delay stabilit la 6000 de milisecunde, didactic), procesul de incarcare se va termina pe ecran afisandu-se “Timp exprirat /n Va multumim”.

Rezultate Obţinute

In aceasta sectiune voi afisa cateva poze din cadrul realizarii proiectului.

Concluzii

Mi s-a parut un proiect destul de interesant mai ales ca a fost practic. Nu am intampinat dificultati cu exceptia “fabricarii” rampei pentru monede. Am stat foarte mult pe acest element intrucat erau multi factori care trebuiau luati in considerare la fabricarea ei: masuratori exacte pentru monede (daca greaseam diametrul exista posibilitatea ca unele monede sa alunece in spatiul nedestinat lor), inclinatia rampei, materialul folosit (cu un anumit tip de carton monedele se “agatau”), viteza cu care aluneca monedele.

Download

Jurnal

[20.04.2022]

  • alegere tema

[8.05.2022]

  • comanda piese

[11.05.2022]

  • creare pagina wiki

[26.05.2022]

  • adaugare schema electrica

[31.05.2022]

  • terminare proiect

Bibliografie/Resurse

pm/prj2022/sgherman/coin-counter.txt · Last modified: 2022/05/31 21:10 by bianca.baceanu
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