Terminal plata cu cardul

Autor: Lazarescu Andrei

Grupa: 335CC

Introducere

Acest proiect implementeaza un terminal de plata cu cardul. Scopul acestuia este sa imite un POS gasit in magazine. Acesta va citi numarul unui card, iar dupa confirmarea pin-ului de catre utilizator, va trimite la server catre validare cardul + suma.

Descriere generală

Senzorii de temperatura si umiditate vor citi incontinuu si vor trimite datele catre placa de baza. Datele vor fi afisate pe ecranul LCD si vor fi prelucrate. In functie de valorile date de senzor, se decide daca se va porni sau nu ventilatorul cu ajutorul modulului releu. De asemenea, modulul de alimentare ne va permite sa folosim statia de monitorizare fara ca aceasta sa fie conectata la calculator.

Programul arduino functioneaza ca un Finite State Machine (FSM), cu stari pentru: pre citire, introducere suna tranzactie, scanare card, introducere pin, tranzactie reusita, tranzactie esuata.

Diagrama bloc:

Hardware Design

Lista de piese:

  • Arduino UNO
  • Raspberry Pi (Folosit doar ca un adaptor ethernet)
  • LCD caractere
  • Numpad
  • Reader NFC (RFID-RC522)
  • Carduri NFC
  • 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 4×4)

Schema electrica

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:
    1. starting: Aici se initializeaza Arduino-ul;
    2. write_iban: Afiseaza pe LCD UID-ul cardului apropiat. Acesta este un mod de debug, care nu e folosit in modul normal de operare;
    3. select_iban: Aici se selecteaza destinatarul platilor
    4. enter_amount: Aici se introduce suma tranzactiei
    5. show_transaction: Aceasta stare doar afiseaza pe ecran detaliile tranzactiei
    6. read_card: Aici se interactioneaza cu cititorul de carduri pentru a citi cardul
    7. process_transaction: In aceasta stare se transmitplacii raspberry pi detaliile tranzactiei, iar aceasta face requesturile necesare la server
    8. transaction_succesful: Acesta afiseaza un mesaj ca tranzactia a reusit si reinitializeaza variabilele la starea initiala.

Rezultate Obținute

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

pm/prj2021/amocanu/terminal-plata-card.txt · Last modified: 2021/06/03 07:35 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