Skip to content
UnrealCosmosPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

    # SNAPAY

RFID-based cashless payment system
by Akshit Chaudhary


Overview

Snapay is a self-contained RFID cashless payment system built on ESP32. All balance logic runs on the ESP32 using NVS (non-volatile storage). The dashboard is a plain HTML/JS frontend that communicates via MQTT over WebSocket through a HiveMQ cloud broker.


Architecture

RC522 Reader
    │
    ▼
ESP32 (brain — NVS balance storage, all logic)
    │
    ▼ MQTT over TLS (port 8883)
HiveMQ Cloud Broker
    ▲
    │ MQTT over WSS (port 8884)
Dashboard (browser — display + input only)

Hardware

Wiring

RC522 Pin ESP32 GPIO
SDA 5
SCK 18
MOSI 23
MISO 19
RST 22
GND GND
3.3V 3.3V
LED ESP32 GPIO
Red 12
Green 14

Always use a 220Ω–330Ω resistor in series with each LED.

Users

Token UID Name Account
Card C0:F5:A1:5F Akshit Chaudhary VPAY-0001
Tag 32:73:2E:06 Aviral Chaudhary VPAY-0002

Setup

1. Firmware

  1. Open firmware/ in VS Code with PlatformIO installed
  2. Edit firmware/src/config.h — fill in your WiFi SSID and password
  3. Flash to ESP32:
pio run --target upload
  1. Open Serial Monitor at 115200 baud to verify connection

2. Dashboard

No build step needed. Just open dashboard/index.html in any browser.

The dashboard connects to HiveMQ cloud automatically on load.


MQTT Topics

Topic Direction Payload
rfid/scan ESP32 → Dashboard {name, account, balance}
payment/success ESP32 → Dashboard {action, name, account, amount, balance}
payment/failure ESP32 → Dashboard {action, name, account, reason, balance}
wallet/update ESP32 → Dashboard {name, account, balance} or {from, to}
system/status ESP32 → Dashboard {status, ip}
wallet/deposit Dashboard → ESP32 {uid, amount}
wallet/withdraw Dashboard → ESP32 {uid, amount}
wallet/transfer Dashboard → ESP32 {amount}

Usage

Identify

Tap any card/tag in idle mode → dashboard shows name, account, balance

Deposit

  1. Tap card → card activates on dashboard
  2. Click Deposit → enter amount → Confirm
  3. Tap card again → balance updates

Withdraw

  1. Tap card → card activates
  2. Click Withdraw → enter amount → Confirm
  3. Tap card → balance deducted (or declined if insufficient)

Transfer

  1. Tap any card → card activates
  2. Click Transfer → enter amount → Confirm
  3. Tap sender card
  4. Tap receiver card → transfer executes

LED Behaviour

Event Green LED Red LED
Boot Both blink once Both blink once
Card identified (idle) 1x blink —
Deposit success 2x blink —
Withdraw success 2x blink —
Transfer waiting Slow pulse —
Transfer success 3x blink —
Insufficient funds — 3x blink
Unknown card — 5x rapid blink

Broker

HiveMQ Cloud (free tier)
MQTT port: 8883 · WebSocket port: 8884

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages