General Purpose RFID Reader: User interface.

The General Purpose RFID Reader has a number of customizable features that allow you to monitor animals in a variety of ways and balance power use against functionality. The logger works by switching its RFID reader on and off to poll for tags. If a tag is read then the logger makes a determination as to whether to log the data or not depending on how long ago the same tag had been logged. If the data should be logged, the logger stores the tag ID number along with the date and time on an EEPROM memory chip. Virtually all aspects of the logging process are adjustable. This manual will explain how to download logged data and adjust the logging process to best suit your application.

INTERFACE:   The Bird-logger uses RS232 communication with the following settings:

There are female and male RS232 ports so you can attach either a pc or a handheld computer. RS232 communication can vary with different software and connection types.   You may have to vary the way data is entered (this is discussed where relevant). While in operation (logging mode, see below), the reader occasionally outputs messages to confirm that it is working (such as RFID codes). You can leave the serial connection on to monitor these messages while the reader does its work.


When the general-purpose reader is turned on, it will display the date/time, a list of settings, and finally “ENTER c, m, r, s, or l.” At this point you can enter one of these five one-letter commands. Or alternatively you can do nothing and the reader will enter the active or “logging” mode of operation after about 10 seconds.   Whenever you want to access the main menu, you must turn the power switch off and on. You can do this at any time, and it will not delete the data memory or the current settings.   The 5 menu options are:

“c” [clock—set the clock]

“m” [memory—download data and reset the memory]

“r” [read tags—allows you to read a tag placed near the antenna]

“s” [settings—allows you to set all logging parameters]

  “l” [log—enter logging mode]

If you enter a letter other than one of these five or if you use uppercase, the reader will reset back to the main menu. The reader will also return to the main menu whenever you finish altering a setting or downloading data. The following explains how to navigate each menu command.


If you enter “c” at the main menu, you will enter the clock-setting mode.   Once you enter this mode, you must provide a reasonable date and time, or the reader will wait forever (or until you turn it off). You should see a prompt: “ENTER MMDDYYHHMMSS:” You must enter the military time according to the format shown.   All units for the date and time must consist of two characters. Hence, to enter the date for 1:45:06 pm, February 6 th, 2008, you would type “020608134506.” Depending on your RS232 connection you may be able to submit all of the data at once (this was the case with my palm pilot).   If this fails, enter each two-digit unit separately. After you set the time, the logger will return to the main menu and display the updated date and time.


If you enter “m” at the main menu, you will enter the memory mode. The first prompt will say “ d or r.” If you enter “d” (download) then the reader will send all of the data stored since the memory was last reset. If you enter “r” (reset) the memory will be reset. This does not erase the memory but rather resets the memory-write address to the beginning such that the reader will begin overwriting old data.   Be careful not to accidentally reset the memory while there are still valuable data to download!

Each line of data output will look something like this:

38 of 4628 12/14/08 13:45:05 041356A74B

The first number is the memory byte address for the line of data. The first memory line address will always be 2, and each tag and date combination requires 9 bytes. So memory line addresses will count up by nines (2, 11, 20, 29, etc...).   The next number is the current memory address, or the place where the next data line will be stored during log mode. Downloading will cease when the line address reaches the current address. The maximum memory capacity is 64000 bytes (over 7000 bird visits). Hence if the current address is approaching 60000 or so bytes, you should store the data elsewhere and reset the logger memory. The rest of the data line consists of the date, time, and 10-digit tag ID code.

            After downloading the data you will be asked whether you want to reset the memory with the prompt: “reset?” If you enter “y” or “r” the memory will be reset. Entering any other key will make the reader retain the current memory address, such that new data will be appended after the old data. I recommend you ensure that your data are saved before resetting the memory.


If you enter “r” at the main menu, you will enter the tag-reading mode. You should position a tag close to the antenna before entering the letter “r.” When the logger receives an “r” it will make a single attempt to read a tag which will last for as long as the poll-time setting (see below). The logger will display a tag number if it reads a tag or it will display “FFFFFFFFFF” if no tag is read.


            If you enter “s” at the main-menu prompt, you will be asked to enter all of the logger settings. The first prompt will be “ENTER POLL   INTERVAL IN mS.” Here the logger is asking for the amount of time during which the RFID reader is powered on during each attempt to read a tag. The longer the interval, the more likely a tag will be read. However, the reader uses about 37 mA when the reader is on as opposed to 0.8 mA when it is off. Hence, a long poll time will drain the battery quickly. I recommend a relatively short interval, such as 300 to 500 ms. The maximum poll time is 60000 ms or about a minute. After you enter the poll interval, the logger will acknowledge the entry by displaying “YOU ENTERED” and the number you gave it.

            The prompts that follow will all be similar in terms of format. The second one will ask for a pause interval. This will be the time that elapses between reading attempts   during which the reader enters a low-power sleep mode. The length of the pause time should be based on how long your birds remain at the reader during a visit. If they always remain for at least 5 seconds, then a relatively long pause time is warranted, say 2000 ms. However, if visits can sometimes be very brief, a shorter pause time should be used. The maximum pause time is 60000 ms.

            The third prompt asks for a delay interval in seconds. This interval determines how often the same tag will be logged consecutively, and prevents a bird from being logged hundreds of times if it is fond of sitting on the reader for long periods of time. The maximum delay time is 43200 s or 12 hours. I recommend a delay time of at least 5 s.

Next you must provide on and off times for the nighttime sleep mode. The reader will ask for the on time first; this should be a number from 1 to 23 that corresponds with the hour you want the reader to “wake up.” Next you enter the off time, which is also a number from 1 to 23 that tells the reader when to turn off. Note that if you want this function to work properly, the on time must be less than the off time, which means you cannot turn the reader off at 1:00 am and on at 5:00 am. If you do not want to shut the reader down at night, then enter a zero for the on time and 25 for the off time.

Finally, you must enter a low battery threshold value. The RFID reader runs directly from the ~12V power supply, and reading capability will diminish as the battery runs down. The low battery shut down prevents the logger from working when the reading capability is unreliable. When the battery voltage goes below the threshold, the logger enters a power saving sleep mode and logs a tag code of “BFBFBFBFBF” to indicate “battery failure” Hence, you will know how long the logger was in operation since you turned it on. The battery threshold value represents a percentage of a full battery.   A full 12 V corresponds to 100%.   I recommend a value of 80% or 9.6 V. This should prevent damage to rechargeable batteries. You can go for a lower value, but I have not tested how well the reader works at low voltages. Note that the reader can operate at voltages as high as 16V. If you run off 10 fresh AAA cells, you will probably approach 16V.   The reader will display the battery status as ~130%.   There is no problem with this so long as you don't go too high, like over 135%.   


            If you enter “l” (lowercase “L”) at the main menu, you will go directly to logging mode. Alternatively you could wait ten seconds without entering anything and accomplish the same thing. Hence, in the field you can simply turn the logger on and walk away. Alternatively, you can log data while the RS232 interface is on, and the logger will display battery status, time, and ID codes in real time. Note that the logger does not record the date and time when it is turned on. You should manually make a note of the time when you turn it on or designate a specific tag as the “ON” tag and present it to the reader about 15 seconds after turning it on to make a “note” in the memory of when the logger became active. Of course, it couldn't hurt to do both.


            The logger will work with almost any DC power supply from about 8V to 16V, and the higher the voltage the better. 10 AAA batteries make for an adequate power supply, or you can attach a car battery for extremely long periods of uninterrupted logging. The approximate battery life can be estimated if you know the battery's amp-hour rating. As stated above, the logger uses 37mA while polling for tags and 0.8mA while pausing between read attempts.   First calculate average power use over a single log interval. For example if the poll time is 400ms and the pause time is 1600ms then over a single interval of 2000ms the reader would require an average of (400/2000*37mA + 1600/2000*0.8mA) or about 8mA. Then divide the battery's amp hour rating by the average power use to get an estimate of battery life.   For a 5 amp-hour battery: 5A*hour/0.8mA = 5A*hour/0.0008A = 6250 hours of active logging. This does not account for night-time sleep mode, which requires a very small amount of power.

Antenna design:

Antenna coils are easy to make and can assume a wide variety of shapes and sizes. For best read range, I recommend a round antenna of about 10-12cm in diameter. To make an antenna, you simple wrap magnet wire (26 to 30 gauge) around a form or an object, while applying glue (waterproof fabric glue or nail polish) to stiffen the coil. When the coil is finished, remove the form and strip the leads from the coil. These leads should be soldered or clamped to the two terminals labeled “ANTENNA” on the circuit board.

            The reader will work best if the antenna impedance is 1.35mH. Use a LCR meter to measure impedance of the coil, and adjust the number of loops until you are between 1.3 and 1.4mH. Of course, a coil must be complete before you measure it, so expect the initial attempt to be a trial and error process. Begin by making a coil with far more turns than you think you need (which will make the impedance too high), and them remove loops until the impedance goes down to the target value. Once you know the number of turns needed for a particular shape and size, you can make several antennas relatively quickly. For reference, a 7cm x 5cm rectangle requires about 104 turns, and a 12cm hexagon requires about 85 turns.

More on antenna design.