wersja mobilna

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

Agri-Stick - urządzenie do monitorowania parametrów gleby w rolnictwie

Numer: Lipiec/2019

Agri-Stick to prosty zespół sensorów podstawowych parametrów gleby, które przydatne są w rolnictwie. Urządzenie to zostało opracowane przez Kavinkumara Nkl z Indii, jako sposób na proste i niedrogie zdalne monitorowanie upraw - w ten sposób rolnicy w Indiach nie muszą jeździć na pola, żeby sprawdzić, czy konieczne jest włączenie systemu nawadniającego czy nie. Rozwiązanie opisane w tym artykule może służyć jako inspiracja ...

Stacja pogodowa na Raspberry Pi

Numer: Czerwiec/2019

Fundacja Raspbery Pi wysłała do szkół na całym świecie ponad 10 tysięcy stacji pogodowych opartych na module HAT z zestawem potrzebnych sensorów. Teraz każdy w domu może skonstruować taką stację pogodową na bazie zaproponowanych modułów z sensorami lub po prostu samodzielnie łącząc układy scalone z komputerem jednopłytkowym Raspberry Pi.

Programowany kolorowy wskaźnik poziomu napięcia

Numer: Czerwiec/2019

Wskaźniki służą do sygnalizacji stanu obserwowanej wielkości fizycznej. Zamiast szczegółowego wyniku pomiaru, wskaźnik przekazuje informację ogólną, co często jest dużo praktyczniejsze. Ten projekt pokazuje, jak można zastosować płytkę NUCLEO do budowy wskaźnika poziomu napięcia wykorzystującego do sygnalizacji diody WS2812B. Urządzenie jest proste w budowie, z dowolnie programowalnymi progami, których przekroczenie będzie ...

KindleBerry Pi

Numer: Czerwiec/2019

Lubicie czasem posiedzieć z laptopem w parku? Albo popracować zdalnie w barze przy plaży lub latem w kawiarni, w malowniczej miejscowości skąpanej w słońcu? Brzmi fajnie, nie? Niestety, ci co spróbowali, szybko odkryli, że słońce i laptop to nie jest dobre połączenie - klasyczne ekrany LCD nie nadają się do pracy przy dużym nasłonecznieniu. Gdyby tylko mieć laptop z ekranem EPD? W artykule pokazujemy, jak zbudować ...

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 ...

Mobilna
Elektronika
Praktyczna

Elektronika Praktyczna

Lipiec 2019

PrenumerataePrenumerataKup w kiosku wysyłkowym

Elektronika Praktyczna Plus

lipiec - grudzień 2012

Kup w kiosku wysyłkowym