Parallax RFID Reader Serial (#28140) + micro:bit
The Parallax RFID Reader Serial (#28140) can interface with a micro:bit using two GPIO connections: one for receiving serial data and one for enabling the RFID reader. This example uses micro:bit MicroPython with the tag's ID displayed on the micro:bit's LED matrix and printed to the computer over USB. Note: this is an AI-generated project, and I'm awaiting testing from the community before considering it final.
1. Hardware requirements
The RFID Reader Serial operates at 5 V and communicates at 2400 baud. The micro:bit uses 3.3 V logic, so the reader's serial output must be level-shifted before connecting to the micro:bit.
|
1 |
|
|
1 |
|
|
1 |
|
|
10 kΩ resistor |
1 |
|
20 kΩ resistor |
1 |
|
Regulated 5 V power supply (from the I/O Edge) |
1 |
|
Breadboard and jumper wires |
As needed |
2. Connection schematic

|
RFID reader pin |
Connect to |
Purpose |
|---|---|---|
|
1 — VCC |
External +5 V |
Reader power |
|
2 — /ENABLE |
micro:bit P0 |
LOW enables reader |
|
3 — SOUT |
10 kΩ to P1, with 20 kΩ from P1 to GND |
Serial data, level-shifted |
|
4 — GND |
Supply GND and micro:bit GND |
Common ground |
The resistor divider reduces a nominal 5 V serial signal to approximately 3.33 V. It is important not to connect the reader's SOUT directly to P1 or connect 5 V to the micro:bit's 3V pin.
3. RFID communication protocol
The reader transmits a 12-byte message at 2400 baud, 8N1:

0x0A
1 byteTag ID
0F0184F07A
10 ASCII charactersStop
0x0D
1 byteThe 10 ASCII characters represent the unique tag identifier. They are not binary data.
4. MicroPython program
Open the micro:bit Python Editor, paste this program, and transfer it to the micro:bit.
from microbit import *
# Parallax RFID Reader Serial #28140
# P0 = Reader /ENABLE (active LOW)
# P1 = Serial receive through voltage divider
# P2 = UART transmit (not connected)
uart.init(baudrate=2400, bits=8,
parity=None, stop=1,
tx=pin2, rx=pin1)
# Enable the RFID reader
pin0.write_digital(0)
START = 0x0A
STOP = 0x0D
tag_data = bytearray()
receiving = False
last_tag = ""
display.show(Image.YES)
sleep(1000)
display.clear()
print("Parallax RFID Reader Ready")
while True:
data = uart.read()
if data:
for b in data:
if b == START:
tag_data = bytearray()
receiving = True
elif b == STOP and receiving:
receiving = False
if len(tag_data) == 10:
tag = bytes(tag_data).decode("ascii")
# Accept only hexadecimal tag IDs
valid = all(
c in "0123456789ABCDEFabcdef"
for c in tag
)
if valid and tag != last_tag:
last_tag = tag
print("RFID Tag:", tag)
display.scroll(tag, delay=100)
elif receiving:
if len(tag_data) < 10:
tag_data.append(b)
else:
receiving = False
sleep(10)
Expected operation
-
Power the RFID reader from 5 V and connect the micro:bit by USB.
-
The micro:bit briefly displays a check mark when initialized.
-
Hold a compatible RFID card or key fob near the reader's antenna.
-
The reader transmits the tag's ID to micro:bit P1.
-
The micro:bit scrolls the tag ID on its LED display and prints it to the USB serial terminal.
Example output:
Parallax RFID Reader Ready
RFID Tag: 0F0184F07A
RFID Tag: 1A003B72C9
The program suppresses repeated display of the same tag until a different valid tag is detected. You can change that behavior by removing and tag != last_tag from the condition.
5. A few implementation notes
Power and enable: The reader's /ENABLE input is active LOW. Setting P0 LOW enables continuous reading. Setting P0 HIGH disables the antenna. The reader recognizes 3.3 V as a HIGH logic level according to its published electrical specifications.
USB debugging: MicroPython's print() output goes to the computer over USB, independently of the reader's UART input.
Compatible tags: The #28140 reads 125 kHz EM4100-family tags. It will not read the 13.56 MHz NFC tags commonly used by smartphones.
Security: These read-only identifiers can be copied or emulated, so this basic arrangement is suitable for learning and identification rather than high-security access control.
Further development: A straightforward next exercise would be storing several authorized tag IDs in a Python list, then having the micro:bit display a check mark for a recognized tag or an X for an unrecognized tag.
The Parallax hardware reference is available here: RFID Reader #28140 documentation.
This provides a practical starting point for a Parallax Learn curriculum activity combining RFID identification, serial communication, voltage-level interfacing, and Python programming. The wiring and code are based on the published specifications but have not been bench-tested with the physical hardware.


