Technical Details

RFID project stichting z25.org

In short
The system is based on transmitters and recievers. Visitors wear the transmitters. The recievers registers the location of the visitors. This information is sent to a central server, which stores all the information in a database. Another system is in charge of interpreting & visualisation of the information.

The transmitters
The transmitters consist of a radio-transmitter[1], which sends a unique number encoded by an encoder[2]. The number is set directly on the encoder chip, and it is sent at a short interval, so recieving the unique number from several transmitters should be no problem, as the transmitters are not transmitting all the time.

The recievers
The recievers consist of a radio-reciever[3] coupled to a decoder[4]. The decoder is controlled by a microcontroller[5]. The decoder can listen to 16 numbers at once. Since we want to use more numbers than that, the microcontroller is programmed[6] to instruct the decoder to rotate which numbers it listens to.
If a transmitter is in range of the reciever, the reciever picks up the number. This number is transmitted by the microcontroller to a PC.

The PC
The number sent by the reciever is handled by a program written in C++ with wxWidgets[7] on the pc. The numbers are sent over a serial (rs232) cable, and read into the program[8]. This program's job is to keep track of who is near the reciever. Upon seeing someone, that person is registered as being near the reciever, and this information is sent to the server.
The PC keeps a list of all the recievers near it. As long as the person stays in reach of the reciever, the PC keeps getting the transmitters number. When a person is not seen by the reveicer for a configurable amount of time, the PC notifies the server saying that person is no longer there.

The server
The server uses Apache[9], php[10] & mysql[11]. It receives notifications from recievers on the arrival & departure of visitors. Upon arrival, it stores the location and time at which the person arrived at a position. Once the server receivers word that the visitor has left the location, the server computes how long it has been there, and stores that information. If the server is told someone arrived at a reciever, but he hasn't left his previous position yet, that means the person has moved to the new location before the previous reciever has registered the visitor as having left. The server then silently assumes the visitor has left the old location before being at the new location.

Visualisation
The system responsible for the visualisation can get the data from the database in a lot of different ways, and has to make assumptions based on this data. PHP or other techniques can be used to retrieve the data from the database.

Last note
The transmitters & recievers are build on a custom circuit-board, designed with the gEDA[12] suite, especially with gschem[13] & pcb[14], and uses a few custom .sym files for the components used which were not in the default library.


[1] Radiotransmitter: type TLP434A, http://futurlec.com/Radio.shtml
[2] Encoder: type HT12E, http://www.commlinx.com.au/Holtek_HT12E.htm
[3] Radioreciever: type RLP434A, http://futurlec.com/Radio.shtml
[4] Decoder: type HT12d, http://www.commlinx.com.au/Holtek_HT12D.htm
[5] Microcontroller: type 16F628, http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE
&nodeId=1335&dDocName=en010210
[6] JAL programming language, http://jal.sourceforge.net/
[7] wxWidgets toolkit, http://wxwidgets.org
[8] Serial code borrowed from NQC, http://bricxcc.sourceforge.net/nqc/
[9] Apache webserver, http://httpd.apache.org/
[10] PHP preprocessor, http://www.php.net
[11] MySQL database, http://www.mysql.com
[12] gEDA suite, http://www.geda.seul.org/
[13] gschem schematic designer, http://www.geda.seul.org/tools/gschem/index.html
[14] pcb printed circuit board designer, http://www.geda.seul.org/tools/pcb/index.html