Arduino as datalogger for RFID readers used in fish research

I study the movements of fish in freshwater ecosystems in Alaska, USA. We use RFID readers from the cattle industry. The readers power antenna arrays, and when a fish with an RFID tag swims over one, the reader sends a tag code over serial communication.

Right now we use a buggy software program and old Dell Axim PDA’s to record the tag code and give it a timestamp. The PDA’s are the weakest link in our system and I want to replace them with a more simple, cheaper data logger.

I have a couple Arduino Unos that I use in camera traps and I absolutely love them–I’d like to see if I can use them for this research project as well. I have 2 major criteria:

  1. Serial communications: I need a datalogger that can receive serial communications from 2 RFID readers at the same time. When it gets a tag code from reader A (which won’t be identified as such) it needs to record: reader A, tag code, and the time of the read. Ideally it would have some sort of traffic control so that if it receives reads from both readers at the same time, it will record both. The RFID readers have 3 comm wires (in, out, ground) that we currently tie into an RS-232 adapter.

  2. Clock: Having a reliable clock is critical, since the Arduino would need to record a timestamp for each tag code it gets from the RFID reader. We are monitoring for 3 months. Time drift of <30 min. across that time would be acceptable. The RFID sites are in extremely remote areas, and powered by 12V 50ah batteries. It would be nice if I could switch batteries (power on/off Arduino) without the clock resetting. We visit the sites every 7 days to change the 6V batteries that power the RFID readers, but ideally the dataloggers would go 2 weeks+ on a 12V 50 ah battery.

Thanks a lot for any advice on whether the Arduinos would be suitable for this project.


Think an Arduino with - - could do the job. One RFID would be connected to a softSerial port and one to the Hardware serial.

RFID A --> SoftSerial --> Arduino  ----> SD card
RFID B --> hardSerial ------^

wrt timekeeping:

The DS1307 has a drift of ~ 20ppm @ room temperature which is in the order of 2 seconds per day => 200 seconds in 3 months within specs alternative: The DS3231 is more accurate as it is compensated for temperature and aging. read - - for some background.

What is the speed of the RFID ? baudrate? What is the length of the cable?

Make sure you know what voltage the comms signal is. It's a little unclear from your post whether it's RS232. If it is, you'll need to convert it to TTL levels using a MAX232. Hopefully, it's already TTL and you're having to convert it to RS232 to interface to the PC.

Thanks for your helpful replies.

The RFID readers we have use RS-232. Comm settings are 9600 bps, 8 bits/word, no parity, 1 stop bit, no flow control. RIght now the readers sends three wires (gnd, comm out, comm in ) that go into a RS-232 adapter.

The cable from the RFID readers to the datalogger is either 1 m or 10 m , because the RFID reader is sometimes placed in the antenna in the stream, but other times in a box on the bank with the datalogger. With our old system (Dell axim PDA/Mobile Monitor software) we had no problem sending the serial communications over 10 m of cable.

I'm not sure what the speed of the RFID means, but the readers can read multiple times per second. We can set them for a range of read speeds, ~ every second to perhaps 12-x per sec.

Thanks again for the help, sorry for the late replies--away from computer for the weekend.