Comments: Simultaneous RFID Tag Reader Hookup Guide

Pages

Comments 55 comments

  • When I run Example2_Read_EPC, following pop up:

    C:\Users\mchow\Documents\Arduino\libraries\SparkFun_Simultaneous_RFID_Tag_Reader_Library\src\SparkFun_UHF_RFID_Reader.cpp: In member function ‘uint8_t RFID::writeTagEPC(char*, uint8_t, uint16_t)’:

    C:\Users\mchow\Documents\Arduino\libraries\SparkFun_Simultaneous_RFID_Tag_Reader_Library\src\SparkFun_UHF_RFID_Reader.cpp:277:63: error: invalid conversion from ‘char’ to ‘uint8_t {aka unsigned char*}’ [-fpermissive]

    return (writeData(bank, address, newID, newIDLength, timeOut));

                                                               ^
    

    In file included from C:\Users\mchow\Documents\Arduino\libraries\SparkFun_Simultaneous_RFID_Tag_Reader_Library\src\SparkFun_UHF_RFID_Reader.cpp:42:0:

    C:\Users\mchow\Documents\Arduino\libraries\SparkFun_Simultaneous_RFID_Tag_Reader_Library\src\SparkFun_UHF_RFID_Reader.h:119:10: error: initializing argument 3 of ‘uint8_t RFID::writeData(uint8_t, uint32_t, uint8_t*, uint8_t, uint16_t)’ [-fpermissive]

    uint8_t writeData(uint8_t bank, uint32_t address, uint8_t *dataToRecord, uint8_t dataLengthToRecord, uint16_t timeOut = COMMAND_TIME_OUT);

          ^
    

    exit status 1 Error compiling for board Arduino/Genuino Uno.

    I had no idea what’s going wrong, the examples seem can’t compile

    • Hi, I’m getting the same error. Just bought the Sparkfun Simultaneous RFID Tag Reader and I’m using it with the Arduino Uno. I have downloaded the SparkFun_Simultaneous_RFID_Tag_Reader_Library and installed it, but none of the example sketches will compile. I’m getting the same error as above. Is there a solution to this?

    • Have you solved the problem? Because I just got the same error message trying to compile Example1_Constant Read

  • Hi guys, Can someone please share the wiring diagram for use it with Arduino Uno/Nano without using a RedBoard ?

    Cheers

  • Another quick question, can the modules read power be changed using setReadPower() whilst in a constant read mode?

  • Just a quick question regarding the arduino library, more specifically the RSSI value. I’m aware that the function getTagRSSI() returns an integer value rather than a floating point value, is this due to the read capabilities of the M6E-Nano? It would be great if the RSSI value could return a higher resolution decimal value.

  • I try M6E Nano using an external PCB antenna following to the guide. But I’m not getting much reading distance, so I want some advices. I can run the reader with 27dBm but it reads at most 1.5m…

    Just to confirm, when an external antenna is attached to the reader, does the Universal Reader Assistant recognize as a 2 antennas (onboard and external antenna) ? Does 2 checkboxes appear in “Read/Write Option” -> “Antennas” ?

    • The URA works with many different RFID modules - some of which have multiple antenna ports. The M6E has only one antenna port so URA can only control one antenna port.

      Please have a look at the antenna section of the tutorial. On the SparkFun shield there are two jumpers to select between the PCB antenna and the U.FL connector for an external antenna. Be sure you have moved the solder jumper to the U.FL pathway in order to use an external antenna.

      • Thank you for your answer.

        Be sure you have moved the solder jumper…

        Yes, you are absolutely right. I didn’t confirm documents well, sorry. The reader starts to read about 2.5~3m.

  • Hi Sparkfun support team, We can only read one tag by using your Read EPC library no matter how many tags in the reading range.We did same test by Thingmagic’s URA demo software and it can read all the tags.Do you know how to modify your Arduino library to read multiple tags? Thank you!

  • I have the RFID reader shield connected to a Sparkfun Redboard. When trying to upload any sketch from the library I get the following error.

    avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x6e An error occurred while uploading the sketch

    If I disconnect the redboard from the shield the example sketches load fine. Then I can reconnect the board and scan away…

    I have tried reseting the redboard, holding down the reset button until it starts uploading. The FTID drivers are loaded correctly.

    Any ideas?

    • My guess is that you’ve got the UART switch set to HW. Thus, the USB serial traffic is competing with the serial port on the RFID module corrupting the traffic. Make sure the switch is set to SW when bootloading new code on your Arduino.

      • Thank you. I tried the switch in both positions. I have two redboards and two RFID readers (making a time system for our high school mountain bike team so we can host races!!!). I have tried different combinations of redboards and RFID readers with the same USB cable and sketch. One RFID reader shield will allow the redboard to load sketches and the other fails. Could it be my soldering?? If so, which pins would cause this problem? TX, RX? Thanks You!!

  • I have yet another question :) I have run this on both serial to the PC as well as a shield on an arduino (uno and mega now). I am getting great range on the PC (of course it is powered separately with a 5v 2A power supply) but the range when used as a shield is much, much, less. I am currently using on of these power blocks as a power source:

    http://photive.com/product/ph-bolt9000.html

    but at 20+ dbm, I can see my LCD start to flicker and at 26-27 dbm, it browns out and reboots. Is it possible that the poor range is just because the power source is not sufficient or could something else be going on? The battery above is stated as supply 2.1A out of one of the ports. Should I (can I) power the SRTR completely separately from the Arduino when used as a shield?

    • All things are pointing at your power source being insufficient. If the LCD is flickering that means the voltage is dropping (because the battery can’t source enough current).

      A built-in safety protection system will protect all devices from overcharge, short circuit and overvoltage while charging.
      

      I imagine there is a PTC in your battery that is limiting the peak current draw.

      • here is a PTC in your battery tha

        Do you know if there is a restriction on the USB port on the arduino? I have read a few comments from folks that stated the Arduino limits that power source to 500 ma and that the barrel jack is limited to 1A. I ordered an inline USB power monitor to see if I can see the actual amps getting pulled but now I am wondering if I should just run the power directly to the 5V power header on the arduino and bypass the USB and barrel jack?

        • Or is there some way I can just power the SRTR board separately? Would I have to either use it disconnected from the Mega or cut the 5v/gnd pins on the shield?

          • Absolutely. That’s what the screw terminal and JST footprints are for (J3 and J6 in the schematic). Please re-read the Power Supply Considerations section of the hookup guide. If something doesn’t make sense let me know and I’ll try to improve upon it.

            • I thought it made sense but under the ‘good’ configuration of battery power, it showed it using the serial connection to PC and under the optimal it showed it as being powered off of the Arduino (which is where my problem comes in.) I just wasn’t sure if I could combine those two : 5V to arduino via USB as well as 5V into the Vin of the SRTR.

        • Have a look for yourself (their schematic is pretty horrible. I can’t quickly discern where the PTC is). I can tell you our RedBoard does have a PTC on the USB feed.

          You raise a valid point tho. If you’re powering your RFID via a USB battery, you’re probably limited to 500mA through the PTC on the Arduino. This cable would get around the PTC limit, at least on the RedBoard.

          • Will the redboard (or others) run OK with an input of 5V at the barrel plug? I would like to run the reader at close to its max dbm along with a couple LEDs, an LCD, and an arduino. I bet I’m going to be over the 1000mA that the barrel plug connection is limited to as well. That could be my entire problem because range has been less that the PC setup even when connected to a 5V 2A power supply.

  • Question about running SRTR from external power / target power. I’m connecting to the SRTR from a BBB, using python-mercuryapi. BBB is using UART1 (ttyO1) pins P8_24 (TX) and P8_26 (RX) connected to RXI and TXO on the SRTR, respectively. When driving the SRTR at 5V, the SRTR does not respond. I’ve tried powering via pin 3 on the FTDI, +5 pin, and J6 (screw terminal) and getting the same result (obviously) since they are all connected. I’ve tried powering directly from the BBB VDD_5V and from an external regulated power supply set to 5V. I’ve used socat to watch port traffic. Messages go out, but the SRTR does not respond.

    Now, if I power the SRTR from the BBB using VDD_3V (3.3V), or set the external supply to drive at 3.3V, I can communicate with the SRTR, read tags, etc…

    Is it possible that the system voltage is affecting logic voltage? Or maybe the TM module is not happy when the SRTR is fed at 5V, or internal DC-DC not working? I can work around the problem by driving the BBB at 5V and the SRTR at 3.3V, but since the SRTR is designed to work at 5V, I’m completely stumped.

    Also, suggestion for the next rev: jumper pins for JP1 and SJ1/SJ2.

    • What is the logic level on UART1 on the BBB? Driving the TXB0104 at 5V is fine (and what’s intended), but if the logic from the BBB is 2.8 or 3.3V then I’m not sure the TXB0104 will forward bias correctly. From the TXB0104 datasheet, table 6.3

      VIH High-level input voltage, Minimum = VCCI × 0.65
      

      So if VCC is 5V, VIH is 3.25V. And BBB is quite possibly a 3.3V logic which means it rarely hits 3.3V and more likely is in the 3.25 or lower range. The BBB is not sending serial at a high enough voltage for the signal to correctly propagate through the protection buffer. One solution would be to put a logic level translator in front of the protection buffer to raise your serial signal to 5V. Another solution would be to wire directly to the TXO-LV/RXI-LV pins on the output of the TXB0104 but you should be very sure the BBB is outputting 3.3V logic. The protection buffer is there to protect the expensive RFID module.

      Yes, a jumper on JP1 is a good idea! Thank you. I’ve added it to the repo issues list. I’m hesitant to put jumpers on SJ1/2 because that would do bad things to the impedance of the antenna feed. We’ve tuned that pretty well and I don’t foresee people wanting to change antenna types often enough for the shorter range trade-off.

      • Thanks for the pointer and info on the TXB0104. I understand now that the protection buffer performs level shifting on the RX/TX to the SRTR supply voltage. That is, if powered by 3.3V, the SRTR presents 3.3V logic; if powered by LiPo, 3.7V logic; if powered by 5V, 5V logic, etc… Correct me if I’m wrong, but the M6e uses 3.3V logic regardless of module voltage.

        Yes, the BBB uses 3.3V logic. However, I’m reluctant to bypass the buffer as I understand that it enforces the 0V start-up/shut-down requirement for the M6e to prevent memory corruption.

        I’ve performed additional testing using a bi-directional LLC. I’ve confirmed that the LLC is working using a loop-back test with LV=3.3V (from BBB) and HV=5V (from power supply). I’ve tried shifting both BBB TX up and SRTR TX down, just the BBB TX up, just the SRTR TX down, and I’ve tried a voltage divider between the SRTR TX to protect the BBB RX. Still no communication.

        I’ve performed all of the same tests using a RPi Zero W, with the same result.

        I’ve found that I can get the BBB and RPi to communicate directly with the SRTR at up to 4V, which gives me the the full 27dB read power. (Aside: with the LLC between the BBB/RPi and SRTR at 4V, no luck.) This seems to be the sweet spot: low enough to allow BBB/RPi TX to trigger SRTR High, low enough to avoid burning out the RX on BBB/RPi.

        For now, I’ve just added a second power supply to power the SRTR in addition to the power supply used to power the BBB. Would be great to finally figure-out why level shifting between the BBB and SRTR isn’t working as expected.

        Regardless of my problem, may I make another suggestion? Fix the SRTR logic voltage to 3.3V or 5V, or perhaps provide a jumper to allow the user to switch between the two.

  • I have a project with the SRTR, an LCD screen, SD reader, and RTC currently on an UNO. I may end up moving it to a mega for the extra space. In the article, it states:

    “Unfortunately the Leonardo and Mega don’t support Softwareserial RX on pin 2 so you’ll need to wire from pin 2 on the shield to pin D11. ”

    Is this just a matter of running a jumper from pin2 to D11 or do I need to actually cut pin2 from the shield to the arduino?

    • It depends. If you are not using pin 2 for anything on your Mega you should be able to declare pin 2 as an input then simply insert a jumper between pin 2 and pin 11. As an input pin 2 should not electrically affect the signal and simply allow it to pass to pin 11.

      If you are using pin 2 for something (cool sounding project by the way) then you’ll need to electrically isolate the software serial trace. I would do this on the SRTR shield by cutting the trace running from the SW/HW switch (that goes to pin 2) and spot soldering a wire from the switch to pin 11 on the SRTR shield.

      Is that clear as mud?

      • Thanks, Nate. I think so. I don’t believe I will be using pin 2 for anything but I will double check and hopefully can just jumper across. I am definitely going to the Mega. Between my program and those libraries, I am running out of memory trying to open a file on the SD card. Just wanted to say a big thanks for this project writeup. This RFID reader is exactly what I needed for my project and it seems to be working beautifully.

        • So I’m not using pin 2 for anything but I am using 10-14 for the SD datalogger shield. If I jumper 2 to 11 and disable the datalogger code, the SRTR works fine. Should I be able to use a pin other than 11 in the same way? Currently using pins 8-13, a4, and a5

          • Nevermind. I just needed 30 more seconds. I found the following:

            // Specifically for the Arduino Mega 2560 (or 1280 on the original Arduino Mega) // A majority of the pins are NOT PCINTs, SO BE WARNED (i.e. you cannot use them as receive pins) // Only pins available for RECEIVE (TRANSMIT can be on any pin): // (I’ve deliberately left out pin mapping to the Hardware USARTs - seems senseless to me) // Pins: 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69

            So I ran the jumper from 2 to 53 and it appears to be functioning now!

  • I am going to be hooking the SRTR up to a Uno with DataLogger shield and LCD display. Under power considerations, it says “If you provide your RedBoard with 9V and draw 1A through the 5V regulator it will get red-hot. Use a 5V power adapter to reduce the thermal strain on your regulator.”. The Uno (and Redboard) specify 7+ volts for DC in. Trying to run the LCD, etc off of 5V in doesn’t work. Can I power the SRTR separate from the Uno or what is the best way to provide power to both?

    • It looks like some people cut a USB cable and use that to run 5v directly. Could I do that with a 5v be 2A supply and be ok?

      • Cutting a USB cable and providing the board with 5V at a higher current should work very well. Infact the original ThingMagic kit dev kit shipped with a ‘special’ USB cable that had two A connectors to one miniB connector. This was to get 1A combined out of two 500mA USB ports.

  • Looking for a little help.

    I can use an Arduino Uno and the libraries to communicate with the Reader. But when I try to connect a FTDI cable to the board, without the arduino attached, I am not able to communicate with the board using the Universal Reader Assistant software. The FTDI cable is functional, I can loop TX to RX and see the characters come back. When I look at the RX and TX lines using a scope, as soon as a character is sent all I get is very high frequency noise on the serial port lines. I’ve tried several FTDI Cable, other serial to TTL cables, and a USB isolator on the FTDI Cable. Has anyone else seen this issue? Has anyone been able to use the reader with an FTDI Cable?

    Thanks, Greg

  • Hey. Is there any way to use “enableReadFilter()” within the Arduino code? If yes, can you post the example please.

  • Hey guys, does anyone know if there’s any way we can read LF animal tags of 125KHz using this kit?

  • I understand from the article that the reader requires FCC approval to be used with other antennas but what sort of range is possible with an antenna with a higher gain (9 to 11 dBic)?

    • Here is an image (see Example 10 in the hook up guide). We were able to detect a tag over 16 feet away. The antenna used in the image is 6dBi. So 16 feet (5 meters) or more is possible with higher gain as you describe.

  • Hey, has anyone solved this problem?

    When I run Example2_Read_EPC, following pop up:

    C:\Users\mchow\Documents\Arduino\libraries\SparkFun_Simultaneous_RFID_Tag_Reader_Library\src\SparkFun_UHF_RFID_Reader.cpp: In member function ‘uint8_t RFID::writeTagEPC(char*, uint8_t, uint16_t)’:

    C:\Users\mchow\Documents\Arduino\libraries\SparkFun_Simultaneous_RFID_Tag_Reader_Library\src\SparkFun_UHF_RFID_Reader.cpp:277:63: error: invalid conversion from ‘char’ to ‘uint8_t {aka unsigned char*}’ [-fpermissive]

    return (writeData(bank, address, newID, newIDLength, timeOut));

    • Hi,

      I’m not quite sure what the issue is. Please open an issue on the github repo and we’ll do our best to fix it. What device do you have the shield attached? What version of Arduino are you using?

  • Is the duty cycle of the reader implemented in this code? In Magic’s Universal Reader Assistant it allows for ontime and offtime for a read duty cycle. This is important if you read at high levels of DB, higher levels the chip starts to heat up, by having a duty cycle of off and on the temperature can be controlled. In the API code it has asyncOffTime and asyncOnTime to control that. But I don’t see that in the Arduino code.

    Any ideas on this?

  • Is there a way to power this via an external supply, i..e “Target Power” and still use the serial out of the Arduino to connect to Universal Reader Assistant? I cant seem to get the software to recognize the module while it’s attached to the arduino (through which I’m powering the module).

  • After attaching the RFID reader to my arduino uno, uploading the first example script “constant read” I receive an error message via the serial monitor: “Module failed to respond. Please check wiring.” Is there a fix for this? I cant seem to find anything anywhere resolving this issue, and there’s not much ‘wiring to fix’ as i simply followed the instructions in the hardware hookup guide, attached headers to the board and attached it to the arduino. When powered from serial communication only (5v) it works fine with the universal reader assistant. Any guidance or suggestions would be helpful. Thank you!

    • check wiri

      any fix for this? i get this error randomly and there is only one source on the entire internet that attempts to resolve it (https://github.com/sparkfun/SparkFun_Simultaneous_RFID_Tag_Reader_Library/issues/2), albeit to to avail. Obviously, if you dont have the switch set it respond in the first place. however, it appears that if the module browns out or loses power during a reset it locks up and you apparently only have 200ms from when the arduino powers up to when the module responds to deal with resetting it. or something… for how finicky this device is, it is a nightmare when it decides not to work…

    • Have you set the Serial switch to SW-UART when you try running the Arduino sketches?

      If the switch is not the problem then… If the serial connection to a USB-to-Serial board is working with URA, but the Arduino connection is not, then double check your solder connections on the Arduino headers. You may have a disconnect on pins 2 and 3 (the software serial pins). If that’s not the problem then you may need to contact tech support.

  • I just order this KIT, install newest version Arduino, library, chose UNO as target board. I run Example1_Constant Read and had the following pop up:

    C:\Users\mchow\AppData\Local\Temp\arduino_modified_sketch_627756\Example1_Constant_Read.ino: In function ‘void loop()’:

    Example1_Constant_Read:79: error: ‘tagDataBytes’ was not declared in this scope

         if (nano.msg[31 + tagDataBytes + x] < 0x10) Serial.print(F("0")); //Pretty print
    
                           ^
    

    Example1_Constant_Read:80: error: ‘tagDataBytes’ was not declared in this scope

         Serial.print(nano.msg[31 + tagDataBytes + x], HEX);
    
                                    ^
    

    exit status 1 ‘tagDataBytes’ was not declared in this scope

    Can anyone help?

    • tagDataBytes is the variable contained in the library. Be sure you’ve read over the hook up guide and installed the library.

      • The library that gets installed with the Library Manager is not the same as the latest one on Github. tagDataBytes is not defined anywhere where the sketch could access it. So reinstall the library manually.

  • Hello sparkfun, first sorry for my bad english :/

    I’m working with this Reader, but I need a little help. is possible to use the Arduino library for the M6E-NANO RFID module with a different board? like Adafruit Feather family with ATmega32u4 or Arduino Leonardo. is there any concern about the SoftwareSerial library that I need take in consideration?

    Thanks,

    Jaime

    • I don’t think there will be a problem. The easiest way to test is by having the platform send and receive serial characters at 115200 over software serial. If the platform is able to send and receive correctly it should work fine with the reader.

      • This board does not work with boards based on atmega32u4 (Leonardo, Yun, etc) or on the Megas. None of these support interrupts on pins 2/3, so SoftwareSerial won’t work on those pins. I just found this out the hard way =(

        • I’m not sure about the Leonardo, Yun, etc but it will work on the Mega. You just need to use a pin other than 2 (see nate’s reply to me above)


If you've found a bug or have other constructive feedback for our tutorial authors, please send us your feedback!