wersja mobilna | kontakt z nami

Arduino z RFID

Numer: Wrzesień/2018

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.

Pobierz PDFMateriały dodatkowe

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.

---

fotkaNa 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

Pozostałe artykuły

Budowa projektora DLP z użyciem Raspberry Pi 3 oraz modułu TI LightCrafter Display 2000

Numer: Wrzesień/2018

Już od dobrych kilkunastu lat na rynku komponentów elektronicznych mamy do czynienia z rewolucją w obszarze układów mikroelektromechanicznych (MEMS). Układy te, jeszcze kilka lat temu znane wyłącznie z zastosowań w mikrofonach i czujnikach ciśnienia, dziś są niemal nieodłącznym elementem większości urządzeń mobilnych. Badania prowadzone nad układami MEMS (pod kątem ich miniaturyzacji, nowych obszarów zastosowań i obniżenia kosztów ...

Wskaźnik zanieczyszczenia powietrza

Numer: Sierpień/2018

W ostatnim czasie tematyka czystości powietrza nabrała dużego znaczenia. Przyczyną tego był smog, którego doświadczyli mieszkańcy wielu miast. Jednak zanieczyszczenie powietrza to nie tylko smog. Branża elektroniczna wymaga pod tym względem szczególnej uwagi. Hale produkcyjne, stanowiska montażowe, stosowane tam narzędzia oraz chemia powodują powstawanie dymu, oparów i pyłu, które mogą być szkodliwe dla zdrowia. Prezentowane urządzenie ...

Serwer WWW z elementami grafiki 3D (2)

Numer: Sierpień/2018

W drugiej części artykułu kontynuujemy tematykę praktycznego użycia pakietów Node.js oraz Three.js w urządzeniach wbudowanych pracujących pod kontrolą system operacyjnego Linux. Dotychczas zostały omówione zagadnienia instalacji frameworku Node.js, przygotowania prostego serwera WWW z podziałem na funkcje front-end/back-end, komunikacji z wykorzystaniem socket.io, a także tworzenia i odczytu danych z procesów potomnych. W artykule, na ...

Serwer WWW z elementami grafiki 3D (1). Praktyczne wykorzystanie pakietów Node.js oraz Three.js w systemach wbudowanych

Numer: Lipiec/2018

Jedną z niewątpliwych zalet wykorzystania systemu operacyjnego Linux w procesie projektowania urządzeń wbudowanych jest szybki i łatwy dostęp do otwartych, darmowych i wolnych (w sensie wolności) repozytoriów oprogramowania implementujących m.in. rozbudowane stosy graficzne, protokoły sieciowe czy złożone algorytmy obliczeń. Fakt ten odgrywa szczególnie ważną rolę, kiedy zadanie stawiane przed naszym urządzeniem może zostać chociaż ...

Jak zastąpić wyświetlacz LCD monitorem HDMI w systemie embedded i.MX6ULL z Linkusem

Numer: Czerwiec/2018

Współcześni klienci przyzwyczajeni do kolorowych interfejsów smartfonów coraz częściej domagają się od producentów systemów embedded, aby nawet najprostsze urządzenia były wyposażone w kolorowy interfejs graficzny. Tego typu rozwiązania najwygodniej jest realizować jest z wykorzystaniem tanich komputerów SOM z procesorami aplikacyjnymi działającymi pod kontrolą systemu Linux. W przypadku niewielkich wolumenów okazuje się, że ...

Mobilna
Elektronika
Praktyczna

Elektronika Praktyczna

Luty 2019

PrenumerataePrenumerataKup w kiosku wysyłkowym

Elektronika Praktyczna Plus

lipiec - grudzień 2012

Kup w kiosku wysyłkowym