Comments: Simultaneous RFID Tag Reader Hookup Guide

Pages

Looking for answers to technical questions?

We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.

  • Member #993747 / about 8 years ago / 3

    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

    • Member #897512 / about 7 years ago / 1

      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?

    • Member #1047280 / about 7 years ago / 1

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

  • Member #1261461 / about 7 years ago / 2

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

    Cheers

    • Member #1442283 / about 6 years ago / 1

      from what I've discovered you basically only need 5 pins. 2 & 3 for softSerial 5V Ground and RST

      Hope this helps somebody

  • freelivenet / about a month ago / 1

    Has anyone been able to read multiple tag TIDs at the same time? I can only read a single tag ID at a time, which is very slow. Reading multiple tags at a time only works with EPC code.

  • Member #1669548 / about 4 years ago / 1

    Hello,

    I successfully compiled an Arduino project using this board on an Arduino UNO and it works great.

    I am now trying to adapt my project on an STM32 nucleo board (the NUCLEO-L073RZ) using STM32 Cube IDE. Do you have any advice about wich library to use ? Or how to adapt the arduino library linked in this guide ?

    Thanks in advance

  • Member #1664320 / about 4 years ago / 1

    Hi again :)

    I've got another question... I would like to use RFID reader as a RedBoard shield. Additionally I wanna transfer received Tag data from ReadBoard to PC wirelessly by Bluetooth module. If I set pins 4 and 5 up for SoftwareSerial on the RedBoard and I connect Bluetooth module to those pins, will it damage RFID reader somehow?

    In schematic I see that pins 9 and 10 are occupied by Buzzer and pins 2 and 3 are used for SoftwareSerial communication between ReadBoard and Reader, so the others pins are free to use?

  • Member #1664320 / about 4 years ago / 1

    Hello :)

    Here's a part of the code from Example 1:

    void setup()
    {
      Serial.begin(115200);
      while (!Serial); //Wait for the serial port to come online
    
      if (setupNano(38400) == false) //Configure nano to run at 38400bps
      {
        Serial.println(F("Module failed to respond. Please check wiring."));
        while (1); //Freeze!
      }
    

    Could you please tell me, why Serial.begin(115200) is set to 115200, not 38400? Few lines below we "configure nano to run at 38400bps" and I've always thought it should be the same speed between devices to make them understand each other (sorry for any mistakes, I'm not an english native speaker).

    I appreciate your help!

    • The example code implements a software serial port at 38400. The hardware serial port provides the serial messages and debug.

      Software serial can get very finicky and break above 57600bps (on ATmega328 based boards) so that's why we talk to the module at 38400bps.

  • Member #538517 / about 5 years ago * / 1

    Hello. I am trying to hook the SRTR up to an arduino ESP32 running 3.3volts. Has anyone tried to do this, and can share a schematic? I am able to make the SRTR work fine with the Arduino Uno, however, when I try to run it with an ESP32 I get "Module failed to respond. Please check wiring." If I print out the message, I see either a 1 (timeout) or 2 (corrupt data received). My hookup is like this: I hookup a 5v power supply to 5v pin and to ground on the SRTR. I then hook ground to the ground pin on my ESP 32. I then hook the 3V pin on my ESP32 to a biDirectional level shifter (VCCA). (https://www.adafruit.com/product/395) I then hook the 5V from the power supply to VCCB. I then hook pin 17 of the ESP32 to pint A1 of my level shifter, then connect B1 to pin 2 of the SRTR. I then connect pin 3 of the SRTR to pin B2 of the level shifter. Then connect A2 of the level shifter to pin 17 of the ESP32. (I am essentially hooking up pins 16 and 17 of the ESP2 to pins 2 and 3 of the SRTR). I also hook up ground on the level shifter to ground on the ESP32 and ground on the SRTR. Any idea what I am missing? I've tried switching so 16 is hooked up to pin 2, and 17 is hooked to pin 3, in case I got that backwards, but that doesn't seem to help. I'm using SoftwareSerial. But I have also tried using Serial2 on the ESP32 (which should use pins 16 and 17). I always either get a timeout from the SRTR or a corrup data (which might just be noise, I'm not sure) Any help would be appreciated. thanks.

    /*
    Reading multiple RFID tags, simultaneously!
    By: Nathan Seidle @ SparkFun Electronics
    Date: October 3rd, 2016
    https://github.com/sparkfun/Simultaneous_RFID_Tag_Reader
    
    Constantly reads and outputs any tags heard
    
    If using the Simultaneous RFID Tag Reader (SRTR) shield, make sure the serial slide
    switch is in the 'SW-UART' position
    */
    
    #include <SoftwareSerial.h> //Used for transmitting to the device
    
    SoftwareSerial softSerial(16, 17); //RX, TX
    //HardwareSerial Serial2(2);
    
    #include "SparkFun_UHF_RFID_Reader.h" //Library for controlling the M6E Nano module
    RFID nano; //Create instance
    
    void setup()
    {
    Serial.begin(115200);
    while (!Serial); //Wait for the serial port to come online
    Serial.println("Starting...");
    if (setupNano(38400) == false) //Configure nano to run at 38400b0ps
    {
        Serial.println(F("Module failed to respond. Please check wiring."));
        while (1); //Freeze!
    }
    
    nano.setRegion(REGION_NORTHAMERICA); //Set to North America
    
    nano.setReadPower(500); //5.00 dBm. Higher values may caues USB port to brown out
    //Max Read TX Power is 27.00 dBm and may cause temperature-limit throttling
    
    Serial.println(F("Press a key to begin scanning for tags."));
    while (!Serial.available()); //Wait for user to send a character
    Serial.read(); //Throw away the user's character
    
    nano.startReading(); //Begin scanning for tags
    }
    
    void loop()
    {
    if (nano.check() == true) //Check to see if any new data has come in from module
    {
        byte responseType = nano.parseResponse(); //Break response into tag ID, RSSI, frequency, and timestamp
    
        if (responseType == RESPONSE_IS_KEEPALIVE)
        {
        Serial.println(F("Scanning"));
        }
        else if (responseType == RESPONSE_IS_TAGFOUND)
        {
        //If we have a full record we can pull out the fun bits
        int rssi = nano.getTagRSSI(); //Get the RSSI for this tag read
    
        long freq = nano.getTagFreq(); //Get the frequency this tag was detected at
    
        long timeStamp = nano.getTagTimestamp(); //Get the time this was read, (ms) since last keep-alive message
    
        byte tagEPCBytes = nano.getTagEPCBytes(); //Get the number of bytes of EPC from response
    
        Serial.print(F(" rssi["));
        Serial.print(rssi);
        Serial.print(F("]"));
    
        Serial.print(F(" freq["));
        Serial.print(freq);
        Serial.print(F("]"));
    
        Serial.print(F(" time["));
        Serial.print(timeStamp);
        Serial.print(F("]"));
    
        //Print EPC bytes, this is a subsection of bytes from the response/msg array
        Serial.print(F(" epc["));
        for (byte x = 0 ; x < tagEPCBytes ; x++)
        {
            if (nano.msg[31 + x] < 0x10) Serial.print(F("0")); //Pretty print
            Serial.print(nano.msg[31 + x], HEX);
            Serial.print(F(" "));
        }
        Serial.print(F("]"));
    
        Serial.println();
        }
        else if (responseType == ERROR_CORRUPT_RESPONSE)
        {
        Serial.println("Bad CRC");
        }
        else
        {
        //Unknown response
        Serial.print("Unknown error");
        }
    }
    }
    
    //Gracefully handles a reader that is already configured and already reading continuously
    //Because Stream does not have a .begin() we have to do this outside the library
    boolean setupNano(long baudRate)
    {
    //Serial.println("SetupNano");
    
    nano.begin(softSerial); //Tell the library to communicate over software serial port
    //Serial.println("nano.begin");
    //Test to see if we are already connected to a module
    //This would be the case if the Arduino has been reprogrammed and the module has stayed powered
    softSerial.begin(baudRate); //For this test, assume module is already at our desired baud rate
    
    while (softSerial.isListening() == false); //Wait for port to open //while (!softSerial); //Wait for port to open
    //Serial.println("Port open");
    //About 200ms from power on the module will send its firmware version at 115200. We need to ignore this.
    while (softSerial.available()) softSerial.read();
    //Serial.println("getVersion");
    nano.getVersion();
    //Serial.println("Afer getVersion");
    //Serial.println("Message:");
    //Serial.println(nano.msg[0]);
    if (nano.msg[0] == ERROR_WRONG_OPCODE_RESPONSE)
    {
        //This happens if the baud rate is correct but the module is doing a ccontinuous read
        nano.stopReading();
    
        Serial.println(F("Module continuously reading. Asking it to stop..."));
    
        delay(1500);
    }
    else
    {
    
    
        //The module did not respond so assume it's just been powered on and communicating at 115200bps
        softSerial.begin(115200); //Start software serial at 115200
        //delay(250);
        nano.setBaud(baudRate); //Tell the module to go to the chosen baud rate. Ignore the response msg
        //delay(250);
        //Serial.println("Message:");
        //Serial.println(nano.msg[0]);
        softSerial.begin(baudRate); //Start the software serial port, this time at user's chosen baud rate
        //Serial.println(F("Change software serial baudrate."));
        delay(250);
    }
    
    //Test the connection
    nano.getVersion();
    
    if (nano.msg[0] != ALL_GOOD) return (false); //Something is not right
    
    //The M6E has these settings no matter what
    nano.setTagProtocol(); //Set protocol to GEN2
    
    nano.setAntennaPort(); //Set TX/RX antenna ports to 1
    
    return (true); //We are ready to rock
    }
    

    (Edited to display code properly.)

    • santaimpersonator / about 5 years ago / 1

      Hi there, it sounds like you are looking for technical assistance. Please use the link in the banner above, to get started with posting a topic in our forums. Our technical support team will do their best to assist you.

  • Hello, I am looking for the command list to add Locking Memory functionality to my application. Any idea? I have looked over the entire jadack web page and I only find references to Mercuri Api, but for me it is difficult to follow. Thanks in advance

    • santaimpersonator / about 6 years ago / 1

      This is probably outside the scope of the hookup guide and as mentioned:

      Arduino Sketches: "This is a complex device so we've included many example sketches to get you up and running with the main features."

      Mercury API: "ThingMagic's extensive software libraries in C, Java, and .NET... The use of Mercury API is beyond the scope of this tutorial."

      Feel free to use the link in the banner above, to get started with posting a topic in our forums. Unfortunately, this is probably outside the expertise of the technical support team and you may need to rely on the community for help.

  • Member #1509013 / about 6 years ago / 1

    Hello, I am using Arduino Mega 2560, When i run the Example1_HardwareSerial_Constant_Read and replace each Serial5 with the Serial3 and connect RFID RX with Arduino's pin 14 TX, and connect RFID TX with Arduino's pin 15 RX. The response I get is the following: sendCommand: [FF] [00] [03] [1D] [0C] response: [FC] [00] [E0] [E0] [00] Corrupt response sendCommand: [FF] [04] [06] [00] [01] [C2] [00] [A4] [60] sendCommand: [FF] [00] [03] [1D] [0C] response: [FC] [00] [E0] [E0] [00] Corrupt response Module failed to respond. Please check wiring.

  • Member #1507953 / about 6 years ago / 1

    Hi, So i have been following the tutorial and i installed version 1.8 of the ArduinoIDE and version 1.06 of the simultaneous Rfid Reader library. I opened up the Example2 Read EPC and i was able to both compile and upload the sketch onto the Arduino. But when i look at the serial reader all i see as output is a "q?" or alternatively "p?"

    Could this mean that the wiring is not connected properly? Im assuming its an issue with the RFID board communicating with the arduino because when i upload other non RFID Reader examples to the Arduino, they run and produce serial output.

    Arduino Uno btw

  • Member #1275783 / about 6 years ago / 1

    can you explain minimum time while scanning the RFID tag? I am from the other region of the "nano.setRegion(REGION_NORTHAMERICA); ", can I use REGION_OPEN?

  • Member #1484100 / about 6 years ago / 1

    Hi, i am trying to run Example one, and the program is getting stuck in a while loop during the nanosetup function and is continuously printing Msg [0]: 0x0 i don't know why this is happening, do i have a bad connection between my RedBoard and the M6E-nano board, or is there another issue?

    • Be sure to update your library to v1.0.6. I messed up example 1 with a forced while loop that shows Msg[0]. We fixed it in this commit. Update your library and you should be good.

    • Member #1497889 / about 6 years ago / 1

      Hi, you need to check example code in line 141 --> while(...). You just need to delete that part or jump out the loop, then you should can run it.

      • I think what you're referring to has been fixed in Ex 1 in the library with this commit. See my previous comment on this thread and let me know if you still see a problem. Also, you can link to individual lines on github if you still see a problem.

  • Member #1442283 / about 6 years ago / 1

    Hi guys. The reader seems to slow down read if there are no tags being read (like the serial output goes down to one output a second, in for example, the Constant Read example) . Then speeds up if there are tags. Is there anyway to prevent the slowdown?

  • j_steanky_11 / about 6 years ago / 1

    Please help! Configured the shield to an Arduino Uno and using an external antenna. Sensing works even up to nearly 15 feet away. However, I am having difficulty after uploading the program to the Arduino and disconnecting the device from a PC to run the uploaded program on the Arduino only. I am using a recommended external power supply at 5V and the program is uploading and configuring correctly on the Arduino. Am I missing something? Can this shield operate with only an Arduino and an external power supply or does it require a PC to use the Arduino program? I do not need any serial communication or data from the shield just simply need to track RFID badges and notify me when they are detected through a buzzer and LED, the PC is not necessary for my application. Thank you!

    • You should be able to run sketches without a computer but watch out for statements like

      while (!Serial);
      

      This will wait for the serial port to be connected to a computer. Or this one:

      while(Serial.available() == false) ;
      

      The above will wait for a user to press a key (send a character).

      These statements are common (see here) in the library because we want to wait for an action to happen first, such as the user to hold a tag near the reader.

      If you want to run headless (no computer), remove these blocking statements from the examples.

  • Member #1470038 / about 6 years ago / 1

    Would this reader work with the Photon Red Board as well (https://www.sparkfun.com/products/13321). Looking for an easy wireless solution and using the Photon could be simple plug-and-play because of the shield format.

    Or is it expected that the WiFi will interfere with the RFID board?

    • It should; the Photon is capable of both hardware serial and software serial. Though I haven't tried compiling the lib for the Photon platform.

      I don't suspect the WiFi (@2.4GHz) will effect or be effected much by the 915MHz of the RFID. Though, to be safe, if you can add a few inches between boards it will decrease the likelihood of cross talk considerably.

  • Member #1423174 / about 6 years ago / 1

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

    • Hmm, good question. The answer is yes you can. The way I found this: Use the Universal Reader Assistant. Start a read. Detect a tag and then begin modifying the read power setting. The system correctly adjusts the power and the tag stops reading (as read power goes very low).

  • Member #1423174 / about 6 years ago / 1

    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.

    • This is a limitation of the Nano module - it returns an int. Are you trying to sense distance from the reader? You may have a hard time: RSSIs are good for qualitative readings but once you try to make them into pure quantitative readings it can become misleading.

  • Member #1398981 / about 6 years ago / 1

    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.

      • Member #1398981 / about 6 years ago / 1

        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.

  • Member #1384955 / about 7 years ago / 1

    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!

  • Member #1243771 / about 7 years ago / 1

    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.

      • Member #1243771 / about 7 years ago / 1

        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!!

  • Kevin384 / about 7 years ago / 1

    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.

      • Kevin384 / about 7 years ago / 1

        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?

        • Kevin384 / about 7 years ago / 1

          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.

            • Kevin384 / about 7 years ago / 1

              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.

          • Kevin384 / about 7 years ago * / 2

            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.

  • cdc10 / about 7 years ago * / 1

    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.

      • cdc10 / about 7 years ago * / 1

        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.

        • A-Ron / about 6 years ago / 1

          Sorry to resurrect an old thread, but you're the only person I've found who is trying to connect the SRTR to the RPi. Were you able to accomplish this? I'd like to have the RPi communicate directly with the SRTR without burning it up and without a microcontroller in the middle.

  • Kevin384 / about 7 years ago / 1

    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?

      • Kevin384 / about 7 years ago / 1

        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.

        • Kevin384 / about 7 years ago / 1

          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

          • Kevin384 / about 7 years ago / 1

            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!

  • Kevin384 / about 7 years ago / 1

    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?

    • Kevin384 / about 7 years ago / 1

      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.

  • Member #231640 / about 7 years ago * / 1

    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

  • Member #1335233 / about 7 years ago / 1

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

  • Member #665822 / about 7 years ago / 1

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

  • Kevin384 / about 7 years ago * / 1

    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.

  • Member #665822 / about 7 years ago / 1

    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?

  • Member #4134 / about 7 years ago / 1

    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?

    • Has anyone found the documentation (on the arduino drivers) on how to change the duty cycle? This seems to be key to ensuring the thing doesn't overheat (since one cannot add a heatsink to the underside of the shield).

    • A-Ron / about 6 years ago / 1

      Were you able to figure this out? I can't find the duty cycle parameters either.

  • Member #1179482 / about 7 years ago / 1

    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).

  • Member #1179482 / about 7 years ago / 1

    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!

    • Member #1179482 / about 7 years ago / 1

      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.

  • Member #993747 / about 8 years ago / 1

    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.

      • Matti | Mandu / about 8 years ago * / 1

        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.

        • Matti | Mandu / about 8 years ago / 1

          ...or Sparkfun should probably check why the latest version is not showing up on the Library Manager.

  • Member #1461646 / about 6 years ago / 0

    Hi guys, after reading the document, I still have some stupid question.

    We could not get tag location from the reader, only the signal strength is available.

    the signal strength can be affected by various factors, so it may not be the good indicator to represent the real distance.

    What if I using 3 or more readers to do some position calculation?

    One more question, could I detect the tag direction, which side is facing upward or downward ?

    Thanks

    • You can't get tag location from this system nor can you get distance from the reader. RSSI is an indicator only, not a quantitative distance.

      Using three readers is an interesting idea but I don't think you'll be able to get a sensible location.

      You cannot get tag orientation using this system. You might be able to cover one side of the tag with RF blocking material but that same material may decrease your read distance considerably.

      • Member #1461646 / about 6 years ago / 1

        Thanks Nate!

        Your information is really helpful. Internet said three readers calculation can precise in 10cm. I also think it is not precise enough for my case.

        May I know the signal coverage if I put the antenna at centre and under the table.

        Actually, I am going to make a RFID table(1.2m *1.2m) and sense the tags(tens of it) which one is not on it.

        I know lower dBm can gets higher penetration, shorter and wider range of the signal coverage just like the fan shape.

        It sound likes what I need. My concern is the difference of sensitivity if I placing the tag on the table centre or edge.

        And if I put the tags too close together. I am afraid it has large error in that case.

        Sorry for my bad English.

        Thank you for your patient to read my bad English.

        • Your english is very good. Don't worry about it.

          Good luck with your project! Let us know how it goes. Many of our RFID customers want to do a similar tag location project so please report back whta you find. There are many people that could benefit from your work.

  • JVG / about 8 years ago * / 0

    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.

      • planetarian / about 7 years ago / 1

        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 =(

        • Kevin384 / about 7 years ago / 1

          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 an issue with this tutorial content, please send us your feedback!