After getting a simple LED-blink program working, I moved on to the RFID portion of my project. It seemed to be the simplest of the three major parts (RFID, SD card, and MP3) because it’s basically just configuring the UART to receive and check the card IDs. I’m using the RDM6300 UART RFID Module from ITeadStudio, which cost $11 for the reader and $0.50 per card. The datasheet is posted and it describes both the pinout of the module and the data format.
I started out by wiring up the power, ground, and TX line to an FTDI breakout board to verify that the RFID reader worked correctly by reading the data into Docklight. The data format is 9600bps 8N1 serial. The datasheet listed 13 bytes (0x02, 10 data bytes, checksum, 0x03), yet I consistently received 14 bytes. I’m not totally sure what’s going on, but I always get the same 14 bytes, so I just recorded those for each of the 10 cards I purchased. The table below shows the hex values I receive for each of the cards.
The datasheet for the RFID module lists the operating current as <50 mA, which is high enough that I want to be able to turn the module on and off from the PIC instead of just leaving it on all the time. To do this, I used a 2N3906 PNP transistor in between the board 5V supply and the RFID 5V supply, with the base connected to a GPIO with a 1k resistor.
Turning the GPIO high turns the RFID module on; setting it low turns the RFID module off. Using the transistor dropped the supply from 5V to 4.87V, but this is still within the +/-5% of 5V listed on the datasheet spec, and it appears to be working just fine. I also added a resistor divider to the UART TX line of the RFID module to bring the 5V output down below 3.3V. The following two pictures show a circuit diagram of this, and then what it looks like soldered onto my development board (some parts/wires were soldered underneath the RFID module).
For more detail: RDM6300 RFID with PIC18 Dev Board