This post entry provides a detailed description of how an NFC DIN rail demo was developed so that you can leverage this knowledge to integrate NFC into your own system. This document has been structured as follows:
The NFC DIN rail demo shows how NFC can be used for handling complex device settings on a mobile touchscreen. It is based on the NTAG I2C plus solution and demonstrates how NFC is used for:
Industrial equipment such as circuit breakers, time relays, power units, sensors, etc typically come with limited user interfaces but with advanced settings and configurations. As NFC use becomes universal in smartphones and other handheld devices, these devices can be used as an external touchscreen interface enabling sophisticated interactions and configurability at a little cost.
The NFC DIN rail demo could represent industrial equipment in charge of controling a lighting system. As a simplification, here it controls only three light bulbs. This DIN module consists of a power switch (220 V), an NFC interface and an LCD screen. Additionally, a dedicated phone application has been developed to interact with the NFC DIN rail for enabling wireless parametrization, wireless diagnosis and wireless firmware update via NFC.
NFC can be used to save configuration settings so that equipment may be customized at any moment during its lifetime. Additionally, the energy harvesting feature, intrinsic to NFC, allow us to save product settings even if the device is unpowered (also called zero-power operation).
In this NFC DIN rail demo, the Android app let us set the light bulb status to ON, OFF or BLINKING and set the LCD language as well. After selecting the different settings on the screen, we tap the phones and the settings are saved into the module. The following video shows how this functionality works, also with the unit powered and unpowered.
NFC can be used to get instant readouts of device status, usage, statistics and diagnosis data without dismounting the casing and even after a breakdown situation.
In this NFC DIN rail demo, the Android app lets us retrieve the switching counter values (the number of times the light bulbs have been switched ON / OFF). The following video shows how reading NFC DIN rail product diagnosis only takes one tap.
Additionally, the Android app lets us reset the switching counter values with a phone tap.
With NFC, firmware upgrades can be done wirelessly, without cables, disks or other means of data transfer. It therefore, saves time since it is not necessary to dismount the device.
In this NFC DIN rail demo, the Android app lets us select the binary file to be flashed. This implementation is robust since you can retry as many times as needed, even if a failure occurs in the flashing operation. The following video shows how the NFC DIN rail firmware is updated to a firmware version introducing a faster light bulb blinking speed.
Dismounting the DIN module is quite straightforward, especially if you are familiar with DIN casing.
The NFC DIN rail module consists of three PCBs: the Transformer PCB, the switching PCB and the Explorer board with a flex antenna
The transformer PCB includes three electromechanical relays that directly control the light bulbs. It also includes a transformer which converts the 220V AC supply from a standard socket to 12V AC. This 12V AC supply is used to power the switching PCB.
The switching PCB converts the 12V AC to 12V and 3V DC voltage supply. The 12V DC voltage is used to control the electromechanical relays, which in turn switches the light bulbs ON/ OFF. On the other hand, the 3V DC output is used to supply the Explorer board.
The Explorer board and flex antenna are part of the NTAG I2C plus support package. The Explorer board comes with: 5 push buttons, a temperature sensor, an LPC11U24 MCU, JTAG interface, LCD and I2C connectors. The NTAG I2C plus comes embedded in the Class 6 Flex antenna
All the design files for the Explorer board as well as the Flex antennas can be found in NT3H2111/2211|NXP
Before going into the implementation details, we briefly describe the NTAG I2C plus product.
The NTAG I2C plus is a family of connected NFC tags that combine a memory, a passive NFC interface with a contact I2C interface. As such, it supports full bidirectional communication between an NFC-enabled device and the host system's microcontroller, making it an ideal solution for NFC implementations that interface with a wide range of electronic devices. Additional to this dual interface solution, it has more features:
More product details about NTAG I2C plus can be found at NT3H2111/2211|NXP and technical recorded videos are available in our training academy NFC Webinars|NXP.
The NTAG I2C plus EEPROM memory is used to store DIN module settings. The phone application is able to overwrite these bytes with the desired configuration. On power up, the MCU reads the saved settings and applies the corresponding configuration.
In this demo, one byte is used to configure each light bulb status ('0' - light bulb ON, '1' - light bulb OFF, '2' - light bulb BLINKS) and one byte used for the language configuration ( '0'- Deutsch, '1' -Babarian, '2' - Swiss, '3'- English, '4' - French). Using the Zero Power Config Android app tab, we define the desired settings. With a tap, the phone writes 4 bytes into the EEPROM memory (page addresses 0x34 - 0x35)
On power up, the NFC DIN module reads the EEPROM memory and:
Finally, the MCU updates the light bulbs switching counters by writing the EEPROM memory. Two bytes are used for the counters (page addresses 0x35-0x37)-
The product diagnosis provides two functionalities: read switching counters values and reset switching counters values. With a tap, the phone reads the EEPROM to retrieve the latest switching counter values.
Clicking on the Reset button and with a phone tap, we are actually overwriting the EEPROM by setting the switching counter values to '0'.
The NFC wireless firmware update capability in this demo leverages on two main aspects:
The MCU flash memory can be re-programed using these two methods:
The LPC11U24 flash memory is grouped in 8 sectors of 4 kB each. The flash memory should be reprogrammed at the sector level. Another critical requirement is that the implementation must allow multiple FW updates and protection against failed FW update processes. For this, the firmware consists of two applications residing in flash:
In this approach, the secondary bootloader application is not overwritten. Thanks to this, it supports multiple FW updates or you can re-try as many times as needed without breaking the system.
Regarding the NTAG I2C plus, it can be used as a bridge between NFC / I2C interfaces. The wireless firmware update consists of transferring the binary file to be flashed from one interface to the other. For transmission of large files, the NTAG I2C plus offers the pass-through mode, where the data is transferred using the 64 byte SRAM buffer. This buffer offers fast write access and unlimited write endurance as well as an easy handshake mechanism between the two interfaces. This buffer is mapped directly at the end of the Sector 0 of NTAG I2C plus (0x0F to 0xFF).
The data flow direction must be set with the TRANSFER_DIR session register. These pass-through direction settings avoid locking the memory access during the data transfer from one interface to the SRAM buffer. NTAG I2C plus introduces the FAST_READ command as FAST_WRITE command. With this new command, the whole SRAM can be written at once, which improves the total pass-through performance significantly. There is a dedicated application note detailing how to use the NTAG I2C plus for bidirectional communication http://www.nxp.com/documents/application_note/AN11579.pdf.
The wireless firmware update process goes as follows:
The MCU firmware was developed using our LPCXpresso platform, which provides a complete development environment for LPC MCU and LPC boards. If you import the source code, you will see 6 project folders.
And then, we include two end-user application examples:
This is the first application executed when the Explorer board is powered up. Then, this application decides the next step:
As soon as the binary file is selected from the app, and we tap the phone, we start the transmission. The process goes as follows:
When the entire file in transmitted, the flash operation status is shown on the LCD and the MCU is reset so that the new binary file flash takes effect.
If the right button was not pressed, the NTAG_I2C_Explorer_demo application is executed. The first step executed by the MCU is to read the stored EEPROM configuration and apply these settings accordingly.Then, using a dedicated NTAG I2C plus register, it checks whether an RF field is present:
These manual button configurations perform the following actions:
At any moment… if an RF field is detected, this loop is skipped and access to memory is locked for the I2C side since the user is configuring via the NFC interface
There is an Android project available which can be easily imported into Android Studio IDE. The app is developed so that it is supported by any phone running an Android version 4 and beyond. The source code is organized in such a way that you can clearly distinguish the different activities from the NTAG I2C API. In the NTAG I2C API, you will find functions for:
The Android phone application consists of a splash activity that leads us to a main activity with three tabs on the top side.
On 21 February 2017, a live session explaining the NFC DIN rail demo was recorded. You can watch the recording here:
I hope this entry has been useful. If you are interested in developing your own NFC solution, all the resources are available:
NTAG I2C plus Explorer kit
NTAG I2C plus Flex kit with additional antennas
Explorer board and Flex antenna HW design files
http://www.nxp.com/documents/software/SW3641.zip
http://www.nxp.com/documents/software/SW3639.zip
http://www.nxp.com/documents/software/SW3638.zip
NFC DIN module source code
http://nxp.com/assets/downloads/data/en/software/DINRailDemo_SourceCode.zip
NTAG I2C plus Explorer kit reference source code