3.2 KiB
LightTAM RFID Reader
This is firmware for an RFID reader for the LightTAM software. The LightTAM repository is here. The LightTAM RFID Reader is built using an STM32F103C8 controller (mainly sold on BluePill boards), a PN532 RFID reader, and an HD44780 LCD display for the I2C bus. MCU is programmed using STM32Cube with CMake and HAL libraries. For editing (or debugging), I recommend using VS Code with STM32Cube extension installed.
This program utilizes libraries from these repositories:
Hardware Connection
- PN532 RFID Reader: Connected via UART or I2C (depending on configuration).
- HD44780 LCD Display: Connected via I2C using a PCF8574 I/O expander.
- Three LEDs: Connected to PB12 (red), PB13 (yellow), and PB14 (green).
- Power Supply: 5V input, regulated to 3.3V for the STM32 and peripherals.
Wiring
| Device | STM32 Pin | Notes |
|---|---|---|
| PN532 (I2C) | PB6 (SCL) | I2C1 SCL |
| PB7 (SDA) | I2C1 SDA | |
| LCD (I2C) | PB6 (SCL) | Shared I2C bus |
| PB7 (SDA) | Shared I2C bus | |
| LED Red | PB12 | |
| LED Yellow | PB13 | |
| LED Green | PB14 | |
| Computer (RXD) | A2 | USART2 TX |
| Computer (TXD) | A3 | USART2 RX |
| Debug (RXD) | PA9 | USART1 TX |
| Debug (TXD) | PA10 | USART1 TX |
Firmware Operation
After startup, the firmware initializes all peripherals: I2C, GPIOs, the LCD display, and the PN532 RFID reader. The main loop performs the following steps:
-
Idle State:
- The green LED (PB14) is ON, indicating the system is ready to scan for RFID tags.
- The LCD displays a welcome or ready message.
-
RFID Scanning:
- The firmware continuously polls the PN532 for the presence of an RFID tag.
-
Tag Detection:
- When a tag is detected, the UID is read.
- The yellow LED (PB13) briefly turns ON to indicate a tag is being processed.
- The LCD displays the UID or relevant information.
-
Tag Validation:
- The firmware checks if the tag UID is valid (e.g., against a list or via communication with the host).
- If the tag is valid, the green LED (PB14) blinks or stays ON.
- If the tag is invalid, the red LED (PB12) turns ON to indicate an error or unauthorized tag.
-
Status Indication:
- The LEDs provide immediate feedback:
- Green (PB14): System ready or access granted.
- Yellow (PB13): Tag detected and being processed.
- Red (PB12): Error or access denied.
- The LEDs provide immediate feedback:
-
Communication:
- The firmware can send the UID or status to a host system via UART or another interface if required.
-
Return to Idle:
- After processing, the system returns to the idle state, with the green LED ON and others OFF.
All logic is implemented using STM32Cube HAL libraries. The code is organized under the Core/ and Drivers/ directories.