Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2021:amocanu:terminal-plata-card [2021/04/24 19:13]
andrei.lazarescu00
pm:prj2021:amocanu:terminal-plata-card [2021/06/03 07:35] (current)
andrei.lazarescu00 [Rezultate Obținute]
Line 1: Line 1:
 ====== Terminal plata cu cardul ====== ====== Terminal plata cu cardul ======
 +Autor: Lazarescu Andrei
 +
 +Grupa: 335CC
 ===== Introducere ===== ===== Introducere =====
 Acest proiect implementeaza un terminal de plata cu cardul. Scopul acestuia este sa imite un POS gasit in magazine. Acest proiect implementeaza un terminal de plata cu cardul. Scopul acestuia este sa imite un POS gasit in magazine.
Line 9: Line 12:
  
 Diagrama bloc: Diagrama bloc:
-{{ :​pm:​prj2021:​amocanu:​diagrama_bloc_pos.png?300 |}}+{{ :​pm:​prj2021:​amocanu:​untitled_diagram.jpg?300 |}}
  
 ===== Hardware Design ===== ===== Hardware Design =====
 Lista de piese: Lista de piese:
-  * Arduino UNO (sau ESP32) +  * Arduino UNO 
-  * Adaptor Ethernet ​(nu este necesar in cazul folosirii unui ESP32)+  * Raspberry Pi (Folosit doar ca un adaptor ethernet)
   * LCD caractere   * LCD caractere
   * Numpad   * Numpad
-  * Reader NFC+  * Reader NFC (RFID-RC522)
   * Carduri NFC   * Carduri NFC
   * Alimentator   * Alimentator
 +
 +Arduino-ul comunica cu display-ul si cu raspberry pi-ul prin I2C, iar cu cititorul de carduri prin SPI. Raspberry pi-ul opereaza in modul slave.
 +Numpd-ul este conectat la pinii 2-7 si A0, A1. Acesta functioneaza multiplexand randurile si coloanele, astfel fiind posibil sa interactionam cu 16 butoane, utilizand numai 8 pini (conectati intr-o matrice de 4x4)
 +
 +==== Schema electrica ====
 +
 +{{chema_electrica_pos.png?​800|}}
 +
 +
 +===== Software Design =====
 +  * Tot codul pentru placa Arduino se află în fișierul Proiect_PM.ino,​ iar programul pentru raspberry pi in fisierul rpi.py
 +  * Codul Arduino este facut sub forma unui FSM. Acesta memoreaza in ce stadiu este actual si interactioneaza cu fiecare device cand si cum este necesar.
 +  * Codul de pe raspberry pi initializeaza device-ul ca un I2C slave pe adresa 0x13, apoi, la fiecare write, seteaza o variabila in memorie. Cand se trimit octetii 3, apoi 1, computer-ul face toate request-urile necesare la server
 +  * Stagiile programului arduino:
 +    - starting: Aici se initializeaza Arduino-ul;
 +    - write_iban: Afiseaza pe LCD UID-ul cardului apropiat. Acesta este un mod de debug, care nu e folosit in modul normal de operare;
 +    - select_iban:​ Aici se selecteaza destinatarul platilor
 +    - enter_amount:​ Aici se introduce suma tranzactiei
 +    - show_transaction:​ Aceasta stare doar afiseaza pe ecran detaliile tranzactiei
 +    - read_card: Aici se interactioneaza cu cititorul de carduri pentru a citi cardul
 +    - process_transaction:​ In aceasta stare se transmitplacii raspberry pi detaliile tranzactiei,​ iar aceasta face requesturile necesare la server
 +    - transaction_succesful:​ Acesta afiseaza un mesaj ca tranzactia a reusit si reinitializeaza variabilele la starea initiala.
 +
 +===== Rezultate Obținute =====
 +{{ :​pm:​prj2021:​amocanu:​pos_demo.jpg?​600 |}}
 +
 +==== Video ====
 +[[https://​youtu.be/​VbQcgUl0bH8 | Demo Video]]
 +
 +===== Concluzii =====
 +  * Am avut niste probleme cu modulul care citeste carduri, dar am reusit sa gasesc workarounds
 +  * Sunt fericit cu rezultatul final, dar as fi vrut sa am mai mult timp pentru a implementa niste functionalitati in plus
 +  * Am invatat o tona de lucruri noi, mai ales despre modul in care functioneaza modulele nfc
 +
 +===== Bibliografie/​Resurse =====
 +[[http://​abyz.me.uk/​rpi/​pigpio/​python.html#​bsc_i2c | I2C Slave Raspberry pi]]\\
 +[[https://​www.arduino.cc/​reference/​en/​libraries/​mfrc522/​ | Documentatie librarie NFC]]\\
 +[[https://​www.arduino.cc/​reference/​en/​libraries/​liquidcrystal-i2c/​ | Documentatie librarie Display]]\\
 +[[https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​amocanu/​terminal-plata-card | Terminal plata cu cardul]]\\
 +[[https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​amocanu/​terminal-plata-card?​do=export_pdf | Document PDF]]
 +
 +<note important>​{{:​pm:​prj2021:​amocanu:​terminal-plata-card.zip|Codul pentru Arduino + Raspberry Pi}}</​note>​
 +
 +
 +
 +
pm/prj2021/amocanu/terminal-plata-card.1619280781.txt.gz · Last modified: 2021/04/24 19:13 by andrei.lazarescu00
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