Elektroniczna blokada RFID zrób to sam na mikrokontrolerze. Schemat. RFID jest łatwe. Wdrożenie własnego transpondera i czytnika RFID. Transfer danych między tagami a czytnikiem

Czytnik RFID - karty i breloki
na mikrokontrolerze ATtiny13

Źródło: www.serasidis.gr
Vassilis Serasidis

Tłumaczenie: Vadim na zlecenie RadioLotsman

W ostatnim czasie dużą popularnością cieszą się różne projekty oparte na kluczach RFID stosowanych w systemach bezpieczeństwa, ochrony i kontroli dostępu. W niektórych przedsiębiorstwach i organizacjach takie systemy uzupełniają specjalistyczne oprogramowanie, służą do ustalania czasu pracy, rozliczania wartości materiałowych itp.

Każdy system identyfikacji radiowej (RFID) składa się z czytnika (czytnika, czytnika lub interrogatora) i transpondera (znanego również jako tag RFID, czasami używa się również określenia tag RFID). W artykule rozważymy proste urządzenie do odczytu kluczy RFID, które obsługują protokół EM4100 i działają z częstotliwością 125 kHz. Ten typ Klucze RFID mogą mieć postać breloka lub karty kredytowej (rysunek poniżej).

Głównym elementem czytnika jest mikrokontroler Atmel AVR ATtiny13 , który odczytuje 10-cyfrowy unikalny numer identyfikacyjny klucza i przesyła go w kodowaniu ASCII przez interfejs szeregowy (UART) z szybkością 2400 b/s do urządzenia hosta. Innymi słowy, czytnik jest osobnym modułem podłączonym do głównego procesora lub mikrokontrolera systemu (rysunek 2).

Schemat ideowy czytnika RFID przedstawia poniższy rysunek:

Rozważ główne cechy programu. Mikrokontroler wykorzystuje wbudowany modulator PWM do generowania fali prostokątnej 125 kHz na wyjściu PB0. Jeśli wyjście PB0 log. 0 (opadające zbocze impulsu), tranzystor T1 jest w stanie zamkniętym, a napięcie zasilania +5 V jest podawane na cewkę L1 przez rezystor R1. Zbocze narastające na wyjściu PB0 (log. 1) otwiera tranzystor T1, a górne wyjście cewki zgodnie z układem jest połączone z masą. W tym momencie cewka jest połączona równolegle z kondensatorem C2, tworząc generator LC (obwód oscylacyjny). Tranzystor przełącza się 125 000 razy na sekundę (125 kHz). W efekcie cewka generuje sygnał sinusoidalny o częstotliwości 125 kHz

Moduł czytnika generuje pole elektromagnetyczne, którego energia jest wykorzystywana do zasilania klucza RFID. Przenoszenie energii pomiędzy kluczem RFID a czytnikiem opiera się na zasadzie działania konwencjonalnego transformatora: uzwojenie pierwotne transformatora wytwarza indukcyjne pola elektromagnetyczne we wszystkich innych uzwojeniach. W naszym przypadku uzwojenie pierwotne to cewka czytnika, a uzwojenie wtórne to cewka klucza RFID. Elementy D1, C3 i R5 tworzą demodulator sygnału z modulacją amplitudy.

Wymiana danych między kluczem a czytnikiem

Proces wymiany danych pomiędzy kluczem RFID a czytnikiem jest bardzo prosty, ale przemyślany w najmniejszym szczególe. Czy klucz RFID powinien wysłać dziennik. 0, wówczas podłącza do swojego źródła zasilania określone „obciążenie”, co wymaga większej ilości energii przesyłanej przez czytnik. Spowoduje to niewielki spadek napięcia po stronie czytnika; to właśnie ten poziom jest postrzegany przez czytelnika jako dziennik. 0

Klucz RFID na ogół przesyła 64 bity danych w następującej kolejności (Rysunek 6):

  1. Pierwsze 9 bitów (zawsze logiczne 1) to bity startu wskazujące początek wymiany danych.
  2. 4 bity - najmniej znaczące bity numeru identyfikacyjnego użytkownika (D00 - D03).
  3. 1 bit (P0) - bit parzystości poprzednich 4 bitów.
  4. 4 bity to najbardziej znaczące bity numeru identyfikacyjnego użytkownika (D04 - D07).
  5. 1 bit (P1) - bit parzystości poprzednich 4 bitów.
  6. 4 bity - pierwsza część 32-bitowej numer seryjny Klucz RFID (D08 - D11).
  7. 1 bit (P2) - bit parzystości poprzednich 4 bitów.
  8. Następnie przesyłane są kolejne grupy 4 bitów numeru seryjnego klucza, każdy z bitem parzystości.
  9. Następnie 4 bity bitów parzystości są przesyłane przez kolumny. Na przykład bit parzystości PC0 dla bitów D00, D04, D08, D12, D16, D20, D24, D28, D32 i D36.
  10. 1 bit stopu.

Dane (sekwencja 64-bitowa), które przesyła klucz RFID.

Kontrola integralności danych jest wykonywana przez mikrokontroler poprzez obliczenie bitów parzystości dla każdego wiersza i kolumny oraz porównanie z otrzymanymi danymi z klucza RFID.

Konstrukcja cewki.

Bezramkowa cewka indukcyjna w czytniku o średnicy 120 mm jest nawinięta drutem o średnicy 0,5 mm i ma 58 zwojów, ale autor zaleca dodanie kolejnych 2 - 3 zwojów podczas nawijania. W celu poprawy wydajności cewki i zwiększenia odległości odczytu danych klucza RFID konieczna jest kalibracja obwodu oscylacyjnego. Jeśli po podłączeniu oscyloskopu do punktu połączenia R1 i L1 zobaczysz zniekształcone piki na ekranie urządzenia (Rysunek 7), oznacza to konieczność kalibracji cewki L1.

Zniekształcenie sygnału generowanego przez cewkę L1 wskazuje na konieczność kalibracji.

Kalibrację można przeprowadzić na dwa sposoby po włączeniu zasilania modułu.

  1. Podłącz sondy oscyloskopowe do punktu połączenia R1 i L1 i zwiększając lub zmniejszając liczbę zwojów cewki L1 eliminuj zniekształcenia sygnału.
  2. Jeśli nie masz oscyloskopu, powoli zbliżaj klucz RFID do cewki, aż klucz zostanie rozpoznany, o czym świadczy sygnał dźwiękowy. Jeżeli klucz jest ustalany z odległości 2 cm, to należy dodać/usunąć kilka zwojów, a następnie ponownie sprawdzić z jakiej odległości klucz można pewnie odczytać. Dzięki kalibracji autor schematu uzyskał pewny odczyt klucza RFID od 3 cm.

Podczas programowania mikrokontrolera należy ustawić następującą konfigurację Fuse-bit: niski bajt 0x7A i wysoki bajt 0x1F (mikrokontroler działa z wbudowanego generatora zegara 9,6 MHz, dzielnik częstotliwości taktowania przez 8 jest wyłączony). Kod programu zajmuje 1024 bajty w pamięci mikrokontrolera - wykorzystywana jest cała dostępna pamięć mikrokontrolera ATtiny13. Dlatego w przyszłości przy rozszerzaniu funkcjonalności czytnika lepiej zastosować kolejny 8-pinowy mikrokontroler AVR, na przykład ATtiny85.

Pliki do pobrania:

Kod źródłowy programu mikrokontrolera (AVRStudio 6), firmware (.hex) i Schemat obwodu -

Charakterystyka:
Częstotliwość wycięcia: 125 KHz
Zasilanie: +5 V DC
Dane wyjściowe: szeregowy, 2400 bps 8N1. Wydawany jest 10-cyfrowy numer seryjny tagu.

Obrazek 1:Rysunek 2:

Wstęp

Ten czytnik RFID współpracuje ze znacznikami 125 kHz w kartach wielkości karty kredytowej i brelokami 125 kHz (rysunek 1). Wykorzystuje protokół EM4100. Gdy zbliżysz tag RFID (4-5 cm) do cewki czytnika (L1), czytnik odczyta 10 cyfr unikalny identyfikator etykietę i przesyłaj ją jako znaki ASCII przez wyjście szeregowe z szybkością 2400 bitów na sekundę.

Obwód zawiera urządzenie sygnalizacyjne, które emituje przerywane sygnały dźwiękowe po pomyślnym odczytaniu etykiety.

Opis

Postaram się w kilku słowach wyjaśnić, jak działa czytnik RFID. Kontroler ATtiny13 wykorzystuje funkcję PWM do generowania sygnału prostokątnego o częstotliwości 125kHz. Ten sygnał jest wyprowadzany z pinu PB0. Na zboczu opadającym impulsu na pinie PB0 (logiczne zero „0”) tranzystor T1 jest zamknięty. Zatem cewka L1 jest wzbudzana przez rezystor R1 (nominalnie 100 omów) od napięcia +5V. Gdy impuls na pinie PB0 wzrasta (logiczna „1”), włącza się tranzystor T1 i jeden z zacisków cewki L1 jest podłączony do GND. Kondensator C2 jest podłączony równolegle do cewki L1, tworząc oscylator LC. Dane przełączania cewki L1 z logicznej jedynki na logiczne zero występują 125 000 razy na sekundę (125 kHz).

Rysunek 3: Oscylacje sygnału o częstotliwości 125 kHz, które są przesyłane z cewki L1 i kondensatora C2.

Czytnik RFID przekazuje energię do transpondera (znacznika) tworząc pole elektromagnetyczne. Przenoszenie energii pomiędzy czytnikiem RFID a tagiem odbywa się na tej samej zasadzie co praca transformatory , napięcie przetwarzania sieci 220 V prąd przemienny przy 12 V AC, dzięki polu magnetycznemu wytwarzanemu przez uzwojenie pierwotne. W naszym przypadku uzwojenie pierwotne to czytnik RFID, a uzwojenie wtórne to tag RFID. Jedyną różnicą jest to, że w obwodzie czytnika RFID nie ma stalowego obwodu magnetycznego między dwiema cewkami (jedna cewka znajduje się z boku czytnika, a druga cewka znajduje się w tagu RFID). Komponenty D1, C3 i R5 tworzą demodulator Sygnał AM (AM = modulacja amplitudy).

Transfer danych pomiędzy tagami a czytnikiem.

Jak tagi przesyłają dane do czytnika? Bardzo prosta! Gdy tag chce przekazać czytnikowi logiczne zero „0”, obciąża swoją linię zasilającą, aby pobrać więcej mocy z czytnika. Powoduje to niewielki spadek napięcia z boku czytnika RFID. Ten poziom napięcia wynosi logiczne zero „0” (patrz rysunek 4). Równolegle z nadawaniem przez czytnik sygnału o częstotliwości 125 kHz odczytuje on napięcie nadawanego sygnału przez filtry D1, C3 i R5, C1. Gdy tag spada napięcie, jak wspomniano wcześniej, czytnik odczytuje ten spadek napięcia jako logiczne zero „0”. Jeżeli tag nie wymaga dodatkowego zasilania, nie powoduje spadku napięcia. Odpowiada to jednostce logicznej „1” (rysunek 3). Długość „jedynek” lub „zer” zależy od szybkości transmisji danych szeregowych. Na przykład dla częstotliwości nośnej 125 kHz nie otrzymujemy szybkości transmisji 125 000 bitów na sekundę! Transfer danych ze znacznika do czytnika waha się od 500 do 8000 bitów na sekundę.

Rysunek 4:Zrzut ekranu z przesyłaniem danych...10101...Rysunek 5


  • Znacznik RFID 125 kHz przesyła 64 bity.
    1. Pierwsze 9 bitów to bity startu transmisji (zawsze „1”).
    2. Kolejne 4 bity to młodsze bity identyfikatora użytkownika (D00,..., D03).
    3. Następny 1 bit (P0) to bit parzystości poprzednich 4 bitów.
    4. Kolejne 4 bity to najbardziej znaczące bity identyfikatora użytkownika (D04,..., D07).
    5. Następny 1 bit (P1) to bit parzystości poprzednich 4 bitów.
    6. Kolejne 4 bity to pierwsza część 32-bitowego numeru seryjnego tagu (D08,...,D11).
    7. Bit PC0 to bit parzystości bitów D00, D04, D08, D12, D16, D20, D24, D28, D32 i D36 (bity znajdują się w tej samej kolumnie).
    8. Bity PC1, PC2, PC3 są bitami parzystości kolejnych trzech kolumn.

Weryfikacja danych jest wykonywana przez kontroler ATtiny13 poprzez obliczenie bitu parzystości każdego wiersza i każdej kolumny bitów parzystości, które są odbierane w przesyłanych danych znacznika RFID.

Produkcja cewki

Cewka ma średnicę 120 mm i 58 zwojów. Na wszelki wypadek zostaw trochę drutu miedzianego na dodatkowe 2-3 zwoje (łącznie 60-61 zwojów). Aby uzyskać maksymalną odległość między tagiem RFID a czytnikiem (pomiędzy tagiem a anteną cewki czytnika), należy skalibrować cewkę. Jeśli podłączysz oscyloskop do wspólnego punktu połączenia R1 i L1, zobaczysz miejsce oznaczone czerwonym kółkiem na rysunku po lewej stronie. Oznacza to, że cewka L1 musi być skalibrowana.

Jak skalibrować cewkę L1?

Włącz czytnik RFID:

1. Po podłączeniu sondy oscyloskopowej do wspólnego punktu R1, L1 spróbuj powoli usunąć lub dodać trochę drutu miedzianego (zwiększyć lub zmniejszyć liczbę zwojów) cewki, aż do wyeliminowania szumów.

2. Jeśli nie masz oscyloskopu, spróbuj zbliżyć tag RFID do cewki L1, aż tag zostanie rozpoznany przez czytnik. Jeśli znak zostanie wykryty w odległości 2 cm od cewki L1, spróbuj dodać kilka zwojów drutu miedzianego do cewki L1, aby upewnić się, że znak zostanie wykryty z większej odległości (na przykład 3 cm).

Spróbuj wykonać te same czynności, usuwając zwoje drutu miedzianego z cewki L1. W ten sposób uzyskasz maksymalny zakres odległości między znacznikami a cewką L1.

Zrobiłem cewkę 120 mm L1 z 58 zwojami, ale później chciałem ją zmniejszyć. Złożyłem więc cewkę na pół, aby wyglądała jak „ósemka” (w kształcie ósemki) i ponownie skalibrowałem. Tak więc cewka L1 na figurach ma w rzeczywistości średnicę mniejszą niż 120 mm.

Cewka L1 na rysunku ma średnicę 60 mm i prawie 116 zwojów.

ProgramowanieATtiny13

Zestaw bitów konfiguracyjnych ATtiny13 (bezpieczniki): Bezpiecznik wysoki: 0x1F i Bezpiecznik niski: 0x7A . Ten zestaw strojenia ATtiny13 współpracuje z wewnętrznym oscylatorem 9,6 MHz. Funkcja dzielenia przez 8 zegara systemowego jest wyłączona.

Wersja oprogramowania v1.00 ma 1024 bajty i zajmuje 100% pamięci Flash ATtiny13. Dobrym pomysłem może być przełączenie się na jakikolwiek inny 8-pinowy AVR, taki jak ATtiny85, jeśli chcesz dodać jakąś funkcjonalność do kodu źródłowego.

Projekt został zaprojektowany przez: Vassilis Serasidis ( Vassilis Serasidis) 18 sierpnia 2012
Język programowania: OD
Środowisko programistyczne:
Mikrokontroler:ATtiny13 (oscylator wewnętrzny 9,6 MHz)

Lista elementów radiowych

Przeznaczenie Rodzaj Określenie Ilość NotatkaSklepMój notatnik
IC1 MK AVR 8-bitowy

ATtiny13

1 Do notatnika
IC2 Wzmacniacz operacyjny

LM358

1 Do notatnika
IC3 Regulator liniowy

LM78L05

1 Do notatnika
T1 Tranzystor MOSFET

BS170

1 Do notatnika
T2 tranzystor bipolarny

BC547B

1 Do notatnika
D1 dioda prostownicza

1N4148

1 Do notatnika
C1 Kondensator12 nF1 Do notatnika
C2 Kondensator1,5 nF1 Do notatnika
C3 Kondensator4,7 nF1 Do notatnika
C4, C5 kondensator elektrolityczny100uF2 Do notatnika
C6 Kondensator100 nF1 Do notatnika
R1 Rezystor

100 omów

1 Do notatnika
R2 Rezystor

1 kΩ

1 Do notatnika
R3 Rezystor

390 kΩ

1 Do notatnika
R4, R8 Rezystor

33 kiloomów

2 Do notatnika
R5 Rezystor

270 kΩ

1 Do notatnika
R6 Rezystor

Schemat ideowy emulatora transpondera RFID EM-Marine (EM4100).
Karty zbliżeniowe Em-Marine są zdecydowanie najpopularniejszym sposobem identyfikacji w naszym kraju i służą do identyfikacji użytkowników w systemach kontroli dostępu i zarządzania (ACS).
Drugim, nie mniej popularnym obszarem zastosowania kart Em-Marine jest ich wykorzystanie w logicznych systemach dostępu przy autoryzacji użytkowników po numerze ID karty w system operacyjny aplikacje komputerowe i robocze itp.

Karty i breloki Em-Marine.
W związku z tym takie systemy identyfikacji są bardzo powszechne i mogą być interesujące przy wdrażaniu ich własnych systemów identyfikacji i automatyzacji. Ponieważ protokół wymiany i sprzęt takich systemów niskoczęstotliwościowych są prostsze do samodzielnej implementacji własnych urządzeń, większość projektów radioamatorskich RFID jest dedykowana dla systemów niskoczęstotliwościowych.

Częstotliwość pracy kart Em-Marine wynosi 125 kHz. Do ich odczytu wykorzystywane są specjalizowane czytniki kart zbliżeniowych (czytniki RFID). Współpraca identyfikatora z takim czytnikiem odbywa się zdalnie.
Istnieje ogromna liczba opcji zewnętrznego wykonania tych identyfikatorów: przepustki Em-Marine wykonywane są w postaci cienkich i grubych kart, bransoletek do aquaparków, różnych breloków, znaczników radiowych do integracji z produktami RFID.
W przypadku standardu transpondera EM4100 karta zawiera 64 bity danych, a karty są zwykle jednokrotnego zapisu. Dla wygody rejestracji kart kod zapisany na karcie jest duplikowany poprzez nadruk na jednej stronie karty. Kodowanie danych przesyłanych przez transponder to kodowanie Manchester. W tym przypadku okresy sygnału transmitowanego przez transponder są wielokrotnościami częstotliwości 125KHz - częstotliwości sygnału czytnika transpondera. Same transpondery są realizowane bez zewnętrznego zasilania (tag pasywny), zasilanie jest dostarczane przez obwód LC (cewka i kondensator) gdy tag wejdzie w obszar zasięgu pola czytnika kart. Taktowanie transpondera realizowane jest również sygnałem czytnika - 125KHz. Dlatego parametry sygnału wynikowego w kodowaniu Manchester są wielokrotnościami sygnału 125 kHz.

Schemat współpracy transpondera z czytnikiem RFID.
Aby uzyskać pełniejsze zrozumienie, rozważmy strukturę pakietu transponderów RFID EMMarine EM4100. Podano opis (w języku angielskim, zaczerpnięty z adnotacji) formatu pakietu transpondera.
„……. Transpondery RFID kompatybilne z EM4100 mają 64 bity pamięci tylko do odczytu. Oznacza to, że informacje można odczytać z Tagu, ale nie można zmienić danych, lub nowe dane zostaną zapisane na karcie po zaprogramowaniu karty danymi początkowymi. Format danych jest pokazany tutaj.
1 1 1 1 1 1 1 1 1 9 bitów nagłówka, wszystkie 1"s
8-bitowy numer wersji D00 D01 D02 D03 P0
lub identyfikator klienta.
D04 D05 D06 D07 P1
D08 D09 D10 D11 P2 Każda grupa 4 bitów
D12 D13 D14 D15 P3 następuje parzyste 32 bity danych
D16 D17 D18 D19 P4 bit parzystości
D20 D21 D22 D23 P5
D24 D25 D26 D27 P6
D28 D29 D30 D31 P7
D32 D33 D34 D35 P8
D36 D37 D38 D39 P9
4 kolumny Bity parzystości PC0 PC1 PC2 PC3 S0 1 bit stopu (0)
Pierwsze 9 bitów to logiczne 1”.
W związku z tym mamy 9 bitów początkowych pakietu (zawsze logiczne 1), 11 grup po 4 bity danych z 1 bitem parzystości w rzędzie, 4 bity parzystości w kolumnach na końcu pakietu, bit końcowy (zawsze 0) .
Weźmy na przykład transponder o numerze danych 06001259E3.
1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 1 1 0 0 1 0 00
0 6 0 0 1 2 5 9 E 3

Bajt danych 0x06 jest uważany za numer wersji. Na kartach EM-Marine, z którymi się zetknąłem, stemplowane są wartości dziesiętne odpowiadające ostatnim 3 bajtom pakietu. W każdym razie będziemy musieli odtworzyć wszystkie 64 bity pakietu zgodnie z tym opisem dla implementacji.
Przyjrzyjmy się teraz bliżej opisowi modulacji danych transpondera. Dane zaczerpnięte z adnotacji AN680. Na rysunku zrobiłem znaki na czerwono w stosunku do interesujących nas diagramów.

Teraz opiszmy bardziej szczegółowo potrzebne nam wykresy. Sygnał zegarowy CLK jest sygnałem czytnika RFID, jak wspomniano wcześniej. Zakodowane dane NRZ powinny być przygotowane przez transponder zgodnie z zarejestrowanymi danymi pakietowymi (64 bity). Można zauważyć, że implementacja kodowania NRZ dla pakietu transpondera jest elementarna i wymaga minimalnych zasobów. Właściwie parsujemy pakiet na strumień bitów i zmieniamy logiczne wartości sygnału o 0 i 1 w danych i to wszystko. Aby uzyskać wynikowy sygnał, programujemy XOR aktualny stan sygnału w formacie NRZ oraz CLK sygnału zegara czytnika. W rezultacie otrzymujemy kodowanie Manchesteru wynikowego sygnału. Kodowania nie będę bardziej szczegółowo opisywał o Manchesterze – dane znajdziecie w osobnych adnotacjach. Więcej szczegółowy opis metody modulacji, patrz dane z „Modulation Methods H.R. Walker Data Systems 05/01/04 (recenzja 4/18/10)”, przestudiowałem dokładnie te przykłady. Najważniejsze jest to, że z minimalny koszt zasobów, możemy w ten sposób zaimplementować transponder w formacie EM-Marine. Na przykład możesz wziąć kontroler AVR serii tiny45 (możesz to zrobić również na tiny13). Został przetestowany na kontrolerze tiny45, ponieważ był właśnie taki, który był dostępny do eksperymentów.
Teraz przedstawmy schemat blokowy transpondera na podstawie modelu w Proteusie dla kontrolera tiny45.

Schemat funkcjonalny transpondera w Proteusie.

Tak wygląda sygnał generowany przez transponder. Czerwony oznacza początek pakietu.
Na schemacie widać, że pin kontrolera T0 (PORTB.2) służy do zasilania sygnału zegarowego dla 8-bitowego timera TIMER0. Program implementuje przerwanie koincydencji na zegarze TIMER0 (TIM0_COMPA). Taktowanie jest ustawione od sygnał zewnętrzny dla tego timera. Dla nas sygnał zegarowy to 125KHz z czytnika kart. Ze schematu usunięto wszystko co związane z zasilaniem sterownika i obwodami czasowymi od czytnika. W prawdziwy schemat sam kontroler jest taktowany kwarcem 4 MHz zainstalowanym między 2 a 3 nogą kontrolera. Możesz również dodać kwarcowe kondensatory obejściowe 22 pF na tych nogach kontrolera.
Ustawienia symulacji Proteus dla kontrolera są określone w następujący sposób:

Podczas programowania sterownika tiny45 bezpieczniki (bity konfiguracyjne) są ustawiane w taki sam sposób, jak pokazano na rysunku.2. Do taktowania kontrolera używany jest kwarc 4 MHz.
Jeśli chodzi o implementację schematu powiązania kontrolera zewnętrznego, rozważmy tę kwestię bardziej szczegółowo. Jako przykład posłużono się materiałami Podręcznika RFID (E2E_chapter03-rfid-handbook), który opisuje podstawowe zasady budowy systemów RFID. Sam dokument jest dołączony do artykułu. Rozważmy przykład pasywnego obwodu transpondera (część obwodu na stronie 46). Dla zrozumienia zrobiłem notatki na schemacie na czerwono.
Widać, że na L1C1 mamy układ odbiorczy, który służy do zasilania układu transpondera i zegara. Wszystko co dotyczy przeciwdzielnika IC1 (4024), elementów logicznych IC3 (7400) można spokojnie wyrzucić - nie potrzebujemy tego. Dzielnik dla timera realizowany jest przez ustawienia timera bez zewnętrznych dzielników - liczników, część logiczna jest również zaimplementowana programowo. Jednak ten przykład pozwala na pełniejsze zrozumienie dzieła obwód pasywny transponder. Maksymalna odległość odczyty transpondera ten format ma 200cm. W rzeczywistości większość obwodów działa w odległości 2-10cm. Parametry obwodu pojemnościowego i indukcyjnego LC dobierane są jak najdokładniej do częstotliwości rezonansowej 125KHz. Na przykład zastosowano obwód o pojemności 1nF i cewce 60 zwojów na trzpieniu o średnicy 50 mm z drutem PEV 0,2. Oblicz pożądany kontur możliwe w program specjalny(można obliczyć kontur dla cewki prostokątnej, drukowanej itp.). Najważniejsze jest, aby wybrać dokładne wartości dla częstotliwości 125 kHz, w przeciwnym razie odległość odczytu i czułość obwodu ulegną znacznemu pogorszeniu. Przy źle skonfigurowanych obwodach zadziała dopiero po zbliżeniu cewki transpondera do czytnika. Urządzenie działa na zasadzie Full Duplex (FDX) - generowanie danych transpondera jest ciągłe, gdy obwód jest zasilany. Obwód jest taktowany z czytnika, a dane są przesyłane w sposób ciągły. Niektóre schematy transponderów wykorzystują schemat działania HDX (Half Duplex) - czytnik emituje w trybie impulsowym, transponder przesyła dane w interwałach danych impulsów ładowania z czytnika. Dotyczy to na przykład transponderów TIRIS firmy Texas Instruments.

Schemat transpondera pasywnego oparty na schemacie podręcznika RFID.


Biorąc pod uwagę tę część obwodu, której nie potrzebujemy na podstawie oryginalnego obwodu, w takiej postaci otrzymujemy obwód wiążący sterownik.



Jak ci się podoba ten artykuł?

Po kilku latach pracy nad tematami RFID i opracowywaniu różnych czytników do modeli transponderów popularnych standardów takich jak Mifare, EMMARINE, TIRIS... Często zaczynało mnie to pytanie zastanawiać - dosłownie w ostatnim roku różnego rodzaju emulatory dla tagów popularnych protokołów i różnych kopiarek kluczy / drobiazgów zyskały dużą popularność.

Biorąc pod uwagę dużą liczbę specjalnych mikroukładów popularnych protokołów RFID i tanich czytników dostępnych w sprzedaży, powszechne stosowanie sprzętu, takiego jak oscyloskopy cyfrowe, sniffery i analizatory widma, problem ten stał się bardziej istotny dla wielu programistów. Wtedy postanowiłem sporządzić protokół wymiany dla jednego z projektów, który odbiega od opisanych powyżej standardów.

Oczywiście ten pomysł nie rozwiązuje globalne problemy bezpieczeństwo nowy system i mogą być analizowane przez innych programistów przy dostępności sprzętu, ale najważniejsze jest to, że wszystko to nie pokrywa się z istniejącymi standardami, a cały sprzęt kopiarek nie pozwoli ci szybko skopiować i odtworzyć takiego algorytmu. Oczywiście podobny system nie przedstawione tutaj kompletne rozwiązanie kwestie bezpieczeństwa, ale jako doświadczenie adaptacji RFID do systemu zamkniętego. dobry plus w kwestii bezpieczeństwa wśród innych podobnych systemów bezprzewodowych jest sama technologia RFID niskiej częstotliwości – nie pozwala ona na odczytywanie tagów z dużej odległości.

Tagi pasywne mają dość małą moc i wymagają do zasilania wystarczająco mocnego generatora czytników, cechy propagacji fal radiowych na tych częstotliwościach również ograniczają działanie tego systemu. Rzeczywisty zasięg odczytu transponderów rzadko przekracza 20 cm dla standardów 125 KHz, takich jak EmMarine, powiedzmy EM4001, dla innych protokołów, takich jak Mifare (13,56 MHz) może być większy (1,5 metra dla iso15693). Możliwe jest osiągnięcie większej odległości odczytu dla czytników niskoczęstotliwościowych poprzez zwiększenie odpowiednio wielkości cewki i napięcia zasilania oraz mocy czytnika. Jednak takie systemy są nieporęczne i ogólnie trudne do wykonania jako przenośne. Z reguły takie systemy są realizowane tylko stacjonarnie - na przykład w samochodach.

A więc teraz właściwie o architekturze naszego systemu RFID. Do eksperymentów wybrano sterownik atmel atmega8. Na potrzeby produkcji transponderów wydaje się to być niezaprzeczalną przesadą. Jednak w tym przypadku rozwiązano podstawowe zadanie opracowania nowego interfejsu na gotowej płytce debugowania c atmega, a następnie przeportowanie tego kodu na tańsze kontrolery typu tiny13. Dla transpondera algorytm działania zbudowano w oparciu o tryb generowania PWM z wykorzystaniem timera T1 w trybie CTC z przerwaniem i zerowaniem koincydencji z OCR1. Dane transmisji transpondera są odczytywane z pamięci EEPROM, gdy sterownik jest włączony. W sumie transponder przesyła 10 bajtów. Zawartość EEPROM transpondera można zobaczyć na rysunek 1. Pierwszy bajt 0xE7 jest obowiązkowym nagłówkiem pakietu, ponieważ jego obecność jest sprawdzana najpierw podczas parsowania pakietu przez czytnik.

Pierwsze 8 bajtów to zawartość pakietu transpondera, ostatnie 2 bajty zawierają sumę kontrolną CRC16 pierwszych ośmiu bajtów pakietu. Przykładowo w naszym transponderze zarejestrowano następujące dane - pakiet 0xE7, 0x05, 0xE8, 0x93, 0x43, 0x7F, 0x20, 0xFF i odpowiednio suma kontrolna 0xF5 0xA8. Aby stworzyć swój własny, unikalny transponder, oprócz pierwszego bajtu 0xE7, należy zapisać do EEPROM kolejne siedem bajtów, a następnie obliczyć sumę kontrolną dla pierwszych ośmiu bajtów. Następnie zapisz dwa bajty CRC16 w pamięci EEPROM na końcu pakietu. Pierwszy bajt pozostaje niezmieniony - 0xE7. Gdy transponder jest włączony, dane tych bajtów są rozbijane na bity i kodowane z odpowiednią długością impulsu zgodnie z wartością rejestru OCR. Do transmisji wykorzystywane są 2 częstotliwości 2KHz i 5KHz do transmisji logicznego „0” i „1”. Dodatkowo dane oddzielane są impulsami synchronizacji - znacznikami początku pakietu.

Rys.1 Zawartość paczki z transponderem.


Rys.2 Zrzut transmisji transpondera na ekranie wirtualnego oscyloskopu.

Schemat transpondera można zobaczyć na rysunek 3. Częstotliwość oscylatora głównego wynosi 8 MHz. Zasilanie kontrolera +5V. Można zastosować sterownik mega8 oznaczony literą „L”, wtedy zasilanie można zasilić baterią litową 3v (parametry dla takiego chipa to +2,7....+3,5). Zamiast tego tranzystora możesz użyć dowolnego innego tranzystora NPN o małej mocy. Cewka transpondera została nawinięta na trzpień o średnicy 50 mm drutem 0,22 mm i ma 50 zwojów. Na ten moment transponder jest aktywowany - przy zasilaniu zewnętrznym. W kolejnym etapie planowane jest wykonanie transpondera w wersji pasywnej, co jest dość proste - zrobić odsprzęgnięcie zasilania z tej cewki, dodać diody mostka prostowniczego i stabilizator.


Rys.3 Schemat transpondera.

Porozmawiajmy teraz o obwodzie czytnika dla tego transpondera. Schemat został dostosowany w oparciu o stosowany wcześniej czytnik kart EMMARINE. Część obwodu z generatorem na 74hc4060 można bezpiecznie usunąć na tym etapie, ponieważ na razie używamy aktywnej etykiety. Ta część obwodu będzie nam jednak potrzebna w przyszłości, gdy zrobimy etykietę pasywną i będziemy potrzebować zasilania z czytnika. Poza tym układ nie różni się znacząco od układu czytnika dla EMMARINE: pasywny detektor szczytów - filtr - wzmacniacz - komparator. Układ jest tak prosty, jak to tylko możliwe i pozwala na odczyt danych z transpondera z odległości 10-12 cm z dobrze dostrojonymi konturami.

Można jeszcze bardziej uprościć obwód, pozostawiając tylko detektor i filtr, na wyjściu umieścić jeden tranzystor, który będzie pełnił rolę komparatora, ale tego nie zrobiłem. Na wyjściu otrzymujemy binarny sygnał prostokątny zgodny z zakodowanymi czasami trwania impulsów transmitowanych przez transponder. Dopuszczalne odchylenia wartości znamionowych elementów, przy których obwód działa, wynoszą 5-10%. Zasilanie sterownika i opampa +5V. Częstotliwość oscylatora głównego kontrolera wynosi 12 MHz. Wyjście komparatora na LM358 jest podłączone do zewnętrznego styku przerwania kontrolera INT0. Program kontrolera jest skonfigurowany do wywoływania przerwania na zboczu narastającym na styku zewnętrznego przerwania INT0. W obsłudze przerwań sprawdza impulsy zegara, a następnie sprawdza nagłówek pakietu i zapisuje zawartość do bufora kontrolera. Dane odczytanych pakietów są przesyłane przez interfejs RS232 do komputera PC. Aby skonfigurować terminal, określ następujące parametry: prędkość 57,6Kb/s, 8 bitów danych, 1 bit stopu, brak parzystości.

Podczas odbierania pakietu kontroler oblicza sumę kontrolną odebranych bajtów i wysyła dane do terminala (pakiet i CRC). Jeżeli sumy kontrolne wyliczone przez kontroler i odebrane w pakiecie są zgodne, sygnał jest wyprowadzany na pin PORTB.0 (14) kontrolera (LED1 na schemacie). Możesz podłączyć głośnik wysokotonowy z wbudowanym generatorem lub diodę LED poprzez rezystancję do tego punktu. Podczas odczytu prawidłowego klucza, kontroler wyłącza zewnętrzne przerwania i robi opóźnienie 1s przed następnym odczytem. Istnieje również sposób działania tego czytnika jako podstawa blokady RFID. W tym celu należy wpisać do pamięci EEPROM kontrolera czytnika pełne bajty zrzutu transpondera - 10 bajtów. Dane zapisywane są do EEPROM czytnika w taki sam sposób jak do EEPROM transpondera. W tym przypadku przy odczycie kolejnego transpondera i dopasowaniu go do zapisanego w EEPROM czytnika, sygnał jest wyprowadzany na pin PORTB.1 (15) kontrolera (LED2 na schemacie). W tym momencie można podłączyć diodę LED przez rezystancję lub klawisz wyjścia (tranzystor) na przekaźniku urządzenie wykonawcze. Teraz w jednym opakowaniu mamy zamek RFID na konkretny klucz i zwykły czytnik.


Rys.4 Obwód czytnika Tagi RFID. (powiększ schemat)

Podsumujmy więc wyniki pośrednie. Zrobiliśmy dla tego czytnika własny czytnik i transponder. Zabezpieczyliśmy nasz sprzęt przed obcymi urządzeniami pracującymi z popularnymi protokołami RFID. Kolejnym krokiem jest wykonanie tagu pasywnego dla naszego czytnika, tak jak robią to znani producenci transponderów przemysłowych i przeniesienie kodu sprzętu do tańszych modeli kontrolerów. W archiwum dołączam do artykułu firmware dla transpondera i czytnika.

Pobierz oprogramowanie:
Nie masz dostępu do pobierania plików z naszego serwera

Po kilku latach pracy nad tematami RFID i opracowywaniu różnych czytników do modeli transponderów popularnych standardów takich jak Mifare, EMMARINE, TIRIS... Często zaczynało mnie to pytanie zastanawiać - właśnie w zeszłym roku różnego rodzaju emulatory dla tagów popularnych protokołów i różnych kopiarek kluczy / drobiazgów zyskały dużą popularność.

Biorąc pod uwagę dużą liczbę specjalnych mikroukładów popularnych protokołów RFID i tanich czytników dostępnych w sprzedaży, powszechne stosowanie sprzętu, takiego jak oscyloskopy cyfrowe, sniffery i analizatory widma, problem ten stał się bardziej istotny dla wielu programistów. Wtedy postanowiłem sporządzić protokół wymiany dla jednego z projektów, który odbiega od opisanych powyżej standardów.

Oczywiście ten pomysł nie rozwiązuje globalnych problemów bezpieczeństwa nowego systemu i może być analizowany przez innych programistów przy dostępności sprzętu, ale w ostatecznym rozrachunku wszystko to nie pokrywa się z istniejącymi standardami i cały sprzęt kopiujący będzie nie pozwalają na szybkie skopiowanie i odtworzenie takiego algorytmu. Oczywiście taki system nie jest tu przedstawiony nie jako kompletne rozwiązanie problemów bezpieczeństwa, ale jako doświadczenie w adaptacji RFID do systemu zamkniętego. Dużym plusem pod względem bezpieczeństwa wśród innych podobnych systemów bezprzewodowych jest sama technologia RFID o niskiej częstotliwości - nie pozwala ona na odczytywanie tagów z dużej odległości. Tagi pasywne mają dość małą moc i wymagają do zasilania wystarczająco mocnego generatora czytników, cechy propagacji fal radiowych na tych częstotliwościach również ograniczają działanie tego systemu. Rzeczywisty zasięg odczytu transponderów rzadko przekracza 20 cm dla standardów 125 KHz, takich jak EmMarine, powiedzmy EM4001, dla innych protokołów, takich jak Mifare (13,56 MHz) może być większy (1,5 metra dla iso15693). Możliwe jest osiągnięcie większej odległości odczytu dla czytników niskoczęstotliwościowych poprzez zwiększenie odpowiednio wielkości cewki i napięcia zasilania oraz mocy czytnika. Jednak takie systemy są nieporęczne i ogólnie trudne do wykonania jako przenośne. Z reguły takie systemy są realizowane tylko stacjonarnie - powiedzmy dla samochodów.

A więc teraz właściwie o architekturze naszego systemu RFID. Do eksperymentów wybrano sterownik atmel atmega8. Na potrzeby produkcji transponderów wydaje się to być niezaprzeczalną przesadą. Jednak w tym przypadku rozwiązano podstawowe zadanie opracowania nowego interfejsu na gotowej płytce debugowania c atmega, a następnie przeportowanie tego kodu do tańszych kontrolerów typu tiny13.

Dla transpondera algorytm działania zbudowano w oparciu o tryb generowania PWM z wykorzystaniem timera T1 w trybie CTC z przerwaniem i zerowaniem koincydencji z OCR1. Dane transmisji transpondera są odczytywane z pamięci EEPROM, gdy sterownik jest włączony. W sumie transponder przesyła 10 bajtów. Zawartość EEPROM transpondera można zobaczyć na rysunek 1. Pierwszy bajt 0xE7 jest obowiązkowym nagłówkiem pakietu, ponieważ jego obecność jest sprawdzana najpierw podczas parsowania pakietu przez czytnik. Pierwsze 8 bajtów to zawartość pakietu transpondera, ostatnie 2 bajty zawierają sumę kontrolną CRC16 pierwszych ośmiu bajtów pakietu. Przykładowo w naszym transponderze zarejestrowano następujące dane - pakiet 0xE7,0x05,0xE8,0x93,0x43,0x7F,0x20,0xFF i odpowiednio suma kontrolna 0xF5 0xA8. Aby stworzyć swój własny, unikalny transponder, oprócz pierwszego bajtu 0xE7, należy zapisać do EEPROM kolejne siedem bajtów, a następnie obliczyć sumę kontrolną dla pierwszych ośmiu bajtów. Następnie zapisz dwa bajty CRC16 w pamięci EEPROM na końcu pakietu. Pierwszy bajt pozostaje niezmieniony - 0xE7. Gdy transponder jest włączony, dane tych bajtów są rozbijane na bity i kodowane z odpowiednią długością impulsu zgodnie z wartością rejestru OCR. Do transmisji wykorzystywane są 2 częstotliwości 2KHz i 5KHz do transmisji logicznego „0” i „1”. Dodatkowo dane oddzielane są impulsami synchronizacji - znacznikami początku pakietu.

Rys.1

Rys.2

Schemat transpondera można zobaczyć na rysunek 3. Częstotliwość oscylatora głównego wynosi 8 MHz. Zasilanie kontrolera +5V. Można zastosować sterownik mega8 oznaczony literą „L”, wtedy zasilanie można zasilić baterią litową 3v (parametry dla takiego chipa to +2,7....+3,5). Zamiast tego tranzystora możesz użyć dowolnego innego tranzystora NPN o małej mocy. Cewka transpondera została nawinięta na trzpień o średnicy 50 mm drutem 0,22 mm i ma 50 zwojów. W tej chwili transponder jest aktywowany - z zasilaniem zewnętrznym. W kolejnym etapie planowane jest wykonanie transpondera w wersji pasywnej, co jest dość proste - zrobić odsprzęgnięcie zasilania z tej cewki, dodać diody mostka prostowniczego i stabilizator.

Rys.3

Porozmawiajmy teraz o obwodzie czytnika dla tego transpondera. Schemat został dostosowany w oparciu o stosowany wcześniej czytnik kart EMMARINE. Część obwodu z generatorem na 74hc4060 można bezpiecznie usunąć na tym etapie, ponieważ na razie używamy aktywnej etykiety.

Ta część obwodu będzie nam jednak potrzebna w przyszłości, gdy zrobimy etykietę pasywną i będziemy potrzebować zasilania z czytnika. Poza tym układ nie różni się znacząco od układu czytnika dla EMMARINE: pasywny detektor szczytów - filtr - wzmacniacz - komparator. Układ jest tak prosty, jak to tylko możliwe i pozwala na odczyt danych z transpondera z odległości 10-12 cm z dobrze dostrojonymi konturami.

Można jeszcze bardziej uprościć obwód, pozostawiając tylko detektor i filtr, na wyjściu umieścić jeden tranzystor, który będzie pełnił rolę komparatora, ale tego nie zrobiłem. Na wyjściu otrzymujemy binarny sygnał prostokątny zgodny z zakodowanymi czasami trwania impulsów transmitowanych przez transponder. Dopuszczalne odchylenia wartości znamionowych elementów, przy których obwód działa, wynoszą 5-10%. Zasilanie sterownika i opampa +5V. Częstotliwość oscylatora głównego kontrolera wynosi 12 MHz. Wyjście komparatora na LM358 jest podłączone do zewnętrznego styku przerwania kontrolera INT0. Program kontrolera jest skonfigurowany do wywoływania przerwania na zboczu narastającym na styku zewnętrznego przerwania INT0.

W obsłudze przerwań sprawdza impulsy zegara, a następnie sprawdza nagłówek pakietu i zapisuje zawartość do bufora kontrolera. Dane odczytanych pakietów są przesyłane przez interfejs RS232 do komputera PC. Aby skonfigurować terminal, określ następujące parametry: prędkość 57,6Kb/s, 8 bitów danych, 1 bit stopu, brak parzystości. Podczas odbierania pakietu kontroler oblicza sumę kontrolną odebranych bajtów i wysyła dane do terminala (pakiet i CRC). Jeżeli sumy kontrolne wyliczone przez kontroler i odebrane w pakiecie są zgodne, sygnał jest wyprowadzany na pin PORTB.0 (14) kontrolera (LED1 na schemacie). Możesz podłączyć głośnik wysokotonowy z wbudowanym generatorem lub diodę LED poprzez rezystancję do tego punktu. Podczas odczytu prawidłowego klucza, kontroler wyłącza zewnętrzne przerwania i robi opóźnienie 1s przed następnym odczytem.

Istnieje również sposób działania tego czytnika jako podstawa blokady RFID. W tym celu należy wpisać do pamięci EEPROM kontrolera czytnika pełne bajty zrzutu transpondera - 10 bajtów. Dane zapisywane są do EEPROM czytnika w taki sam sposób jak do EEPROM transpondera. W takim przypadku przy odczycie kolejnego transpondera i dopasowaniu go do zapisanego w EEPROM czytnika sygnał jest wyprowadzany na pin PORTB.1 (15) kontrolera (LED2 na schemacie). W tym momencie można podłączyć diodę LED poprzez rezystancję lub przycisk wyjścia (tranzystor) na przekaźniku siłownika. Teraz w jednym opakowaniu mamy zamek RFID na konkretny klucz i zwykły czytnik.

Podsumujmy więc wyniki pośrednie. Zrobiliśmy dla tego czytnika własny czytnik i transponder. Zabezpieczyliśmy nasz sprzęt przed obcymi urządzeniami pracującymi z popularnymi protokołami RFID. Kolejnym krokiem jest wykonanie tagu pasywnego dla naszego czytnika, tak jak robią to znani producenci transponderów przemysłowych i przeniesienie kodu sprzętu do tańszych modeli kontrolerów. W archiwum dołączam do artykułu firmware dla transpondera i czytnika.