RFID Fridge

A smart refrigerator for the home

RFID Reader
TI Series 2000 Evaluation Kit

In order to maintain an updated list of the products in our fridge, we used radio- frequency identification (RFID). Each item was tagged with an RFID card upon entering our fridge for the first time. Every time a product was placed in or removed from the fridge, the RFID antenna installed inside the fridge recognized the product's unique RFID tag, and registered it as either in or out of stock. The RFID reader did not require much configuration in our hardware project. We needed only to add another CoreUARTApb peripheral to our APB bus and one top level pin to receive the data from the RFID reader. Every time the antenna read an RFID tag, the tag was sent to the processor which then updated the fridge's stock.


The biggest problem our team faced with the RFID reader was deciding how to trigger an interrupt whenever an RFID tag was read. Unfortunately, the RFID reader had only three wires for us to interface with: data in, data out, and ground. There was no line that could be conveniently used as an interrupt for the line the data was sent on. We eventually decided to use the data as an interrupt for itself.

Another challenge resulted from the core functionality of the RFID reader - it would consistently transmit a few header bytes even when it had not successfully read an RFID tag. This caused an interrupt to be generated about every 10 ms. Since the receiving of the data triggered our RFID interrupt handler function, we were forced to acknowledge all of the faulty reads in addition to the reads of actual RFID tags. We left the task of differentiating legitimate and illegitimate reads to our software. This was done by reading the first three headers bytes sent by the RFID reader and determining whether or not a tag was read. If there was a legitimate read, our software would continue to read 16 more bytes, representing the RFID tag. If there was not a legitimate read, we cleared the UART buffer and waited for the next interrupt to be triggered.


Once we had completed all software and hardware development for the RFID reader, we had it functioning exactly as we had hoped it would. It was able to accurately and consistently detect products as they were put in or taken out of the fridge. Ideally, the RFID reader would only have sent data when it completed a successful read, which would decrease the amount of CPU time used to process invalid reads. Unfortunately, the reader that we used did not support this functionality. This is one way we could improve our project if we were to re-implement it.