Sunteți pe pagina 1din 12

Lucrarea nr.

4 Aplicaie de identificare radio (RFID - Radio frequency identification)


1. Obiectiul lucr!rii
Lucrarea i propune studierea unui exemplu de implementare a unei aplicaii RFID pe
platform de tip microcontrolor. Se analizeaz un alt mediu de programare pentru microcontroloare
care include un compilator ! dedicat pentru familia de microcontroloare "I.
". #on$ideraii teoretice
#n di$erse aplicaii se solicit identificarea automat a persoanelor sau produselor pe %aza unor
coduri ataate. ele mai utilizate ssteme de codificare i recunoatere automat sunt cele pe %az de
coduri de %are i respecti$ cele de tip RFID. #n primul caz codurile sunt marca&e pe suport de '(rtie
usor de identificat pe cale optic. )arca&ele se pot tipri pe o linie sau pe dou directii. odurile
sunt formate dintr*un numr limitat de cifre i o dat aplicate nu pot fi modificate. "entru a fi
identificat codul tre%uie s fie adus n zona de $izi%ilitate a cititorului optic.
)ult mai $ersatile sunt etic'etele +tag*urile sau transponderele, de tip RFID care pot fi
identificate i uneori c'iar modificate prin unde radio. Din punct de $edere principial un tag RFID
este un microcircuit dotat cu o anten radio ncorporat ntr*un suport de plastic- '(rtie- etc. ititorul
RFID emite o und radio care alimenteaz tag*ul RFID i n acelai timp solicit codul nscris n
tag. #n prea&ma unui cititor- tagul emite o und radio care conine codul tag*ului respecti$. De o%icei
codul conine o sec$en de lungime predefinit de %ii +./ - 0.- 10 %iti de date,. In cazul tag*urilor
mai e$oluate sunt permise operaii de tergere i rescriere repetate- iar capacitatea de stocare a
datelor este semnificati$ mai mare.
2stfel de circuite de identificare se pot utiliza
pentru e$idena automat a miscrii produselor sau
pentru identificarea persoanelor autorizate s
acceseze un anumit perimetru. 3xist implementri
de sisteme de autentificare a persoanelor %azate pe
tag*uri RFID ce permit stocarea datelor rele$ante
ale persoanei +date demografice sau informaii
medicale,.
In principiu pentru a construi un cititor RFID
sunt necesare urmtoarele elemente4
* o anten construit su% forma unei %o%ine
* un emiator*receptor radio specializat pe
standardul RFIF
* un circuit inteligent! pentru interpretarea mesa&elor i
transmiterea acestora pe cale serial la un
calculator5 de o%icei se folosete un microcontrolor
6ag*urile RFID sau 6ranspoderele contin un circuit
integrat si o %o%ina pe post de anten. 3le pot fi acti$e sau
pasi$e. ele acti$e contin propria sursa de energie folosita in
pastrarea informatiei in memorie si comunicare. ele
pasi$e se %azeaza pe energia electrica a frec$entei
purtatoare a semnalului radio generat de cititor. 2cestea
contin o memorie de tip 33"R7) pentru a pastra
informatia in timpul in care transponderul +tag*ul, nu se
afla in aria unei antene.
In functie de complexitate tag*urile au drepturi de citire- scriere- protectie cu parola- criptare-
protectie la suprapunerea mai multor tag*uri pe aceeasi antena- rescriere multipl- etc. ele incluse
in 8it*ul ce se studiaz n acest la%orator sunt4 3) .9/: ; citire- 3).9</ ; citire- scriere- parola pe
=: %iti. Date suplimentare despre aceste dispoziti$e pot fi o%inute din foile de catalog ale
circuitelor +>>>.emmicroelectronic.com?>e%files?"roduct?RFID?DS?3).9/:@DS.pdf-
>>>.emmicroelectronic.com?>e%files?"roduct?RFID?DS?3).9</@DS.pdf,
2ntena este un element c'eie al sistemului RFID. Dimensiunea- forma si calitatea antenei
influenteaza distanta comunicarii. 7data cu dimensiunea creste si raza de actiune a acesteia. 3ste un
ec'ili%ru intre limita maxima de constructie a antenei si limitele de siguranta ale parametrilor
tensiunilor care $or alimenta circuitul integrat al tag*urilor.
)icrocontrolorul gestioneaz comunicaia cu transpoderele i cu calculatorul gazd.. 2cesta
genereaza o frec$enta purtatoare catre antena care prin fluctuatii de camp detecteaza prezenta
transponderelor la o distanta- ce poate s $arieze de la c(i$a centimetri la c(i$a zeci de centimetri
+aprox. <*9/cm pentru 8itul utilizat n la%orator,. omunicaia cu calculatorul gazd se face pe un
canal serial asincron de tip RS:=: sau RS.A<. Folosirea standardului RS.A< permite conectarea mai
multor dispoziti$e de tip RFID sau cu alte functionaliti pe acelai tronson de ca%lu5 printr*un
sistem de adresare calculatorul gazd- care &oac rolul de master poate citi succesi$ dispoziti$ele
sla$e conectate n circuit. Deoarece un calculator o%isnuit de tip " nu are o interfa RS.A<- ci
doar una de tip RS:=:- tre%uie sa se utilizeze un circuit de con$ersie RS.A<*RS:=:. In 8it*ul studiat
acest con$ertor este realizat cu un microcontrolor "I n care s*a nscris un program de con$ersie.
In sc'emele anexate se pot identifica componentele cititorului RFID i ale con$ertorului
RS:=:*.A<. Date despre cele dou standarde de comunicaie seriale RS:=: i RS.A< pot fi o%inute
de pe Internet +>>>.lammert%ies.nl?comm?info?RS*:=:@specs.'tml-
>>>.lammert%ies.nl?comm?info?RS*.A<.'tml)
Bn cititor RFID functioneaza pe mai multe game de frec$enta4 </*<// 8Cz- 9=.0 )Cz si /.1*
:.< DCz. ele de frec$enta mica sunt mai folosite datorita costului redus raportat la o performat
satisfacatoare.
%ran$ponderele &' 41(" (Read-only)
2cestea contin 0. %iti de informatie structurati astfel 4 1 %iti de 'eader- ./ %its de date+D,- 9/
%iti de paritate pe rand +",- . %iti de paritate pe coloana. +, si un %it de / de stop +S/,.
ei ./ %iti de date sunt structurati dupa cum arata ta%elul de mai &os4 A %iti alocati pentru
campul ustomer ID si . sec$ente de A %iti pentru 6ag Id- care mpreun +=: de %iti, pot codifica
peste . miliarde de id*uri unice.
ustomer ID 6ag Id 6ag Id 6ag Id 6ag Id
A %ii de $ersiune sau
ustomer ID
=: %ii de date
1 %ii 'eader
. %ii de paritate pe coloan
9/ %ii de
paritate pe linie
2tunci cand tag*ul 3) .9/: este pozitionat in zona cititorului RFID- care emite un semnal
radio de 9:<8Cz- $a transmite n mod continuu sec$enta de ./ de %iti. Sec$ena $a fi preluat i
interpretat de cititor.
"entru e$aluarea unui sistem de tip RFID se folosete un sistem de dez$oltare RFID oferit de
firma S Inc. +ustom omputer Ser$ices- 'ttp4??>>>.ccsinfo.com?product@info.p'pE
products@idFRFID8it,. Firma este specializat n instrumente i platforme de dez$oltare pentru
microcontroloare- n spe circuite din familia "I.
Sistemul de dez$oltare este compus din urmtoarele componente4
9. plac ititor RFID!
:. plac de con$ersie RS:=:*RS.A<
=. modul de programare i depanare ID B./ +In circuit de%ugger- BSG,
.. alimentator de reea
<. trei tipuri de transpondere +tag*uri RFID,
0. ca%luri de legtur4 RS:=:- RS.A<- BSG i de depanare +D3",
"entru dez$oltare aplicaiei se foloseste mediul "H ID3 i compilatorul "I. )ediul se $a
instala de pe D*ul ataat sistemului de dez$oltare. De asemenea se $a instala dri$er*ul pentru
modulul ID*B./- n momentul n care circuitul este cuplat la o intrare BSG a calculatorului gazd.
"entru detalii pr$ind modul de instalare se $a consulta manualul de utilizare al sistemului de
dez$oltare.
Se realizeaz sc'ema din figura 9- iar alimentatorul se cupleaz la retea. Sistemul este pregtit
pentru realizarea- ncrcarea i execuia primului program scris n lim%a&ul "I +$ariant de lim%a&
pentru circuitele "I,. "rogramul aprinde i stinge un L3D pe placa int- ec'i$alent cu un
program Cello >orld! pentru un ".
Dup lansarea mediului "H ID3 se parcurg urmtorii pai4
a. 3ditarea programului
; se nc'id e$entualele fiiere desc'ise prin4 File>Close All +FileF prima icoana din meniu,
* se creeaz un nou fiier surs cu4 File>New i se atri%uie numele de EX3.C
* se copiaz programul din 2nexa9 denumit 3I=. n noul fiier creeat5 programul
cuprinde4
* directi$a include J90FAK02.'L! pentru a include declaraiile specifice pentru
circuitul cu care se lucreaz
* linia de configurare a fuzi%ilelor!5 detalii despre configurarea fuzi%ilelor se o%in
prin View>Valid Fuses
* un set de = declaraii care fac legtura dintre pinii microcontrolorului i cele =
L3Duri de pe plac
.
RS.A
<
9
:
=
<
RS:=
:
BSG
D3"
Figura 9. Sistemul de dez$oltare RFID
Resetare Rulare continu Rulare pas*cu*pas Rulare rutin Rulare p(n la cursor
* sec$ena de program care aprinde i stinge la infinit unul dintre L3Duri5 pentru
temporizare se folosete rutina delaM@ms+,! iar pentru setarea i resetarea ieirii
pentru L3D se folosesc funciile4 output_low+, i respecti$ output_high()
* se compileaz programul prin4 Compile>Compile5 compilarea se $a face cu opiunea 9.
Git
*se sal$eaz fiierul prin4 FileLSa$e 2ll
%. reerea unui proiect
* se construieste un nou proiect prin4 Projet>Create
* *se alege fiierul surs fiierul creeat anterior
* se seteaz tipul de dispoziti$ pentru care se genereaz proiectul4 P!C"#F$%#A
* * se apas %utonul Appl&
c. #ncrcarea i lansarea programului
* programul se descarc prin4 'ools>!C( sau prin Compile>Program Chip>!C(
* pe plac se o%ser$ aprinderea i stingerea periodic aL3Dului $erde
d. Rularea programului n regim de depanare +de%ugger,
* programul se descarc i se ruleaz prin4 (e)ug sau Compile>(e)ug>PC*
* rularea programului se poate face n regim continuu sau pas*cu*pas- conform sc'emei de
mai &os5 prin apsarea %utonului RBN pe plac se o%ser$ aprinderea i stingerea
L3Dului.
67)2I
26I R32LIO26 "RI)BL "R7DR2) IN "I 7)"IL3RP
Brmtorul program testat +ex<.c, realizeaz
comunicaia dintre placa int2 i " prin interfaa
serial asincron RS:=:. Se 0inc'ide proiectul
anterior i se creeaz unul nou n mod similar cu
cazul precedent. In fiierul sursa se $a copia
exemplul < din 2nex.
"entru monitorizarea canalului serial se
pornete un utilitar +similar cu CMper6erminal din
Hindo>s, prin sec$ena4 'ools>+erial Port
,o-itor. Inainte de a continua- $a tre%ui sa
conectam de aceasta daca si ca%lul serial la interfata RS:=: de la " pentru a putea facilita
comunicarea cu sistemul nostru RFID.
Atentie) #A*L+L ,&RIAL ,& -A #O.&#%A I.AI.%&
D& ALI'&.%AR&A D& LA R&%&A A /LA#II
Se configureaz apoi port serial pe care se $a efectua
comunicaia- conform sc'emei alturate. "rogramul $a
astepta citirea unui caracter de la monitorul serial +un caracter
asci sau un cod 'ex,. "entru o mai %una siguranta- se
recomanda trimiterea lor pe casuta de editare C3I dupa
modelulu4 Cex4 .K /d /a ceea ce nseamn n codificare
2SII4 D- R- LF. Dupa cum reiese si din codul sursa- la
apasarea tastei D se $a aprinde L3Dul $erde- R L3Dul rosu-
si 7 am%ele L3Duri..
Dup aceste exerciii premergtoare se poate trece la
testarea programului care implementeaz funcia de citire
RFID.
0. De$f!1urarea lucr!rii2
=.9. Se $or studia protocoalelor seriale RS:=: si RS.A< pe %aza documentaiei de la lin8*urile
indicate n paragraful precedent5 identificai diferentele dintre cele : standarde.
=.: Rulai exemplele de program descrise mai sus- iar apoi modificai programele prin
adugarea de noi funcionalitti +ex4 aprinderea mai multor L3Duri- ntr*o anumit sec$en,.
=.= Folosind exemplele de mai sus- scrieti un program care citeste un sir de n caractere- i n
funcie de textul transmis +i identificat de program, $a aprinde diferite com%inaii de L3Duri.
"rogramul $a rula in ciclu infinit.
=.. Se $a scrie un program care citeste pac'etul de date trimis de un transponder de tip em
.9/: si il $a transmite la " pentru afisarea pe ecran5 se $a folosi programul 3xK din anexa- care
are urmatoarele elemente4
*directi$ele de includere a unor module specifice pentru tag*uri- con$ertorul RS:=:*.A< i
unele utilitare
.i-lude /em0123.> 44o-trols the reader !C
.i-lude /em0"15.> 44 allows readi-g 0"15 tra-spo-ders
.i-lude /rs0$3.> 44 protool de omu-iatii
.i-lude /utilities.>
6 in programul principal +main, apar urmtoarele funcii 4
r7_i-it()8 44i-itiali9are ititor :F!(
r7_power;p()8 44alime-tarea a-te-ei
rs0$3_i-it()8 44i-i<iali9area o-=ersiei :+53560$3
6 directi$e de declarare a $aria%ilelor4
* intA ; intreg pe A %iti
* int=: ; intreg pe =: %iti
* funcii utile4
* int =: ma8e=:+int a- int %- int c- int d, ?? mpac'etare date pe =: %ii +conform
structurii pac'etului de date trimis de 3) ??.9/:,
* sprintf+sir@de@caractere-!mesa&!,5 ?? copiaz parametrul : n irul de caracterde dat
de parametrul 9
* %oolean read@.9/:+msg, * L returneaza true daca pac'etul de ./ %iti din tag a fost
sal$at in $ari%ila msg.
* c'ar rs.A<getc+, ; asteapta citirea unui c'aracter de la tastatura pe consola de
SI7H +searial port monitor,
* $oid rs.A<send+msg, ?? trimite pe consola mesa&ul indicat de msg!
* itoa+customerode-9/- msg, ??con$ersie int to ascii
=.< 6estati codul exA.c in cadrul unui nou proiect. Remarcati similitudinea cu programul
realizat la pro%lema =.=5 de aceast dat codul nu se $a mai citi de la tastatura ci $a fi trimis de tag*
ul RFID apropiat de anten.

Ane3ea 1 /ro4ra5e
/ro4ra5ul &30
Qinclude J90FAK02.'L
Qfuses CS- N7HD6- N7"R7636- N7LR"- N7GR7HN7B6- "B6 ?? %iti de setare
QBS3 delaM+cloc8 F :///////, ?? setarea frec$entei cloc8*ului la :/)'z
Qdefine DR33N@L3D "IN@= ?? redenumirea pinului . din "7R6
QD3FIN3 S3LL7H@L3D "IN@. ?? redenumirea pinului < din "7R6
QD3FIN3 R3D@L3D "IN@< ?? redenumirea pinului 0 din "7R6
$oid main+,
T
>'ile +true,
T
output@lo>+DR33N@L3D,5 ?? in logica negati$a- / *L led aprins
delaM@ms+9///,5 ?? tine ledul aprins 9/// ms F 9 sec
output@'ig'+DR33N@L3D,5 ?? 9 *L led stins
delaM@ms+9///,5
U
U
/ro4ra5ul &36
Qinclude Vrfid.'V
Qdefine RS.A<@ID /x99
Qdefine RS.A<@BS3@3I6@IN6 F2LS3
Qdefine 2D2"63R@RS.A<@ID /IKF
Qinclude Jrs.A<.cL

int msgW=:X 5
tMpedef enum T7FF- DR33N- R3D U Ledcolor5

$oid t>oolorLed +Ledcolor color, T
s>itc' +color, T
case 7FF4 T
output@lo>+"IN@2=,5
output@lo>+"IN@2<,5
%rea85
U
case DR33N4T
output@'ig'+"IN@2=,5
output@lo>+"IN@2<,5
%rea85
U

case R3D4T
output@lo>+"IN@2=,5
output@'ig'+"IN@2<,5
%rea85
U

U
U
?? trimite un sir de caractere consolei SI7H de comunicare seriala
$oid RS.A<send+c'ar Y s,T
intA size5
for+size F / 5 sWsizeXPF Z[/Z5 \\size,
rs.A<@>ait@for@%us+F2LS3,5
>'ile +Prs.A<@send@message+2D2"63R@RS.A<@ID- size- s,, T
delaM@ms+RS.A<@ID,5
U
U
?Y citeste un caracter din monitorul comnuicari seriale
SI7H. Din casuta de editare C3I se $a trimite codul 'ex
al cifrelor D - R sau 7 urmate de caracterele /D /2.
3x4 .K /d /a- pt caracterul D
Y?
c'ar RS.A<getc+,T
rs.A<@get@message+msg- 6RB3,5
return msgW:X5
U

$oid main+$oid, T
output@lo>+DR33N@L3D,5 ??SC7H "7H3R IS 7N
rs.A<@init+,5 ?? initializare comunicare seriala
?? \ con$ersie rs.A< *L rs:=:

>'ile +true, T
sprintf+msg- V+7,ff - +D,reen- +R,ed [n[rV,5
RS.A<send+msg,5
s>itc'+toupper+RS.A<getc+,,, T
case Z7Z4 t>oolorLed+7FF,5 %rea85
case ZDZ4 t>oolorLed+DR33N,5 %rea85
case ZRZ4 t>oolorLed+R3D,5 %rea85
U
U
U
/ro4ra5ul &37
Qinclude Vrfid.'V
Qinclude Jem./1<.cL ??controls t'e reader I
Qinclude Jem.9/:.cL ?? allo>s reading .9/: transponders
Qdefine 2D2"63R@RS.A<@ID /IKF
Qinclude Jrs.A<.cL
intA msgW=:X5
?? trimite un sir de caractere consolei SI7H de comunicare seriala
$oid RS.A<send+c'ar Y s,T
intA size5
for+size F / 5 sWsizeXPF Z[/Z5 \\size,
rs.A<@>ait@for@%us+F2LS3,5
>'ile +Prs.A<@send@message+2D2"63R@RS.A<@ID- size- s,, T
delaM@ms+RS.A<@ID,5
U
U
?Y citeste un caracter din monitorul comnuicari seriale
SI7H. Din casuta de editare C3I se $a trimite codul 'ex
al cifrelor D - R sau 7 urmate de caracterele /D /2.
3x4 .K /d /a- pt caracterul D
Y?
c'ar RS.A<getc+,T
rs.A<@get@message+msg- 6RB3,5
return msgW:X5
U
$oid main+,T
intA customerode5
int=: tagNum5
rs.A<@init+,5 ?? initializare comunicare seriala
?? \ con$ersie rs.A< *L rs:=:
rf@init+,5 ??initialize t'e RF reader
rf@po>erBp+,5 ??po>er up t'e antenna
rs.A<@init+,5 ?? initialize rs.A< comunication
output@lo>+DR33N@L3D,5?? s'o> t'e %oard is po>ered and readM
sprintf+msg- Viteste card [n[rV,5
RS.A<send+msg,5
for +55,T
if +read@.9/:+msg,, T
customerode F msgW/X5
tagNum F ma8e=:+msgW9X- msgW:X-msgW=X-msgW.X,5

sprintf+msg-Vcustomer code4 ]u[n[r V- customerode,5
RS.A<send+msg,5

sprintf+msg-V6ag num%er4 ]lu[n[r V- tagNum,5
RS.A<send+msg,5
U
U??3ND F7R
U??3ND )2IN
/ro4ra5ul &38
Qinclude Vrfid.'V
Qinclude Jem./1<.cL
Qinclude Jem.9/:.cL
Qinclude Jrs.A<.cL
Qinclude Jstdli%.'L
intA msgW=:X5
Qinclude Vutilities.cV
$oid main+,T
intA customerode- code5
int=: tagNum- tag@ID5

rf@init+,5
rf@po>erBp+,5
rs.A<@init+,5
output@lo>+S3LL7H@L3D,5
?Y
sprintf+msg- V3nter t'e customer code4 V,5
RS.A<send+msg,5
code F RS.A<getInt+,5
output@lo>+DR33N@L3D,5
delaM@ms+9///,5
output@'ig'+DR33N@L3D,5

sprintf+msg- V[n[n[rV,5
RS.A<send+msg,5

sprintf+msg- V3nter t'e tag ID4 V,5
Rs.A<send+msg,5
tag@ID F Rs.A<getI=:+,5
output@lo>+DR33N@L3D,5
delaM@ms+9///,5
output@'ig'+DR33N@L3D,5

sprintf+msg-V[n[n[rScanning...V,5
Rs.A<send+msg,5Y?
code F 9K0 5
tag@ID F <=9=:.5
for+55,T
if +read@.9/:+msg,,T

customerode FmsgW/X5
tagNum F ma8e=:+msgW9X- msgW:X- msgW=X- msgW.X,5
??itoa+customerode-9/- msg,5??send code
??RS.A<send+msg,5
??sprintf+msg- V[n[n[rV,5
??RS.A<send+msg,5
??itoa+tagNum-9/- msg,5
?? RS.A<send+msg,5 ?? send tag id
if + customerode FF code ^^ tagNum FF tag@ID ,T
output@'ig'+R3D@L3D,5
output@lo>+DR33N@L3D,5
UelseT
output@'ig'+DR33N@L3D,5
output@lo>+R3D@L3D,5
U
delaM@ms+:///,5
output@'ig'+DR33N@L3D,5
output@'ig'+R3D@L3D,5
U
U
U
Ane3a " ,c9e5e electrice 1i de$ene de a5pla$are
Scema circuitului de con$ersie RS:=:*RS.A<
Sc'ema ititorului RFID
Sc'emele de amplasare a componentelor pe cele dou plci

S-ar putea să vă placă și