Animal RFID setup - how to read serial from a sensor that has only TX but no RX?

Dear all,
I love animals and often I encounter cats in my village. I therefore decided to build my own pet-RFID-decoder in order to rapidly report them to the TASSO.NET organisation.

After purchasing the wrong RFID module (134 kHz tags do not work with 125 kHz readers), I found what should be the right one: RFID module for 134,2 kHz - for animals.

Its core is a squared PCB with 2 Chips, of which however I could not find much since they have no information printed on them.

(picture "above" from the vendor)

All what the online documentation says, is that it sends serial data at 9600 and can be directly connected to the serial port of any controller.

(picture "below" from the vendor)

The first problem I got is that it does not tell which pin to use. I searched in the internet and found a video where the same component is used.

there one can notice that 3 wires are used from the J1: black, red and white.


Combining that information with the following data sheet that I found from another provider of the same component
(from the vendor)

I also found on Amazon in UK someone that recently purchased it and is satisfied.

I guessed that these are the GND, 5V and TXD. The 2 wires from the J3 are for the antenna.

I powered a nodemcu from USB, and connected the RFID module accordingly.

With my Digital Oscilloscope DSO138 I then checked if the antenna was sending any signal, and using the self-loop approach I observed signal generation. ( Therefore the device is properly working.

I then connected (what I believe to be) the TXD with the RX pin of the Nodemcu and then with a simple sketch tried to collect data.

#include "LiquidCrystal_I2C.h"
#include "Wire.h"
LiquidCrystal_I2C lcd(0x27, 20, 4); 

void setup() {
  lcd.init();
  lcd.backlight();
  lcd.setCursor(1, 0);
  lcd.print("UART");
  delay(3000);
  Serial.begin(9600);
}

void loop() {
  String message = "";
  if (Serial.available()) {
    lcd.print("reading");
    message =Serial.readString();
    lcd.print(message);
  } else {
    lcd.print("SERIAL NOT AVAILABLE");
  }
  delay(1000);
  lcd.clear();
 }

I also use a LCD to display the message.

The problem I have is that ... Serial.available() returns always false.

I then connected the DSO138 probe to the pin 4 of the RFID, and the ground to the common ground, and then recorded a video of the RFID output in presence of a 134,2 kHz tag. The video cannot be embedded in this report but you can see it here.

Apparently, othersreported positive experience with it.

Any advice ?

Have you tried:

while (Serial.available() > 0) {

?
instead of the if. Also, it may be so that the RFID device starts spitting out data only when a tage is held in the antenna field.

Also, to which pin did you connect the TXD from the RFID module to your Nodemcu?

Hi Leroy, thank you for your followup !

As shown in the picture and in the text I am connecting the pin number 4 from the RFID component to the RX of Arduino.

I've done the try you suggested and same result (of course I had to remove the part of the else...).

My setup is shown in the photograph below the code ...

While you were looking at the serial data with your oscilloscope, did you verify the voltage went from zero to +5 volts? While watching the data on the scope, can you compute the Baud rate based on the time for one bit?

Perhaps you device does not send at 9600 bps.

Paul

Thankyou Paul for your suggestion. at the following link Oscilloscope readings from serial output of RFID sensor - YouTube I've done the measurement you suggested. I would appreciate your opinion.

Do you have a USB to Serial (UART/TTL) adapter? If so, try using that to see if you receive any data via USB port on Laptop/PC.

Cool idea, thank you