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

Laserowy, bezprzewodowy sensor smogu dla Raspberry Pi

Numer: Maj/2019

W jednym z poprzednich numerów zaprezentowany został projekt sensora smogu z bezprzewodową technologią Bluetooth Low Energy. Wyposażony w dokładny, laserowy czujnik PMS7003 umożliwia on wykonywanie zdalnych pomiarów zawartości pyłów zawieszonych w powietrzu. Mierzy też temperaturę i wilgotność względną, korzystając z precyzyjnego układu SHT20. Prezentację wyniku pomiaru powierzono aplikacji BBair, która na ekranie smartfonu ...

Rower elektryczny (1)

Numer: Maj/2019

Już od jakiegoś czasu stały się dosyć mocno popularne różne pojazdy z napędem elektrycznym. Na ulicach często możemy zobaczyć hulajnogę lub deskorolkę elektryczną. Tego typu pojazdy są bardzo tanie w eksploatacji oraz umożliwiają łatwe przemieszczanie się po utwardzonych nawierzchniach w większych aglomeracjach. Niestety większość małych pojazdów elektrycznych może poruszać się tylko po utwardzonych drogach, a dodatkowo ...

Strumieniowy odtwarzacz audio na i.MX6ULL

Numer: Kwiecień/2019

W systemach mikroprocesorowych często zachodzi potrzeba porozumienia się z użytkownikiem nie tylko za pomocą obrazu i dotyku, ale również za pomocą dźwięku. Nie zawsze musi to być dźwięk o najwyższej jakości, szerokiej dynamice i pozbawiony zniekształceń. Do zwrócenia uwagi użytkownika na wyświetlany na ekranie komunikat, udźwiękowienia zapisanego w pamięci urządzenia filmiku instruktażowego, odtworzenia mowy lub muzyki z niewielkich, ...

Analizator stanów logicznych z modułu STM32F4DISCOVERY

Numer: Styczeń/2019

W artykule przedstawiono kolejny przykład użycia zestawu uruchomieniowego mikrokontrolera w roli analizatora stanów logicznych. Tym razem projekt analizatora powstał na bazie zestawu STM32F4DISCOVERY. Dzięki niestandardowemu użyciu układu DCMI w mikrokontrolerze STM32F407 uzyskano analizator stanów logicznych o godnych uwagi parametrach, przewyższający swymi osiągami popularny wśród hobbystów i studentów analizator Saleae.

Moduł ESP01 pracujący jako sterownik z 2 wyjściami i 1 wejściem

Numer: Grudzień/2018

ESP01 to miniaturowy moduł Wi-Fi zbudowany w oparciu o układ ESP8266. W tej najprostszej wersji do dyspozycji użytkownika są 2 wyprowadzenia I/O oraz port komunikacyjny UART. Nawet jednak z tak ograniczonymi zasobami sprzętowymi, można wykorzystać moduł do zbudowania mikro-serwera z 2 wyjściami i 1 wejściem, ze sterowaniem za pośrednictwem przeglądarki internetowej. Taki serwer może generować dynamiczne strony HTML wysyłane do wyświetlenia ...

Mobilna
Elektronika
Praktyczna

Ze świata  Kobiety w elektronice    ...

Elektronika Praktyczna

Maj 2019

PrenumerataePrenumerataKup w kiosku wysyłkowym

Elektronika Praktyczna Plus

lipiec - grudzień 2012

Kup w kiosku wysyłkowym