Arduino z RFID

Arduino z RFID
Pobierz PDF Download icon

Znaczniki RFID to bardzo wygodna technologia do zbliżeniowego sterowania urządzeniami elektronicznymi. Świetnie sprawdzają się w systemach kontroli dostępu, ale mogą mieć i inne zastosowania. Korzystając z gotowych modułów, można ją z łatwością zaimplementować przy użyciu Arduino. W artykule opisano łatwy do wykonanie projekt, który demonstruje, jak połączyć ze sobą Arduino, moduł RFID i miniaturowy wyświetlacz OLED.

Dodatkowe informacje:

- Oryginalny opis kodu można znaleźć pod adresem http://bit.ly/2o6d1e2.
- Projekt jest omówiony po angielsku, również w materiale wideo, dostępnym pod adresem http://bit.ly/2MSZjt3.

---

Na wstępie warto wyjaśnić, że pokazywany projekt daleki jest od kompletnego urządzenia. Nie ma obudowy i został wykonany na płytce prototypowej. Jego autor, Nick Koumaris ze Sparty, przygotował go w celach edukacyjnych, by pokazać jak łatwo jest wykorzystać RFID w praktyce. I faktycznie, zarówno od strony programowej, jak i z punktu widzenia połączeń, wdrożenie obsługi znaczników i wyświetlacza nie powinno nastręczać trudności.

Samych znaczników nie będziemy omawiać w niniejszym artykule. Autor w swoim projekcie wykorzystał moduły pracujące ze standardem MIFARE w paśmie 13,56 MHz i koncentruje się jedynie na odczycie unikalnego ID znaczników. W wersji rozszerzonej projektu można pokusić się o zapis i odczyt innych danych do pamięci tagu.

Użyte komponenty

Projekt zbudowano z użyciem:

- płytki Arduino Uno,
- czytnika RFID, opartego o układ RC522,
- wyświetlacza OLED o przekątnej 0,96”,
- małej płytki prototypowej,
- kilku przewodów.

Projekt, szczególnie jeśli wykonywany byłby z użyciem połączeń lutowanych i obudowy, można doposażyć o powerbank.

Autor zadowolił się komponentami dalekowschodnimi. Użył klonu Arduino i wyświetlacza, markowanych logiem firmy Geekcreit. Zaletą tego typu podzespołów jest cena, ale wadą – brak jakiejkolwiek gwarancji, że spełniają jakieś normy. Zazwyczaj dobrze sprawdzają się w warunkach domowych i w niezbyt złożonych projektach, ale potrafią sprawiać problemy w specyficznych kombinacjach. Nie sugerujemy też stawiać na nich swojej reputacji, zanim nie sprawdzi się samodzielnie, że dany dostawca trzyma jakość produkcji na stałym poziomie, jeśli chce się wykonać gotowy produkt, bazujący na tego typu podzespołach. Warto też się upewnić, że korzystanie z danego modułu nie wiąże się z łamaniem praw firm trzecich w danym regionie. Chińskie przepisy nie są w tym zakresie bardzo restrykcyjne, co oznacza że tamtejsi producenci często nie przejmują się takimi „błahostkami”. Tak czy inaczej, łączny koszt użytych podzespołów wyniósł niecałe 60 zł.

Zastosowany czytnik jest w stanie komunikować się ze znacznikami z odległości około 2 cm. Przysłonięcie go obudową z tworzywa sztucznego może nieznacznie zmniejszyć ten dystans, ale w praktyce konieczność większego przybliżenia znacznika do czytnika będzie wynikała z samej grubości obudowy. Standard MIFARE korzysta ze znaczników pasywnych, które zasilane są w trakcie odczytu, bezprzewodowo, za pomocą czytnika.

Użyty wyświetlacz jest dwukolorowy, przy czym jego górna sekcja może świecić na żółto, a reszta wyświetlacza na niebiesko. Rozdzielczość ekranu to 128×64 piksele. Można go z łatwością nabyć w wersji w pełni monochromatycznej, a sterowanie jedną czy drugą odmianą absolutnie się od siebie nie różni. Pobór prądu wyświetlacza mieści się w zakresie od 10 mA do 20 mA. Moduł ma sterownik, który komunikuje się przez interfejs I2C, a do tego dostępne są dla niego proste w użyciu biblioteki programistyczne. W efekcie, jest bardzo prosty do podłączenia z Arduino. Wystarczą dwa przewody sygnałowe i dwa zasilające.

fotkaPodłączenie elementów

Zarówno wyświetlacz, jak i czytnik RFID wymagają napięcia zasilania 3,3 V. Jest ono dostępne na płytce Arduino Uno. Należy przy tym upewnić się, przypadkiem nie podłącza się napięcia 5 V – czytnik nie jest przed nim zabezpieczony i prawdopodobnie ulegnie uszkodzeniu, gdy dostanie zbyt wysoki poziom napięcia.

Wyświetlacz dołączamy w następujący sposób:

- Pin VCC do napięcia 3,3 V Arduino.
- Pin GND do masy Arduino.
- Pin SCL do pinu analogowego 5.
- Pin SDA do pinu analogowego 4.

Czytnik RFID korzysta natomiast z interfejsu SPI, w efekcie czego ryzyko, że jego ewentualna błędna praca w jakikolwiek sposób zakłóci komunikację z wyświetlaczem jest zminimalizowane:

- PIN RST czytnika podłączamy do cyfrowego pinu 9 Arduino.
- MISO do cyfrowego pinu 12.
- MOSI do cyfrowego pinu 11.
- SCK do cyfrowego pinu 13.
- SDA do cyfrowego pinu 10.
- Wyprowadzenie IRQ pozostawiamy niepodłączone.

Kod programu

Przygotowany program jest nieskomplikowany, ale to dzięki temu, że korzysta z gotowych, dostępnych bezpłatnie bibliotek. Należy je więc najpierw zainstalować. W tym celu wybieramy z menu Sketch ’ Include Libraries ’ Manage libraries i wyszukujemy MFRC522 do obsługi czytnika RFID. Dodajemy też biblioteki do obsługi grafiki oraz wyświetlacza: Adafruit_GFX.h i Adafruit_SSD1306.h. W drugim z tych plików należy umieścić znak komentarza przed linią określającą domyślną rozdzielczość wyświetlacza, a usunąć go sprzed linii odpowiedniej dla wyświetlacza użytego w projekcie (tu 128×64). W praktyce ustawienia te powinny znajdować się w linijkach 69 i 70.

W kolejnych linijkach kodu, po załadowaniu bibliotek, dla czytelności kodu zdefiniowano piny oraz stworzono obiekty klas z ładowanych bibliotek. W linijce:

Int code[] = {69,141,8,136};

Zapisany został unikalny identyfikator użytego znacznika. Zaraz niżej inicjowane są zmienne globalne.

W funkcji inicjalizacyjnej setup() konfigurowane jest połączenie z czytnikiem RFID oraz praca wyświetlacza. Ekran jest czyszczony, a kolor znaków ustawiany jako pozytywny (biały), co oznacza że będą prezentowane przez zapalone piksele. Wskazywany jest rozmiar znaków oraz pozycja kursora. Następnie do wyświetlacza wysyłany jest tekst „RFID Lock” do wyświetlenia.

W głównej pętli programu dokonywana jest próba odczytu karty RFID i jeśli różni się ona od karty poprzednio odczytywanej, to wykonywana jest funkcja obsługująca znacznik. Pętla działa z opóźnieniem 100 ms na cykl.

Po zeskanowaniu znacznika, moduł RFID odpytywany jest o rodzaj zeskanowanego tagu – obsługiwane są tylko tagi MIFARE Classic. Jeśli typ się zgadza, wyświetlacz jest czyszczony, na następnie prezentowany jest na nim unikalny identyfikator zeskanowanej karty. W kolejnym kroku wszystkie bajty znacznika są kolejne porównywane ze wzorcem i jeśli pasują do wzorca, wywoływana jest funkcja wyświetlająca informacje o tym, że znacznik został poprawnie rozpoznany. W przeciwnym wypadku system komunikuje, że znacznik jest nieznany.

Uzupełnieniem kodu są oddzielne funkcje, zawierające wyświetlenie poszczególnych informacji na ekranie za pomocą pojedynczych linijek kodu. Korzystają z tych samych funkcji, jakie zostały użyte na początku do wyświetlenia komunikatu powitalnego, tuż po uruchomieniu projektu.

Podsumowanie

Zaprezentowany projekt to raczej wstęp do bardziej kompletnej aplikacji RFID z Arduino. Pokazuje, jak zacząć, ale nie obejmuje żadnego realnego mechanizmu otwierania zamka, ani wykonywania innych akcji – choćby czysto elektronicznych – adekwatnych do zeskanowanego tagu. Udowadnia, że obsługa znaczników MIFARE (a i innych też) może być bardzo prosta oraz niedroga. Projekt można by było rozbudować o obudowę lub wysyłanie komend do jakiegoś aktuatora, by całość faktycznie reprezentowała zamek.

Programiści o silniejszych zapędach w kierunku optymalizacji kodu zwrócą też pewnie uwagę, że pętle porównującą kolejne bajty unikalnego identyfikatora można byłoby przerywać w momencie wykrycia pierwszej niezgodności. A w wypadku, gdyby praktyka pokazywała, że nabyty zestaw znaczników różni się tylko ostatnimi bajtami, porównywanie można by było rozpocząć od końca.

Marcin Karbowniczek, EP

Artykuł ukazał się w
Elektronika Praktyczna
wrzesień 2018
DO POBRANIA
Pobierz PDF Download icon
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik kwiecień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio marzec - kwiecień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje marzec 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna kwiecień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich kwiecień 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów