This shows you the differences between two versions of the page.
|
pm:prj2021:amocanu:terminal-plata-card [2021/06/02 14:24] andrei.lazarescu00 [Terminal plata cu cardul] |
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 | Autor: Lazarescu Andrei | ||
| + | |||
| Grupa: 335CC | Grupa: 335CC | ||
| ===== Introducere ===== | ===== Introducere ===== | ||
| Line 11: | 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 ===== | ||
| Line 19: | Line 20: | ||
| * 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> | ||
| + | |||
| + | |||
| + | |||
| + | |||