Czytniki kodów kreskowych w praktyce (1). EM3296V4: uniwersalny silnik skanowania OEM do urządzeń kompaktowych

Czytniki kodów kreskowych w praktyce (1). EM3296V4: uniwersalny silnik skanowania OEM do urządzeń kompaktowych

Identyfikacja optyczna znalazła niezliczone zastosowania w aplikacjach przemysłowych, handlu, spedycji, zarządzaniu jednostkami ochrony zdrowia, systemach kontroli dostępu i wielu innych. Nie jest tajemnicą, że realizowana „od zera” implementacja wydajnego, niezawodnego skanera we własnym urządzeniu, dawno przestała się już opłacać. W istocie jedynym sensownym rozwiązaniem jest dziś zastosowanie jednego z licznych silników skanujących OEM – gotowych modułów, które wystarczy zamontować w docelowym urządzeniu, podłączyć do układu nadrzędnego oraz odpowiednio skonfigurować. Jednak nawet w tak pozornie prostej implementacji natkniemy się nierzadko na szereg zagadnień, których nieuwzględnienie na etapie projektu systemu może ograniczyć funkcjonalność skanera lub znacznie utrudnić jego użytkowanie. Niniejszy artykuł rozpoczyna krótki kurs poświęcony właśnie praktycznym aspektom użycia skanerów OEM, przeznaczonych do odczytu kodów kreskowych 1D i 2D.

W pierwszej części naszego cyklu posłużymy się przykładem jednego z najmniejszych skanerów OEM dostępnych obecnie na rynku – przyjrzymy się modelowi EM3296V4 marki Newland. Widok modułu – zaprezentowanego na dłoni, dla porównania skali – można zobaczyć na fotografii tytułowej.

Budowa modułu

Bohater tego artykułu to klasyczna konstrukcja statycznego silnika skanującego. Zamiast skomplikowanego układu optyczno-mechanicznego z przemiataniem wiązki laserowej, znanego m.in. ze skanerów kodów kreskowych używanych w kasach sklepowych, mamy tu bowiem do czynienia z miniaturowym systemem wizyjnym, opartym na kamerze CMOS – dzięki takiemu rozwiązaniu moduł może odczytywać zarówno kody 1D (kreskowe, np. Code39), jak i 2D (matrycowe, np. QR). Ponadto brak elementów ruchomych znacznie wydłuża czas bezawaryjnej eksploatacji i redukuje zużycie energii. Co bardzo ważne z punktu widzenia docelowych aplikacji, EM3296V4 obsługuje z równym powodzeniem zarówno kody wyświetlane na ekranach (np. smartfona czy komputera), jak i drukowane bądź nanoszone innymi technikami znakowania powierzchni (np. laserowo). Pracę w ciemności lub niedostatecznym oświetleniu zewnętrznym wspomaga wbudowany oświetlacz LED, zaś nakierowanie skanera na kod, który ma zostać odczytany, ułatwia specjalny celownik – także zbudowany w oparciu o diodę LED, choć w tym przypadku wyposażoną w doskonale skolimowaną optykę, dającą w efekcie jasną, ostro odgraniczoną od tła plamkę światła (fotografia 1).

Fotografia 1. Światło emitowane przez wbudowany oświetlacz oraz celownik modułu EM3296V4

Ułożenie poszczególnych elementów optycznych na panelu czołowym obudowy modułu można zobaczyć na fotografii 2. Silnik skanujący EM3296V4 to rozwiązanie w pełni zintegrowane – wbudowany układ elektroniczny z wydajnym procesorem zapewnia realizację całej procedury odczytu kodów kreskowych i matrycowych, zaś wynikiem działania modułu jest… zdekodowany ciąg znaków, udostępniany za pośrednictwem jednego z dwóch interfejsów szeregowych.

Fotografia 2. Opis elementów optycznych skanera: 1 – celownik LED, 2 – obiektyw kamery CMOS, 3 – podwójny oświetlacz LED

Najważniejsze parametry i funkcjonalności

Zanim przejdziemy do opisu sposobu podłączenia, mocowania i konfiguracji modułu, przyjrzyjmy się jego najważniejszym parametrom technicznym oraz funkcjom realizowanym przez oprogramowanie wbudowane procesora zarządzającego działaniem skanera.

  • Rodzaje odczytywanych kodów 1D: Code 39, Code 128, UCC/EAN-128, AIM128, EAN-8, EAN-13, ISBN/ISSN, UPC-E, UPC-A, Interleaved 2 of 5, ITF-6, ITF-4, Matrix 2 of 5, Industrial 25, Standard 25, Codabar, Code 11, Plessey, MSI-Plessey, GS1-DataBarTM(RSS), RSS-14, RSS-Limited, RSS-Expand.
  • Rodzaje odczytywanych kodów 2D: PDF417, QR Code (QR1/2, Micro), Data Matrix (ECC200, ECC000, 050, 080, 100, 140), Aztec, Chinese Sensible Code.
  • Sensor obrazu: CMOS 640×480 px (monochromatyczny).
  • Celownik/oświetlacz: LED 625 nm.
  • Szybkość skanowania: 100 fps.
  • Czas uruchamiania (po włączeniu zasilania/zwolnieniu linii Reset): 400 ms.
  • Zalecane napięcie zasilania: 3,3 V (DC) ±5%, poziom szumu: <= 30 mV (pk-pk).
  • Dopuszczalne napięcie zasilania: 3,0...3,6 V, szum <= 50 mV (pk-pk).
  • Pobór prądu: 100 mA (typ.)/168 mA (maks.) – w trybie skanowania, 10 mA (w trybie bezczynności), 10 μA (w trybie uśpienia).
  • Interfejsy: USB, UART.
  • Oświetlenie zewnętrzne: 0…100 000 lux.
  • Zakres temperatur pracy: –20°C to +60°C (@ 5…95% RH).

Montaż mechaniczny i integracja z oknem optycznym

Wymiary modułu EM3296V4 to zaledwie 21,8 mm × 15,3 mm × 11,8 mm (szerokość × głębokość × wysokość) – patrz rysunek 1.

Rysunek 1. Wymiary modułu EM3296V4 (https://t.ly/Lojz1)

Skaner jest mocowany do konstrukcji docelowego urządzenia za pomocą dwóch śrubek z gwintem M1,6, rozmieszczonych po przekątnej spodu obudowy (rysunek 2).

Rysunek 2. Rozmieszczenie gwintowanych otworów montażowych w podstawie modułu (https://t.ly/Lojz1)

Projektując obudowę, w której ma być zamontowany silnik skanujący, należy przewidzieć umieszczenie w niej przezroczystego okna, chroniącego optykę oraz układ elektroniczny przed wpływem zanieczyszczeń i wilgoci, a także przed uszkodzeniami mechanicznymi – należy jednak pamiętać, by przestrzegać następujących wymogów zalecanych przez producenta:

  • odległość od czoła skanera do wewnętrznej powierzchni okna optycznego nie powinna przekraczać 0,5 mm,
  • grubość materiału okna optycznego nie powinna być większa niż 2 mm,
  • okno optyczne powinno być wykonane z materiału odpornego na zarysowania, np. PMMA lub szkła o transmitancji nie mniejszej niż 90% i współczynniku zamglenia (ang. haze) poniżej 1%.

W przypadku umieszczenia modułu w głębokiej wnęce obudowy należy zwrócić szczególną uwagę, by jej brzegi nie kolidowały z wiązkami oświetlacza oraz polem widzenia kamery – stosowne szkice, wykreślone w dwóch ortogonalnych płaszczyznach, można zobaczyć na rysunkach 3 i 4.

Rysunek 3. Pole widzenia kamery (FOV) oraz wiązki oświetlacza (Illumination) i celownika (Aiming), widoczne w płaszczyźnie poziomej
Rysunek 4. Pole widzenia kamery oraz wiązki oświetlacza i celownika, widoczne w płaszczyźnie pionowej

Interfejs elektryczny i protokoły transmisji

Wszystkie połączenia modułu z układem nadrzędnym (np. mikrokontrolerem lub komputerem SBC) są realizowane za pośrednictwem 12-żyłowego przewodu FPC o rastrze 0,5 mm (rysunek 5) – producent zastosował gniazdo 10051922-1210EHLF marki FCI, ale nic nie stoi na przeszkodzie, by po stronie hosta umieścić kompatybilne złącze innego producenta.

Rysunek 5. Ułożenie systemowego złącza ZIF (https://t.ly/Lojz1)

Układ wyprowadzeń gniazda opisano w tabeli 1.

Domyślnym interfejsem komunikacyjnym modułu jest 8-bitowy UART o prędkości transmisji 9600 bps, z jednym bitem stopu i bez obsługi parzystości. W ramach rekonfiguracji modułu można zmienić zarówno parzystość, jak i liczbę bitów danych (7 lub 8) i stopu (1 lub 2) oraz prędkość (1200...115200 bps).

Linia RESET jest aktywowana impulsem stanu niskiego o czasie trwania 100...500 μs, przy czym czas upływający pomiędzy kolejnymi impulsami (jeżeli zaistniałaby taka potrzeba) musi przekroczyć 2 sekundy.

Wyzwolenie skanowania odbywa się standardowo poprzez ustawienie linii nTRIG w stan niski na co najmniej 10 ms – powrót do stanu wysokiego powoduje przerwanie operacji i wygaszenie celownika oraz oświetlacza (o ile nie zmieniono domyślnych ustawień działania tychże elementów). Co ważne, po odczycie kodu host powinien zwolnić linię nTRIG na minimum 50 ms, zanim przystąpi do kolejnego wyzwolenia skanu.

Moduł EM3296V4 może automatycznie obsługiwać zewnętrzny buzzer oraz diodę LED, pozwalające na potwierdzanie dokonania odczytu. Należy zwrócić uwagę na bardzo ważny fakt – linia BUZZ jest sterowana sygnałem PWM, dzięki czemu układ może sygnalizować różne stany silnika skanującego (np. włączenie zasilania, dokonanie konfiguracji za pomocą kodu specjalnego przeznaczenia, czy też prawidłowy bądź błędny odczyt) za pomocą zróżnicowanych sygnałów dźwiękowych. Z tego też względu buzzer (podłączony do linii BUZZ za pośrednictwem tranzystora kluczującego) musi być przetwornikiem pasywnym (tj. bez wbudowanego generatora). Zarówno brzęczyk, jak i dioda LED (także podłączona za pomocą zewnętrznego tranzystora), są aktywowane stanem wysokim.

Silnik skanujący EM3296V4 oferuje kilka trybów komunikacji z hostem. Domyślny tryb to UART – podłączenie linii TX modułu do wejścia RX mikrokontrolera lub konwertera UART-USB (pracującego z poziomami logicznymi 3,3 V), wystarczy więc w zupełności do uruchomienia minimalistycznej implementacji, umożliwiającej odbiór zdekodowanych znaków z modułu. W odróżnieniu od prostszych skanerów OEM, omawiany moduł umożliwia jednak także komunikację za pośrednictwem wbudowanego portu USB – i to w dwóch trybach:

  • USB HID – moduł emuluje klawiaturę, dzięki czemu może być obsługiwany na zasadzie „plug & play” przez dowolny komputer lub minikomputer SBC,
  • USB CDC – silnik skanujący pełni rolę wirtualnego portu COM, który – za pomocą odpowiedniego sterownika systemowego – „udaje” sprzętowy port szeregowy, przez co dane mogą być odczytywane tak, jak z każdego innego portu lub konwertera pracującego w trybie CDC.

Zestaw ewaluacyjny EVK3030 – uruchomienie i pierwsze testy silnika skanującego

Natychmiastowe rozpoczęcie pracy z modułem EM3296V4 jest znacznie ułatwione dzięki płytce ewaluacyjnej o symbolu EVK3030, opracowanej przez firmę Newland z myślą o osobach planujących wdrożenie modułu OEM we własnym projekcie.

Fotografia 3. Widok płytki EVK3030 wraz z modułem EM3296V4

Widok płytki przed zainstalowaniem modułu pokazano na fotografii 3, zaś gotowy do pracy zestaw (ze skanerem przykręconym do odpowiednich otworów w PCB) można zobaczyć na fotografii 4. Należy przy tym zwrócić uwagę, że zastosowana taśma FPC jest typu 1 co oznacza, że pola kontaktowe są umieszczone po tej samej stronie przewodu i skierowane do dołu (czyli usztywnieniem do góry).

Fotografia 4. Złożony zestaw ewaluacyjny z podłączonym modułem skanującym

Na płytce znalazły się trzy złącza, umożliwiające podłączenie EVK3030 do komputera lub innego systemu nadrzędnego:

  • J3 – gniazdo typu RJ45, udostępniające port RS-232C (po konwersji przez układ SP3232),
  • J4 – gniazdo USB typu B, połączone bezpośrednio z interfejsem USB skanera,
  • J5 – gniazdo USB typu B, połączone przez sprzętowy konwerter CP2102 z interfejsem UART modułu skanującego.

Ponadto zestaw zawiera oczywiście dwa przyciski (resetujący oraz wyzwalający), a także diodę LED i buzzer elektromagnetyczny.

Jak widać na fotografii 4, moduł wpięto do złącza FPC oznaczonego jako J2 – drugie, bliźniacze złącze J1 jest przeznaczone do użycia z innymi modelami skanerów OEM marki Newland.

Konfiguracja z użyciem kodów predefiniowanych

Moduł EM3296V4 może być skonfigurowany na dwa sposoby. Pierwszy – klasyczny i stosowany w niemal wszystkich współczesnych czytnikach kodów kreskowych – polega na skanowaniu specjalnych kodów serwisowych, których komplet został opublikowany w dokumentacji producenta, dostępnej pod adresem [1]. W większości przypadków cykl konfiguracji polega na zeskanowaniu kodu znajdującego się na górze strony (Enter Setup), a następnie na wskazaniu wybranego kodu odpowiedzialnego za konkretne ustawienie modułu. Po zakończeniu konfiguracji trzeba zeskanować „kod wyjścia”, czyli – znajdujący się na dole strony i oznaczony jako Exit Setup. Za pomocą odpowiednich kodów można ustawić rodzaj i parametry pracy interfejsów szeregowych, tryby skanowania i detekcji, właściwości stabilizacji obrazu, obszary ROI, ustawienia oświetlacza, celownika, buzzera i wskaźnika LED, czy wreszcie rozmaite prefiksy, sufiksy i wiele innych. W razie problemów (lub podczas wstępnych testów) można łatwo powrócić do ustawień fabrycznych skanując kod Restore All Factory Defaults (rysunek 6).

Rysunek 6. Kod specjalnego przeznaczenia umożliwiający przywrócenie wszystkich ustawień domyślnych skanera

Konfiguracja z użyciem oprogramowania EasySet

Konstruktorzy implementujący skaner EM3296V4 (lub jeden z wielu innych silników tego samego producenta) we własnym projekcie mają możliwość konfiguracji modułu za pomocą oprogramowania EasySet, dostępnego na komputery z systemem Windows. Po zainstalowaniu i uruchomieniu programu pojawia się okno startowe (rysunek 7), w którym można wybrać jedną z czterech opcji – nas interesuje w tym momencie programowanie ustawień skanera przez kabel USB, wybierzmy więc opcję Online Device.

Rysunek 7. Okno startowe programu EasySet

Następnie trzeba podłączyć płytkę do komputera za pomocą środkowego gniazda USB (J5) i – naciskając przycisk TRIG (K1) – zeskanować wyświetlony na ekranie kod opatrzony nazwą USB CDC COM Port. Teraz można kliknąć przycisk Refresh – po kilku chwilach oprogramowanie powinno wykryć płytkę, co zostanie zasygnalizowane wyświetleniem podobizny naszego skanera w lewym górnym rogu okna (rysunek 8). Podwójne kliknięcie fotografii spowoduje przejście do okna konfiguracji, w którym możemy wybrać jedną z licznych zakładek, grupujących poszczególne ustawienia według podziału funkcjonalnego.

Rysunek 8. Okno wykrywania podłączonego skanera

Załóżmy, że chcemy dodać do wyjściowego ciągu znaków (reprezentującego zawartość skanowanego kodu) obsługę prefiksów, które pozwalają na określenie rodzaju kodu (np. ‘j’ dla kodów Code 128, ‘d’ w przypadku EAN-13 i EAN-8 czy ‘Q’ w przypadku kodów QR). W tym celu należy przejść do zakładki 3.

DATA FORMATTING, a następnie wybrać podzakładkę CODE ID i zmienić stan przełącznika, znajdującego się na górze strony (rysunek 9). Teraz możemy kliknąć przycisk Save to Device, znajdujący się na dole okna, po jego prawej stronie – spowoduje to zapisanie nowej konfiguracji w pamięci modułu, co zostanie potwierdzone stosownym komunikatem. W ten sposób możemy modyfikować niezliczone opcje i funkcje dodatkowe silników skanujących, zależnie od potrzeb docelowej aplikacji.

Rysunek 9. Okno konfiguracji prefiksów identyfikujących rodzaj zeskanowanego kodu

Niezwykle ciekawą i przydatną funkcjonalność oprogramowania EasySet stanowi możliwość podglądu obrazu z kamery. W tym celu należy przejść do zakładki 4. IMAGING, a następnie kliknąć przycisk Load Image (rysunek 10). Po chwili w oknie programu pojawi się rzeczywisty obraz zarejestrowany przez kamerę modułu. Mając podgląd tego, co naprawdę „widzi” silnik skanujący, możemy z niebywałą wprost łatwością optymalizować warunki mocowania modułu w obudowie, sprawdzać wpływ rodzaju i położenia okna optycznego na jakość obrazu, czy też analizować przyczyny ewentualnych problemów, wynikających np. z wyjątkowo niekorzystnych warunków oświetleniowych lub artefaktów innego pochodzenia.

Rysunek 10. Okno podglądu obrazu z kamery modułu

Jeżeli pracujemy w trybie USB CDC lub używamy interfejsu UART, to dane wyjściowe generowane przez moduł możemy podejrzeć w dowolnym oprogramowaniu terminalowym (np. PuTTY w przypadku systemu Windows, czy też moserial w systemach linuksowych). Jak widać na rysunku 11, dane są domyślnie oddzielane znakami nowej linii, zaś ewentualny prefiks oznaczający rodzaj zeskanowanego kodu jest „doklejany” bezpośrednio przed właściwym ciągiem znaków.

Rysunek 11. Okno terminala po odczytaniu dwóch różnych kodów (1D i 2D)

Przykładowe aplikacje

Moduł EM3296V4 – ze względu na bardzo kompaktowe rozmiary, możliwość skanowania kodów drukowanych lub wyświetlanych na ekranach, a także prostą implementację i ogromny zakres funkcjonalności – doskonale nadaje się do użycia w rozmaitych urządzeniach przenośnych, stacjonarnych systemach wbudowanych czy też aplikacjach przemysłowych, związanych np. z identyfikacją obiektów na linii produkcyjnej. Do potencjalnych zastosowań modułu można zaliczyć m.in. noszone skanery do inwentaryzacji magazynów, kompaktowe skanery bezprzewodowe, terminale kurierskie, automaty paczkowe, czy też skanery stosowane przez kontrolerów biletów w komunikacji miejskiej.

inż. Przemysław Musz, EP

[1] EM3296 OEM scan engine user guide (https://t.ly/IuWWt)

Więcej informacji:
 
Dystrybutorem skanerów OEM marki Newland na terenie Polski jest firma: Kreski Spółka Jawna ul. Mory 12, 01-303 Warszawa, www.kreski.pl
Artykuł ukazał się w
Elektronika Praktyczna
grudzień 2024
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik grudzień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio listopad - grudzień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje listopad - grudzień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna grudzień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich styczeń 2025

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów