|

Budowa rejestratora czasu pracy RFID na ESP32 projekt DIY

Budowa rejestratora czasu pracy RFID na ESP32 projekt DIY

W tym artykule pokażę Ci krok po kroku, jak zbudować prosty rejestrator czasu pracy oparty o technologię RFID. Projekt powstał z myślą o osobach, które chcą zobaczyć praktyczne zastosowanie mikrokontrolera ESP32, czytnika kart zbliżeniowych, zegara czasu rzeczywistego oraz zapisu danych na kartę pamięci. To nie jest rozbudowany system komercyjny z bazą danych i panelem administracyjnym, ale bardzo konkretny, działający projekt demonstracyjny, który świetnie pokazuje, jak w praktyce można wykorzystać RFID do ewidencji wejść i wyjść.

Sercem układu jest płytka ESP32-C3, która komunikuje się z modułem PN532 odpowiedzialnym za odczyt kart RFID i NFC. Dodatkowo w projekcie wykorzystujemy moduł RTC DS3231, dzięki któremu urządzenie zna aktualną datę i godzinę nawet po odłączeniu zasilania, niewielki wyświetlacz OLED SSD1306 do prezentowania komunikatów oraz moduł karty microSD, na której zapisywana jest historia zdarzeń. Całość uzupełnia aktywny buzzer, sygnalizujący poprawny odczyt karty lub próbę użycia nieznanego identyfikatora.

Taki układ może być potraktowany jako projekt edukacyjny, baza do dalszej rozbudowy albo po prostu ciekawy przykład wykorzystania RFID w praktyce. Można go później rozwinąć o obudowę, komunikację WiFi, synchronizację czasu przez Internet czy eksport danych do zewnętrznego systemu. W tej wersji skupimy się jednak na prostym, czytelnym i w pełni lokalnym rozwiązaniu, które zapisuje logi na kartę pamięci i od razu pokazuje użytkownikowi, co się dzieje.

Założenia projektu i jego funkcjonalność

Nasz rejestrator czasu pracy będzie posiadał kilka bardzo praktycznych funkcji. Po przyłożeniu karty do czytnika system odczyta jej UID, porówna go z listą zapisanych pracowników i zdecyduje, czy należy zapisać wejście, czy wyjście. Na wyświetlaczu OLED zobaczymy aktualną godzinę oraz komunikaty o stanie systemu, a buzzer poinformuje dźwiękiem, czy odczyt przebiegł poprawnie. Wszystkie zdarzenia będą zapisywane na kartę microSD w pliku CSV, co pozwoli łatwo odczytać historię obecności na komputerze.

Projekt w obecnej wersji oferuje rozpoznawanie pracowników po UID kart RFID, rejestrację wejść i wyjść, wyliczanie czasu pracy pomiędzy odbiciami, zapis logów na kartę pamięci, prezentację daty i godziny na wyświetlaczu oraz prostą sygnalizację dźwiękową. Dodatkowo w programie zastosowana została blokada wielokrotnego odczytu tej samej karty przez kilka sekund, dzięki czemu przytrzymanie identyfikatora przy czytniku nie powoduje zapisywania wielu identycznych wpisów.

Lista potrzebnych elementów

Do zbudowania projektu będziemy potrzebować kilku prostych i łatwo dostępnych modułów. Poniżej znajduje się komplet elementów wykorzystanych w tej konstrukcji.

ElementOpis
ESP32-C3 SuperMiniGłówny mikrokontroler projektu odpowiedzialny za odczyt kart, obsługę wyświetlacza, komunikację z RTC oraz zapis danych na kartę microSD.
Czytnik RFID PN532 13,56MHz SPI z kartą i brelokiemModuł RFID pracujący po magistrali SPI, służący do odczytu kart i breloków zbliżeniowych.
Wyświetlacz OLED 0,96″ 128x64px I2C niebieskiNiewielki wyświetlacz I2C do prezentacji aktualnej godziny, daty oraz komunikatów systemowych.
Moduł RTC DS3231 + EEPROM 24C32 z baterią CR2032Moduł zegara czasu rzeczywistego zapewniający dokładną datę i godzinę.
Czytnik kart pamięci SD SPIUmożliwia zapis historii zdarzeń na karcie pamięci w formacie CSV.
Buzzer aktywny low triggerSygnalizator dźwiękowy informujący o poprawnym lub błędnym odczycie karty.
Karta pamięci microSD z adapteremNośnik danych do zapisu historii wejść i wyjść.
Płytka stykowa 830 pól biała x2Umożliwia szybkie prototypowanie układu bez lutowania i wygodne połączenie wszystkich modułów.
Przewody połączeniowe MMSłużą do wykonania wszystkich połączeń między modułami.
Przewody połączeniowe FMSłużą do wykonania wszystkich połączeń między modułami.

Przygotowując projekt warto od razu pamiętać o tym, aby karta microSD była sformatowana w systemie FAT32, dzięki czemu moduł bez problemu utworzy plik log.csv i zacznie dopisywać kolejne wpisy. Sam koszyk nie zawiera karty microSD, więc jeżeli masz ją już w domu, spokojnie możesz jej użyć. W przeciwnym razie możesz dokupić ją osobno tutaj (link).

Dla ułatwienia przygotowaliśmy również gotowy koszyk ze wszystkimi potrzebnymi produktami, dzięki czemu możesz w prosty sposób skompletować cały zestaw bez zastanawiania się, czy czegoś nie brakuje.

Podłączenie modułów

Po przygotowaniu wszystkich elementów możemy przejść do ich podłączenia. W projekcie wykorzystujemy dwie popularne magistrale komunikacyjne: SPI oraz I2C.

Magistrala SPI obsługuje czytnik RFID PN532 oraz moduł karty microSD. Oba urządzenia współdzielą linie danych, ale każde z nich posiada osobny pin CS – Chip Select, który pozwala na ich niezależne sterowanie.

Z kolei magistrala I2C wykorzystywana jest przez wyświetlacz OLED oraz zegar czasu rzeczywistego DS3231. Dzięki temu oba moduły możemy podłączyć równolegle do tych samych dwóch pinów.

Poniżej znajdziesz dokładną rozpiskę połączeń, którą możesz bezpośrednio wykorzystać podczas składania układu.

Połączenia tabela:

ModułPin modułuESP32-C3
PN532 (SPI)VCC3,3 V
GNDGND
SCKGPIO6
MISOGPIO5
MOSIGPIO4
SSGPIO7
microSD (SPI)VCC3,3 V
GNDGND
SCKGPIO6
MISOGPIO5
MOSIGPIO4
CSGPIO10
OLED SSD1306VCC3,3 V
GNDGND
SDAGPIO0
SCKGPIO1
DS3231VCC3,3 V
GNDGND
SDAGPIO0
SCLGPIO1
BuzzerVCC3,3 V
I/OGPIO3
GNDGND

Kilka ważnych uwag

W przypadku modułu PN532 konieczne jest ustawienie odpowiedniego trybu pracy. W tym projekcie korzystamy z interfejsu SPI, dlatego przełączniki na module muszą być ustawione zgodnie z opisem dla trybu SPI znajdującym się na płytce. Bez tego czytnik nie będzie poprawnie działał.

Moduł karty microSD zazwyczaj posiada wbudowany stabilizator napięcia oraz konwertery poziomów logicznych, dlatego można go zasilać z 5 V. Warto jednak upewnić się, jaki dokładnie model posiadamy.

Wyświetlacz OLED oraz zegar DS3231 pracują na tej samej magistrali I2C, więc podłączamy je równolegle do tych samych pinów SDA i SCL.

pobranie gotowego kodu programu

Po przygotowaniu modułów oraz ich poprawnym podłączeniu możemy przejść do pobrania gotowego kodu programu. Przygotowaliśmy kompletny szkic Arduino.

Przygotowanie środowiska Arduino IDE

Program dla tego projektu został przygotowany w Arduino IDE. Przed rozpoczęciem pracy należy zainstalować obsługę płytek ESP32, a następnie doinstalować niezbędne biblioteki. W projekcie wykorzystujemy biblioteki Wire, SPI, SD, Adafruit GFX, Adafruit SSD1306, RTClib oraz Adafruit PN532.

Po zainstalowaniu bibliotek i wybraniu odpowiedniego modelu płytki ESP32C3 Dev Module

można wgrać program do mikrokontrolera. Jeżeli moduł DS3231 nie ma jeszcze ustawionej poprawnej godziny, w kodzie należy jednorazowo odkomentować linię odpowiedzialną za ustawienie czasu z chwili kompilacji, wgrać program, a następnie ponownie tę linię zakomentować. Dzięki temu zegar zachowa poprawną datę i godzinę również po restarcie układu.

Jak działa rejestracja czasu pracy z RFID

Zasada działania całego układu jest bardzo prosta, ale jednocześnie bardzo praktyczna. W stanie spoczynku urządzenie wyświetla na ekranie aktualną godzinę, datę oraz komunikat informujący o gotowości do odczytu karty. Gdy użytkownik przyłoży kartę RFID do czytnika PN532, mikrokontroler odczytuje jej UID i sprawdza, czy znajduje się on na liście zdefiniowanych pracowników.

Jeżeli karta jest znana, system sprawdza, czy dana osoba jest aktualnie oznaczona jako obecna w pracy. Jeżeli nie, nowe odbicie zostaje potraktowane jako wejście i zapisywana jest godzina rozpoczęcia pracy.

Jeżeli natomiast pracownik był już wcześniej zarejestrowany jako obecny, kolejne odbicie oznacza wyjście. W tym momencie program oblicza czas pracy jako różnicę pomiędzy bieżącą godziną a zapamiętaną godziną wejścia i zapisuje gotowy rekord na kartę pamięci.

Jeżeli system wykryje kartę, która nie znajduje się na liście pracowników, na ekranie pojawi się komunikat o nieznanej karcie, a buzzer wyda dłuższy sygnał błędu. Takie zdarzenie również jest zapisane w logu, co pozwala później sprawdzić próby użycia nieautoryzowanych kart.

Wszystkie dane trafiają do pliku CSV, dzięki czemu po wyjęciu karty microSD i podłączeniu jej do komputera możemy od razu zobaczyć historię zapisów. Taki plik wygląda bardzo czytelnie i zawierać datę, godzinę, nazwę pracownika, UID karty, typ zdarzenia oraz wyliczony czas pracy w minutach.

Dodawanie nowego pracownika

Aby system rozpoznawał karty RFID, musimy przypisać ich UID do konkretnych osób. Robimy to bezpośrednio w kodzie, w tablicy employees[].

Każdy wpis zawiera:

  • UID karty np. "53 88 1D 07"
  • nazwę pracownika
  • stan początkowy false
  • czas wejścia wartość startowa

Aby dodać nowego pracownika, wystarczy dopisać kolejną linię:

{„AA BB CC DD”, „Nowy pracownik”, false, DateTime(2000, 1, 1, 0, 0, 0)},

UID najlepiej najpierw odczytać w monitorze portu szeregowego lub z wyświetlacza, a następnie wkleić go do kodu dokładnie w tej samej formie.

Logika działania programu

Program działa w sposób bardzo czytelny. Po uruchomieniu inicjalizowane są wszystkie moduły: wyświetlacz OLED, zegar DS3231, karta microSD oraz czytnik PN532. Jeżeli karta pamięci jest obecna i poprawnie wykryta, program sprawdza, czy na nośniku istnieje plik log.csv. Jeśli nie, tworzy go i zapisuje nagłówek kolumn.

W pętli głównej system stale odświeża ekran główny z aktualną godziną i oczekuje na zbliżenie karty RFID. Po wykryciu identyfikatora program zamienia UID na czytelny tekst, sprawdza, czy nie jest to przypadkiem to samo odbicie, które zostało odczytane chwilę wcześniej, a następnie przechodzi do obsługi znanej lub nieznanej karty.

Dla znanej karty zapisywane jest wejście lub wyjście, na ekranie pojawia się informacja o pracowniku i rodzaju zdarzenia, a buzzer wydaje krótki sygnał potwierdzający. Dla nieznanej karty wyświetlany jest komunikat o błędzie, a sygnał dźwiękowy trwa dłużej. Dzięki temu nawet bez patrzenia na ekran wiadomo, czy system zaakceptował kartę.

Format zapisywanych danych

Jedną z największych zalet tego projektu jest lokalny zapis wszystkich zdarzeń na karcie microSD. Program tworzy plik log.csv, w którym każdy wpis zajmuje osobną linię. Dzięki temu historia obecności może zostać później otwarta w notatniku, arkuszu kalkulacyjnym lub dowolnym programie do analizy danych.

Przykładowy wpis wygląda następująco:

2026-04-16;07:35:12;Mateusz;DE AD BE EF;WEJSCIE;

i przy wyjściu:

2026-04-16;15:42:03;Mateusz;DE AD BE EF;WYJSCIE;487

Taki format jest prosty, czytelny i bardzo wygodny. W każdej chwili można go dalej rozbudować, na przykład o identyfikator stanowiska, numer urządzenia lub dodatkowe informacje diagnostyczne.

Możliwości rozbudowy projektu

Choć projekt w obecnej formie jest w pełni funkcjonalny, daje też sporo możliwości dalszego rozwoju. Nic nie stoi na przeszkodzie, aby w przyszłości dodać synchronizację czasu przez NTP, wysyłanie logów po WiFi do zewnętrznego serwera, wyświetlanie nazw pracowników z większą ilością informacji czy budowę własnej obudowy drukowanej w 3D.

Można także dodać funkcję eksportu danych przez port szeregowy, wprowadzić menu konfiguracyjne na wyświetlaczu lub rozbudować system o dodatkową autoryzację. Już teraz jednak projekt bardzo dobrze pokazuje praktyczne zastosowanie RFID, komunikacji SPI i I2C oraz lokalnego zapisu danych w systemie opartym o mikrokontroler ESP32.

Podsumowanie

Rejestracja czasu pracy z RFID to świetny przykład projektu, który łączy prostotę wykonania z bardzo konkretnym zastosowaniem. W jednej konstrukcji mamy odczyt kart zbliżeniowych, dokładny pomiar czasu dzięki RTC, prezentację informacji na wyświetlaczu oraz trwały zapis danych na karcie pamięci. To sprawia, że projekt jest nie tylko ciekawy edukacyjnie, ale również bardzo praktyczny.

Jeżeli szukasz pomysłu na projekt z RFID, który pokaże realne wykorzystanie elektroniki w codziennym zastosowaniu, ten układ będzie bardzo dobrym wyborem. Bez konieczności budowania skomplikowanej infrastruktury można w prosty sposób stworzyć lokalny system ewidencji wejść i wyjść, który działa samodzielnie i zapisuje historię zdarzeń do późniejszego odczytu.


Prezentowaną w artykule elektronikę znajdziesz oczywiście w naszym sklepie 👉 sklep.msalamon.pl 👈Zapraszamy również na nasze social media, gdzie na bieżąco informujemy o nowych produktach oraz o najciekawszych promocjach 😎👇


Podobne wpisy

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *