Sign in
Your Position: Home >Commonly Used Accessories & Parts >5 Must-Have Features in a UHF Rfid Reader Modules

5 Must-Have Features in a UHF Rfid Reader Modules

Aug. 18, 2025
  • 23
  • 0
  • 0

What is an RFID Reader Module? Features, Uses & Benefits

‍RFID technology has revolutionized the way businesses manage and track their assets. Among the critical components of this system is the RFID reader module. These modules serve as the bridge between RFID tags and the software that interprets the collected data. Whether used in supply chain monitoring, inventory management, or equipment tracking, RFID reader modules have become indispensable across industries. 

For more information, please visit RoyalRay.

At Asset Infinity, our RFID-based asset tracking solutions seamlessly integrate with various types of RFID reader devices to offer real-time visibility, improved efficiency, and accurate reporting. In this blog, we’ll explore what an RFID reader module is, its features, common use cases, benefits, and what to consider when selecting one for your business.  

What is an RFID Reader Module? 

An RFID reader module is the core component of an RFID reader device. It is responsible for communicating with RFID tags by sending out radio frequency signals and receiving data from the tags within its range. Once the tag data is captured, the module transmits it to a central database or asset management software like Asset Infinity for further processing. 

There are several types of RFID systems—low-frequency (LF), high-frequency (HF), and ultra-high-frequency (UHF). Among them, the RFID UHF reader modules are particularly popular due to their ability to read tags from longer distances and at faster speeds. 

Unlike standalone RFID readers, modules are often embedded into other systems, machines, or handheld scanners, providing greater flexibility and customization. When used with RFID reader software like Asset Infinity, these modules enable robust asset tracking and monitoring capabilities.  

Key Features of RFID Reader Modules 

When evaluating RFID reader modules for use with enterprise asset management software, it’s essential to understand their technical capabilities. Asset Infinity supports integration with a variety of RFID reader types, including fixed, handheld, and embedded modules. 

Here are the key features that make RFID reader modules efficient and adaptable: 

1. Frequency Range Compatibility 

RFID reader modules are available in various frequency bands. UHF modules support long range RFID functionality, making them ideal for industrial settings where large areas need to be monitored. These modules can typically read tags from a distance of 10 to 15 meters or more. 

2. Multi-Tag Reading Capability 

Advanced modules can read hundreds of RFID tags simultaneously, making them suitable for large-scale asset or inventory audits. This feature drastically reduces the time needed for scanning, especially in environments such as warehouses or manufacturing units. 

3. High Read Accuracy 

Asset Infinity supports modules with anti-collision algorithms and high read sensitivity, ensuring that tags are read accurately even in dense environments. This is crucial for applications like IT asset tracking, where many assets are stored in close proximity. 

4. Versatile Form Factors 

RFID reader modules come in a variety of sizes and formats. From compact handheld readers to rugged industrial RFID reader devices designed for extreme environments, the flexibility in design allows for deployment across multiple use cases. 

5. Connectivity Options 

Modules may support USB, RS232, Ethernet, or wireless protocols like Wi-Fi and Bluetooth, enabling easy integration with Asset Infinity’s RFID reader software. This connectivity allows for both online and offline operation, which is vital in remote or field-based asset tracking scenarios.  

Common Uses of RFID Reader Modules 

RFID reader modules are used in various industries, and their utility continues to expand as digital transformation becomes a priority for asset-intensive businesses. 

1. RFID Asset Tracking 

One of the primary uses of these modules is for RFID asset tracking. Businesses use fixed or handheld RFID readers to scan assets tagged with RFID chips. The collected data is then transmitted to Asset Infinity’s centralized platform, which provides real-time visibility, status updates, and reports. 

2. IT Asset Tracking 

In IT environments, where assets like laptops, servers, and peripherals are critical, RFID reader modules simplify tracking by automating the identification process. Asset Infinity helps organizations monitor asset movement, ownership, and maintenance schedules using this data. 

3. Industrial Equipment Monitoring 

Using industrial RFID reader modules, organizations can monitor heavy equipment and machinery in real-time. These modules can withstand harsh environments and provide consistent data flow to help schedule preventive maintenance through Asset Infinity. 

4. Inventory and Supply Chain Management 

In retail, manufacturing, and logistics, RFID reader modules streamline inventory checks and supply chain processes. The ability to perform bulk scans with long range RFID readers improves accuracy and efficiency compared to manual methods. 

5. Access Control and Authentication 

RFID reader devices are also widely used in access control systems, verifying the identity of personnel or vehicles entering restricted zones. This data can be integrated with Asset Infinity to log entries, maintain security audits, or trigger alerts for unauthorized access. 

Benefits of Using RFID Reader Modules 

RFID reader modules offer significant advantages over traditional tracking methods. When combined with Asset Infinity, their effectiveness is amplified, providing organizations with scalable, reliable, and user-friendly solutions. 

1. Enhanced Visibility and Control 

RFID systems eliminate blind spots in asset tracking. Real-time data captured by RFID reader modules allows organizations to know where their assets are at any given moment. Asset Infinity’s dashboard visualizes this data for easier management. 

2. Faster Audits and Reduced Manual Errors 

Manual tracking is time-consuming and error-prone. With RFID tags and readers, audits that once took days can now be completed in hours or minutes. Asset Infinity automates the entire process, reducing human intervention and increasing accuracy. 

3. Long-Range and Non-Line-of-Sight Reading 

Unlike barcode scanners, RFID reader modules do not require direct line-of-sight. Long range RFID reader capabilities allow assets to be scanned even when they are inside cabinets, containers, or stacked on shelves. 

4. Integration with Maintenance and Lifecycle Management 

With RFID data feeding into Asset Infinity’s maintenance module, organizations can schedule preventive or condition-based maintenance automatically. This reduces downtime and extends asset life. 

5. Scalability and Flexibility 

Whether you need a compact reader for mobile asset tracking or an industrial RFID reader for warehouse automation, modules can be selected based on operational needs. Asset Infinity supports various reader types, making it easy to scale solutions as businesses grow.  

Factors to Consider When Choosing an RFID Reader Module 

Not all RFID modules are the same, and selecting the right one depends on your specific asset tracking requirements. Here are a few important factors to consider: 

1. Operating Environment 

Is your environment industrial, office-based, outdoor, or temperature-controlled? Choose a module designed to perform reliably under your site conditions. Asset Infinity supports both rugged and lightweight RFID reader device integrations. 

2. Range and Frequency 

If you need long-distance reads, opt for an RFID UHF reader. However, for high-precision, short-range applications, HF or LF modules may be better. Your use case determines the required frequency. 

3. Tag Compatibility 

Ensure that the RFID reader module you choose is compatible with the RFID tags you are using. Asset Infinity supports a wide range of RFID tag standards, allowing for cross-functional tracking. 

4. Integration Capability 

Check if the module can communicate effectively with your existing ERP or asset tracking systems. Asset Infinity offers API-based integrations that allow for quick and secure syncing of RFID data. 

5. Data Security and Encryption 

If your operations involve sensitive assets, choose modules with built-in encryption and security protocols. Asset Infinity provides user-role management and secure cloud storage to protect asset data.  

Also Read: What Are Various Types of RFID Tags Useful for Organizations?

Conclusion 

RFID reader modules are at the heart of any effective RFID tracking system. They bridge the gap between physical assets and digital data, allowing organizations to automate, scale, and optimize asset tracking operations. 

At Asset Infinity, we specialize in integrating RFID reader devices—fixed, handheld, long-range, and industrial—with our cloud-based asset management platform. Whether you’re managing IT infrastructure, tracking tools on a construction site, or optimizing inventory in a warehouse, our solution helps you harness the full potential of RFID technology. 

By understanding the features, use cases, and benefits of RFID reader modules, businesses can make informed decisions and build future-ready tracking systems that drive visibility, security, and efficiency. 

FAQs

What is the difference between an RFID reader and an RFID tag? 

An RFID tag is attached to the asset and stores identification data, while the RFID reader module or device reads that data wirelessly and transmits it to the tracking system. Asset Infinity uses both components to deliver seamless RFID asset tracking solutions. 

What types of RFID reader modules are available? 

There are several types, including handheld, fixed, embedded, and industrial RFID reader modules. Asset Infinity supports a wide range of these devices, including long range RFID readers and RFID UHF readers, depending on the use case. 

Simultaneous RFID Tag Reader Hookup Guide - SparkFun Learn

Contributors: Nate

Introduction

The SparkFun M6E Nano Simultaneous RFID Tag Reader (SRTR for short) has numerous features that make it a huge leap forward over other RFID readers.

SparkFun Simultaneous RFID Reader - M6E Nano

SEN-

The SparkFun Simultaneous RFID Reader is an Arduino-compatible board to get you started with the M6E Nano UHF RFID Reader.

Retired

The greatest feature is that the SRTR is able to read multiple tags at the same time. Additionally the read distance of tags is greatly increased (up to 16 feet!) from other readers. Did we mention you can write your own data to the tags? Oh yea, you can do that too.

Suggested Materials

The SRTR was designed to work either with a USB to Serial connection to a computer or as a shield to an Arduino-compatible board. If you’re just getting started we recommend you start with the serial connection to a computer so that you can use the Universal Reader Assistant software to experiment quickly with different tags and read distances. Then move to a microcontroller or single board computer. You may not need everything though depending on what you have. Add it to your cart, read through the guide, and adjust the cart as necessary.

USB to Serial Connection

For a basic set-up using the SRTR with a USB-to-Serial connection, we recommend the following products.

SparkFun Serial Basic Breakout - CH340G

DEV-

The SparkFun Serial Basic Breakout is an easy-to-use USB-to-Serial adapter based on the CH340G IC from WCH.

$9.25

USB Micro-B Cable - 6 Foot

CAB-

USB 2.0 type A to Micro-B 5-pin. This is a new, smaller connector for USB devices. Micro-B connectors are about half the heig…

$6.50

Break Away Male Headers - Right Angle

PRT-

A row of right angle male headers - break to fit. 40 pins that can be cut to any size. Used with custom PCBs or general custo…

$2.50

Arduino Shield Connection

If you’re using the SRTR as a shield, we recommend the following materials.

SparkFun RedBoard Qwiic

DEV-

The SparkFun RedBoard Qwiic is an Arduino-compatible development board with a built in Qwiic connector, eliminating the need …

$21.95

Arduino Stackable Header Kit - R3

PRT-

These headers are made to work with the Arduino Uno R3, Leonardo and new Arduino boards going forward. They are the perfect h…

$2.75

Wall Adapter Power Supply - 5VDC, 2A (Barrel Jack)

TOL-

This is a high quality switching 'wall wart' AC to DC 5V mA Barrel Jack wall power supply manufactured specifically for S…

$9.50

Any microcontroller or single board computer capable of bps will work (however the module can be configured to bps). The SparkFun RedBoard Qwiic or Arduino Uno are popular options for this role, but just about any microcontroller development board should work. (The firmware examples use an Arduino library, if that serves as any extra motivation to use an Arduino.) You will want an external power supply to run the module at full power. Please see the Power Supply Considerations section for more information.

Additional Materials

To follow along with the examples in this tutorial, you will also want access to some UHF passive RFID tags, and optionally, an antenna for extended range, and an attachment cable.

UHF RFID Antenna (RP-TNC)

WRL-

This is your solution when you absolutely, positively need to get the most out of an antenna for your next RFID project. This…

$45.50

Interface Cable RP-SMA to U.FL - 100mm

WRL-

Commonly used to attach WiFi, Bluetooth, or nRFxxx based devices to a 2.4GHz antenna.

$4.95

Interface Cable for RP-TNC to RP-SMA - 1m

CAB-

This is a very simple 1m long Male RP-TNC to Male RP-SMA cable. We like to use this cable to connect our ultra high-frequency…

$7.25

UHF RFID Tag (Set of 5)

WRL-

Ever wanted to play with those newfangled RFID tags? Although it's been around for a while, the technology has been extremely…

Retired

UHF RFID Tag - Adhesive (Set of 5)

WRL-

Ever wanted to play with those newfangled RFID tags? Although it's been around for a while, the technology has been extremely…

Retired

UHF RFID Tags - Adhesive (5 Pack)

WRL-

These paper-thin, adhesive EPCglobal Gen2 tags work with our RFID readers and can be stuck to practically anything.

Retired

Suggested Reading

If you aren't familiar with the following concepts, we recommend checking out these tutorials before continuing.

Serial Communication

Asynchronous serial communication concepts: packets, signal levels, baud rates, UARTs and more!

Logic Levels

Learn the difference between 3.3V and 5V devices and logic levels.

RFID Basics

Dive into the basics of Radio Frequency Identification (RFID) technology.

Three Quick Tips About Using U.FL

Quick tips regarding how to connect, protect, and disconnect U.FL connectors.

Hardware Overview

The main component of the SRTR is the M6E-NANO module from ThingMagic. ThingMagic has been in the multi-tag RFID business for years. Their newly release M6E-NANO module has reduced the cost of entry while maintaining many of the key features of multi-tag reading.

The M6E-NANO works with common, low cost, passive, Gen2 UHF tags available from a variety of online vendors in a variety of shapes and sizes. We offer two tags, with and without adhesive backing. Both have 64 bytes of user writable memory.

This module runs at 5V and pulls its power from the 5V lines on the breakout board.

Serial Interface

The M6E-NANO module is controlled via serial. There are two serial connections available: via a 6-pin FTDI compatible connection and via the TX/RX pins on the Arduino shield.

Serial Selection Switch

A switch is provided to allow the user to select between Hardware Serial (HW-UART) and Software serial (SW-UART) pins on the Arduino-compatible footprint. Set this switch to SW-UART for all the example Arduino sketches provided below. If you are using an external USB to Serial connection this switch has no effect.

Switch allows user to select between hardware and software serial

Enable and GPIOs

The M6E uses an internal DC to DC converter to provide itself with power. When the EN (enable) pin is pulled low the DC/DC converter is turned off and the module does a hard reset. EN can be left unconnected for normal operation.

Bank of Enable and GPIO pins

The NANO uses a SAMD21 as its main processor. The LV2, LV3, and LV4 pins are connected to the GPIOs on the SAMD21. They can be set high/low but these features are not yet supported in software.

Note: The EN and GPIO1 pins are 5V tolerant. The LV2, LV3, and LV4 pins are 3.3V only.

Buzzer

A buzzer is connected to pins 9 and 10 and can be PWM controlled to produce a tone.

The most common use is to beep when a new tag is detected. This makes range testing much easier as you can bring the tag into the field until you hear a beep.

JP1

A jumper on the rear of the board labeled JP1 is closed by default allowing the board to be powered via the USB to Serial converter.

JP1 Jumper

By default the JP1 Jumper is closed allowing the USB to Serial converter provide power to the SRTR. Cut this jumper if you are powering the board with a LiPo battery or other external power supply. This will isolate the USB to Serial converter for communication only.

Ground Plane Heatsink

The SRTR has a large ground plane heatsink on the bottom of the shield.

The exposed copper pour along with two mounting holes allow the connection to a heatsink such as a chassis or block of metal. Your board should have also shipped with a piece of Thermal Gap Filler. Please check out the Thermal Considerations section for more information on this.

Antennas

The Nano M6E is a powerful transmitter capable of outputting up to 27dBm! That's a lot.

The SRTR comes with an on-board PCB trace antenna, and a u.FL connector for an external antenna. An ANT Select solder jumper allows users to select between the two options. Check the Using an External Antenna section for more information on this.

In this jumper configuration the PCB antenna is selected

The PCB antenna is an excellent way to begin to experiment with UHF RFID. You’ll be able to read and write tags that are within 1 to 2 feet of the PCB. If you would prefer to use an external antenna, you can find more information in the Using an External Antenna section.

Warning: Ensure that personnel do not stand in the radiation beam of the antenna unless they are more than 21cm away from the face of the antenna (to adhere to FCC limits for long-term exposure). See Datasheet for more information.

Hardware Hookup

There are two main options for hooking up this board. Depending on how you plan to communicate with the board will change which method is recommended for you.

We recommend reviewing the through-hole soldering tutorial and how to work with wire if you are not familiar with basic soldering techniques.

Communicating via USB UART Serial

To communicate with a computer via USB Serial we recommend the Serial Basic or other USB UART boards. To connect, you will need to solder a 6-pin right angle header to the Serial port section of the SRTR.

Note: The FTDI Cable products are known to be incompatible with the Simultaneous RFID Reader. Please use the CH340 Serial Basic Breakout or other serial interface.

Plug in your serial breakout board via USB to your computer, and hook it up to the right angle headers that you just soldered to your SRTR.

Communicating via Arduino-Compatible Board

To use the SRTR as an Arduino shield, you will need solder stackable headers onto the shield. Check out our tutorial on soldering stackable headers if you are not sure how to do this.

We've used the SRTR with the RedBoard and other Uno compatible boards. 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. Additional pins will work for software RX but see the Softwareserial page for more information.

Shield with stackable headers installed. Note: The ground plane heat sink may connect with the Arduino ISP headers causing a short. We recommend adding the piece of gray, non-conductive thermal pap filler that shipped with your shield to prevent a short.

Next, install the shield onto the Arduino of your choice. We use the SparkFun RedBoard.

Thermal Gap Filler isolating the thermal pour from the RedBoard ICSP pins

Using an External Antenna

Swapping from the PCB antenna to an external antenna can help with the range of your SRTR, but there are a few things to keep in mind before making that leap.

FCC Regulations

From page 42 of the Nano Design Guide:

No additional transmitter-compliance testing is required if the module is operated with the same type of antenna as listed in the FCC filing as long as it has equal or lower gain than the antenna listed. Equivalent antennas must be of the same general type (e.g. dipole, circularly polarized patch, etc.), must be of equal or less gain than an antenna previously authorized under the same FCC ID, and must have similar in band and out of band characteristics (consult specification sheet for cut-off frequencies).

The PCB trace antenna is a patch antenna with much lower gain than the list of approved antennas, therefore, the SRTR evaluation board as-is can be used in the field without additional FCC testing.

The u.FL connector is an easy way to connect higher gain directional antennas. However, there are stipulations as to what external antennas can be used and additional FCC certifications may be required.

Want more information on UHF Rfid Reader Modules? Feel free to contact us.

Note: The onboard PCB antenna complies with the FCC regulation.

Below is a list of antennas that ThingMagic has tested and gotten approved by the FCC. You may use a different antenna from the ones in the list but it must be of equal or less gain than an antenna previously authorized under the same FCC ID, and must have similar in band and out of band characteristics (consult specification sheet for cut-off frequencies) in order to use it in a product without additional testing.

List of approved antennas

Attaching the External Antenna

If you want to switch from the onboard antenna, you will need to change the antenna jumpers around to enable the u.FL connector.

Note: You do not need an external antenna for most examples in this hookup guide; however, you will want to use an external antenna for Example 10. If you have never worked with solder jumpers before or would like some tips or a refresher, we highly recommend reading through this tutorial:

How to Work with Jumper Pads and PCB Traces

April 2, Handling PCB jumper pads and traces is an essential skill. Learn how to cut a PCB trace, add a solder jumper between pads to reroute connections, and repair a trace with the green wire method if a trace is damaged.

Using some solder wick, clear the solder jumper to the trace antenna and close the solder jumper to the u.FL connector by adding a blob of solder.

ANT Select modified to connect the Nano module to the u.FL connector

Next, attach the u.FL to the RP-SMA connector cable. Because this connector is fragile we recommend either taping or hot gluing the sheath of the cable to the PCB. This will help prevent damage to the u.FL connector in case the cable gets pulled on.

To get the best range we recommend attaching an external high-gain antenna to a tri-pod of some sort. If you only have a desk, that's ok too.

We used the included hardware with the antenna to attach it to a leg of the tripod.

Now connect the RP-SMA to RP-TNC cable. And finally connect the RP-TNC to the external antenna. You can use a different UHF RFID antenna but you will need to have the correct connectors and cables to go from the u.FL connector on the PCB to the connector on your specific antenna.

u.FL connector to RP-SMA to RP-TNC Don't Forget! Ensure that personnel do not stand in the radiation beam of the antenna unless they are more than 21cm away from the face of the antenna (to adhere to FCC limits for long-term exposure). See Datasheet for more information.

Power Supply Considerations

The SRTR can be powered from the target board, the USB connection, or an external power supply.

Don't Forget! Unless you are using USB power to power the SRTR, don't forget to cut JP1 on the bottom of the board if you are communicating with the board with a USB to Serial connection.

USB Power (Good)

Standard USB ports will source up to 500mA. Because the Nano module can pull up to 720mA when powered from 5V the module will brown out and reset when operating at full read power. However, if read power is kept below 5dBm the SRTR can be evaluated using a simple USB-to-serial connection such as the FTDI Basic or Serial Basic.

USB power only. Limited to 5dBm read power.

External/Battery Power (Better)

There is a footprint available to install a 2mm JST connector or a 3.5mm screw terminal. LiPos work well to power the module, however, if using a LiPo battery (3.7V nominal voltage) you can expect to use more than mA during full read power. Pick your battery size accordingly. Alternatively, the 3.5mm screw terminal may be installed to connect to external power such as a bench power supply.

LiPo Battery powering the RFID shield

Target Power (Best)

Powering the SRTR over the 5V pin from an Arduino works well if the Arduino has an external power supply such as a 5V wall adapter. If the Arduino is powered only by USB the module will brown out under full read power. It's important to note that the shield gets its power from the 5V pin which means it's drawing power from the onboard regulator of whatever platform you are using. 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.

RedBoard with 5V adapter attached

Thermal Considerations

At full read power over extended periods of time the module can reach temperatures greater than 85C (185F). This is extremely toasty. The module will automatically throttle itself to prevent permanent damage from heat. The SparkFun Simultaneous RFID Tag Reader shield provides enough ground plane heatsinking to allow the module to operate at full read power for tens of minutes. If you plan to operate the module at full power for extended periods of time we recommend attaching a heatsink.

You can get the 1:1 dimensional drawing of the shield here. The dimensions of the exposed thermal and mounting holes are shown.

Dimensional Drawing of the RFID Shield showing the mounting holes and exposed thermal pad

In most prototyping applications heatsinking won’t be required. However, if you have heat sensitive items near the module (such as temperature or humidity sensors) they may be influenced by the module. If you are planning to install the module for long term operation we recommend attaching a heatsink with thermal compound and 4-40 screws and nuts. Alternatively, you may install the Thermal Gap Filler that was shipped with your shield between the SRTR and the heatsink.

The module also supports changing read duty cycle to reduce the heat dissipation as well. Check out the M6E-NANO datasheet for more information.

Software Options

There are three ways of controlling the SRTR:

  • We recommend starting with the software called Universal Reader Assistant (Windows only) with a USB to Serial connection.
  • Arduino sketches to access the basic read/write features of the board. This is a complex device so we’ve included many example sketches to get you up and running with the main features. You'll get the example sketches when you download and install the library.
  • Mercury API is ThingMagic’s extensive software libraries in C, Java, and .NET. This enables BeagleBones, Raspberry Pi’s, and other single board computers to get access to the full suite of features. The use of Mercury API is beyond the scope of this tutorial.

Using the Universal Reader Assistant

If you’re a Windows user the Universal Reader Assistant is a great way to get up and playing with the full capabilities of the M6E-NANO. The downside is that it’s only currently available for Windows.

Start by downloading the Universal Reader Assistant (URA). 32-bit and 64-bit versions are available.

Once downloaded and installed, hover over the right side of the window. The Setting/Status control panel will open up. Click on the thumbtack icon to keep it open.

Expand the Connect menu and select Serial Reader and drop down the menu to select your COM port. Click Connect. The module will be pinged over the serial connection to verify its existence.

Next, select your Region. Since we are in North America, we've selected NA2.

Note: The ‘Transport Logging’ checkbox is very handy. Select this box and all the serial communication will be recorded to a log file. These HEX bytes can be deciphered and recreated using an Arduino or other microcontroller if you need a particular capability or feature that is not supported in the SparkFun Simultaneous RFID Reader Arduino library.

Next open the Read/Write Options and click on 1 under Antennas.

Finally, open the Reader Power Settings tab and select your Read Power. Tune this setting down to 5dBm. If you want to power the board from USB then use a power setting below 5dBm. 27dBm is ok to use only if you have external power (more than one USB port can provide). See the Power Supply Considerations section for more information.

Now we’re ready to read! Click on the Read button at the top. Bring some RFID tags near the reader and you'll see them appear.

There are a ton of features to the Nano from ThingMagic. Poke around the Universal Reader Assistant to learn more. Write EPC and User Memory are two of the most commonly used tabs.

Thermal Throttling: If you see this window pop up it means the module is reporting a temperature-limit fault condition.

The module has an internal temperature sensor and will protect itself from permanent damage. You’ll need to lower your read power or add heatsinking. See the Thermal Considerations section for more information.

Using the Arduino Library

We've written an Arduino library for the M6E-NANO RFID module which takes care of all of the serial communication, byte manipulations, and CRC verifications.

Note: This example assumes you are using the latest version of the Arduino IDE on your desktop. If this is your first time using Arduino, please review our tutorial on installing the Arduino IDE.

The easiest way to install the library is through the Arduino Library manager by searching SparkFun RFID. If you have not previously installed an Arduino library, please check out our tutorial on installing an Arduino library.

You can also manually install the library with the following download from GitHub.

Once you’ve installed the library, you should see the Example sketches by navigating to File > Examples > SparkFun Simultaneous RFID Tag Reader Library > Examples.

Arduino Library Settings

Arduino Library Update: We've updated this library to work with this board and the Simultaneous RFID Reader - M7E Hecto. This version of the library includes a few new definitions for user to select which module they're using, which serial (software or hardware), and the RFID reader's baud rate.

The latest release of this library includes new definitions users should take note of before uploading and using the examples.

Serial Selection

When using this board with Software Serial uncomment the following lines and adjust the pins for RX/TX if necessary:

#include 
SoftwareSerial softSerial(2, 3); //RX, TX

The next option selects which type of serial is used. The code lists a couple of examples for both software serial and hardware so adjust the definition as needed. For example, if you're using a software serial library, define this as softserial. If you're using a hardware serial port on your development board, select the serial port (eg. Serial1) as shown below:

// #define rfidSerial softSerial // Software serial (eg. Arudino Uno or SparkFun RedBoard)
#define rfidSerial Serial1 // Hardware serial (eg. ESP32 or Teensy)

Baud Rate Selection

Next, you'll want to define the baud rate for rfidBaud. We recommend using the settings shown below with when using software serial and when using hardware serial:

// #define rfidBaud 
#define rfidBaud 

Module Selection

Since this library supports both the M6E Nano and M7E Hecto, you'll need to define which module you are using. Adjust or comment/uncomment the moduleType definition to set it to the correct module:

// #define moduleType ThingMagic_M6E_NANO
#define moduleType ThingMagic_M7E_HECTO

Example 1 - Constant Read

Make sure you have set up your SRTR according to the directions in the Hardware Hookup section, and have installed your shield on an Arduino-compatible board.

Be sure the serial selection switch is set to Software. This connects pins 2/3 of the Arduino (for softSerial) to the serial port on the Nano, and allows the shield to work with the following Arduino examples.

UART Selection Switch Set to SW-UART.

Once you've got the shield attached and library installed, open the Example1 Constant Read sketch. You can find it under

File > Examples > SparkFun Simultaneous RFID Tag Reader Library > Examples

Then load it onto your RedBoard. Open your favorite Serial Terminal to see the printed values. The first example demonstrates how to scan constantly and report any tags in the vicinity.

This example outputs the EPC from any tag in the vicinity. Note there are two different tags shown in this list.

Let's look at the setup code:

if (setupNano() == false) //Configure nano to run at bps
{
  Serial.println(F("Module failed to respond. Please check wiring."));
  while (1); //Freeze!
}

nano.setRegion(REGION_NORTHAMERICA); //Set to North America

nano.setReadPower(); //15.00 dBm.
//Max Read TX Power is 27.00 dBm and may cause temperature-limit throttling

nano.startReading(); //Begin scanning for tags

Serial.println("Go!");

The Nano communicates over serial at bps at power up. Because we are using software serial on pins 2/3 on the RedBoard we need to slow communication down to bps. setupNano() is a local function that will tell the Nano to go to bps and then verify that communication is open.

nano.setRegion(REGION_NORTHAMERICA); //Set to North America

Because different countries have different regulations for UHF RFID .setRegion() is used to configure the frequencies to operate within. Allowable regions are:

  • REGION_INDIA
  • REGION_JAPAN
  • REGION_CHINA
  • REGION_EUROPE
  • REGION_KOREA
  • REGION_AUSTRALIA
  • REGION_NEWZEALAND
  • REGION_NORTHAMERICA
  • REGION_OPEN

Select the region closest to you or establish which regulations within your country match one of the available regions.

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

The module is quite powerful and is capable of outputting 27dBm. By default we .setReadPower() to 5dBm so that the examples can be operated from a USB port without extra power. If you have a good power supply such as a LiPo battery or 2 amp wall supply you can increase the read power. See Power Supply Considerations and Thermal Considerations for more information about pushing the envelope.

nano.startReading(); //Begin scanning for tags

The .startReading() function tells the module to constantly scan for new tags and output any tag detected. Once a tag is detected the various bits of tag information (EPC, RSSI, etc) is parsed out of the response and printed.

Why am I getting "Module failed to respond"? Do you have the switch in the SW position? Are you using a Leonardo or Mega? Unfortunately the Leonardo and Mega don't support software serial RX on pin 2 so you'll need to wire from pin 2 on the shield to pin D11. Additional pins will work for software RX but see the SoftwareSerial page for more information.

Example 2 - Read EPC

While a constant read is fun and interactive, it can be an overwhelming amount of data for some projects. The 2nd example shows how to do a single shot read.

If you are unfamiliar with how RFID tag memories work, please review our tutorial here.

File > Examples > SparkFun Simultaneous RFID Tag Reader Library > Examples

Open Example 2 from the examples menu. Then load it onto your RedBoard or Uno.

Tag EPC LULZ detected!

.readTagEPC() is the main function call of this example. Pass it an array of bytes (in almost all cases EPCs are 12 bytes), the size of the array (12), and an amount of time to scan before giving up (500ms is default). The function will return with RESPONSE_SUCCESS if a tag is detected and the EPC will be stored in the array you gave it.

responseType = nano.readTagEPC(myEPC, myEPClength, 500); //Scan for a new tag up to 500ms
The buzzer is connected to pins 9 and 10
//Beep! Piano keys to frequencies: http://www.sengpielaudio.com/KeyboardAndFrequencies.gif
tone(BUZZER1, , 150); //C
delay(150);
tone(BUZZER1, , 150); //D
delay(150);
tone(BUZZER1, , 150); //E
delay(150);

We've included a buzzer on the shield to allow feedback to the user. In this example we play a simple three note melody to indicate a tag has been detected.

Example 3 - Write EPC

It's time to do what used to be impossible: Write to a tag!

Load Example 3 to your RedBoard, and open up your serial monitor.

This example shows how to write your own EPC to a tag.

char stringEPC[] = "Hello!"; //You can only write even number of bytes
byte responseType = nano.writeTagEPC(stringEPC, sizeof(stringEPC) - 1); //The -1 shaves off the \0 found at the end of string

Remember, you cannot change the TID of a tag (that's its truly unique tag ID), but changing the EPC is a great way to keep track of which tag is which. Setting EPCs to WRENCH or PILL#317 make it easier to visually identify in code which tag you are looking for and need to respond to.

nano.setWritePower(500); //5.00 dBm. Higher values may cause USB port to brown out
//Max Write TX Power is 27.00 dBm and may cause temperature-limit throttling

This example introduces a new function .setWritePower(). Similar to setReadPower, this sets the power level when writing to a tag.

If you are using an external power supply and need to write to a tag feel free to boost this value to 20 or even 27dBm. Because you will rarely be writing to a tag the module shouldn't reach temperature throttling.

Example 4 - Read User Data

Example 4 shows how to detect and read the available user memory.

Note that not all UHF RFID tags have user memory, and therefore may not be configurable.

Example 5 - Write User Data

The User memory area is a fun place to play. A given UHF tag can have 0 to 64 bytes of editable User memory. Example 5 shows how to edit the User Data.

char testData[] = "ACBD"; //Must be even number of bytes. "Hello" is recorded as "Hell".
byte responseType = nano.writeUserData(testData, sizeof(testData) - 1); //The -1 shaves off the \0 found at the end of string

Give .writeUserData() an array of characters and it will be recorded to the first tag detected. A few bytes of editable memory may not sound like a lot be remember these are passive tags - no batteries required! You can query a tag for the user's dietary restrictions. Or you could adjust the lighting depending on who walked in the room. Or you could set the time at which a medication must be taken. Perhaps a prosthetic leg goes into a more aggressive mode when basketball shorts are worn. The applications get far reaching.

Examples 6, 7, 8 - Passwords

The Example6-Read Passwords example will display the Access and Kill passwords of a given tag. The Access password allows a user to lock a tag, preventing modification of various parts of the memory (EPC, User, etc). The Kill password is needed to disable a tag. Both passwords are 0x by default.

Passwords are 0x by default

Example7-Write Passwords will show you how to write new passwords for the Access and Kill portions of memory.

New passwords have been written!

To verify these new passwords have been written load Example6 again.

The new passwords are correctly recorded

It may seem odd that you can view the passwords. The Gen2 protocol has quite a few methods to lock out various portions of the memory preventing them from being read. Once the Access password is set the ability to read passwords, read user memory, and read portions of the EPC can all be controlled; this is called locking. Currently, locking is not supported in the Arduino library but it is available in the URA and in the Mercury API.

The final Example8-Kill Tag is the really fun one. It's pretty rare that you'll need to kill a tag but we find the concept fascinating and wanted to build in support for it.

Note: Killing a tag blows an internal fuse to the IC and makes the tag irreversibly dead.

It is very good to see that the protocol has the kill feature. Killing a tag makes sense after an item has been purchased (gallon of milk) or a process has been completed (dry cleaning has been picked up). By limiting the life-span of a tag you can help protect end user privacy and tracking.

The Gen2 protocol is well written and prevents a user from walking into a Wal-Mart and blasting away all the tags that haven't been configured. The default Kill password is all 0s but any tag will ignore the kill command with the password set to 0s. Therefore, you must first write a non-zero kill password (using Example7) then you must issue the kill command using the new password.

Tag is now D E D, dead.

If you're very paranoid about someone else using an UHF RFID reader/writer to reconfigure your tags consider writing new Access and Kill passwords to your tags then use the Universal Reader Assistant to lock the tags.

Example 9 - Read TID

TIDs are the truly unique IDs assigned to each tag (and are not editable). They are 20 bytes long so they're a bit unwieldy but if you need them Example 9 will show you how.

nano.enableDebugging(); //Turns on commands sent to and heard from RFID module

This example includes a new function called .enableDebugging(). This displays the commands sent to and responses from the RFID module. The counter function is .disableDebugging(). It's often helpful to see what commands are being sent to the module. Debugging also exposes how the module responded: Did it time out? Did it return an unknown response?

You can pass a port to .enableDebugging(). For example, nano.enableDebugging(Serial1); will enable and output debug messages to port Serial1. If you leave it blank debug messages will be piped to Serial by default.

When experimenting with features outside the scope of the Arduino library it is best to enable Transport Logging inside the URA to see what commands the URA is sending to the module. Within a new Arduino sketch send duplicates of the commands the URA is sending. The debug statements will help verify what you are sending and what was received.

Example 10 - Range Test

The PCB antenna on the shield will allow you to read tags up to around 24 inches at max read power (27dBm). If you really want to push the limit of read range you'll need an external antenna. With a good external antenna we've seen read distances of up to 16 feet (4.5 meters)!

Keep in Mind: Ensure that personnel do not stand in the radiation beam of the antenna unless they are more than 21cm away from the face of the antenna (to adhere to FCC limits for long-term exposure). See Datasheet for more information.

Load Example10-Range Test onto your Arduino. As you bring a tag into range of the antenna you should hear a high pitched beep. When a tag is no longer detected you should hear a low pitched beep.

We are able to get more than 16 feet (4.5m) using the external antenna, with an external power supply (LiPo 1Ah battery), using SparkFun interface cables, and the URA software with the output power set to 27dBm. We didn't heat sink the module but it quickly approached 60C as we were testing over the course of 5 minutes.

Large 7MB image showing distance from reader to tag

This is a large image but if you open the image in a new tab and look closely you'll see the passive RFID tag hanging off the jaw of the T-Rex. Each carpet square is 2 feet and we were able to constantly read the tag more than 16 feet away! The NANO M6E is truly amazing.

But I'm not getting 16 feet!?

16 feet is really the best, most ideal situation. Our demonstration has no metal, no water, the tag is aligned with the antenna over open air and the power supply is as clean and powerful as possible (battery at 27dBm). Your real world results will vary greatly depending on many factors. It's best to get the hardware and test in the environment your application will be within.

Check out our troubleshooting recommendations for RFID systems here.

Tag Location

Can I tell where a tag is located? Can I use UHF RFID for location within a room?

The short answer is no. The reader emits a ‘bubble’ of energy and any tag within that bubble will be energized and report itself to the reader. You’ll know if a tag is in the bubble but you won’t be able to tell where it is within the bubble. If your reader is capable of reading tags from 16 feet away, that’s amazing, but that means you won’t know if the tag is 1 foot or 10 feet from the reader. There is a caveat: the reader reports the RSSI (basically signal strength) for each tag. This means you’ll be able to tell qualitatively which tag is closer to the reader (tag 1 has a stronger signal so it’s roughly closer to the read than tag 2) but you won’t be able to tell quantitatively (you cannot tell if tag 1 is 1.5 feet or 2 feet from the reader).

Resources and Going Further

For additional help with this project, please check out the following resources.

  • M6E-NANO Design Guide- technical information about the module.
  • EPC and RFID standards - set by GS1, the governing body behind RFID (and barcodes too!)
  • RFID V2.0.1 Protocol
  • ThingMagic App Note - Documentation for running the Mercury API on an Arduino Mega.
  • SparkFun Simultaneous RFID Tag Reader Arduino Library Repository - Arduino Library files
  • GitHub Hardware Repository - Hardware design files
  • Eagle Files - .ZIP download of the schematic and board files

We hope you enjoyed reading this tutorial! Have fun with your RFID projects! If you need more inspiration, check out these other tutorials from SparkFun:

SparkFun Blocks for Intel® Edison - Base Block

A quick overview of the features of the Base Block.

ReconBot with the Tessel 2

Build a robot with the Tessel 2 that you can control from a browser on your or laptop.

ESP32 LoRa 1-CH Gateway, LoRaWAN, and the Things Network

Using the ESP32 LoRa 1-CH Gateway as a gateway and device, and pushing data to The Things Network.

AzureWave Thing Plus (AW-CU488) Hookup Guide

The SparkFun AzureWave Thing Plus is a Feather form-factor development board equipped with the AW-CU488. We'll highlight key features of the board and show you to get started with the development board. A few Arduino examples will be highlighted to connect to a WiFi router, calculate the Fast Fourier Transform (FFT) from an input microphone, output an analog signal to a speaker, and connect an Qwiic-enabled device.

Interested in more RFID?

We've got a page just for you! Get an overview of the basics of how RFID works, the hardware needed and tutorials to get you started.

Take me there!

If you are looking for more details, kindly visit UHF RFID Printer Module.

Comments
Comments

0/2000

Get in Touch
Guest Posts