The hardware we chose to build a NFC coffeemaker payment system.
The first step to build a payment system for a coffeemaker is to choose adequate hardware components. We decided to build our system upon an IoT-device, which makes it easily to connect to the internet and other services.
The ESP8266 chip from Espressif is a great microcontroller for building IoT devices. There are several manufacturer and distributer which offer development boards for the ESP8266 platform. The one we first chose was the ESP8266-Thing from Sparkfun.
- All module pins broken out
- On-board FTDI USB-to-Serial
- 802.11 b/g/n
- Wi-Fi Direct (P2P), soft-AP
- Integrated TCP/IP protocol stack
- Integrated TR switch, balun, LNA, power amplifier and matching network
- Integrated PLLs, regulators, DCXO and power management units
- Integrated low power 32-bit CPU could be used as application processor
- +19.5dBm output power in 802.11b mode
The ESP8266 Thing from Sparkfun is a great component. Unfortunately it only provides 512kB of flash which may be enough to hold all of the programm code, but it turned out that it is not enough to support over-the-air-updates.
So we decided to use another famous IoT-Device, the NodeMCU which is an open source IoT platform. On one hand it provides a firmware and on the other hand it is also a reference hardware design for a IoT device based on Espressif’s ESP-chipset. By now there are two different board layouts of the NodeMCU-board on the market. Version 0.9 is obsolete, so we don’t have to deal with it. There are several labels and names for boards with the layout from version 1.0. The most common names are Amica (v2) and LoLin/WeMos (v3), for a detailed description of the differences, please have a look at this page. For our project a Amica NodeMCU is used.
We bought a version from AI-Thinker which has plenty of flash size (4MB), only costs half of the Sparkfun and also has some more features, e.g. a SPIFFS filesystem.
The next component is a NFC-reader. We wanted to support a wide variety of tags, so we decided to use a NFC-reader instead of a RFID reader. This decision enabled us to use many already existing cards and even smartphones, which are capable of operating in target mode. We chose a model from AptoFun, which is compatible with the well known Adafruit pn532-board. This makes it possible to use the same pn532-RFID-NFC library.
Another important component is a display. We use a small OLED, which has sufficient space to show important information and even some nice graphics, icons or progress bars.
The display has a resolution of 128x64 pixels and is about 0.96 inches. It supports the standard SSD 1306 controller, which makes it easy to controll it either through SPI or I2C.
Bluetooth Low Energy (BLE)
One optional component is a bluetooth low energy module. The original project uses a Android App to administrate the payment system. As our device is connected to the internet, we prefered to make the administration available over internet which makes BLE somehow obsolet. We used the following HC-05 BLE module.
To give the consumer some acoustic feedback, we integrated a piezo-buzzer, which makes it posible to emit some simple tone sequences.