Note
The NFC/RFID Bricklet is discontinued and is no longer sold. The NFC Bricklet is the recommended replacement.
The NFC/ RFID Bricklet can be used to extend Bricks by the possibility to read and write NFC/RFID tags. To do this you only have to place a NFC or RFID tag in the proximity (up to 10cm) of the Bricklet.
Currently we support Mifare Classic as well as NFC Forum Type 1 and 2 tags.
Capability for tag emulation as well as NFC P2P communication may be added in the future firmware updates.
Property | Value |
---|---|
NFC IC | PN532 |
Current Consumption | 115mA |
Supported tags | Mifare Classic, NFC Forum Type 1, NFC Forum Type 2 |
Operating Frequency | 13.56 MHz |
Dimensions (W x D x H) | 50 x 85 x 5mm (1.97 x 3.35 x 0.2") |
Weight | 15g |
The Bricklet should work with every tag that is either compatible to Mifare Classic, NFC Forum Type 1 or NFC Forum Type 2. We explicitly tested the Bricklet with the following tags:
Mifare Classic:
NFC Forum Type 1:
NFC Forum Type 2:
Every smart phone that is capable of NFC can read NFC Forum Type 1 and 2 tags.
Mifare Classic and NFC Forum Type 1 as well as NFC Forum Type 2 have different page sizes and a different memory structure. You have to keep track of this structure to not accidentally lock a tag.
Mifare Classic:
Adafruit has a quite good description of the structure: Link
NFC Forum Type 1:
NFC Forum Type 2:
To identify and select a tag you have to call RequestTagID with a tag type (Mifare Classic or NFC Forum Type 1/2). The state of the Bricklet will change to STATE_REQUEST_TAG_ID and then change to STATE_REQUEST_TAG_ID_READY if a tag was found. You can then get the tag ID by calling GetTagID. Now the tag with this tag ID is selected and it can be read or written. If the state changes to STATE_REQUEST_TAG_ID_ERROR no tag with the given tag type was found. In this case you can try again by calling RequestTagID again.
If you know the tag ID of your tag and GetTagID returns another tag ID it means that another tag is also in the proximity of the reader. In this case you can call RequestTagID again, the NFC/RFID Bricklet will cycle through up to two tags if RequestTagID is called repeatedly. Therefore RequestTagID select Tags.
If a tag is selected (i.e. the state is STATE_REQUEST_TAG_ID_READY) you can read or write the tag page by page:
To read a page you have to first call RequestPage. The state will change to STATE_REQUEST_PAGE_READY after which you can get the page by calling GetPage. Writing can be done by calling WritePage, the writing is finished after the state changes to STATE_WRITE_PAGE_READY.
If a tag is selected you can read and write without calling RequestTagID again as long as the tag isn't removed from the proximity of the NFC/RFID Bricklet.
Special Case for Mifare Classic
In case of Mifare Classic you have to authenticate a page before you can read or write it:
This means that every time before you call RequestPage or WritePage, you have to call AuthenticatingMifareClassicPage and wait for the state to change to STATE_AUTHENTICATING_MIFARE_CLASSIC_PAGE_READY. Otherwise Mifare Classic tags can be handled exactly as described above.
The default key (key number A) of a Mifare Classic tag is [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF].
The NFC Forum has specified the NFC Data Exchange Format (NDEF) to transfer messages from NFC tags to smart phones. NDEF Messages consist of one or more NDEF Records. Many of the predefined NDEF Records can be understood by any smart phone that is capable of NFC communication.
We implemented an example program that can write Text, URI and Mime Media Type Records to NFC Forum Type 1 and 2 tags.
The example is implemented in Python, but it can easily be used as a starting point if you want to write NDEF Messages with any programming language.
To test a NFC/RFID Bricklet you need to have Brick Daemon and Brick Viewer installed. Brick Daemon acts as a proxy between the USB interface of the Bricks and the API bindings. Brick Viewer connects to Brick Daemon. It helps to figure out basic information about the connected Bricks and Bricklets and allows to test them.
Connect the NFC/RFID Bricklet to a Brick with a Bricklet Cable.
If you connect the Brick to the PC over USB, you should see a new tab named "NFC/RFID Bricklet" in the Brick Viewer after a moment. Select this tab.
If everything went as expected you can now scan for tags and read/write pages.
After this test you can go on with writing your own application. See the Programming Interface section for the API of the NFC/RFID Bricklet and examples in different programming languages.
A laser-cut case for the NFC/RFID Bricklet was available, but is not sold any longer.
The assembly is easiest if you follow the following steps:
Below you can see an exploded assembly drawing of the NFC/RFID Bricklet case:
Hint: There is a protective film on both sides of the plates, you have to remove it before assembly.
See Programming Interface for a detailed description.
Language | API | Examples | Installation |
---|---|---|---|
C/C++ | API | Examples | Installation |
C# | API | Examples | Installation |
Delphi/Lazarus | API | Examples | Installation |
Go | API | Examples | Installation |
Java | API | Examples | Installation |
JavaScript | API | Examples | Installation |
LabVIEW | API | Examples | Installation |
Mathematica | API | Examples | Installation |
MATLAB/Octave | API | Examples | Installation |
MQTT | API | Examples | Installation |
openHAB | API | Examples | Installation |
Perl | API | Examples | Installation |
PHP | API | Examples | Installation |
Python | API | Examples | Installation |
Ruby | API | Examples | Installation |
Rust | API | Examples | Installation |
Shell | API | Examples | Installation |
Visual Basic .NET | API | Examples | Installation |
TCP/IP | API | ||
Modbus | API |