<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[UHF-RFID JRD-4032 – Short Reading Distance Issue]]></title><description><![CDATA[<p dir="auto">Dear M5Stack Community,</p>
<p dir="auto">I recently purchased the JRD-4032 UHF-RFID modules from M5stack store and am currently using one in a project based on a standard ESP32 (Arduino IDE) together with your official UHF-RFID library.</p>
<p dir="auto">At the moment, I am experiencing significantly lower reading distances than specified in your documentation. I would greatly appreciate your support in resolving this issue, as I am working under time constraints due to project deadlines.</p>
<p dir="auto"><strong>Current Setup:</strong></p>
<ul>
<li>Controller: Standard ESP32</li>
<li>RFID Module: JRD-4032 UHF-RFID</li>
<li>Development Environment: Arduino IDE</li>
<li>Library: Official M5Stack UHF-RFID library</li>
<li>Main functions used:
<ul>
<li>EPC scanning (pollingOnce and pollingMultiple)</li>
<li>Memory read (readCard)</li>
<li>Memory write (writeCard)</li>
<li>(and of course other initializing functions and the select function for the readCard and writeCard)</li>
</ul>
</li>
</ul>
<p dir="auto"><strong>Observed Reading Distance:</strong></p>
<ul>
<li>With included M5Stack UHF tags: approx. 40 cm maximum</li>
<li>With third-party Class Gen1 tags (860–960 MHz): approx. 50 cm maximum (Link: <a href="https://www.amazon.de/-/en/860-960MHz-Warehouse-Parking-Logistics-Applications/dp/B07H94DGC2?th=1" target="_blank" rel="noopener noreferrer nofollow ugc">https://www.amazon.de/-/en/860-960MHz-Warehouse-Parking-Logistics-Applications/dp/B07H94DGC2?th=1</a>)</li>
</ul>
<p dir="auto">This is considerably below the 1.5–2 m stable range stated in the documentation.</p>
<p dir="auto"><strong>Troubleshooting Steps Taken:</strong></p>
<ol>
<li>
<p dir="auto"><strong>Transmit Power</strong></p>
<p dir="auto">I verified in both the documentation and the library source code that the transmit power is set to maximum in my implementation.</p>
</li>
<li>
<p dir="auto"><strong>Frequency Consideration</strong></p>
<p dir="auto">I understand from your FAQ that the antenna frequency is fixed at 922 MHz. Since I am currently only testing and have not modified the frequency in software, both hardware and software should still be operating at 922 MHz.</p>
</li>
<li>
<p dir="auto"><strong>Power Supply Investigation</strong></p>
<ul>
<li>
<p dir="auto">Initial setup: RFID module powered directly from the ESP32 (3.3V).</p>
<p dir="auto">→ Reading distance: approx. 30 cm or less</p>
</li>
<li>
<p dir="auto">Second setup: External stable power supply (separate regulated source). (Circuit schema below)</p>
<p dir="auto">→ Reading distance improved to 40–50 cm</p>
</li>
</ul>
</li>
</ol>
<p dir="auto">This suggests that insufficient current may have been affecting performance initially. However, even with a dedicated external power source, the reading distance remains far below the expected range.</p>
<p dir="auto">Could you please advise:</p>
<ul>
<li>What current and voltage specifications are required for optimal performance?</li>
<li>Whether additional hardware adjustments (e.g., antenna matching, grounding considerations) are necessary?</li>
<li>If there are recommended configuration settings for EU operation that may improve range?</li>
</ul>
<p dir="auto">Additionally, I would like to clarify:</p>
<p dir="auto">Does the achievable reading distance differ depending on the function used?</p>
<ul>
<li>EPC scan only (pollingOnce / pollingMultiple)</li>
<li>Reading user memory (readCard)</li>
<li>Writing user memory (writeCard)</li>
</ul>
<pre><code>#include &lt;Arduino.h&gt;
#include "UNIT_UHF_RFID.h"

Unit_UHF_RFID uhf;
String info = "";

// UART pins for ESP32
#define RFID_TX_PIN 16
#define RFID_RX_PIN 17

void setup() {
    // USB Serial Monitor
    Serial.begin(115200);
    delay(1000);
    Serial.println("ESP32 UHF RFID starting...");

    // Start RFID module
    uhf.begin(&amp;Serial2, 115200, RFID_TX_PIN, RFID_RX_PIN, false);

    // Check module version
    while (true) {
        info = uhf.getVersion();
        if (info != "ERROR") {
            Serial.print("RFID Version: ");
            Serial.println(info);
            break;
        }
        Serial.println("Waiting for RFID module...");
        delay(500);
    }

    // Set TX power
    uhf.setTxPower(2600);
    Serial.println("RFID initialized successfully");
}

uint8_t write_buffer[] = {0xab, 0xcd, 0xef, 0xdd};
uint8_t read_buffer[4] = {0};

void loop() {
    Serial.println("\nPolling once...");
    uint8_t result = uhf.pollingMultiple(100);
    Serial.print("Scan result: ");
    Serial.println(result);

    if (result &gt; 0) {
        for (uint8_t i = 0; i &lt; result; i++) {
            Serial.print("PC: ");
            Serial.println(uhf.cards[i].pc_str);

            Serial.print("RSSI: ");
            Serial.println(uhf.cards[i].rssi_str);

            Serial.print("EPC: ");
            Serial.println(uhf.cards[i].epc_str);

            Serial.println("----------------------");
        }

        // Select first card
        Serial.println("Selecting first tag...");
        if (uhf.select(uhf.cards[0].epc)) {
            Serial.println("Select OK");
        } else {
            Serial.println("Select ERROR");
        }

        Serial.print("Selected EPC: ");
        Serial.println(uhf.selectInfo());

        // Write data
        Serial.println("Writing data...");
        if (uhf.writeCard(write_buffer, sizeof(write_buffer), 0x04, 0, 0x00000000)) {
            Serial.println("Write OK");
        } else {
            Serial.println("Write ERROR");
        }

        // Read data
        Serial.println("Reading data...");
        if (uhf.readCard(read_buffer, sizeof(read_buffer), 0x04, 0, 0x00000000)) {
            Serial.println("Read OK");
            Serial.print("Data: ");
            for (uint8_t i = 0; i &lt; sizeof(read_buffer); i++) {
                Serial.printf("%02X ", read_buffer[i]);
            }
            Serial.println();
        } else {
            Serial.println("Read ERROR");
        }
    }

    delay(100);
}
</code></pre>
<p dir="auto">I am using this library:<br />
<a href="https://github.com/m5stack/M5Unit-UHF-RFID/tree/master" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/m5stack/M5Unit-UHF-RFID/tree/master</a></p>
<p dir="auto"><img src="/assets/uploads/files/1771078396019-circuit-2.jpg" alt="Circuit 2.jpg" class=" img-fluid img-markdown" /></p>
]]></description><link>https://community.m5stack.com/topic/8084/uhf-rfid-jrd-4032-short-reading-distance-issue</link><generator>RSS for Node</generator><lastBuildDate>Thu, 30 Apr 2026 03:11:23 GMT</lastBuildDate><atom:link href="https://community.m5stack.com/topic/8084.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 14 Feb 2026 14:14:46 GMT</pubDate><ttl>60</ttl></channel></rss>