While exploring the constant read function we noticed the message packet only includes some info about the read frequency, RSSI, and the tag EPC (Constant Read Example). In order to access all of the possible data banks on a tag we had to go through a completely separate avenue that reads only one tag at a time (Read All Bank Data Advanced Example).
My question is: Why are UID and Bank Data treated differently than the EPC? Has anybody else figured out how to obtain ALL of the possible tag data while in constant read mode?
We noticed StartReading() is included in continuous reading examples and seems to tell the reader to cycle through any tags in the vicinity. Without this, the reader gets stuck on reading only one tag regardless of how many are present.
I regret to say that we are generally familiar with the features outlined in our documentation. This is arguably limited knowledge on the entirety of the module and to further understand the issue you present here perhaps either you should contact JADAK support or it could be an Arduino code issue and you could have your code reviewed by the Arduino community.
The Arduino Library of the Nano is a subset of the capabilities of the “official” MercuryApi from Jadak. Not all would fit into the memory of Arduino-likes. The MercuryAPI will allow to read all the memory banks into a structure. Having studied both I think that I can add this functionality to the library. Need some time to figure it out, as I did for other options that are not part of the official Sparkfun library. Give me a week, also given the heat-wave currently hitting Europe.
I have added a function called readallbanks(). The M6E Nano performs a single read of all memory banks. This is then read by library and stored in a new structure. Example15 has been added to demonstrate the usage. The library and examples can be found on https://github.com/paulvha/ThingMagic/b … st2020.zip
This library is based on the original library but with some bug-fixes and extended with other special calls have been added (like reading the Nano internal temperature)
You will need to remove the current / original library from Sparkfun and replace with the zip file content.
example15 will only read one RFID tag at a time and works with timeout (not embedded / continuous reading as example1 does). Each loop it will obtain only one and store that data in the new structure. Each tag should have a unique EPC which is stored in the structure together with the data of the different banks of the tag with that EPC . I had tried to hold multiple tags in front of the antenna, but the reader always returned the data of a single EPC (sometimes multiple data entries, but still the same tag)
I had a look at the code and picture. This code will not work on a DUE as it uses SoftSerial (not supported by DUE) and even then different pins. Looking at the picture in the other post you use Serial1. I would advice to start with basics: disconnect as much as possible from the DUE that has nothing to do with RFID reading. Then use the standard example1 (but set the Nano for Serial1). One other aspect that can impact is the power consumption. In the code I see power set to 2000. Keep that to 500 for the test. The maximum current that can be taken from 5V on a DUE is 800mA and the Nano is very sensative to that.
If you read the Nano - datasheet it should be possible, but that requires a strong stable power supply as the current is drawn in spikes. According to the Sparkfun schematics the Nano will take 900mA /5V.
When just connected the Nano (no read/write power applied) the current is already 300mA and the supply is already down to 4.22V (instead of 5V). In my test I always use 500dBm maximum and even then it can fail often. Then I connect a separate Lipo battery to the the 3.7 - 5.5V connection points on the Nano board and it works stable. The lipo battery will not be charged on the board however and can be drawn empty fast. Best is to connect a strong power supply / battery directly to the 3.7 - 5.5V connection points on the Nano.
So is it possible to read the tag UID (or TID) in continuous read mode? I have read through the examples and underlying functions (parseResponse, startReading, etc.) and can’t figure out how to expand MSG to include the UID. Example 15 looks like a great way to also approach this, but from above it does not appear that it can be run continuous.
The end goal is to use the UID as the way to identify the different tags without having to randomize all of the tags and make them unique (I am going to modify the EPCs to make them the same for several tags because they will be put on similar items).
I have added as special function to the library where you can read in continuous mode one of the memory banks ( e.g. TID) next to the EPC and other metadata ( RSSI, frequency etc etc). I have included example16 to demonstrate how to make use of that new function and display the data as well as the EPC.
In the top of sketch there are a number of setting options (including communication port and region). MAKE SURE to read the comments around selecting the memory bank and the start & length in the top of the sketch!