Using the RDM6300 RFID reader with a Raspberry Pi

Wiring

The board itself has this layout:

RDM6300

The board can operate on 3.3V, however, the included antenna will have an impedance that is tuned for 5V usage. This means that when wired to 3.3V the read functionality will not work.

Given that we must use 5V to drive the circuit we have to do some voltage conversion from 5V to 3.3V, to prevent frying the GPIO pins of the Raspberry Pi. The wiring I am using is the following:

The RDM6300 only sends data while not receiving anything on the P1/2 (RX) pin, thus we don’t need to connect that.

The P1/1 TX pin needs to have voltages compatible with the Raspberry PI, so I am using a traditional voltage splitter built from two resistors (anything with matching resistance, and < 1k is fine). This transforms the 5V high output voltage on P1/1 to 2.5V, which is good enough for the Raspberry PI’s 3.3V system.

The output of the voltage splitter is connected to pin 10 of the Raspberry PI which is GPIO15/RXD0. The reason behind this is that the RPI can be reconfigured to treat pin 8 and pin 10 (GPIO14/GPIO15) as a TTL level serial port.

Note: this also means that the reader must be connected to these ports.

Setting up the Pi

To be able to access the serial port you will need to use the sudo raspi-config command. Please set 5 – Interfacing Options > P6 – Serial:

  • Would you like a login shell accessible over serial? No
  • Would you like the serial port hardware to be enabled? Yes

After rebooting the RPI a file called /dev/ttyS0 should be available, that can be used to interface the RDM6300.

Antenna positioning

The linked cards have their RFID tags positioned like this:

Given that the coil included with the kit is approximately half of the card please be careful when creating the casing so that the antenna is near the tag itself.

If well positioned the RDM6300 should constantly output the card’s ID until is inside its reach. On one hand, this is how the card removal detection logic is implemented inside the library, but also if you are not getting this behavior there’s a huge chance that the card can be inserted into your device without it being detected.

Interfacing in Python

You can use this library I had created for interfacing the board: https://github.com/mad-tinkerer/python-rdm6300