Introduction: Adafruit IO-enabled NFC/RFID Scanner

About: Philippine Science High School - Main Campus Class of 2018 Student Researcher/Hobbyist/Maker | Business - http://comicollectio.com | Inquiries - jio@comicollectio.com

This project can be used as an online logger for any type of collection you might have or if you lend people certain things of value to you. For this one specifically, I programmed it to be a boardgame logger for the boardgame club in my high school so that they can track if a certain game has been borrowed, what time was it borrowed, if it was returned and what time was it returned. All of this can be seen on a mobile phone so you can easily access the tracking system on your collection or equipment without even being there.

This instructables is just a base of this logger and further improvements and modifications can be done such as giving people their own RFID cards so you know who borrowed a certain boardgame during a particular duration of time, adding digital output capabilities in the form of a button in the Adafruit IO so you can wirelessly control if the scanner is on or not, and so on.

Step 1: Materials Needed

For components, you will need:

1. 1pc. Adafruit HUZZAH ESP8266 breakout (Purchase here: https://www.adafruit.com/product/2471)

2. 1pc. Adafruit PN532 NFC/RFID controller breakout board (Purchase here: https://www.adafruit.com/product/364)

3. Xpcs. 13.56 MHz NFC/RFID card (Purchase here: https://www.adafruit.com/product/359)

*Stickers are better for the project though. (Purchase here: https://www.adafruit.com/product/362) I only used the cards due to availability of materials during that time. Plus, the NFC/RFID controller includes a card with it so it'll be a lot more accessible to people.

*X - Depending on how many items you want to log and have its own unique tag.

3. 1pc. USB to TTL serial cable (Purchase here: https://www.adafruit.com/product/954)

4. 1pc. Solderless breadboard (Half the normal size will be enough)

*Can be procured from a electronics/maker store.

5. 1ft. of Wire (More than enough)

*Alternatively, you can use jumper wires which will make the build easier:

13 pcs. Male/Male jumper wires (Purchase here: https://www.adafruit.com/product/1956)

For tools, you will need:

1. 1pc. Wire cutter

2. 1pc. Wire stripper (No need if you're using jumper wires)

3. 1pc. Soldering Iron

4. 1ft. of Solder (More than enough)

*All of these tools could be procured from a hardware/electronics/maker store.

For software, you will need:

1. Arduino IDE (Download here: https://www.arduino.cc/en/Main/Software)

2. ESP8266 Arduino Board Driver:

Arduino > Preferences > "Additional Boards Manager URLs:" and add:

http://arduino.esp8266.com/package_esp8266com_inde...

Arduino > Tools > Board > Boards Manager > type in ESP8266 and install the board

3. PN532 Arduino Library (Download here: https://github.com/adafruit/Adafruit-PN532)

4. Adafruit IO Arduino Library (Download here: https://github.com/adafruit/Adafruit_IO_Arduino)

Step 2: Wiring Setup

Follow the wiring setups first for each module seen in their overviews:

1. PN532 NFC/RFID Controller breakout board overview -

https://learn.adafruit.com/adafruit-pn532-rfid-nfc...

What you should get out of this link:

=> This one involves soldering the header strips, wiring the level shifter and the board itself.

2. ESP8266 HUZZAH WIFI breakout overview -

https://learn.adafruit.com/adafruit-huzzah-esp8266...

What you should get out of this link:

=> This one just involves soldering the header strips on the board and properly connecting the USB to TTL serial cable on the board.

*Be sure to place them both on one breadboard. (More convenient wiring)

Step 3: Programming Setup

Follow the programming setups first for each module seen in their overviews:

1. PN532 NFC/RFID Controller breakout board overview -

https://learn.adafruit.com/adafruit-pn532-rfid-nfc..

What you should get out of this link:

=> Better instructions on how to download the PN532 library.

=> Understanding of UID that will be used to identify each card. (Not needed, but highly encouraged)

2. ESP8266 HUZZAH WIFI breakout overview -

https://learn.adafruit.com/adafruit-huzzah-esp826....

What you should get out of this link:

=> Better instructions on how to download the board driver.

=> Go through the blink test and the simple wifi connection test. (This is just to test if it's functional meaning you can skip it if you know your module is working already)

*The codes of the two tests (blink and basic connection) attached to this step as well for convenience.

3. Adafruit IO basics:

Feeds basics - https://learn.adafruit.com/adafruit-io-basics-fee...

Dashboard basics - https://learn.adafruit.com/adafruit-io-basics-dash...

Digital input - https://learn.adafruit.com/adafruit-io-basics-digi...

What you should get out of these links:

=> Make your own Adafruit IO account.

=> Learn how to access your own personal Adafruit IO username and key.

=> Stick with the Welcome Dashboard and Welcome Feed for now. (You can create your own and modify the code later on)

=> Be sure to make your dashboard and your feed public so the WiFi module can access it.

Step 4: Integrating Hardware and Software

For setting the Adafruit IO:

1. Go to your Welcome Dashboard.

2. Click create a new block in the upper right.

3. Add a text and a stream block.

4. Arrange these two depending on what you want your interface to look like.

*Clearer instructions found here: https://learn.adafruit.com/adafruit-io-basics-dash...

For wiring the PN532 NFC/RFID controller to the HUZZAH ESP8266 WIFI breakout:

1. For the important connections between the two -

PN532_SCK = GPIO16

PN532_MOSI = GPIO14

PN532_SS = GPIO12

PN532_MISO = GPIO13

GND = GND

3.3V = 3.3V

*The gif will serve as a guide on how I did my wiring as a whole.

2. For the programming -

Use the attached code in this step. (Tech_Boardgame)

Be sure to change the WIFI SSID, WIFI PASSWORD, IO USERNAME and IO KEY in the config.h.

Upload the sketch once (remember: the WIFI breakout needs to be in bootload mode before uploading) and bring up serial monitor.

Scan a card to reveal its UID and copy-paste this to the UID arrays found in the code. Repeat as many times as needed for each card added to your system.

*Bootload mode setup found in the overview: https://learn.adafruit.com/adafruit-huzzah-esp8266...

*Use serial monitor first in order to see if the code is integrated properly with the modules.

Once all of that is done, bring up your dashboard, scan a card and see it get logged!

Step 5: All Done!

If you followed all the steps correctly, you should have a working Adafruit IO-enabled NFC/RFID scanner. Keep in mind I did create this as a project for my technology elective and it was attuned to solving a problem for the newly-formed boardgame club. You can easily modify my code to suit your needs and collection. You can also add more features so be sure to read the overviews of each module, play around with the given examples in the libraries and test the other blocks in the Adafruit IO dashboard.

Thank you and see you guys in my next instructables!