Identyfikacja optyczna i radiowa to dwa, praktycznie niepowiązane ze sobą obszary technologii. Ów brak zasadniczej części wspólnej dotyczy jednak tylko i wyłącznie kwestii technologicznych – podczas gdy identyfikacja optyczna bazuje na skanowaniu graficznych kodów (wyświetlanych na ekranie, drukowanych lub nanoszonych w inny sposób, np. laserowo), to technologie RFID opierają się na zdalnym odczycie niewielkich tagów, w zdecydowanej większości przypadków zasilanych za pomocą tego samego pola magnetycznego, które pozwala także na właściwą wymianę danych pomiędzy czytnikiem, a znacznikiem.
W kontekście docelowych zastosowań obydwa wymienione obszary zazębiają się już zdecydowanie wyraźniej. Jeżeli mamy do czynienia z automatyczną identyfikacją pracowników firmy, studentów w budynkach uczelnianych czy też pacjentów w trakcie hospitalizacji, to obydwie techniki (opaski, breloczki lub karty z tagiem RFID oraz kody kreskowe) sprawdzą się równie dobrze. Najprawdopodobniej z takich właśnie założeń wyszli inżynierowie z firmy Newland, którzy opracowali hybrydowy czytnik EM20-85, będący bohaterem tego odcinka naszego kursu.
Widok modułu od strony okna optycznego pokazano na fotografii tytułowej, zaś fotografia 1 prezentuje płytkę drukowaną zamontowaną od tyłu obudowy czytnika. Przy jej dolnej krawędzi znajdują się dwa złącza: 12-pinowe gniazdo FPC oraz dodatkowe, 8-pinowe gniazdo rastrowe. W pobliżu prawego górnego rogu PCB znalazł się niewielki, ale dość głośny buzzer SMD, dzięki któremu projektant docelowego urządzenia może zrezygnować z instalacji dodatkowego sygnalizatora akustycznego i skorzystać jedynie z linii zasilania oraz komunikacyjnych (UART lub USB).
Pomimo podobnego oznaczenia modelu oraz zbliżonego kształtu czoła obudowy, moduł EM20-85 diametralnie różni się od opisanego w ubiegłym miesiącu EM20-80 V4. W tym przypadku producent zrezygnował bowiem z obszernego (a zarazem dość głębokiego) dyfuzora o kształcie ściętego ostrosłupa – za oświetlenie obszaru obrazowania centralnie umieszczonej kamery odpowiada zestaw czterech białych diod LED o barwie ciepłej, które rozmieszczone są symetrycznie w pobliżu narożników matówki okalającej obiektyw. Wokół dyfuzora umieszczona jest natomiast antena czytnika NFC, co zostało zresztą odpowiednio oznakowane na górze oraz na dole szkła pokrywającego całą przednią część obudowy skanera.
Podstawowe parametry
Zanim przejdziemy do opisu implementacji czytnika EM20-85, przyjrzyjmy się najpierw najważniejszym parametrom technicznym i funkcjom oferowanym przez prezentowany moduł.
- obsługiwane kody 1D: kod 128, UCC/EAN128, AIM128, EAN-8, EAN-13, ISSN/ISBN, UPC-E, UPC-A, przeplatany 2 z 5, ITF-6, ITF-4, standardowy i przemysłowy kod 2 z 5, Codabar, kod 39, kod 93, kod 11, kod Plessey, kod MSI Plessey, GS1-128 (UCC/EAN-128), GS1-Databar™ (RSS) (RSS14, RSS Ograniczony (RSS-Limited), RSS Rozszerzony (RSS-Expand)), kod Matrix 2 z 5,
- obsługiwane kody 2D: kod PDF 417, kod Micro PDF 417, kod QR, kod Micro QR, kod Data Matrix, kod Aztec, MaxiCode,
- obsługiwane tagi NFC: ISO 14443A (Topaz 512, Mifare ultralight NTAG216, Mifare ultralight-C, NTAG215, Mifare UL, NTAG213, NTAG203, NTAG200, Mifare DESFIRE D22, Mifare DESFIRE EV1 2K, Mifare DESFIRE D42, Mifare DESFIRE D82, Mifare plus 4k, Mifare plus 2k, Mifare 1K, NXP-S70 EV1, Mifare S50, Mifare S70), ISO 14443B (Type B (Inner Mongolia convenient consumer card), ISO 15693 (ICODE SLI-X, TI2048), JIS*6319-4 (FELICA, Felica lite, Felica X),
- czujnik obrazu: kamera CMOS 640×480 px,
- oświetlenie: cztery białe diody LED,
- pole widzenia: 68°×51° (poziomo × pionowo),
- nachylenie płaszczyzny skanowania: ±60° w obu kierunkach,
- tolerancja przesuwu: 1,5 m/s,
- minimalny kontrast wydruku kodu: 25%,
- zasilanie: 5 V DC (±5%),
- pobór prądu w czasie pracy przy wyłączonym czytniku NFC: 215 mA (typ.)/578 mA (maks.),
- pobór prądu w czasie pracy przy włączonym czytniku NFC: 253 mA (typ.)/736 mA (maks.),
- pobór prądu w trybie standby: 120 mA (z wyłączonym NFC), 144 mA (z włączonym NFC),
- interfejsy: TTL-232 (UART 3,3 V), RS-232, USB (HID/CDC/HID POS),
- temperatura robocza: –20°C...+60°C,
- temperatura przechowywania: –40°C...+70°C,
- wilgotność powietrza: 5...95% (bez kondensacji).
Wymiary i montaż mechaniczny
Najważniejsze wymiary modułu pokazano na rysunku 1. Grubość całości, w zależności od wersji (określonej przez obecność fabrycznie zamontowanego, szklanego okna optycznego) waha się od 17,8 do 18,3 mm, mamy więc do czynienia z modułem bardzo kompaktowym, o małej głębokości instalacyjnej, co ma szczególne znaczenie w mniejszych urządzeniach. Rozstaw czterech otworów montażowych o średnicy 3,5 mm wnosi 44×58 mm. Co bardzo ważne, producent zmyślnie cofnął „uszy” przeznaczone do mocowania czytnika o 3,5 mm od czoła obudowy, dzięki czemu wkomponowanie go w obudowę docelowej konstrukcji i ukrycie łbów śrub mocujących jest nieporównanie łatwiejsze, niż w przypadku niektórych innych modułów OEM, np. wyświetlaczy, w których mocowania niemalże licują z samym ekranem.
Projektując mocowanie modułu należy zapewnić odpowiednią przestrzeń do odprowadzania ciepła (drogą konwekcji swobodnej) z komponentów zamontowanych na PCB. Test samonagrzewania modułu polegał na podłączeniu czytnika do zasilania i pozostawieniu go położonego płasko na powierzchni blatu z płyty MDF (płytką drukowaną do dołu). Temperatura otoczenia wynosiła 25°C. Na początku wykonano kilka odczytów kodów kreskowych, po czym moduł pozostawiono w stanie czuwania (z aktywną funkcją NFC). Po upływie 10 minut od włączenia zasilania średnia temperatura PCB skanera wzrosła do 38°C i ustabilizowała się na tym poziomie. Wynik tego testu warto oczywiście powtórzyć w bardziej rzeczywistych warunkach (najlepiej w prototypie docelowej obudowy), aby upewnić się, czy czytnik nie będzie ulegał przegrzewaniu podczas realnej eksploatacji (zwłaszcza podczas pracy w aplikacjach takich jak automaty paczkowe, biletomaty instalowane na przystankach czy w środkach komunikacji miejskiej, a także wszelkich innych rozwiązaniach narażonych na większe wahania temperatury).
Jak zawsze w przypadku urządzeń przeznaczonych do obrazowania, należy przewidzieć odpowiedni sposób montażu czytnika za szkłem ochronnym. Producent podaje szczegółowe wytyczne dotyczące rodzaju materiału, grubości, wymiarów i odległości okna optycznego od frontu czujnika – po szczegóły odsyłamy zainteresowanych Czytelników do oficjalnej dokumentacji [2].
Zasilanie i interfejsy komunikacyjne
Jak już wspomnieliśmy na początku artykułu, moduł EM20-85 zasadniczo różni się od opisanych wcześniej czytników OEM pod względem implementacji w docelowym urządzeniu. Główna różnica – z punktu widzenia projektanta elektroniki – leży w przyporządkowaniu wyprowadzeń złącza systemowego (12-pinowego gniazda ZIF) oraz obsługiwanym napięciu zasilania. Dla lepszego obrazu porównajmy zatem „pinologię” naszego głównego bohatera (tabela 1) z układami wyprowadzeń modułów EM3296V4 (tabela 2) oraz EM20-80 V4 (tabela 3).
Na pierwszy rzut oka widzimy całkowite odwrócenie numeracji EM20-85 względem EM3296V4 – w praktyce okazuje się jednak, że… różnica ta jest tylko pozorna! Przy zastosowaniu przewodu FFC ze stykami leżącymi po tej samej stronie taśmy, „pinologia” obydwu modułów jest… całkowicie zgodna! Czy oznacza to, że czytnik EM20-85 może bez problemu współpracować z urządzeniami przystosowanymi do obsługi EM3296V4 (np. płytką ewaluacyjną EVK3030 opisaną w pierwszym odcinku kursu)?
Niestety, nie jest tak łatwo. Różnica leży w napięciu zasilania: miniaturowy skaner EM3296V4 jest zasilany napięciem 3,3 V, podczas gdy EM20-85 wymaga 5 woltów – prawdopodobnie z uwagi na wbudowany moduł NFC, który potrzebuje dość sporej mocy do „napędzania” anteny. Na płytce EVK3030 nie ma jednak możliwości przełączenia linii zasilania złącza J2 na napięcie 5 V – nie miałoby to zresztą sensu, gdyż platforma ta była projektowana z myślą o niskonapięciowych modułach OEM marki Newland.
A co z płytką EM2037_EVK_V2, którą zastosowaliśmy podczas testów modułu EM20-80 V2? Tutaj niestety także mamy pewne ograniczenia: o ile bowiem ten zestaw ewaluacyjny oferuje już możliwość zmiany napięcia za pomocą stosownej zworki, to… podłączenie linii danych (D+, D–) interfejsu USB w module EM20-85 jest niezgodne z tym, które producent przewidział w przypadku EM20-80. Można byłoby wprawdzie skorzystać z dostępnego na płytce złącza J2 (RJ45), ale w tym celu trzeba byłoby dysponować konwerterem RS232, zaopatrzonym w odpowiedni kabel.
W czasie opracowywania niniejszego artykułu autor nie miał pod ręką ani zestawu ewaluacyjnego w pełni kompatybilnego z opisywanym modułem, ani gotowego kabla z wtykiem RJ45. Aby móc wygodnie przeprowadzić testy modułu, nie rezygnując z funkcjonalności oferowanych przez EVK (przycisk wyzwalania skanu, dioda LED good read), autor artykułu zdecydował się na krok być może dość drastyczny, ale skuteczny: wystarczyło bowiem zmodyfikować nieco płytkę EVK3030. W tym celu należało zidentyfikować ścieżkę zasilania idącą od stabilizatora 3,3 V do kondensatorów odsprzęgających przy złączu ZIF J2 (fotografia 2).
Ścieżka ta, dość szeroka, jest łatwa do odnalezienia – przechodzi bowiem (otoczona obszernym polem masy) na warstwie dolnej płytki drukowanej. Po upewnieniu się, że faktycznie jest to poszukiwana linia zasilania, wystarczyło wykonać w ścieżce niewielką przerwę, zdrapać fragment soldermaski (fotografia 3), a następnie połączyć odcinek idący do złącza J2 z pinem VBUS skrajnego gniazda USB o oznaczeniu J4. Tak przerobiona płytka ewaluacyjna z powodzeniem nadaje się do uruchomienia modułu EM20-85, jeżeli nie mamy akurat lepszego sposobu, a nie chcemy inwestować czasu i/lub środków finansowych w produkowanie dedykowanego adaptera ze złączem ZIF.
Po wykonaniu modyfikacji można z powodzeniem skorzystać z obydwu metod połączenia z komputerem, które udostępnia zestaw EVK3030: podłączając kabel USB do gniazda J4 możemy przetestować transmisję danych przez wbudowany interfejs USB modułu EM20-85, jeżeli natomiast zależy nam na sprawdzeniu komunikacji poprzez UART, wybieramy środkowe złącze J5. Co ważne, pomimo zasilania modułu napięciem 5 V linie cyfrowe pracują z napięciem 3,3 V – połączenie ich ze standardowym mikrokontrolerem (np. STM32) nie nastręcza zatem żadnych trudności i nie wymaga stosowania jakichkolwiek translatorów poziomów logicznych.
Testy czytnika NFC
Funkcja odczytu znaczników NFC jest domyślnie włączona w oprogramowaniu modułu EM20-85 i – co niezwykle ważne z punktu widzenia programisty implementującego skaner w docelowym systemie – dane dotyczące ID zapisanego w pamięci tagu trafiają do tego samego strumienia wyjściowego (i w tym samym formacie), co wyniki skanowania kodów kreskowych. Domyślnie ustawiony czas „poszukiwania” znacznika to 50 ms, ale wartość tę można modyfikować za pomocą odpowiednich metod programowania, które opisaliśmy już w poprzednich odcinkach niniejszego kursu. Konfigurowalny jest także czas pomiędzy kolejnymi odczytami tego samego znacznika – zakres regulacji rozciąga się od 1 ms do… 1 godziny (!), a domyślna wartość to 5 sekund. Użytkownik może oczywiście całkowicie wyłączyć funkcję NFC lub przywrócić ją „do życia” w dowolnym momencie.
Okrągły tag w formie naklejki o średnicy nominalnej 25 mm (średnica rzeczywista 26 mm) na bazie układu NTAG215 marki NXP, umieszczony równolegle do czoła czytnika (w przybliżeniu współśrodkowo z obiektywem) był z powodzeniem odczytywany z odległości 35 mm, co doskonale koreluje z deklarowanym przez producenta zasięgiem na poziomie 40 mm. Wynik jest tym bardziej zadowalający, że mamy tutaj do czynienia z tagiem wyposażonym w antenę o niewielkiej średnicy (zaledwie 23 mm), więc przy zastosowaniu typowych kart zasięg powinien być w większości przypadków jeszcze większy. Testy ze standardowym brelokiem NFC wykazały zasięg dochodzący do 30 mm, zaś przy zastosowaniu karty płatniczej parametr ten wyniósł… dokładnie 40 mm. Dane zamieszczone w dokumentacji producenta są zatem wyjątkowo dokładne i wiarygodne, co należy uznać za duży plus, zwłaszcza w dobie agresywnego marketingu, opartego na podawaniu parametrów technicznych mierzonych jedynie w najbardziej sprzyjających, często nierzeczywistych warunkach. Widok przetestowanych znaczników (z oczywistych przyczyn z pominięciem samej karty bankomatowej) pokazano na fotografii 4. Dodatkowe testy przeprowadzono także z użyciem aktywnych znaczników – ID smartwatcha było odczytywane z około 30 mm, zaś smartfon został „zauważony” na dystansie prawie 50 mm od czytnika, co stanowi naprawdę dobry wynik.
Warto dodać, że czytnik EM20-85 doskonale radzi sobie także z bardziej skomplikowanymi sytuacjami. Jeden z przeprowadzonych testów polegał na umieszczeniu tagu NFC tuż za… wydrukowanym kodem kreskowym. Szybkie zbliżenie takiego zestawu do czytnika zostało obsłużone w pełni poprawnie – czytnik najpierw przesłał identyfikator znacznika NFC, a tuż po zakończeniu pierwszej transmisji „wydrukował” zawartość kodu kreskowego.
Testy odczytu kodów 1D i 2D
Część przeprowadzonych testów obejmowała podstawą funkcjonalność naszego głównego bohatera, czyli skanowanie kodów kreskowych. Podobnie jak w przypadku wcześniej opisanych czytników OEM, tak i teraz skaner doskonale radził sobie z dekodowaniem oznaczeń drukowanych i wyświetlanych na ekranie komputera bądź smartfona. Nawet relatywnie słabo widoczne kody kreskowe, obecne na starych etykietach termicznych (naklejonych na woreczki z elementami elektronicznymi) były „bez zająknienia” odczytywane nawet ze sporej odległości i to nawet podczas ruchu względem kamery. Na fotografiach 5….9 , przechwyconych z kamery modułu za pomocą oprogramowania EasySet, można zobaczyć, z jak niewyraźnym obrazem jest w stanie poradzić sobie opisywany moduł – stanowi to doskonałe potwierdzenie jakości algorytmów obróbki obrazu, które producent zaimplementował w procesorze czytnika. Gwoli ścisłości należy dodać, że na potrzeby druku papierowego wydania „Elektroniki Praktycznej” oryginalne zdjęcia zostały programowo rozjaśnione, aby uzyskać jako taką czytelność – w rzeczywistości były one dużo mniej wyraźne (a czytnik i tak bezbłędnie poradził sobie z ich zdekodowaniem).
Omawiając temat odczytywania kodów kreskowych warto zwrócić uwagę na pewien szczegół, który przy pierwszym kontakcie z modułem EM20-85 może stanowić niemałe zaskoczenie. Podczas testów okazało się bowiem, że czytnik zupełnie „nie widzi” niektórych kodów QR, pomimo że ich jakość (kontrast, ostrość, rozmiar) nie pozostawiały absolutnie żadnych wątpliwości, mało tego – poprzednio opisane skanery OEM radziły sobie z nimi bez najmniejszego problemu. Szybki rzut oka do dokumentacji ujawnił potencjalną przyczynę problemu: w oprogramowaniu istnieje bowiem możliwość wyłączenia obsługi kodów QR zawierających adres URL – a takie właśnie były owe feralne, „niewidzialne” dla EM20-85 kody. Zezwolenie na odczyt takich oznaczeń może być łatwo zaprogramowane przez odczyt odpowiedniego kodu (wraz z poprzedzającym go zeskanowaniem uniwersalnej komendy Enter Setup oraz następującym po właściwym poleceniu skanem Exit Setup). Et voilà – jak za dotknięciem magicznej różdżki wszystko wróciło do normy i czytnik zaczął bezbłędnie odczytywać „internetowe” kody QR – nawet te małe, z dość sporej odległości bądź pozostające w ruchu. Warto o tym wspomnieć, bo tabela ustawień fabrycznych, znajdująca się w dokumentacji [3], wyraźnie podaje, że funkcja URL QR jest... domyślnie aktywna.
Podsumowanie
Zaprezentowany w niniejszym odcinku naszego kursu, hybrydowy moduł skanujący 1D/2D/NFC typu EM20-85 marki Newland to nowoczesny, doskonale wyposażony czytnik OEM, który świetnie „odnajdzie się” wszędzie tam, gdzie zachodzi potrzeba identyfikacji radiowej i optycznej osób i/lub przedmiotów, bez konieczności inwestowania w dwa osobne systemy. Czytnik świetnie radzi sobie z analizą kodów pozostających w ruchu względem kamery, z łatwością odczytuje też oznaczenia uszkodzone lub niezbyt wyraźne (np. na starych etykietach termicznych). Planując implementację czytnika w docelowej aplikacji należy jednak bacznie przyjrzeć się dokumentacji – pomimo łudzących podobieństw do innych modułów marki Newland (zwłaszcza ze względu na zastosowanie takiego samego, 12-pinowego przewodu FFC (fotografia 10) do połączenia z płytą urządzenia nadrzędnego), pomiędzy poszczególnymi modelami istnieją dość znaczące różnice i to zarówno pod względem rekomendowanej wartości napięcia zasilania, jak i w zakresie ułożenia oraz kierunku numeracji poszczególnych linii danych i sygnałów dodatkowych.
Warto także pamiętać o ustawieniu wszystkich pożądanych parametrów na początku pracy czytnika – będziemy wtedy mieli pewność, że skaner poprawnie poradzi sobie z realizacją stawianych przed nim zadań, gdyż nie wszystkie ustawienia domyślne będą odpowiednie do każdej aplikacji. Zalecenie uważanego przestudiowania dokumentacji (w programistycznym żargonie określane żartobliwym skrótem RTFM) dotyczy jednak wszystkich złożonych komponentów (np. układów scalonych), modułów czy też urządzeń, z którymi przychodzi nam pracować w naszej praktyce – zawsze warto więc poświęcić trochę czasu na przewertowanie not katalogowych i aplikacyjnych. W ten sposób nie tylko unikniemy potencjalnych pułapek, ale nierzadko odkryjemy także szereg ciekawych funkcjonalności godnych zaimplementowania w finalnym produkcie.
inż. Przemysław Musz, EP
[1] Strona internetowa produktu: https://t.ly/MJTFg
[2] EM20-85 OEM scan engine integration guide, dostępne online: https://t.ly/D2lxt
[3] EM20-85 OEM scan engine user guide, dostępne online: https://t.ly/cIzUr