Top Banner
ERG 4910B - Thesis II, 2005-2006 RFID: Data Acquisition Author: Lee Kin Bong Student I.D.: 02657852 Supervisor: Professor K.K. Cheng Associate Examiner: Professor S.P. Wong A project report presented to the Chinese University of Hong Kong in partial fulfilment of the Degree of Bachelor of Engineering Department of Electronic Engineering The Chinese University of Hong Kong April, 2006
81
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: RFID Data Acquisition

ERG 4910B - Thesis II, 2005-2006

RFID: Data Acquisition

Author: Lee Kin Bong

Student I.D.: 02657852

Supervisor: Professor K.K. Cheng

Associate Examiner: Professor S.P. Wong

A project report presented to the Chinese University of Hong Kong

in partial fulfilment of the Degree of Bachelor of Engineering

Department of Electronic Engineering The Chinese University of Hong Kong

April, 2006

Page 2: RFID Data Acquisition

2

Abstract:

RFID, Radio Frequency Identification, is a popular technology nowadays. It will

replace the traditional bar codes soon as it have advantages on large information–carrying

capacity, physically strong, able to recognize from a distance. Most importance is it can

be completely automatic if we can solve the collision problem between tags. This can

save manpower and prevent man-made mistakes if we can achieve that.

In this project, my main job is to build up an anti-collision system between the tags and

the reader. The collision problems are due to all the tags in the environment reply and

send their own serial number to the reader. Therefore, the reader has to classify the serial

number step by step. I have successfully built up the anti-collision arbitration system on

reader side by binary tree method with the aids of the Manchester coding.

Page 3: RFID Data Acquisition

3

Acknowledgements

Special thanks to my supervisor, Professor Michael Cheng Kwok Keung (B.Sc., Ph.D.

(London), Sr.MIEEE, MIEE, CEng (IEE)), for his useful advice and support on my

project, “RFID: Data Acquisition”.

Page 4: RFID Data Acquisition

4

Content

ABSTRACT: 2

ACKNOWLEDGEMENTS 3

CONTENT 4

INTRODUCTION 6

Forward Link Encoding 9 Pulse Interval Encoding --- Type A 9 Manchester Coding --- Type B 10

Return Link Encoding 11 FM0 --- Type A and B 11

Collision Arbitration 12 ALOHA procedure --- Type A 12 Binary Tree --- Type B 12

Error Detection 13

CRC Procedure --- Type A and B 13

THEORY 15

Hardware 15 Microcontroller 16 Reset Circuit 16 Oscillator Circuit 17 Traffic control Circiut 17 Power Supply Circuit 18 RS-232 interface conversion circuit 19 Circuit Design 20 Component List 21

Software 22

Programming Principle 22

Program Flow 29 1) Reader Program 29 2) Tag Program 31

Serial Communication 32

Page 5: RFID Data Acquisition

5

EXPERIMENTAL PROCEDURE AND RESULT 40

Phase 1 --- Reader Program 41

Phase 2 --- Tag Program 45

Phase 3 --- The Anti-Collision System 47

DISCUSSION AND CONCLUSION 57

COST SUMMARY 59

REFERENCE 60

PROGRAM SOURCE CODE 61

The reader program: 61

Tag Program: 68

PHOTO OF CIRCUIT 75

APPENDIX 76

Page 6: RFID Data Acquisition

6

Introduction

Radio Frequency Identification (RFID) Systems fall into two basic categories. The

categories are broadly determined by how the tags powered, which in turn reflects the

average transponder price. The transponder categories are:

• Active RFID tags backscatter modulation (battery on board) [cost EU 10 – 40]

• Passive RFID tags backscatter modulation (RF powered) [cost less than EU 2.50]

My project is focus on the passive RFID, which is cheaper but comparably with a

shorter transmitting distance than active one. But with the backscattering technique, it can

still typically achieve 3m transmitting length, which are suitable for most of application.

Also, because of the cost and the size, passive RFID have a potential to replace the bar

code in the future.

Radar can be considered as the technology precursor to RFID. They are both using the

phenomenon of RF reflection. The radar use the time difference between the signal sent

and reflected back to calculate the distance from an object. For RFID, the reflected signal

carries importance information to the reader (e.g. the serial number of the product). This

technique is using the method of backscattering.[1]

Page 7: RFID Data Acquisition

7

Like WLAN card, we need to define the standard for the RFID to assure the

communication is universal. There are many standards for RFID, but the common use is

the ISO18000 (Information technology -- Radio frequency identification for item

management). ISO18000 divide into six parts:

ISO18000-1: Reference architecture and definition of parameters to be standardized

ISO18000-2: Parameters for air interface communications below 135 kHz

ISO18000-3: Parameters for air interface communications at 13,56 MHz

ISO18000-4: Parameters for air interface communications at 2,45 GHz

ISO18000-6: Parameters for air interface communications at 860 MHz to 960 MHz

ISO18000-7: Parameters for active air interface communications at 433 MHz

My project follows some of the requirements in ISO18000-6. According to

ISO18000-6, the RFID in to two types: Type A and Type B [2]

Table 1.1 – Comparison of Type A and Type B [2]

Page 8: RFID Data Acquisition

8

Figure 1.1 - Interrogator architecture [2]

Figure 1.2 — Type A tag architecture [2] Figure 1.3— Type B tag architecture [2]

For the protocol of reader, there is some points importance:

1) Forward Link Encoding

2) Return Link Encoding

3) Collision arbitration

4) Error Detection

Page 9: RFID Data Acquisition

9

Forward Link Encoding

Pulse Interval Encoding --- Type A

Because this coding has the short pulse duration, it can give continuous power

supply. As a result, it is mainly use in Reader to Transponder.

Original Data Signal Sent

Logic 0 A pulse of duration 2t before next pulse

Logic 1 A pulse of duration t before next pulse

Table 1.2a --- Logic table of Pulse Interval code

Figure 1.4a --- Pulse symbol represent different logic

Page 10: RFID Data Acquisition

10

Manchester Coding --- Type B

The Machester code is often used for data transmisson from the transponder to the

reader based upon load modulation using a subcarrier. [3] The princple of signal coding is

stated at below table:

Value Sent

Logic 0 0 to 1 (upward transition at bit centre)

Logic 1 1 to 0 (downward transition at bit centre)

Table 1.2b --- Logic table of Manchester code

For example:

Figure 1.4b --- Encoding of 11011000100 in Manchester code

Page 11: RFID Data Acquisition

11

Return Link Encoding

FM0 --- Type A and B

FM0 is usually used for the signal receiving. The level is inverted at the start of every bit

period, so that the bit pulse can be more easily reconstructed in the receiver if necessary.

The princple of signal coding is stated at below table:

Value Sent

Logic 0 Changing pulse(“1 to 0” or “0 to 1”)

Logic 1 Constant Pulse

Table 1.3 --- Logic Table for FM0

For example:

Figure 1.5 --- Encoding of 10110001 in FM0

Page 12: RFID Data Acquisition

12

Collision Arbitration

ALOHA procedure --- Type A

This is method using the technique of Carrier Sense Multiple Access. The procedure is

used exclusively with read-only transponders, which generally have to transfer only a

small amount of data (serial numbers), this data being sent to the reader in a cyclical

sequence. The data transmission time represents only a fraction of the repetition time, so

there are relatively long pause between transmissions. Furthermore, the repetition times

for the individual transponders differ slightly. There is therefore a certain probability that

two transponders can transmit their data packets at different times and the data packets

will not collide with one another.

Binary Tree --- Type B

The binary tree method uses the principle of tree diagram to filter out the binary serial

number step by step until no collision occurs. I will discuss it later on page 22.

Diagram 1.6 – tree diagram

Page 13: RFID Data Acquisition

13

Error Detection

CRC Procedure --- Type A and B

CRC (cyclic redundancy check) procedure was originally used in disk drives, and can

generate a checksum that is reliable enough even for large data quantities. However, it is

also excellently suited for error recognition in data transfer via wire-bound (telephone) or

wireless interface (radio RFID) [3].

The principle of CRC is base on polynomial division. First we need to define the CRC

checksum, which is calculated by the division of a polynomial

We can consider the binary number as polynomial, e.g.

10011 = X^4 + 0^3 + 0^2 + X^1 + X^0

= X^4 + X^1 +1

Let: M - k bits long, F - It is n bits long (n<k)

T - It is k+n bits long P - A pattern of n+1 bits

First we convert all of them to polynomial, and let

T = M*x^n + F

If we divide M*x^n with P, M*x^n/P = Q +R/P

We let the remainder R as F, T = M*x^n +R

T/P = M*x^n/P +R/P = Q + R/P + R/P = Q +(R+R)/P

As binary number added to itself in a modulo 2 field is zero, therefore: T/P = Q no

remainder

Page 14: RFID Data Acquisition

14

We can consider:

- M as Original Frame ,

- F as CRC checksum value

- T as Resulting Frame to transmit

- P as generator polynomial

The principle of CRC is to check whether T is divided by P

We have to pre-define the generator polynomial before the system can communicate:

Here is some standard

CRC-8 Generator Polynomial X^8+X^4+X^3+X^2+1

CRC-16/disk controller Generator Polynomial X^16+X^15+X^2+1

CRC-16/CCITT Generator Polynomial X^16+X^12+X^5+1

Table 1.4 --- CRC standard

For my project, I will base on type B requirement. Therefore, the protocol will base

on,

a) Forward Link encoding: Manchester Code

b) Return Link encoding: Manchester Code (for collision detection)

c) Collision Arbitration: Binary Tree

d) Error Detection: Error Check Method of UART

Page 15: RFID Data Acquisition

15

Theory

For my project, it includes hardware and software. For hardware part, it includes the

traffic control circuit, MCU and the circuit for RS-232 communication. For software

parts, it includes the control program of MCU.

Figure 2.1 --- Basic Flow of My Project

Hardware

First, I would like to discuss my hardware design. I am focus on the accessory circuit

of MCU and the communication between MCU and computer using the RS-232 interface

at this moment. For the MCU accessory circuit, it includes the reset circuit, the clock

cycle circuit, the travel control circuit and the power supply circuit. Also MCU can’t

communicate by RS-232 interface as they with different logic level (i.e. one use TTL, one

use computer logic). As a result, we need circuit acts as a communication channel.

RF Circuit

RS-232

Receive the ID from tags MCU

Computer

Page 16: RFID Data Acquisition

16

Microcontroller

For the MCU, I will choose to use AT89S52 8-bit Microcontroller with the following

main characteristic:

- 8K Bytes In-System Programmable Flash

- 32 Programmable I/O Lines

- Full Duplex UART Serial Channel

Reset Circuit

All microcontrollers need to reset before functioning. Generally speaking, reset time of

microcontroller not less than 5ms.

When the power on, C1 will act as short circuit. As a

result, high voltage (Vcc) drop at R1 => Reset

After C1 will charge up and then finally become open

circuit. Reset will become low voltage.

The circuit can be verify to manual control reset by

adding a switch across the capacitor.

RESET

0

C1

22uF

R1

10k

VCC

Figure 2.3 --- Reset Circuit

Figure 2.2 --- AT89S51 Pin assignment

Page 17: RFID Data Acquisition

17

Oscillator Circuit

It is a circuit to provide clock pulse to Microcontroller.

According the specification of AT89S52, I use a crystal

with the frequency 11.0592 MHz with two 39pF load

capacitor need to build the Oscillator Circuit.

Traffic control Circiut

As the reader needs to send signal to the tags and the computer separately, it need to

control the path of transmission. By a control signal from MCU and an AND gate, it can

be achieved easily.

Figure 2.5 --- Transmission Control of reader

P0_0 P0_1 Transmit to

High low Computer

Low High Tag

Table 2.1--- Transmission Control of reader

For UART transmission, it stays at logic high when there is no transmission. As a

result, the reader uses an OR-gate with a control signal to control the transmission. When

TXD

P0_0

P0_1

Tags

Computer

U4A

74LS32

1

23

U4A

74LS32

1

23

Figure 2.4 --- Oscillator Circuit

Page 18: RFID Data Acquisition

18

the control input (P0_0/P0_1) is high, that means the transmission is off as the output is

always high. The transmission is on only if the control signal is low.

For the tags side, it has to combine three outputs of tags just like in the usual

environment. So, using OR-gate is a choice. You can imagine if there is a logic high

signal sending from a tag in the environment, the reader will receive a logic high signal

even if there is a tag sending a logic low signal at the same time. The principle is same as

using an OR-gate.

Even through the tag does not sending a signal, it will disturb the transmission as for

UART transmission; it stays at logic high when there is no transmission. Therefore, tags’

output needs to pass through an AND-gate with a control input before get into an

OR-gate. If the tags don’t reply after receiving the signal from reader, set the control

input be low. For other cases, set the control input be high.

Figure 2.6 --- Transmission Control of tag

Power Supply Circuit

As MCU needs a steady power supply and protect it form a large current, a voltage

regulator is needed. The voltage regulator use in the current is L7805CV. It can give a

output voltage 5 + 0.2V if the range of input is 8V to 20V. The output voltage can reach

the VCC requirement of AT89S52 (4.0 to 5.5V)

U3A

74LS08

1

23

U2A

74HC4075

12 98

U3A

74LS08

1

23

U3A

74LS08

1

23

Tag 1 TXD

Tag 1 P0_0

Tag 2 TXD

Tag 2 P0_0

Tag 3 TXD

Tag 3 P0_0

Reader RXD

Page 19: RFID Data Acquisition

19

RS-232 interface conversion circuit

The circuit contains the IC MAX232, manufactured by Texas Intrument, which can

perform the translation between TTL logic and RS-232 standard

TTL RS-232 Logic 1 2-5V -15V Logic 0 0-0.8V 15V

Table 2.2 Comparing the TTL logic with RS-232 standard

Here is the reference design:

Figure 2.7 --- reference design for MAX232

RS-232 is simple, universal, well understood and supported but it has some serious

shortcomings as a data interface. The standards to 256kbps or less and line lengths of

15M (50 ft) or less but today we see high speed ports on our home PC running very high

speeds and with high quality cable maxim distance has increased greatly. The rule of

thumb for the length a data cable depends on speed of the data, quality of the cable.

Page 20: RFID Data Acquisition

20

Figure 2.8 --- Pin function of RS-232

The data transferring for RS-232 can be asynchronous, which can save one

transmission line comparing to synchronous one. As the data transmission is

asynchronous, we need to define transfer rate first before communication, which is calls

the baud rates. For example Baud Rate = 9600 means the data rate is 9600 bits per one

second

Circuit Design

V15Vdc

C6

40u

C2

1u

V29Vdc

0

0

0

U5

L7805/TO220

1 2VIN VOUT

U3

MAX232

134526

129

1110

138

147

C1+C1-C2+C2-V+V-

R1OUTR2OUT

T1INT2IN

R1INR2IN

T1OUTT2OUT

11.0592

C8

1n

0

R1

1k C3

1u

C5

40u

U1

AT89S53

11121314151617

1819

2122232425262728

29

3031

3233343536373839

40

12345678

9

10

P3.1/TXDP3.2/INT0P3.3/INT1

P3.4/T0P3.5/T1

P3.6/WRP3.7/RD

XTAL2XTAL1

P2.0/A8P2.1/A9

P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15

PSEN

ALE/PROGEA/VPP

P0.7/AD7P0.6/AD6P0.5/AD5P0.4/AD4P0.3/AD3P0.2/AD2P0.1/AD1P0.0/AD0

VCC

P1.0/T2P1.1/T2EXP1.2P1.3P1.4/SSP1.5/MOSIP1.6/MISOP1.7/SCK

RST

P3.0/RXD

C4

1u

U4A

74LS32

1

23

0

C1

1u

U7A

74LS32

1

23

Figure 2.9 Reader Circuit Design

3 5

Tags

Page 21: RFID Data Acquisition

21

0

U6A

74LS08

1

23

C11

40u

C11

40u

U1

AT89S53

11121314151617

1819

2122232425262728

29

3031

3233343536373839

40

12345678

9

10

P3.1/TXDP3.2/INT0P3.3/INT1

P3.4/T0P3.5/T1

P3.6/WRP3.7/RD

XTAL2XTAL1

P2.0/A8P2.1/A9

P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15

PSEN

ALE/PROGEA/VPP

P0.7/AD7P0.6/AD6P0.5/AD5P0.4/AD4P0.3/AD3P0.2/AD2P0.1/AD1P0.0/AD0

VCC

P1.0/T2P1.1/T2EXP1.2P1.3P1.4/SSP1.5/MOSIP1.6/MISOP1.7/SCK

RST

P3.0/RXD

11.0592

C9

40u

U3A

74LS08

1

23

V15Vdc

C9

40u

U2A

74HC4075

12 98

R1

1k

U5

L7805/TO220

1 2VIN VOUT

11.0592

0

U1

AT89S53

11121314151617

1819

2122232425262728

29

3031

3233343536373839

40

12345678

9

10

P3.1/TXDP3.2/INT0P3.3/INT1

P3.4/T0P3.5/T1

P3.6/WRP3.7/RD

XTAL2XTAL1

P2.0/A8P2.1/A9

P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15

PSEN

ALE/PROGEA/VPP

P0.7/AD7P0.6/AD6P0.5/AD5P0.4/AD4P0.3/AD3P0.2/AD2P0.1/AD1P0.0/AD0

VCC

P1.0/T2P1.1/T2EXP1.2P1.3P1.4/SSP1.5/MOSIP1.6/MISOP1.7/SCK

RST

P3.0/RXD

11.0592

0

0

U1

AT89S53

11121314151617

1819

2122232425262728

29

3031

3233343536373839

40

12345678

9

10

P3.1/TXDP3.2/INT0P3.3/INT1

P3.4/T0P3.5/T1

P3.6/WRP3.7/RD

XTAL2XTAL1

P2.0/A8P2.1/A9

P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15

PSEN

ALE/PROGEA/VPP

P0.7/AD7P0.6/AD6P0.5/AD5P0.4/AD4P0.3/AD3P0.2/AD2P0.1/AD1P0.0/AD0

VCC

P1.0/T2P1.1/T2EXP1.2P1.3P1.4/SSP1.5/MOSIP1.6/MISOP1.7/SCK

RST

P3.0/RXD0

U4A

74LS08

1

23

V29Vdc

C11

40u

C9

40u

Figure 2.10 Tag Board Circuit Design

Component List

Components Value/Model Number

Microcontroller AT89S52 1 Regulator MAX232

L7805CV 1 1

Logic Gate AND gate 1 Crystal 11.0592MHz 1 Resistor 1k 1 Capacitor 1n

1uF 40uF

1 4 2

Switch 1 RS-232 Socket 1 RS-232 Cable 1

Table 2.3 --- Components List

Reader

Page 22: RFID Data Acquisition

22

Software

The Software part is the main part of my project. I will introduce the basic principle of

my program to achieve the anti-collision system first, and then I will go into discuss the

flow of my program

Programming Principle

I will use the case of an area contain three tags to explain the principle of binary tree:

Firstly I have to define some commands for reader to communicate with tags

Command Tags Response Tag’s State after receiving the

command

REQUEST Tags with smaller or equal serial

number will send it back its own

serial number

Remain its state of waiting

REQUEST or SELECT commands

only

SELECT Tags with equal serial number will

send it back its own serial number

Change to state of waiting

CONTROL commands except it

will not response to REQUEST and

SELECT commands

CONTROL Tags will perform specific function

follow the reader request

Remain its state of waiting

CONTROL commands except it

will not response to REQUEST and

SELECT commands

Table 2.4 --- Command List

Page 23: RFID Data Acquisition

23

1) Assume there are three tags:

a) Tag 1: 11001111

b) Tag 2: 11100011

c) Tag 3: 11000111

At first step reader will send a REQUEST command to the tags. The REQUEST

command contains a request number. If the tags in the area contain the serial number

smaller or equal to the request number, it will send back its own serial number to the

reader.

Therefore, if we want to check whether there are tags in the area. We need to send a

REQUEST command with a maximum request number (e.g. if the system serves for tags

with 8 bits serial number: the maximum request number = 11111111). As a result, all the

tags should response as they will not have a serial number larger than that. If the reader

can’t receive anything, it will keep sending the maximum REQUEST command until ther

is response.

Figure 2.10 --- Sending the maximum REQUEST command

(Request) 11111111

Tag 1 (11001111)

Tag 2 (11100011)

Tag 3 (11000111)

Reader

Page 24: RFID Data Acquisition

24

2) When the tags reply together, collisions occur. The Reader will due with the highest

collision bits first.

Figure 2.11 --- Collision occur at bits 5,3,2

3) To handle the collision problem. The reader will send a REQUEST command with

specific request number according to the collision situation. The rule of defining the

request number is:

Bit(compare to the maximum collision bit) Setting

Upper Same as what the reader receive

Equal 0

Lower 1

Table 2.5 --- Rule of defining the request number

According the above rule, the resultant request number of our example is: 11011111.

Tag 1 (11001111)

Tag 2 (11100011)

Tag 3 (11000111)

Reader

11001111

11100011

11000111

Page 25: RFID Data Acquisition

25

Figure 2.12 --- Send the request number to due with collision at bit 5

4) As Tag 2 has the serial number which larger than the request number, it does not

response to the reader. The reader can filter out Tag 2. In other words, it can filter out the

Tags with 1 at bit 5 of their serial number

Figure 2.13 --- Filter out Tag 2

(Request) 11011111 Tag 1 (11001111)

Tag 2 (11100011)

Tag 3 (11000111)

Reader

Tag 1 (11001111)

Tag 2 (11100011)

Tag 3 (11000111)

Reader

11001111

11000111

Page 26: RFID Data Acquisition

26

5) Using the same principle before and repeat the procedures. The reader will get the

smallest serial number from the environment.

Figure 2.14 --- Send the request signal for collision at bit 3

Figure 2.15 --- Receive the smallest serial number

6) After we can get the serial number without collision, the reader still have to send a

SELECT signal to the tags with the select number (same value as the serial number

received), there are two reasons of doing that:

a) Let the tag to enter the stage of ready to receive CONTROL command

b) If the tag still response to the REQUEST command, we cannot find the other serial

number as the method always find the smallest serial number first.

(Request) 11000111

Tag 1 (11001111)

Tag 2 (11100011)

Tag 3 (11000111)

Reader

Tag 1 (11001111)

Tag 2 (11100011)

Tag 3 (11000111)

Reader

11000111

Page 27: RFID Data Acquisition

27

Only the tag with the same serial number as the select number replies to SELECT

command.

Figure 2.16 --- Send the Request Signal

Tag 3 will then send back its serial number for confirmation. It will now ready to

response to the CONTROL commands to perform specific function. The reader will

check whether the received serial number same as the one received before. If it is, the

reader will send the serial number to computer through the RS-232 interface.

The procedure repeat until all the serial number is get.

(Select)11000111 Tag 1 (11001111)

Tag 2 (11100011)

Tag 3 (11000111)

Reader

Select Number

Page 28: RFID Data Acquisition

28

The principle of binary tree I have discussed in introduction. I want to say just a few

more words on this topic related to the collision detection. For the detection of collision

bits, Manchester code acts a very important role on this. Let verify it by the about

example:

Figure 2.17 --- Collision for NRZ coding [3]

From the figure, we can see even there is collision occurs for NRZ coding, MCU can

still receive a data signal from the tags. The serial number returned may neither equal to

any one of the tags

Figure 2.18 --- Collision for Manchester coding [3]

Page 29: RFID Data Acquisition

29

Recall the memory for the Manchester coding; the value a bit is defined by the

change in level (negative or positive transition) within a bit window. Logic 0 in this

example is coded by positive transition. Logic 1 is coded by a negative transition. The

“no transition” state is not permissible during data transmission and is recognized as an

error [3]. An error may occur when there are collisions. Therefore, collision is detected.

Program Flow

Beside the reader program, I have also written the program for tag. The tag program is

used to verify whether my reader program function correctly. The program flow is basic

on the theory which stated at above.

1) Reader Program

First, MCU need to initialize condition first before it function. For example we need to

preset the value of global variable and the state of register. Then the MCU will send the

REQUEST signal with the largest request number to the tags. It is because all the tags

will response to this request signal if its serial number is less than it.

Page 30: RFID Data Acquisition

30

If there no tags near, MCU will sent the request signal again until there is a reply. If

there are tags replies with collision, the MCU will change the request number and send

again the REQUEST signal until there is no collision. Then, the MCU will send a

SELECT signal to the tags. The tag with the identical tags address will become available

for the processing of CONTROL command. Tag with different addresses will there after

only respond to a REQUEST command. Then the MCU can send the serial number to the

computer through RS-232 for further function.

Figure 2.19 --- Flow of Reader Program

Page 31: RFID Data Acquisition

31

2) Tag Program

First, initialize the MCU condition. Then the tags will wait for the REQUEST or

SELECT command. If it received a REQUEST command, compare the serial number

with the request number. If it is larger or equal to the request number, send its own serial

number to reader. Otherwise, it will not reply. Then, wait for the REQUEST or SELECT

signal again.

If the tags receive a SELECT signal with the same serial number as request number, it

will enter a state of waiting the CONTROL signal. It will not response to REQUEST or

SELECT commands anymore.

Figure 2.20 --- Flow of Tag Program

Page 32: RFID Data Acquisition

32

Serial Communication

The transmitting and receiving of signal is serial. Therefore we need to use the serial

interface of MCU: UART.

The Universal Asynchronous Receiver/Transmitter (UART) controller is the key

component of the serial communications subsystem of a computer. The UART takes

bytes of data and transmits the individual bits in a sequential fashion. At the destination, a

second UART re-assembles the bits into complete bytes

Asynchronous transmission allows data to be transmitted without the sender having to

send a clock signal to the receiver. Instead, the sender and receiver must agree on timing

parameters in advance and special bits are added to each word which are used to

synchronize the sending and receiving units.

When a word is given to the UART for Asynchronous transmissions, a bit called the

"Start Bit" is added to the beginning of each word that is to be transmitted. The Start Bit

is used to alert the receiver that a word of data is about to be sent, and to force the clock

in the receiver into synchronization with the clock in the transmitter. These two clocks

must be accurate enough to not have the frequency drift by more than 10% during the

transmission of the remaining bits in the word.

Page 33: RFID Data Acquisition

33

After the Start Bit, the individual bits of the word of data are sent, with the Least

Significant Bit (LSB) being sent first. Each bit in the transmission is transmitted for

exactly the same amount of time as all of the other bits, and the receiver “looks” at the

wire at approximately halfway through the period assigned to each bit to determine if the

bit is a 1 or a 0. For example, if it takes two seconds to send each bit, the receiver will

examine the signal to determine if it is a 1 or a 0 after one second has passed, then it will

wait two seconds and then examine the value of the next bit, and so on.

The sender does not know when the receiver has “looked” at the value of the bit. The

sender only knows when the clock says to begin transmitting the next bit of the word.

When the entire data word has been sent, the transmitter may add a Parity Bit that the

transmitter generates. The Parity Bit may be used by the receiver to perform simple error

checking. Then at least one Stop Bit is sent by the transmitter.

When the receiver has received all of the bits in the data word, it may check for the

Parity Bits (both sender and receiver must agree on whether a Parity Bit is to be used),

and then the receiver looks for a Stop Bit. If the Stop Bit does not appear when it is

supposed to, the UART considers the entire word to be garbled and will report a Framing

Error to the host processor when the data word is read. The usual cause of a Framing

Error is that the sender and receiver clocks were not running at the same speed, or that the

signal was interrupted.

Page 34: RFID Data Acquisition

34

Regardless of whether the data was received correctly or not, the UART automatically

discards the Start, Parity and Stop bits. If the sender and receiver are configured

identically, these bits are not passed to the host.

If another word is ready for transmission, the Start Bit for the new word can be sent as

soon as the Stop Bit for the previous word has been sent.

Because asynchronous data is “self synchronizing”, if there is no data to transmit, the

transmission line can be idle.

8051 provides a transmit channel and a receive channel of serial communication. The

transmit data pin (TXD) is specified at P3.1, and the receive data pin (RXD) is at P3.0.

The serial signals provided on these pins are TTL signal levels and must be boosted and

inverted through a suitable converter(MAX232 is used in my project) to comply with

RS232 standard.

All modes are controlled through SCON, the Serial control register. The SCON bits are

defined as SM0, SM1, SM2, REN, TB8, RB8, TI, RI from MSB to LSB. The timers are

controlled using TMOD, the Timer mode register, and TCON, the Timer control register.

Page 35: RFID Data Acquisition

35

The address of SCON: 98H. In my program I will set SCON = 0x50

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

SM0 SM1 SM2 REN TB8 RB8 TI RI

0 1 0 1 0 0 0 0

Table 2.6 --- Description of bits in the SCON register

1) SM0 SM1 is for the mode selection:

SM0 SM1 Mode Description Baud Rate

0 0 0 Shift Register Fosc / 12

0 1 1 8 bit UART Variable

1 0 2 9 bit UART Fosc / 64 or Fosc / 32

1 1 3 9 bit UART Variable

Table 2.7 --- Serial Transmission Mode Selection Table

Mode 0

Each transmitted bit is valid on RXD pin for one machine cycle. Reception is initiated as

soon as REN bit is set to 1 and the receive interrupt (RI) bit is cleared. Usually, REN is

set at the beginning of the program to initialize the serial port, then RI is cleared to start a

data input operation. As soon as RI is cleared, the shift clock will be produced on the

TXD pin. At the beginning of the following machine cycle, data will be clocked in from

the RxD line. After the 8th clocking cycle, the data is copied to SBUF and the RI bit is

Page 36: RFID Data Acquisition

36

set. It is up to the attached circuitry to provide data on RXD line synchronized by the

clock signal on TXD. Receive and Transmit cannot be done at the same time.

Mode 1

Mode 1 is an 8-bit UART with variable baud rate. 10 bit data are transmitted on TXD or

received on RXD. These consist of a start bit (always 0), eight data bits (LSB first) and

stop bit (always 1). Baud rate is set by timer 1.

Transmission is initiated by writing to SBUF. The shifted data are outputted on the TXD

line beginning with start bit and followed by eight bit data bits then stop bit. The transmit

interrupt (TI) flag is set as soon as the stop bit appears on TXD.

Reception is initiated by a 1 to 0 transition on RXD (assuming REN is 1). The start bit is

skipped and eight data bits are clocked into the serial port shift register. When all eight

bits have been clocked in, the following occur:

1. Ninth bit (stop bit) is clocked into RB8 in SCON

2. SBUF is loaded with eight data bits

3. Receiver interrupt flag (RI) is set

Page 37: RFID Data Acquisition

37

Mode 2

Mode 2 is 9-bit UART with fixed baud rate. Eleven bits are transmitted or received: a

start bit, eight data bits, a programmable ninth bit and a stop bit On transmission, the

ninth bit is whatever has been put in TB8 in SCON. On reception, the ninth bit received

is placed in RB8.

Mode 3

Mode 3 is 9-bit UART with variable baud rate. Mode 3 is same as Mode 2 except baud

rate is programmable and provided by Timer 1

In my program I will use Mode 1, as it can the Baud rate is programmable.

2) REN Enables serial reception.

REN = 0 (Cleared by software) disable reception.

REN = 1 (Set by software) enable reception

3) TB8 The 9th data bit that will be transmitted in Modes 2 and 3. Set or clear by

software as desired.

4) SCON.2 / RB8 In modes 2 and 3, the 9th data bit that was received. In Mode 1, if

SM2 = 0, RB8 is the stop bit that was received. In Mode 0, RB8 is not used.

Page 38: RFID Data Acquisition

38

5) SCON.1 / Tl Transmit interrupt flag.

Set by hardware at the end of the 8th bit time in Mode 0, or at the beginning of the stop

bit in the other modes, in any serial transmission. It must be cleared by software.

6) SCON.0 / Rl Receive interrupt flag.

Set by hardware at the end of the 8th bit time in Mode 0, or halfway through the stop bit

time in the other modes, in any serial reception (except see SM2). It must be cleared by

software.

Baud Rate Calculation

The transmitting and receiving rate, which is called Baud rate, is controlled by Timer 1

at mode 1. The relation between Baud Rate and Timer1:

SMOD is the bit 7 of PCON, power control register. Set it equal to zero and, as I

mention before, the oscillator frequency equal to 11.0592MHz, the equation become:

As the TH1 must be a positive value, the baud rate can only be 1200, 2400, 4800,

9600.

TH1 = 256 — Baud Rate

228800

TH1 =2

256SMOD

— 384 x (Baud Rate)

1x (Osillator Frequency)

Page 39: RFID Data Acquisition

39

Baud Rate/bps Osillator Frequency/MHz SMOD TH1 Value

62.5K 12 1 FFH

19.2K 11.06 1 FDH

9.6K 11.06 0 FDH

4.8K 11.06 0 FAH

2.4K 11.06 0 F4H

1.2K 11.06 0 E8H

300 6 0 CCH

110 6 0 72H

Table 2.8 --- Relation between Baud Rate and TH1 register

In my program, I use 9.6Kbps Baud Rate and using Timer1 interrupt. The setting of the

register becomes:

Page 40: RFID Data Acquisition

40

Experimental Procedure and Result

The experiment is needed for me to verify the function of reader program. Also, I have

to develop a tag program as I am going to use MCU acting as the tags for the

demonstration for the real situations when there is collision occur. As a result, an

experiment is also need to verify the tag program.

If the reader program and the tag program functioning like what I have stated in theory

part, the last part is to set up a collision environment. The system contains one reader

(MCU with reader program) and three tags (MCU with tag program). If the reader can get

the serial number of all the three tags, the anti-collision system is done.

Let me divide my project into three phases:

1) Reader Program

2) Tag Program

3) Combine the reader side and tag side --- a complete anti-collision system

After finished each phase, an experiment is carry out to verify everything correct.

Page 41: RFID Data Acquisition

41

Phase 1 --- Reader Program

Introduction

It is an experiment to verify the function of reader program. The functions include

Manchester coding and decoding, collision bit detection and the anti-collision system.

Equipment

1) A computer

2) A RS-232 cable

3) Testing Board for MCU with RS-232 interface

4) Testing Program --- PortTest V1.3 [5]

Testing Setup

Figure 3.1 --- Setup for Reader Testing

Page 42: RFID Data Acquisition

42

Figure 3.2 --- Interface of PortTest V1.3

Procedure

1) Connect the Pin 11(TXD) of MCU to Pin 11 of MAX232

2) Connect the Pin 10(RXD) of MCU to Pin 12 of MAX232

3) Open the testing program PortTest V1.3

4) Connect power to the testing board

5) Connect the testing board and computer through RS-232 cable

6) Push the reset button

7) See whether the computer can receive a signal FFAAAA (hex). Where FF (hex) is the

request command and AAAA (hex) is the maximum request number by Manchester Form

8) See whether the signal FFAAAA (hex) continue to send if there is no reply

9) Ask the program to send 5656 to the reader

Signal Transmission

Signal Received

Page 43: RFID Data Acquisition

43

10) Check whether the reader reply F05656 (hex). Where F0 (hex) is the SELECT

command and 5656 (hex) is the received serial number without collision

11) Send again the 5656 (hex) immediately to the reader if F05656 (hex) is received.

Check whether the reader replies 11(hex), the decoded serial number.

11) Repeats the procedure (9) - (11) by sending different Manchester Code

12) Repeat the procedure (9) by sending Manchester Code at different Bits, check

whether it can detect the collision bit and perform specific action.

Result

A) Receiving Manchester code without collision

I have try several code: 5656, 69A6, 9AA5, A595, AA55

Code sent(hex) Code sent(binary) Decode by calculation

(hex)

Decode by reader

(hex)

5656 0101011001010110 11 11

69A6 0110100110100110 6D 6D

9AA5 1001101010100101 BC BC

A595 1010010110010101 C8 C8

AA55 1010101001010101 F0 F0

Table 3.1 --- Reader Manchester Decode Result

Page 44: RFID Data Acquisition

44

B) Manchester Code when Collision

Code sent(binary) Collision bit

(highest) 7 6 5 4 3 2 1 0

Request Number

Sent (by the rule)

Request Number

Sent (by the reader)

7 11 11 11 11 11 11 11 11 7FH 7FH

6 10 11 01 10 10 11 01 11 BFH BFH

5 01 10 11 11 01 11 01 10 5FH 5FH

4 10 01 10 11 11 01 10 01 AFH AFH

3 01 10 01 10 11 01 11 01 57H 57H

2 10 01 10 01 10 11 10 01 ABH ABH

1 01 10 01 10 01 01 11 11 51H 51H

0 10 01 10 01 10 01 10 11 AAH AAH

Table 3.2 --- Reader response on collision

Page 45: RFID Data Acquisition

45

Phase 2 --- Tag Program

Introduction

It is an experiment to verify the performance of tag program. It should response to

REQUEST and SELECT commands properly.

Equipment

1) A computer

2) A RS-232 cable

3) Testing Board for MCU with RS-232 interface

4) Testing Program --- PortTest V1.3 [5]

Testing Setup

Figure 3.3 --- Setup for Tag Testing

Page 46: RFID Data Acquisition

46

Procedure

1) Connect the Pin 11(TXD) of MCU to Pin 11 of MAX232

2) Connect the Pin 10(RXD) of MCU to Pin 12 of MAX232

3) Open the testing program PortTest V1.3

4) Connect power to the testing board

5) Connect the testing board and computer through RS-232 cable

6) Push the reset button

7) Check the response by sending different commands

Result

Setting the serial number of tag to 1F(hex) by program

Command Request Number/ Select

Number

Tag Reply Tag State

Larger than 1F(hex) Yes

Smaller than 1F(hex) No

REQUEST

Equal to 1F(hex) Yes

Larger than 1F(hex) No

Smaller than 1F(hex) No

Still will response to

REQUEST and SELECT

commands afterwards

SELECT

Equal to 1F(hex) Yes Will not response to

REQUEST and SELECT

commands afterwards

Table 3.3 --- Tag Response

Page 47: RFID Data Acquisition

47

Phase 3 --- The Anti-Collision System

Introduction

The system contains three tags with different serial number. Check the reader whether

can get the serial number among these tags.

Equipment

1) A computer

2) A RS-232 cable

3) Testing board for reader MCU with RS-232 interface

4) Testing board for tag MCU with three input OR-gate

5) Testing Program --- PortTest V1.3 [5]

Testing Setup

Figure 3.4 --- Anti-collision Testing

Reader

Tag 1 Tag 2 Tag 3

Or-Gate

Page 48: RFID Data Acquisition

48

Procedure

1) On the tags side, connect the output of OR-gate(74HC4075) to Pin 10 (RXD) of

Reader MCU

2) Connect the Pin 11 (TXD) of Reader MCU to Pin 10 (RXD) of all Tag MCU

3) Connect the Pin 11 (TXD) of Reader to Pin 11 of MAX232

4) Connect the testing board for reader to computer through RS232 cable

5) Connect power supply for both testing board with same grounding

6) Push the reset button for tag board

7) Push the reset button for reader board

8) Check the reader whether it can recognize the serial number by four sets of serial

number

Serial number The first and second highest collision bit

Set 1 01111000 (78 H) 10110111 (B7 H) 11111000 (F8 H)

Bit 7 Bit 6

Set 2 10001011 (8B H) 10100100 (A4 H) 10111101 (BD H)

Bit 5 Bit4

Set 3 11100111 (E7 H) 11101011 (EB H) 11101111 (EF H)

Bit 3 Bit 2

Set 4 11001001 (C9 H) 11001010 (CA H) 11001011 (CB H)

Bit 1 Bit 0

Table 3.4 --- Set of tags to test the reader system

As the system can determine the serial number of the tags by the first two highest

collision bits if there are only three tags in the environment, this testing procedure can

confirm the reader have the ability due with collision condition at different bit.

Page 49: RFID Data Acquisition

49

Result

Set 1

Tag Serial Number Serial Number in Manchester Form

1 78 H 6A05 H

2 B7 H 9A6A H

3 F8 H AA95 H

Table 3.5 --- The Serial Number of Tags (Set 1)

Result Signal Out Explanation

FF AA AA Select Signal with Maximum

Request Number, all the tags will

reply.

FF 6A AA Tag 2 and Tag 3 will filter out as

its serial number is larger.

F0 6A 05 Send the Select Signal to tag 1

with its serial number to make

sure tag 1 will not response to

select and request signal again.

78 Receive the Serial Number from

tag 1 again. Convert to NRZ code

and send to computer.

FF AA AA Select Signal with Maximum

Request Number, all the tags will

reply except tag 1

FF 9A AA Tag 3 will be filter out

Page 50: RFID Data Acquisition

50

F0 9A 6A Send the Select Signal to tag 2

with its serial number to make

sure tag 2 will not response to

select and request signal again.

BF Receive the Serial Number from

tag 2 again. Convert to NRZ code

and sending to computer.

FF AA AA Select Signal with Maximum

Request Number, but this time

only tag 3 reply

F0 AA 95 Send the Select Signal to tag 3

with its serial number to make

sure tag 3 will not response to

select and request signal again.

F8 Receive the Serial Number from

tag 3 again. Convert to NRZ code

and sending to computer.

FF AA AA Sending Select Signal with

Maximum Request Number

Continuously, because all the tags

are selected so will not response

to the select and request signal

Table 3.6 --- Result for Set 1

Page 51: RFID Data Acquisition

51

Set 2

Tag Serial Number Serial Number in Manchester Form

1 8B H 959A H

2 A4 H 9965 H

3 BD H 9AA6 H

Table 3.7 --- Serial Number for Tags (Set 2)

Result Signal Out Explanation

FF AA AA Select Signal with Maximum

Request Number, all the tags will

reply.

FF 96 AA Tag 2 and Tag 3 will filter out as

its serial number is larger.

F0 95 9A Send the Select Signal to tag 1

with its serial number to make

sure tag 1 will not response to

select and request signal again.

8B Receive the Serial Number from

tag 1 again. Convert to NRZ code

and send to computer.

FF AA AA Select Signal with Maximum

Request Number, all the tags will

reply except tag 1

FF 99 AA

Tag 3 will be filter out

Page 52: RFID Data Acquisition

52

F0 99 65 Send the Select Signal to tag 2

with its serial number to make

sure tag 2 will not response to

select and request signal again.

A4 Receive the Serial Number from

tag 2 again. Convert to NRZ code

and sending to computer.

FF AA AA Select Signal with Maximum

Request Number, but this time

only tag 3 reply

F0 9A A6 Send the Select Signal to tag 3

with its serial number to make

sure tag 3 will not response to

select and request signal again.

BD Receive the Serial Number from

tag 3 again. Convert to NRZ code

and sending to computer.

FF AA AA Sending Select Signal with

Maximum Request Number

Continuously, because all the tags

are selected so will not response

to the select and request signal

Table 3.8 --- Result for Set 2

Page 53: RFID Data Acquisition

53

Set 3

Tag Serial Number Serial Number in Manchester Form

1 E7 H A96A H

2 EB H A99A H

3 EF H A9AA H

Table 3.9 --- Serial Number for Tags (Set 3)

Result Signal Out Explanation

FF AA AA Select Signal with Maximum

Request Number, all the tags will

reply.

FF A9 6A Tag 2 and Tag 3 will filter out as

its serial number is larger.

F0 A9 6A Send the Select Signal to tag 1

with its serial number to make

sure tag 1 will not response to

select and request signal again.

E7 Receive the Serial Number from

tag 1 again. Convert to NRZ code

and send to computer.

FF AA AA Select Signal with Maximum

Request Number, all the tags will

reply except tag 1

FF A9 9A

Tag 3 will be filter out

Page 54: RFID Data Acquisition

54

F0 A9 9A Send the Select Signal to tag 2

with its serial number to make

sure tag 2 will not response to

select and request signal again.

EB Receive the Serial Number from

tag 2 again. Convert to NRZ code

and sending to computer.

FF AA AA Select Signal with Maximum

Request Number, but this time

only tag 3 reply

F0 A9 AA Send the Select Signal to tag 3

with its serial number to make

sure tag 3 will not response to

select and request signal again.

EF Receive the Serial Number from

tag 3 again. Convert to NRZ code

and sending to computer.

FF AA AA Sending Select Signal with

Maximum Request Number

Continuously, because all the tags

are selected so will not response

to the select and request signal

Table 3.10 --- Result for Set 3

Page 55: RFID Data Acquisition

55

Set 4

Tag Serial Number Serial Number in Manchester Form

1 C9 H A596 H

2 CA H A599 H

3 CB H A59A H

Table 3.9 --- Serial Number for Tags (Set 4)

Result Signal Out Explanation

FF AA AA Select Signal with Maximum

Request Number, all the tags will

reply.

FF A5 96 Tag 2 and Tag 3 will filter out as

its serial number is larger.

F0 A5 96 Send the Select Signal to tag 1

with its serial number to make

sure tag 1 will not response to

select and request signal again.

C9 Receive the Serial Number from

tag 1 again. Convert to NRZ code

and send to computer.

FF AA AA Select Signal with Maximum

Request Number, all the tags will

reply except tag 1

FF A5 99

Tag 3 will be filter out

Page 56: RFID Data Acquisition

56

F0 A5 99 Send the Select Signal to tag 2

with its serial number to make

sure tag 2 will not response to

select and request signal again.

CA Receive the Serial Number from

tag 2 again. Convert to NRZ code

and sending to computer.

FF AA AA Select Signal with Maximum

Request Number, but this time

only tag 3 reply

F0 A5 9A Send the Select Signal to tag 3

with its serial number to make

sure tag 3 will not response to

select and request signal again.

CB Receive the Serial Number from

tag 3 again. Convert to NRZ code

and sending to computer.

FF AA AA Sending Select Signal with

Maximum Request Number

Continuously, because all the tags

are selected so will not response

to the select and request signal

Table 3.10 --- Result for Set 4

Page 57: RFID Data Acquisition

57

Discussion and Conclusion

Base On the experiment result, I have made some conclusions.

Phase 1

The results show that the reader program can perform the Manchester decoding. When

the is a collision, the reader can follow the rule of binary tree to send again the suitable

REQUEST command to filter out the serial number contain 1 at collision bit.

Generally, the reader program is success.

Phase 2

The program is performing like the tag, which I have stated at Theory part. It sends its

own serial number to the reader it REQUEST command which request number larger or

equal to its’ is received. After that, it will waiting the REQUEST and SELECT command

again until it receive a SELECT command with the same select number with serial

number. Then, the tags will not response to any SELECT and REQUEST signal again.

Phase 3

In the real situation with little noise and loss by connecting with wire, the reader can

perform the anti-collision what ever the collision is occurred at any bit. The chance for

the reader to recognize the signal become low if the noise effect is serious (e.g. wireless

communication). This can be improved by adding the error correction system and lower

the transmission speed.

Page 58: RFID Data Acquisition

58

Further Improvement

1) Adding Error Correction System:

For example, Cyclic Redundancy Check (CRC) and Parity Checking This can

make sure if the reader can recover the signal if which is missing or disturbed.

2) Bi – direction transmission,

After the computer gets the serial number of tags, it can order the tags to perform

some function (e.g. switch on the light) by calling its serial number.

Page 59: RFID Data Acquisition

59

Cost Summary

Components Value/Model Unit Cost/HKD Number Cost/HKD

Microcontroller AT89S52 22 1 22 Regulator MAX232

LT7805CV 20 20

1 1

20 20

Logic Gate 74LS08 5 1 5 Quartz Crystal 11.0592MHz 5 1 5 Resistor 1k 0.5 1 1 Capacitor 1n

1uF 40uF

0.5 0.5 0.5

1 4 2

0.5 2 1

Switch 1.2 1 1.2 RS-232 Socket DB9 5 1 5 Multi-function PCB Broad

5 1 5

IC Socket 8 pins 14pins 40 pins

4 8 16

1 4 1

5 32 16

Total Cost: 140.7 Table 5.1 --- Reader Board

Components Value/Model Unit Cost/HKD Number Cost/HKD

Microcontroller AT89S52 22 3 66 Regulator LT7805CV 20 1 20 Logic Gate 74HC4075E 5 1 5 Quartz Crystal 11.0592MHz 5 3 15 Resistor 1k 0.5 3 1.5 Capacitor 1n

1uF 40uF

0.5 0.5 0.5

3 12 6

1.2 6 3

Switch 1.2 3 3.6 Multi-function PCB Broad

5 1 5

IC Socket 8 pins 14 pins 40 pins

4 8 16

6 1 3

24 8 48

Total Cost: 200.3 Table 5.2 --- Tag Board

Page 60: RFID Data Acquisition

60

Reference

[1] Steven Shepard “RFID – Radio Frequency Identification”

[2] “ISO/IEC FDIS 18000-6:2003(E)”

[3] Klaus Finkenzeller “RFID Handbook – Fundamentals and Applications in Contactless

Smart Cards and Identification”

[4] Manish Bhuptani, Shahram Moradpour “RFID Field Guide - Deploying Radio

Frequency Identification Systems”

[5] http://big5.china.com/gate/big5/download.china.com/soft/0900/0906/index.html

Page 61: RFID Data Acquisition

61

Program Source Code

The reader program:

#include <stdio.h> #include <math.h> #include <regx51.h> void putc(char c); void demanch(); void uart(unsigned short int a); void manch(unsigned short int manch_in); unsigned short int b[8], c[16]; unsigned short int a; int i, j=15, col, col_b, rec_data, rec_data_temp=0; unsigned short int bytedata[2]={0,0}; unsigned short int byte_rec=0; unsigned short int end=0; void main() { unsigned short int con_sig=0xFF; int x, y, z; while(1) { P0_0=0; /*open transmission to tags*/ P0_1=1; byte_rec=0; rec_data=0; SCON = 0x50; /*uart in mode 1 (8 bit), REN=1*/ TMOD = 0x20; /* Timer 1 in mode 2*/ TH1 = 0xA0; /*300 Bds at 11.059MHz*/ TL1 = 0xA0; /*300 Bds at 11.059MHz*/ ES = 1; /*Enable serial interrupt*/ EA =1; /*Enable global interrupt*/ TR1 = 1; /*Timer 1 run*/

Page 62: RFID Data Acquisition

62

/*continue sending the request signal until reply*/ while((bytedata[0]==0&&bytedata[1]==0)||(bytedata[0]==1&&bytedata[1]==1)) { putc(0xFF); /*Request command*/ manch(con_sig); /*Request Number*/ for(x=0; x<300; x++) /*wait 0.3 second*/ for(y=0; y<10;y++) for(z=0; z<120; z++); } demanch(); /*Manchester Decode*/ if (col==1) /*If collision occur*/ { switch(col_b) /*Setting the request number for specific collision*/ { case 7: con_sig=0x7F; break; case 6: con_sig=0x3F; for (i=7; i>col_b; i--) con_sig=con_sig + (int)(b[i]*pow(2, i)); break; case 5: con_sig=0x1F; for (i=7; i>col_b; i--) con_sig=con_sig + (int)(b[i]*pow(2, i)); break; case 4: con_sig=0x0F; for (i=7; i>col_b; i--) con_sig=con_sig + (int)(b[i]*pow(2, i)); break;

Page 63: RFID Data Acquisition

63

case 3: con_sig=0x07; for (i=7; i>col_b; i--) con_sig=con_sig + (int)(b[i]*pow(2, i)); break; case 2: con_sig=0x03; for (i=7; i>col_b; i--) con_sig=con_sig + (int)(b[i]*pow(2, i)); break; case 1: con_sig=0x01; for (i=7; i>col_b; i--) con_sig=con_sig + (int)(b[i]*pow(2, i)); break; case 0: con_sig=0; for (i=7; i>col_b; i--) con_sig=con_sig + (int)(b[i]*pow(2, i)); break; default: con_sig=0xFF; } } else /*if no collision occur*/ { rec_data_temp=rec_data; con_sig=0xFF; byte_rec=0; rec_data=0; putc(0xF0); /*send the SELECT signal*/ manch(rec_data_temp); for(x=0; x<300; x++) /*delay 0.3 seconds*/ for(y=0; y<10; y++) for(z=0; z<120; z++); demanch();

Page 64: RFID Data Acquisition

64

/*send to computer if the serial number received is same as before*/ if (rec_data_temp==rec_data) { P0_0=1; P0_1=0; putc(rec_data); } } } } void putc(char c) /*send 8bit number through UART*/ { SBUF=c; while(!TI); TI=0; } void demanch() /*Manchester Decoding*/ { j=15; rec_data=0; col=0; col_b=0; for (i=15; i>=8; i--) { c[i] = (int)(bytedata[0]/pow(2, (i-8))); bytedata[0] = bytedata[0]%(int)(pow(2, (i-8))); } for (i=7; i>=0; i--) { c[i] = (int)(bytedata[1]/pow(2, i)); bytedata[1] = bytedata[1]%(int)(pow(2, i)); }

Page 65: RFID Data Acquisition

65

for (i=7; i>=0; i--) { if (c[j]==1) { if (c[j-1]==0) { b[i]=1; j=j-2; } else /*collision occur*/ { col=1; col_b=i; break; } } else { if (c[j-1]==1) { b[i]=0; j=j-2; } else /*collision occur*/ { col=1; col_b=i; break; } } } if (col==0) { for (i=7; i>=0; i--) rec_data = rec_data + (int)(b[i]*pow(2, i)); } bytedata[0]=0; bytedata[1]=0; }

Page 66: RFID Data Acquisition

66

void manch(unsigned short int manch_in) /*Manchester Coing*/ { j=15; for (i=7; i>=0; i--) { b[i] = (int)(manch_in/pow(2, i)); manch_in = manch_in%(int)(pow(2, i)); } for (i=7; i>=0; i--) { if (b[i]==1) { c[j]=1; c[j-1]=0; j=j-2; } else { c[j]=0; c[j-1]=1; j=j-2; } } a=0; for (j=15; j>=0; j--) { a=a+c[j]*(pow(2, j)); } uart(a); }

Page 67: RFID Data Acquisition

67

void uart(unsigned short int a) /*send 16bits signal through UART*/ { SBUF = (a>>8); while(TI!=1); TI = 0; SBUF = a; while(TI!=1); TI = 0; } void getc(void) interrupt 4 using 1 /*receive 16bits data through UART*/ { if(RI) { if(byte_rec>=1) { end=1; } bytedata[byte_rec]=SBUF; byte_rec++; RI=0; } }

Page 68: RFID Data Acquisition

68

Tag Program:

#include <stdio.h> #include <math.h> #include <regx51.h> void demanch(); void uart(unsigned short int a); void manch(unsigned short int manch_in); void putc(char c); int b[8], i, j=15, k, c[16]; int col, col_b; int rec_data; int bytedata[3]=(0,0,0); int byte_rec=0; int end=0; void main() { unsigned short int sn=0xCB; /*set the serial number*/ int mode=1; P0_0=1; /*open the transmission*/ SCON=0x50; /*UART in mode 1 (8 bit), REN=1*/ TMOD=0x20; /*Timer 1 in mode 2*/ TH1=0xA0; /*300 Bds at 11.059MHz*/ TL1=0xA0; /*300 Bds at 11.059MHz*/ ES=1; /*Enable serial interrupt*/ EA=1; /*Enable global interrupt*/ TR1=1; /*Timer 1 run*/ while (mode==1) { do{ }while(end==0); /*Wait Command*/ P0_0=1; /*open the transmission*/

Page 69: RFID Data Acquisition

69

if (bytedata[0]==0xF0) /*if SELECT command received*/ { demanch(); if (sn==rec_data) { P0_0=1; manch(sn); P0_0=0; mode=2; /*enter mode 2, not response to SEL and REQ command*/ }

else /*if the serial number received before and after the SEL signal sent not the same, set the transmission close.

{ P0_0=0; manch(sn); P0_0=1; } bytedata[3]=(0,0,0); byte_rec=0; end=0; } else if (bytedata[0]==0xFF) /*if REQUEST command received*/ { demanch(); if(sn<=rec_data) /*for the case serial number small then the REQ signal,

reply*/ { P0_0=1; manch(sn); } else /*for the case serial number larger then the REQ signal,

reply*/ P0_0=0; /*close the transmission*/ bytedata[3]=(0,0,0); byte_rec=0; end=0; } }

Page 70: RFID Data Acquisition

70

while(mode==2) /*After receiving the select signal*/ { do{ }while(end==0); if (bytedata[0]==0xFF) /*if received a request signal, close the transmission,

don’t disturb the other*/ { demanch(); if(sn<=rec_data) { P0_0=0; manch(sn); } else P0_0=0; bytedata[3]=(0,0,0); byte_rec=0; end=0; } } } void putc(char c) { SBUF =c; while(!TI); TI = 0; }

Page 71: RFID Data Acquisition

71

void getc(void) interrupt 4 using 1/*get 24 bits data through UART { if(RI) { if(byte_rec>=2) { end=1; } bytedata[byte_rec]=SBUF; byte_rec++; RI=0; } } void demanch() /*Manchester Decoding*/ { j=15; rec_data=0; col=0; col_b=7; for (i=15; i>=8; i--) { c[i] = (int)(bytedata[1]/pow(2, (i-8))); bytedata[1] = bytedata[1]%(int)(pow(2, (i-8))); } for (i=7; i>=0; i--) { c[i] = (int)(bytedata[2]/pow(2, i)); bytedata[2] = bytedata[2]%(int)(pow(2, i)); }

Page 72: RFID Data Acquisition

72

for (i=7; i>=0; i--) { if (c[j]==1) { if (c[j-1]==0) { b[i]=1; j=j-2; } else { col=1; col_b=i; break; } } else { if (c[j-1]==1) { b[i]=0; j=j-2; } else { col=1; col_b=i; break; } } } for (i=7; i>=0; i--) rec_data = rec_data + (int)(b[i]*pow(2, i)); }

Page 73: RFID Data Acquisition

73

void manch(unsigned short int manch_in) /*Manchester Coding*/ { unsigned short int a; j=15; for (i=7; i>=0; i--) { b[i] = (int)(manch_in/pow(2, i)); manch_in = manch_in%(int)(pow(2, i)); } for (i=7; i>=0; i--) { if (b[i]==1) { c[j]=1; c[j-1]=0; j=j-2; } else { c[j]=0; c[j-1]=1; j=j-2; } } a=0; for (j=15; j>=0; j--) { a=a+c[j]*(pow(2, j)); } uart(a); }

Page 74: RFID Data Acquisition

74

void uart(unsigned short int a) /*send 16 bits signal through UART*/ { SBUF = (a>>8); while(TI!=1); TI = 0; SBUF = a; while(TI!=1); TI = 0; }

Page 75: RFID Data Acquisition

75

Photo of Circuit

Figure 7.1 --- Reader Broad

Figure 7.2 --- Tag Board

Page 76: RFID Data Acquisition

76

Appendix

Page 77: RFID Data Acquisition

77

Page 78: RFID Data Acquisition

78

Page 79: RFID Data Acquisition

79

Page 80: RFID Data Acquisition

80

Page 81: RFID Data Acquisition

81