RaspbPI_NFC - płytka czytnika RFID dla Raspberry Pi i nie tylko

RaspbPI_NFC - płytka czytnika RFID dla Raspberry Pi i nie tylko
Pobierz PDF Download icon
Przedstawiona płytka umożliwia rozszerzenie funkcjonalności Raspberry PI o możliwość odczytu kart RFID w standardzie Mifare.

Płytka wymaga Raspberry Pi Rev2. o rozmieszczeniu sygnałów GPIO-P1 przedstawionym w tabeli 1. Dla potrzeb współpracy domyślnie jest używany interfejs UART, wspierany przez bibliotekę libnfc. Możliwe jest też zastosowanie interfejsu I²C. Dla ułatwienia współpracy z innymi komputerkami (oprócz Raspberry Pi) płytka ma złącze EH w standardzie Arduino.

Moduł jest oparty o popularny układ PN532 firmy NXP. Odpowiada on za kompleksową obsługę kart zbliżeniowych Mifare, umożliwiając szybkie i łatwe wykonanie urządzeń NFC. Schemat blokowy układu pokazano na rysunku 1.

Rysunek 1. Schemat blokowy układu PN532 (za nota NXP)

Rysunek 2. Schemat ideowy modułu RasbPI_NFC

Schemat modułu NFC przedstawia rysunek 2. Moduł nie odbiega od noty aplikacyjnej NXP. Rezonator kwarcowy X1 jest elementem układu zegarowego, rezystory R3 i R6, kondensatory C6, C7, C11 i C16 dopasowują antenę i stanowią filtr EMC. Pozostałe kondensatory filtrują zasilanie. Antenę L wykonano na płytce drukowanej. Ułatwia to uruchomienie modułu uwalniając od konieczności nawijania cewek antenowych. Niestety, jest okupione nieco mniejszą dobrocią ograniczającą zasięg do ok. 3 cm w przypadku kart i 1 cm w przypadku żetonów.

Tabela 1. Przyporządkowanie sygnałów GPIO1 - P1 (na szaro zaznaczono piny używane przez RaspbPI_NFC)

Do komunikacji z Raspberry jest wykorzystywany interfejs UART. Aby nie ograniczać użyteczności pozostawiono także możliwość komunikacji poprzez I²C. Wyboru interfejsu dokonuje się za pomocą zwór SSEL/SSEL1/SSEL2, zgodnie z opisem umieszczonym na płytce. Dodatkowo, interfejs komunikacyjny wyprowadzono na złącze "I²C" zgodne z Arduino.

Moduł jest zasilany z 5 V. Należy pamiętać o konieczności dopasowania poziomów logicznych interfejsu w zależności od współpracującego układu, gdyż PN532 pracuje z napięciem 3,3 V. Moduł ma sygnalizację załączenia zasilania za pomocą diody świecącej LD1 oraz diodę LD2 sterowaną z GPIO4, która może być użyta do sygnalizacji działania NFC.

Układ zmontowano na niewielkiej, dwustronnej płytce drukowanej. Jej schemat montażowy pokazano na rysunku 3. Montaż nie wymaga opisu, należy tylko zwrócić uwagę na prawidłowe przylutowanie pada termicznego U1 oraz odpowiednie wlutowanie zwór SSEL/SSEL1/SSEL2 w zależności od używanego interfejsu komunikacyjnego (domyślnie UART).

Aby w praktyce najszybciej sprawdzić działanie modułu konieczne są drobne zmiany konfiguracji PI oraz instalacja biblioteki libnfc. W pierwszej kolejności musimy uzyskać dostęp do portu szeregowego, który jest domyślnie zablokowany przez terminal SSH. W tym celu należy otworzyć do edycji plik cmdline.txt ( $ sudo nano /boot/cmdline.txt) i usunąć wpisy dotyczące konsoli console=ttyAMA0,115200 kgdboc=ttyAMA0,115200. Następnie należy otworzyć do edycji plik initab ($ sudo nano / etc/initab) i opatrzyć komentarzem linię T0:23respawn:/sbin/getty -L ttyAMA0 115200 vt100 (#T0:23respawn:/sbin/getty -L ttyAMA0 115200 vt100). Po wprowadzeniu zmian, należy zrestartować Raspberry.

Rysunek 3. Rozmieszczenie elementów modułu NFC

Po tej operacji port szeregowy UART jest dostępny dla innych aplikacji. Aby wykorzystać płytkę NFC jest konieczna jeszcze instalacja darmowej biblioteki libnfc (najnowsza wersja 1.7.1), do pobrania z: http://goo.gl/3qIidU. Bibliotekę należy pobrać i rozpakować do folderu domowego Pi /home/pi/libnfc-1.7.1. Następnie należy stworzyć katalog dla plików konfiguracyjnych sudo mkdir /etc/nfc && sudo mkdir /etc/nfc/devices.d/ oraz edytować zawartość sudo nano /etc/nfc/devices.d/pn532_via_uart.conf uzupełniając zawartość pliku:

## Typical configuration file for PN532 board
name = "NFC PN532 UART"
connstring = pn532_uart:/dev/ttyAMA0
allow_intrusive_scan = true
log_level = 3

Następnie należy wydać polecenia:
cd /etc/nfc
sudo nano libnfc.conf

i uzupełnić zawartość pliku:
# Allow device auto-detection (default: true)
# Note: if this auto-detection is disabled, user has to set manually a device
# configuration using file or environment variable allow_autoscan = true
# Allow intrusive auto-detection (default: false)
# Warning: intrusive autodetection can seriously disturb other devices
# This option is not recommended, user should prefer to add manually his device.
#allow_intrusive_scan = false
# Set log level (default: error)
# Valid log levels are (in order of verbosity): 0 (none), 1 (error), 2 (info), 3 (debug)
# Note: if you compiled with --enable-debug option, the default log level is "debug"
#log_level = 1
# Manually set default device (no default)
# To set a default device, you must set both name and connstring for your device
# Note: if autoscan is enabled, default device will be the first device available in device list.
#device.name = "microBuilder.eu"
#device.connstring = "pn532_uart:/dev/ttyAMA0"

Rysunek 4. Test modułu RasbPI_NFC

Po zapisaniu plików konfiguracyjnych jest konieczne skompilowanie biblioteki z wcześniej ustalonymi parametrami. Należy wrócić do katalogu /home/pi/libnfc-1.7.1 i wydać polecenie konfigurujące driver dla UART sudo ./configure --sysconfdir= /etc --prefix=/usr --with-drivers=pn532_uart oraz uruchomić sudo make clean all i sudo make install all.

Po pomyślnym zakończeniu pracy kompilatora wracamy do podkatalogu biblioteki /home/pi/libnfc-1.7.1 ( cd /utils) i wydajemy polecenie sudo ./nfc-list. Jeżeli wszystkie wcześniejsze operacje przebiegły pomyślnie i moduł jest zmontowany poprawnie, czytnik kart zostanie zainicjowany, następnie przechodzimy do katalogu cd ../examples i wydajemy polecenie sudo ./nfc-poll.

Program będzie oczekiwał na kartę, po zbliżeniu zostanie odczytany jej numer. Przykładowy odczyt pokazano na rysunku 4. Jeżeli wszystko funkcjonuje poprawnie, czytnik może być użyty we własnej aplikacji.

Adam Tatuś, EP

Artykuł ukazał się w
Elektronika Praktyczna
wrzesień 2014
DO POBRANIA
Pobierz PDF Download icon
Materiały dodatkowe
Zobacz też
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik wrzesień 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio październik 2020

Świat Radio

Magazyn użytkowników eteru

Automatyka Podzespoły Aplikacje wrzesień 2020

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna wrzesień 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich wrzesień 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów