RFID. How to reach maximum distance?



  • 0_1636391170145_2021.11.04_11.22.50_IMG - setup.jpg

    Hello. I'm using RFID U107 (or JRD-4035 - I don't know how it's properly called) for my project.
    My setup includes RFID, Adafruit ESP32 Feather and a board that transforms 5V-logic to 3,3V-logic (and vice versa).
    In the description for RFID is noticed that the distance for recognition is up to 1.5-2 meters, but in my case it's up to 30-50 cm. Can you help and explain how to reach the distance of 1.5-2 m, please?

    For my work I use an example from here: https://github.com/m5stack/M5-ProductExampleCodes/tree/master/Unit/UHF_RFID

    I tried to change transmitting power to its maximum by using a function "Set_transmission_Power" and found that the maximum power is 2600 by reading set value with a function "Read_transmitting_power". So I'm using "Set_transmission_Power(2600)" at the moment.
    Also I tried to change "Region" to EU, but this function ("Set_up_work_area(3)") doesn't work. I read this value after configuration and it is "1" (CH). I don't know if this is important. If it can do working distance larger I can try to find why this function doesn't work as expected.
    And I found the function "Sets_the_receiv_demodulator_parameters" but don't know what parameters I should use to set maximum working distance.
    I have a set of different tags and of course the bigger tag is the larger the recognition distance I get. If the problem is in tags size what tags do you recommend?

    My setup code:

    void setup()
    {
      Serial.begin(115200);
      Serial.println("Program started!");
      Serial1.begin(115200, SERIAL_8N1, SERIAL1_RXPIN, SERIAL1_TXPIN);
      Serial.println("Second Serial activated!");
    
      RFID._debug = 1;
    
    // UHF_RFID set UHF_RFID设置
      Serial.println(RFID.Set_transmission_Power(2600));
      delay(100);
      delay(100);
      Serial.println(RFID.Set_up_work_area(3));
      delay(100);
      ReadInfo transmissionPower = RFID.Read_transmitting_power();
      Serial.print("Pow: "); Serial.println(transmissionPower.Pow);
      delay(100);
      transmissionPower = RFID.Read_working_area();
      Serial.print("Region: "); Serial.println(transmissionPower.Region);
      Serial.println(RFID.Set_the_Select_mode());
      RFID.Delay(100);
      RFID.Readcallback();
      RFID.clean_data();
      
    // Prompted to connect to UHF_RFID 提示连接UHF_RFID
      Serial.println("Please connect UHF_RFID to Port C");
      
    // Determined whether to connect to UHF_RFID 判断是否连接UHF_RFID
      String soft_version;
      soft_version = RFID.Query_software_version();
      while(soft_version.indexOf("V2.3.5") == -1)
      {
        RFID.clean_data();
        Serial.println("Waiting...");
        RFID.Delay(150);
        Serial.println("Waiting...");
        RFID.Delay(150);
        soft_version = RFID.Query_software_version();
      }
    
      Serial.println("Please approach the RFID card you need to use");
      Serial.print("Software version: "); Serial.println(soft_version);
      
    }
    

    0_1636391105740_2021.11.05_15.11.53_IMG - tags.jpg

    To summarize my questions are:

    1. The maximum transmission power is 2600?
    2. Is the "Region" important for the recognition distance? The same question to the working channel because I don't set it.
    3. What parameters should I use for the function "Sets_the_receiv_demodulator_parameters" if I want to reach the maximum distance?
    4. How I can reach the maximum distance of 1.5-2 meters (thanks for any advice)?
    5. Can I find something like a datasheet for this RFID unit because the description I see on the product page isn't enough to understand how it works and how properly to work with it?


  • @oleksii
    What tags are you using?
    What reading distance can you currently archive?