Systemy kodów kreskowych - kod QR

Znane nam z życia codziennego etykiety z opisami produktów są mało wydajne w automatycznym procesie produkcji. Informacje przeznaczone dla ludzi i opisane jednym z wielu alfabetów upraszcza się i kompresuje za pomocą kodów kreskowych. Aktualnie wyróżnić można około 250 takich standardowych systemów kodowania. Dwuwymiarowy system kodowania QR jest przykładem opracowanego dla alfabetów azjatyckich, który staje się ogólnoświatowym standardem. Aktualnie jest najlepszym systemem przeznaczonym do odczytu przez urządzenia przenośne mające kamerę oraz dostęp do Internetu.

Posłuchaj
00:00

Pierwszy i nadal powszechnie stosowany standard UPC (Universal Product Code) powstał już w latach 70. Przeznaczony był do usprawnienia sprzedaży oraz gromadzenia informacji magazynowych. Całość kodu składa się z 48 lub 95 bitów i pozwala na zapisanie 6 lub 12 cyfr. Każda cyfra kodowana jest za pomocą 7 bitów, kod zawiera dodatkowo pola początku, środka i końca. Na ostatnim miejscu znajduje się suma kontrolna, która pozwala na sprawdzenie poprawności odczytu. Kod może być skanowany przy użyciu skanerów ręcznych i może być drukowany na miejscu w sklepie.

Rozszerzenie standardu UPC stanowi kod 128. Pozwala on na zapisanie 128 znaków - cyfr, liter oraz kilkunastu symboli. Obejmuje 128 znaków oznaczonych w kodzie ASCII numerami 32-126 oraz 200-211. Najbardziej rozpowszechnioną wersją kodu 128 jest standard GS128 używany głównie przez firmy transportowe oraz pakujące. Cechą wyróżniającą kod GS128 jest zastosowanie identyfikatorów zastosowań. Są to dodatkowe pola opisujące rodzaj przenoszonej informacji (np. IZ15 - data trwałości, IZ11 - data produkcji czy IZ412 - producent).

W miarę poszerzania obszarów zastosowań kodów kreskowych pojawiły się nowe wymagania co do ilości informacji, rozmiarów kodu oraz bezbłędności
odczytu danych. Już w latach 80. pojawiły się pierwsze kody dwuwymiarowe, które oferowały możliwość zapisu dużo większej ilości informacji na małej powierzchni. Standardy takie jak Kod 16K czy PDF417, określane często jako kody piętrowe, można opisać jako złożenie kilku warstw kodu jednowymiarowego. Kod PDF417 na powierzchni porównywalnej z powierzchnią kodu UPC mieści ponad 1000 znaków.

W latach 90. rozpoczął się intensywny rozwój kodów, za pomocą których można zapisać alfabety spoza standardu ASCII, takie jak arabski, grecki, czy chińskich znaków logograficznych. Kod Aztec czy QR to zaawansowane obrazy zawierające matryce punktów. Umożliwiają zapisanie dużej ilości informacji zapewniając równocześnie szybki odczyt danych oraz korektę błędów.

Punkty charakterystyczne kodu QR

Rys. 1. Punkty charakterystyczne kodu QR: A – punkty detekcji, B – wzorzec czasu, C – punkty kalibracji, D – obszar danych, E – ramka

Cechy kodu QR

Kod QR ma postać kwadratu, w którym dane zapisywane są za pomocą białych i czarnych punktów zwanych modułami. Oprócz informacji użytecznej w polu kodu zapisane są także dodatkowe dane pozwalające na poprawny i szybki odczyt, a także na korektę błędów. Standard określa 40 wersji kodu QR. Najmniejszy z nich (wersja 1) ma rozmiar 21×21 modułów. Każda kolejna wersja ma o 4 moduły więcej w pionie i poziomie. Najwięcej informacji zawiera wersja 40 o rozmiarze 177×177 modułów. Można w nim zapisać ponad 7000 cyfr (w porównaniu z 12 w kodzie UPC) lub ponad 4000 znaków.

Cztery poziomy korekcji błędów pozwalają na odczyt danych nawet z kodu uszkodzonego w 30%. Przy zastosowaniu wyższego poziomu korekcji znacznie zmniejsza się ilość przechowywanych informacji. Przykładowe dane dla wybranych 5 wersji przedstawiono w tabeli 2.

Kod QR można odczytać za pomocą większości urządzeń przenośnych wyposażonych w kamerę. Specyfikacja kodu QR jest darmowa, a w sieci można znaleźć otwarte algorytmy odczytu tego kodu. Odczytane dane można w bardzo prosty sposób połączyć z dostępnymi w telefonie aplikacjami, wyświetlając automatycznie odczytaną stronę WWW, przesyłając maila na podany adres, zapisując wizytówkę w kontaktach, czy dodając wydarzenie do kalendarza. Dla przekazywania bardzo małych ilości danych (np. samego adresu WWW lub e-mail) powstała specjalna wersja Mikro QR.

Odczyt punktu detekcji kodu QR

Rys. 2. Odczyt punktu detekcji niezależnie od położenia daje informację 1:1:3:1:1 a przesunięcie środka w punkcie detekcji pozwala na zmniejszenie przesunięcia płaszczyzn

W obszarze kodu QR wyróżnić można 5 charakterystycznych punktów, które przedstawione zostały na rysunku 2. W trzech rogach pola kodu znajdziemy punkty detekcji (finding pattern) otoczone przez białą ramkę. Pozwalają one na określenie płaszczyzny, wielkości oraz położenia kodu względem kamery.

Niezależnie od położenia punkt detekcji odczytywany w różnych kierunkach daje zawsze informację 1:1:3:1:1 (rys. 2). Odnalezienie takich trzech wzorców pozwala na pozycjonowanie obrazu i przyspieszenie kolejnych etapów odczytu kodu (rys. 3a). Elementami podobnymi do punktu detekcji są mniejsze punkty kalibracji (aligment pattern). Ich symetryczne rozmieszczenie i większa ilość pozwalają na eliminację odchyleń płaszczyzny kodu względem płaszczyzny kamery - rys. 3c i 3d. Liczba punktów detekcji zależna jest od wersji kodu QR, a dokładniej od jego wielkości i poziomu zabezpieczenia.

Deformacje kodów QR

Rys. 3. Możliwe deformacje odczytywanych kodów QR

Zniekształcenia płaszczyzny eliminowane za pomocą punktów kalibracji powstają w szczególności, gdy kod przyklejony jest do niepłaskich powierzchni - butelek, torebek foliowych itp. Punkty kalibracji umieszczone są w równych odstępach, a informację o odkształceniu można uzyskać, porównując położenie zarejestrowanego punktu centralnego do centrum obliczonego na podstawie otaczającej ramki.

Ilość informacji, jaką można umieścić wewnątrz kodu QR, zależna jest od obszaru oraz rozdzielczości. Wielkość pojedynczego pola danych oraz odstęp możemy skalibrować za pomocą wzorca czasu (timing pattern). W standardzie zarezerwowano na ten cel po jednej linii i kolumnie, które wypełnione są naprzemiennie modułami jasnymi i ciemnymi.

Odczyt wzorca czasu pozwala też na wykrywanie odchyleń obrazu względem płaszczyzny kamery (rys. 3c i 3d). Wokół całego kodu umieszcza się ramkę (quite zone) która pozwala wyodrębnić obszar kodu z całego zdjęcia.

Głównym nośnikiem informacji w kodzie są komórki danych (data area) czarne i białe punkty oznaczające odpowiednio 0 i 1 logiczną. Informacje zapisane są za pomocą kodu Reed-Solomon.

Bartłomiej Grześkowiak

Zobacz więcej w kategorii: Gospodarka
Komponenty
RS przejmuje Distrelec - powstaje nowy potentat dystrybucji przemysłowej
Komponenty
Generatywna sztuczna inteligencja zmienia globalny rynek procesorów
Aktualności
Samsung otwiera w Warszawie największe centrum biznesowe w Europie
Aktualności
Samsung i OpenAI nawiązują strategiczne partnerstwo na rzecz rozwoju globalnej infrastruktury AI
Produkcja elektroniki
Powstaje gigant wart 4,4 mld dolarów - czwarty co do wielkości dostawca sprzętu do produkcji płytek półprzewodnikowych w USA
Optoelektronika
Smartwatche napędzają rozwój wyświetlaczy Micro LED
Zobacz więcej z tagiem: Artykuły
Magazyn
Wrzesień 2025
Magazyn
Sierpień 2025
Magazyn
Lipiec 2025

Najczęstsze błędy przy projektowaniu elektroniki i jak ich uniknąć

W elektronice „tanio” bardzo często znaczy „drogo” – szczególnie wtedy, gdy oszczędza się na staranności projektu. Brak precyzyjnych wymagań, komponent wycofany z produkcji czy źle poprowadzona masa mogą sprawić, że cały produkt utknie na etapie montażu SMT/THT albo testów funkcjonalnych. Konsekwencje są zawsze te same: opóźnienia i dodatkowe koszty. Dlatego warto znać najczęstsze błędy, które pojawiają się w projektach elektroniki – i wiedzieć, jak im zapobiegać.
Zapytania ofertowe
Unikalny branżowy system komunikacji B2B Znajdź produkty i usługi, których potrzebujesz Katalog ponad 7000 firm i 60 tys. produktów