Spisu treści:

Portfel elektroniczny: 3 kroki
Portfel elektroniczny: 3 kroki

Wideo: Portfel elektroniczny: 3 kroki

Wideo: Portfel elektroniczny: 3 kroki
Wideo: А вы долго осторожничали?) Коляска BubaGO Lira 2024, Czerwiec
Anonim
Portfel elektroniczny
Portfel elektroniczny

UWAGA: Mam teraz instrukcje, które oferują kod Arduino dla RC522 i PN532.

W poprzednim poście szczegółowo opisałem podstawy komunikacji z modułami RFID MFRC522 i PN532 do odczytu/zapisu danych z tagów Mifare Classic 1k. W tym poście idę o krok dalej i pokazuję, jak wykorzystać te moduły do stworzenia portfela elektronicznego z tagów. Podobnie jak w poprzednim poście, jest to przedstawione jako podstawowa implementacja, ale powinno stanowić podstawę dla różnych aplikacji, które wymagają funkcji zwiększania/zmniejszania lub zliczania.

Krok 1: Integralność danych

W przypadku portfela elektronicznego zawsze istnieje obawa, że ktoś może dodać kredyty bez płacenia za nie. Istnieje również obawa, że kredyty na tagu mogą zostać przypadkowo uszkodzone podczas zapisu danych. Dostęp do danych wymaga użycia klucza tagu, dlatego konieczna jest zmiana klucza domyślnego podczas pierwszego inicjowania tagu. Istnieją artykuły w Internecie, które mówią o tym, jak zhakować tag, nawet jeśli nie znasz klucza, ale technika nie jest trywialna. Nie polecałbym używania tych tagów dla twojego konta bankowego, ale są wystarczająco dobre dla wielu mniej ryzykownych aplikacji.

Prawdopodobieństwo uszkodzenia danych jest stosunkowo niewielkie, ale oprogramowanie powinno poradzić sobie przynajmniej z podstawowym przypadkiem. Ten proces składa się z dwóch kroków, a pierwszym krokiem jest proste wykrycie korupcji. W tym projekcie jest to obsługiwane przez przechowywanie zarówno wartości kredytu, jak i uzupełnienia wartości kredytu do jedynki. Pozwala to na proste porównanie wartości. Drugim krokiem jest przechowywanie kopii zapasowej zarówno wartości kredytu, jak i jego uzupełnienia. Pozwala to na operację odzyskiwania, jeśli pierwszy zestaw kredytów zostanie uszkodzony. Jeśli oba zestawy są uszkodzone, oprogramowanie próbuje ponownie zainicjować znacznik, co skutkuje utratą wszystkich kredytów.

Krok 2: Sprzęt

Sprzęt komputerowy
Sprzęt komputerowy

Połączenia sprzętowe pokazano na powyższym schemacie. To ta sama konfiguracja, co w poprzednim poście, z dodatkiem dwóch przełączników i rezystora podciągającego. Jeden przełącznik nie wymaga rezystora podciągającego, ponieważ znajduje się na wejściu PIC, które ma wbudowaną słabą zdolność podciągania. W praktyce oba przełączniki byłyby ukryte, ponieważ służą do dodawania kredytów i inicjalizacji tagu. Przełącznik inicjalizacji jest opcjonalny (aby wykonać ręczne zerowanie kredytu), ponieważ oprogramowanie może samodzielnie wykryć i zainicjować nowy tag. Zworki mogą być używane zamiast przełączników.

Krok 3: Oprogramowanie

Wprowadzono dodatki do pętli głównej w oprogramowaniu, aby umożliwić odczytanie dwóch przełączników i wykrycie stanu wymagającego inicjalizacji tagu. Jak wspomniano w części dotyczącej sprzętu, inicjalizację tagu można nakazać ręcznie za pomocą przełącznika. Oprogramowanie może również nakazać inicjalizację tagu w dwóch innych przypadkach. Po pierwsze, jeśli wykryje nowy znacznik lub sektor danych, a po drugie, jeśli oba zestawy danych kredytowych są uszkodzone.

Uwierzytelnianie tagów wymaga użycia „klucza A” dla docelowego sektora danych. Domyślny klucz dla tagów Mifare Classic 1k to „FF FF FF FF FF FF”, ale należy go zmienić w zależności od aplikacji. Oprogramowanie zapewnia definicje zarówno klucza domyślnego, jak i nowego klucza („Mój_klucz”). Po prostu podłącz dowolne wartości do „My_Key”. Oprogramowanie zawsze próbuje najpierw uwierzytelnić tag za pomocą „My_Key”. Jeśli to się nie powiedzie, wywoływana jest procedura inicjowania znacznika, a do uwierzytelniania używany jest klucz domyślny. Procedura inicjalizacji zmienia klucz na „My_Key” i ustawia kredyty na zero. Jeśli masz tag z kluczem innym niż domyślny i nie wiesz, co to jest, tagu nie można uwierzytelnić. Jeśli tak się stanie, możesz chcieć sprawdzić inne sektory danych za pomocą domyślnego klucza, aby sprawdzić, czy jest on dostępny. Blok zwiastuna, blok danych i blok kopii zapasowej są zdefiniowane na początku listy oprogramowania, dzięki czemu można je łatwo zmienić.

Format danych przechowywanych w znaczniku dla tej aplikacji wykorzystuje tylko liczby dodatnie (brak dopuszczalnych deficytów), a wartości są przechowywane jako cztery bajty spakowanego BCD (Binary Coded Decimal). Pozwala to na zakres kredytów od 0 do 99, 999, 999 (dwie cyfry na bajt). Wartość kredytu i uzupełnienie do jedynki wykorzystują tylko 8 z 16 bajtów w pojedynczym bloku danych, a reszta jest dopełniana zerami. W tym samym bloku danych jest miejsce na kopię zapasową, ale zdecydowałem, że bezpieczniej będzie umieścić kopię zapasową w osobnym bloku danych. Blok kopii zapasowej znajduje się w tym samym sektorze co blok danych, więc oddzielne uwierzytelnianie nie jest wymagane. Aby być jeszcze bezpieczniejszym, możesz rozważyć umieszczenie kopii zapasowej w innym sektorze danych, ale wtedy potrzebny byłby osobny krok uwierzytelniania, aby uzyskać dostęp do tych danych.

Po wykonaniu odczytu kredytów odczytywana jest również wartość uzupełniona, a następnie obie są porównywane ze sobą. W przypadku niezgodności odczytywany i porównywany jest zestaw kopii zapasowej wartości/uzupełnienia. Jeśli są zgodne, zakłada się, że kopia zapasowa jest poprawna i służy do naprawy uszkodzonych danych. Jeśli kopie zapasowe się nie zgadzają, tag zostanie uznany za zły i podjęta zostanie próba jego ponownej inicjalizacji.

Wartości inkrementacji i dekrementacji są zdefiniowane w pobliżu początku listingu i oczekuje się, że będą one znajdować się w spakowanym pliku BCD. Procedury, które skutecznie inkrementują i zmniejszają, robią to na 32-bitowej liczbie. Matematyka jest bardzo prosta, ale wymaga użycia procedur w celu dostosowania wyników dla nośników w każdym spakowanym bajcie BCD i od jednego bajtu do następnego. Odbywa się to za pomocą makr DAA (dodawanie dopasowywania dziesiętnego) i DAS (odejmowanie dopasowywania dziesiętnego). Te makra zapewniają, że każda 4-bitowa cyfra BCD zawsze pozostaje w zakresie 0-9.

Oprócz komunikatów wyświetlanych w poprzednim poście, ta aplikacja zawiera komunikaty dotyczące wielu dodatkowych kroków - szczególnie w przypadku błędów danych i/lub konieczności naprawy lub inicjalizacji znacznika. Kredyty są również wyświetlane przed i po kroku zwiększania/zmniejszania, dzięki czemu można zobaczyć zmiany wartości.

To tyle w tym poście. Sprawdź moje inne projekty elektroniki na: www.boomerrules.wordpress.com

Zalecana: