Czym jest bit, bajt i jak rozumieć numer identyfikatora karty RFID?
Firma Maxim (dawniej Dallas) wytwarza urządzenia identyfikacyjne np. w postaci pastylek lub czujników temperatury. Dane są wysyłane w 64 bitowych (8 bajtowych) paczkach danych za pomocą interfejsu komunikacyjnego 1-WIRE. W skrócie zostanie tutaj omówione jak takie dane wyglądają.
Czym jest bit, bajt i jak rozumieć numer identyfikatora karty RFID?
Bit jest to cyfrowa jednostka informacji składająca się z dwóch stanów 0 lub 1. Najprościej można zrozumieć to w ten sposób, że 1 oznacza, że dane zdarzenie wystąpiło natomiast 0 oznacza, że nie wystąpiło. System takiego zapisu danych nazywamy systemem binarnym (BIN).
Bit jako jednostkę zapisujemy małą literą „b”, np. 5b ( pięć bitów ).
Bajt jest to ciąg 8 bitów przedstawiający zbiór kolejnych danych lub określoną wartość.
Bajt jako jednostkę zapisujemy wielką literą „B”. 12B ( dwanaście bajtów ).
Reprezentacja jednego przykładowego bajtu:
Bity są zawsze numerowane od bitu zerowego (bit 0).
Taką informację można przedstawić w innych popularnych systemach np. szesnastkowym (HEX) lub dziesiętnym (DEC).
System dziesiętny:
Każdy kolejny bit w bajcie reprezentuje wynik w postaci kolejnej potęgi liczby 2 za pomocą wzoru 2x,
gdzie x oznacza kolejny numer bitu.
Jeśli dany bit jest zapisany jako 1 to pobieramy wartość dziesiętną z danego bitu, jeśli występuje 0 to pomijamy i dodajemy wszystkie liczby tworząc nową liczbę przekonwertowaną z systemu binarnego na dziesiętny.
1 0 1 0 0 1 0 1 (BIN)
128 + 0 + 32 + 0 + 0 + 4 + 0 + 1 = 165 (DEC)
System szesnastkowy:
Dane zapisane w systemie szesnastkowym wymagają zapisu danej liczby za pomocą 4 bitów tak zwanych nibble czyli połowy bajtu. Czyli 1 bajt składa się z dwóch liczb w systemie szesnastkowym (HEX).
Liczby w systemie szesnastkowym (HEX) mają wartości: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
Odpowiednie litery alfabetu odpowiadają kolejnym wartościom w systemie dziesiętnym
Jeśli dany bit jest zapisany jako 1 to pobieramy wartość dziesiętną z danego bitu, jeśli występuje 0 to pomijamy i dodajemy wszystkie liczby odpowiadające kolejnym 4 bitom tworząc nową liczbę przekonwertowaną z systemu binarnego na szesnastkowy.
1 0 1 0 ( BIN ) => 8 + 0 + 4 + 0 = 10 ( DEC ) => A (HEX)
0 1 0 1 ( BIN ) => 0 + 4 + 0 + 1 = 5 ( DEC ) => 5 (HEX)
Z tego wynika, że ten bajt ma wartość szesnastkową A 5 licząc od najmłodszego bitu.
Czym jest kod identyfikatora karty RFID?
Zwykle stosuje się 64 bitowy unikatowy kod identyfikatora karty według standardu firmy Maxim urządzenia DS1990A, który służy do weryfikacji użytkownika. Ten typ identyfikacji stał się popularny na przykład przy otwieraniu drzwi zewnętrznych do danej klatki schodowej w budynkach wielorodzinnych (blokach) zamiast używania fizycznego klucza. Po przyłożeniu pastylki DS1990A do domofonu następuje rozpoznanie danego użytkownika zapisanego w centrali i aktywacja zamka elektronicznego, a następnie otwarcie drzwi. Obecnie zastępuje się te rozwiązania kartami zbliżeniowymi lub brelokami RFID, które nie wymagają bezpośredniego kontaktu z urządzeniem stosując technologię radiową. W przypadku bardziej nowoczesnych kart, gdzie numer identyfikatora jest dłuższy od 6 bajtów, kod jest skracany odrzucając starsze bajty, tworząc standardową ramkę 8 bajtowych danych.
Przykładowy numer identyfikatora według standardu urządzenia DS1990A:
Bajt 0 – wartość 01 jest przypisana do urządzeń identyfikacyjnych typu DS1990A i jest stała
Bajty 1-6 – numer identyfikatora karty
Bajt 7 – Suma kontrolna CRC służąca do sprawdzenie poprawności przesyłanych danych.
Jak jest liczona suma kontrolna CRC można przeczytać z oficjalnych źródeł:
https://www.analog.com/en/resources/
technical-articles/understanding-and-using-cyclic-redundancy-checks-with-maxim-1wire-and-ibutton-products.html\
Jeśli potrzebne jest szybkie sprawdzenie poprawności sumy kontrolnej CRC polecamy zastosować kalkulator online:
https://tomeko.net/online_tools/
crc8.php?lang=pl
Należy pamiętać, żeby wpisać kod 7 bajtowy od najmłodszego bajtu dla przykładu powyżej:
Jest : 58 00 04 00 0F 0F 57 01
Należy wpisać: 01 57 0F 0F 04 00 i zatwierdzić przyciskiem "Convert"
Jeśli kod został wpisany poprawnie to na dole powinna wyświetlić się suma kontrolna CRC = 58 (HEX).