Skip to content
NFC smart cards and payment terminals in Nigeria
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
mifare
test pushing to open source Apr 2, 2014
.gitignore
README.md pushing to open source Apr 2, 2014
configs.h pushing to open source Apr 2, 2014
data.c
data.h pushing to open source Apr 2, 2014
delay.h
eventproc.c
eventproc.h pushing to open source Apr 2, 2014
general.h
interface.c
interface.h pushing to open source Apr 2, 2014
interrupts.c
interrupts.h pushing to open source Apr 2, 2014
keypad.c
keypad.h pushing to open source Apr 2, 2014
lcd.c
lcd.h
main.c
mifare.c pushing to open source Apr 2, 2014
mifare.h pushing to open source Apr 2, 2014
queue.c pushing to open source Apr 2, 2014
queue.h pushing to open source Apr 2, 2014
serial.c pushing to open source Apr 2, 2014
serial.h pushing to open source Apr 2, 2014
sim5218.c pushing to open source Apr 2, 2014
sim5218.h
smartcard.c pushing to open source Apr 2, 2014
smartcard.h pushing to open source Apr 2, 2014

README.md

EasyPay

About EasyPay

Author Nnoduka Eruchalu
Date 05/16/2013
Website strivinglink.com/easypay/

EasyPay takes the pain out of paying for utilities and parking in Nigeria with customized hardware and secure NFC smartcards.

In summary, EasyPay will change the lives of Nigerians. To learn more about it visit the website

This repo contains the code running the hardware's embedded system.

Software Technologies

  • C
  • Microcontrollers (MCUs)
  • NFC (MIFARE)

Software Modules Description

Module Description
data Functions for communications between MCU and the HTTP Server
delay Functions for implementing timed delays in the MCU
eventproc Functions for handling actions defined in interface's FSM
interface System's Finite State Machine (FSM) tables and LCD display contents for various UI states
interrupts Functions for initializing MCU interrupts
keypad Functions for interfacing the MCU with a 4x4 matrix keypad
lcd Functions for interfacing the MCU with a 20x4 character LCD
main Main loop of embedded system
mifare.c Functions for initializing communications with a MIFARE DESFire smartcard
mifare/ Functions for full implementation of MIFARE DESFire communication protocols.
queue Functions for implementing a circular FIFO array with one empty slot
serial Functions for interfacing with the MCU's USART module
sim5218 Functions for interfacing with the 3G Module [Sim5218A]
smartcard Functions for Detecting and initializing communications with a SmartCard
test/ E2E test framework for all modules

User Interface

Keypad:

+---------------------------+
| 1       2       3       A |
|                           |
| 4       5       6       B |
|                           |
| 7       8       9       C |
|                           |
| *       0       #       D |
+---------------------------+

Display:

Welcome Screen:
+--------------------+
|-Welcome to EasyPay-|
|                    |
| Tap Card to Start  |
|                    |
+--------------------+
On Card Tap --> Enter Pin Screen:
+--------------------+           +--------------------+ 
|-    Enter Pin     -|           |-    Enter Pin     -|
|        _           |  <0..9>   |        ****        |
|*Exit*           → C|   ==>     |*Undo*           → C|
|*Done*           → D|           |*Done*           → D| 
+--------------------+           +--------------------+
On Correct Pin --> Home Screen:

Press buttons indicated on right to navigate

+--------------------+ 
|EasyAccount      → A|
|Parking          → B|
|Mobile Recharge  → C|
|Utility Bills    → D|
+--------------------+
EasyAccount Screen:
+--------------------+ 
|-   EasyAccount    -|
|Balance: N50,000.00 |
|Recharge         → C|
|*Exit*           → D|
+--------------------+
Parking Screen:
+--------------------+           +--------------------+ 
|- Pay for Parking  -|           |- Pay for Parking  -|
|Enter Space: 010_   |    <D>    |Enter Time: 0:30_   |
|                    |    ==>    |                    |
|*Done*           → D|           |*Done*           → D|
+--------------------+           +--------------------+ 
Mobile Recharge:
+--------------------+           +--------------------+ 
|- Mobile Recharge  -|           |*Back*           → A|
|MTN              → B|    <D>    |Airtel           → B|
|GLO              → C|    ==>    |Etisalat         → C|
|*More*           → D|           |*Exit*           → D|
+--------------------+           +--------------------+ 
Utility Bills:
+--------------------+           +--------------------+   
|-  Utility Bills   -|           |- Utility: Power   -|
|Power            → B|    <B>    |Amount: N10,000.00_ | 
|Water            → C|    ==>    |                    | 
|*Exit*           → D|           |*Done*           → D|
+--------------------+           +--------------------+

Smart Card Procedures:

Tap card/Enter Pin on welcome, to save smartcard info locally. After each transaction, tap card again to confirm. Reason for this is to ensure it's same user and to sync card info with smart

Demo

Click on the video below to see a demo of the prototype module in action:

Demo Video

Todo:

  • Perform tests on PIC8.
  • Finish full MIFARE Hardware tests. Need to migrate to an AVR32UC for this.

Resources:

mifare/ module based on the following sources:

You can’t perform that action at this time.