Lekce 33 - Arduino a modul čtečky RFID 125kHz

04.08.2014 14:15

Translate to English

    Dnes jsem si vyhledal pro dnešní článek modul čtečky RFID čipů. Nejdříve si ale řekneme něco o vlastní technologii, vlastnostech a modifikací technologie RFID identifikace.

    Za vznikem technologie RFID (Radio Frequency Identification) čipů v minulosti stála firma WalMart, která se taktéž zasadila o vznik čárového kódu. Oni potřebovali, ale takovou technologii, která by umožnila získat data o něčem bez přímé viditelnosti a i o více objektech najednou. Tato oblast se velice v dnešní době rozvíjí  a její uplatnění lze najít v logistice, dopravě, identifikace osob a neposlední řadě ač jde o jinou technologii (princip bude stejný) tak použití NFC tagu v mobilních telefonech. 

    Jek to funguje? Budeme se bavit o technologii RDIF, které nepotřebuje k identifikaci vlastní napájení. Tato se nazývá RTF (reader talk first). K identifikaci se používá tzv. pasivních čipů, které berou energii ze čtecího zařízení pomocí elektromagnetické indukce. 

    Jak tedy celá věc funguje. Modul čtecího zařízení, je připojen k anténě, která má zpravidla tvar cívky. Tato neustále do okolí indukuje elektromagnetické vlnění. Když se k cívce přiblíží nějaký RDIF tag (může mít podobu klíčenky, nálepky, přívěšku, nebo náramku), kdy tento má v sobě také zabudovanou anténu, tak vlivem elektromagnetické indukce se začne napájet elektronický čip, který odešle zpět do antény přijímacího modulu informaci o sobě, kdy tyto data modul zpracuje.

    Já jsem si vybral pro ukázku modul, který pracuje na frekvenci 125kHz. Jsou i jiné systémy, které pracují na frekvencích třeba 13,56 MHz. Na této frekvenci  vychází moduly a tak i hlavně RFID tagy (identifikátory) nejlevněji. Pod ruku mi přišel modul čtečky tagů s označením RMD6300, který se jednoduše připojí na Arduino přes sériový port.

     Tento modul je již dodávaný s anténou ve tvaru cívky a po zakoupení nebo sehnání nějakých RFID identifikátorů, můžeme s tímto začít experimentovat. Jednotlivé rozložení pinů na modulu je na obrázku níže:

   Na samotné zapojení s Arduinem nám postačí 3 vodiče. Napájení je jasné, můžeme si vybrat za budeme napájet modul přes P1 na pin4 a pin5 nebo přes P3 na pin2 a pin 3. Další vodič a to poslední povede v modulu z TX (P1 pin1) do Arduina na digitální pin1. ASle je to jedno v programu si to můžeme potom lehce změnit. Nebudeme používat na Arduinu již hotový sériový port, ale pomocí knihovny  ho uděláme kde chceme (to pro případ, že k programovíní Arduina používáme digitální pin 1 a 2 - tak aby nám to nedělalo problém při přehrávání programu).

   Do Arduina si nahrajeme následující program:

    Po nahrání programu do Arduina si zapneme SerialMonitor a zkusíme si přiložit k anténě nějaký tag. Na SerialMonitoru by jste měli vidět, jak vám přišli nějaká čísla. Mělo by jich být celkem 14. Vysvětlíme si co jednotlivá čísla znamenají.   

1) Startovací byte (vždy číslo 2)

2 - 12) číslo tagu

13) kontrolní součet

14) konečný byte

Takže, můj testovací tag vrátil tyto hodnoty:

 48 57 48 48 53 67 54 68 66 66 56 51 3

   My si teď program trosku upravíme. Načteme všechny data do pole čísel, ale poté budeme zpracovávat jenom ty červené hodnoty. Tyto nám modul vrací v ASCI kódu takže je převedeme na znaky. Tyto si poté pošleme na SerialMonitor ..... a jaký bude výsledek? Dostaneme číslo ID tagu nebo čipu, ale v hexadecimální soustavě. Převod do desítkové by byl programově náročný a hlavně 10 místné číslo, by jsme neuložili ani do proměnné long. Ale každý si může vyzkoušet, pokud má číslo čipu vytištěno jako já, převod na kalkulačce ve Windows po přepnutí na programátorskou. 

Kód se moc nezměnil:

Výstup na SerialMonitoru bude vypadat asi takto:

   Tak identifikaci čipu jsme zvládli a teď si vyrobíme jednoduchý přístupový systém, který bude ovládat např. elektro-zámek ke dveřím. Na pin 8 jsem si zapojil piezo bzučák a na pin 9 jsem připojil modul elektrického relé. Pozor u mého relé je k sepnutí zapotřebí hodnota LOW, takže je při inicializaci nastaven na HIGH. Jinak se zapojení nezměnilo a do Arduina si nahrajeme následující program. Je dosti okomentován, takže si myslím, že nebude zapotřebí dalšího vysvětlování. 

     Vlastní povolené čipy, které budou umožnovat přístup si můžete dopsat sami i ve větším množství, jen nezapomeňte rozšířit délku pole, kde jsou hodnoty čipu uloženy. 

 

 

 

Zpět

Diskusní téma: Lekce 33 - Arduino a modul čtečky RFID 125kHz

Datum
Vložil
Titulek

John

Thank you for the sensible critique. Me &amp my neighbor were just preparing to do a little research about this. We got a grab a book from our local library but I think I learned more from this post. I am very glad to see such excellent info being shared freely out there. bkcaekkckadkgeec

Datum
Vložil
Titulek

13,56 MHz

Jde stejný zdroják použít i na 13,56MHz ?
Zkoušel někdo? Dík za info.

Datum
Vložil
Titulek

nekontroluje idOK

Zdravím, mám stejný HW a když načtu čip, tak mi vždy sepne relé jako kdyby byl zapsán v idOK, ale tam není. Takže by měl čip zamínout SpatneID, ale to se nestane.

Datum
Vložil
Titulek

Re: nekontroluje idOK

Zdravím
Také mi to neověřovalo ID.
Upravil jsem podmínku pro vyhodnocení ID
for (i = 0; i < (sizeof(idOK)/6); ++i)
protože "sizeof(idOK)" pro mě z nějakého neznámého důvodu vrací šestinásobek počtů polí pro "String idOK[]".
Prostě to porovnávalo po překročení počtu polí nějaké nesmysly a z úplně pro mě nepochopitelného důvodu to pak otevíralo pro jakékoliv ID i když nebylo uvedeno mezi "idOK".
Teď to sice funguje správně, ale má to tendence někdy sepnout vícekrát za sebou, i když čip už není přiložený.

Datum
Vložil
Titulek

Nefunguje

Dobrý den, mám problém, podle Vašeho návodu nahraji do arduina (mega 2560) kod, připojím RFID modul a při přiložení čipu k anténě se na serial monitoru nic neobjeví. RFID tag je podle prodejce 125khz, dá se to nějak ověřit? Nebo kde mohou být další závady. Děkuji

Datum
Vložil
Titulek

Re: Nefunguje

měl jsem stejný problém zkuste jestli je anténa průchozí pokud ne je zde problém

Datum
Vložil
Titulek

Kontrolní součet

Ahoj, jak funguje ten kontrolní součet? Nemůžu přijít na to, jak to vypočítat, protože bych si chtěl udělat kontrolu, jestli to ten čip přečetlo správně nebo ne. Na netu je několik metod jak kontrolní součet provést, ale žádná mi nesedí na tento. Děkuji

Datum
Vložil
Titulek

Re: Kontrolní součet

Kontrolny sucet su posledne dve hodnoty okrem "3".
Algoritmus najdete napr. tu: https://stackoverflow.com/questions/11848921/arduino-rfid-checksum-calculation-and-key-visualization

<< 1 | 2

Vyhledávání

arduino8.cz © 2015 Všechna práva vyhrazena.