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- 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