Bezprzewodowy rejestrator czasu pracy


Tomasz Bartuś



2020-01-30
Bezprzewodowy rejestrator czasu pracy

Wstęp

Przy zatrudnianiu osób "na godziny" często zachodzi problem kontroli czasu pracy. Dawniej po prostu robiło się notatki czasów przyjścia do pracy i jej zakończenia. Taki sposób rozliczania pracowników posiada jednak podstawową wadę. Ktoś na jakiejś podstawie musi te wpisy weryfikować. Chciałbym w tym odcinku przedstawić elektroniczny system kontroli czasu pracy, który jest pozbawiony tego mankamentu. W warunkach domowych można go wykorzystać do rozliczeń płatności np. za opiekę nad dzieckiem czy osobą w podeszłym wieku. Przed zaprojektowaniem systemu postawiono kilka założeń wstępnych:

  1. układ powinien posiadać autonomiczne zasilanie,
  2. powinien rejestrować daty i czasy rozpoczęcia oraz zakończenia pracy,
  3. powinien umożliwiać rejestrację tych zdarzeń w celu dalszej obróbki w arkuszach kalkulacyjnych,
  4. powinien umożliwiać prostą i wygodną obsługę przez dowolną liczbę pracowników,
  5. układ rejestrujący czasy przyjścia i zakończenia pracy powinien być galwanicznie odseparowany od modułu rejestrującego te zdarzenia,
  6. powinien umożliwiac pracę bez przesyłania danych za pośrednictwem internetu bądź sieci komórkowych.

Realizację takiego układu umożliwia wykorzystanie modułów: zegara czasu rzeczywistego, radiowego przesyłania danych oraz rejestratora RFID z kartami elektronicznymi i brelokami.

Bezprzewodowy rejestrator czasu pracy
Fig. 1. Bezprzewodowy rejestrator czasu pracy

Rejestrator czasu pracy jaki wykonamy będzie składał się z dwóch autonomicznych układów: logera-nadajnika oraz odbiornika-rejestratora (Fig. 1). Oba układy będą oparte na mikrokontrolerach Arduino (Nano oraz Uno) i będą zasilane przez ogniwa litowo-jonowe 18650. W związku z tym, że ich napięcie wynosi około 4,2V, do zasilania obu układów zastosujemy dwie identyczne przetwornice impulsowe step-up podwyższające napięcie do 5V (Fig. 2). Oba układy będą także zaopatrzone w moduły ładowania ogniw Li-jon 18650 TP4056 (Fig. 3).

Moduł przetwornicy impulsowej 2-5V Step-up 5V 2A
Fig. 2. Moduł przetwornicy impulsowej 2-5V Step-up 5V 2A
Moduł ładowania ogniw Li-jon 18650 TP4056
Fig. 3. Moduł ładowania ogniw Li-jon 18650 TP4056

1. Czytnik RFID z nadajnikiem

Zadaniem układu loggera z nadajnikiem będzie rejestrowanie migracji osób. Każda osoba wchodząc lub wychodząc z pomieszczenia będzie logowała się do systemu za pomocą jednego urządzenia RFID. Rejestrator odnotuje czas oraz status (wejście/wyjście) każdej z nich. Realizacja takiego zadania wymaga uwzględnienia możliwych awarii systemu np. spowodawanych zanikiem zasilania. Załóżmy, że osoba wchodząca rejestruje swoje wejście za pomocą przyłożenia karty zbliżeniowej PICC. System w odpowiednich zmiennych zapamięta czas i status tego zdarzenia. Jeśli przed wyjściem tej samej osoby z pomieszczenia nastąpi awaria, zmienne zostaną zresetowane i system przy wyjściu tej osoby zarejestruje niepoprawny status wejścia. Widać więc, że obok rejestracji UID osoby istnieje konieczność rozróżnienia konkretnego stanu wejścia lub wyjścia. Można to zrealizować na dwa sposoby. Pierwszym z nich jest rejestracja aktualnego statusu każdej z osób w pamięci EEPROM mikrokontrolera. Przy każdym zdarzeniu, dla każdego UID, układ może trwale zapisywać statusy w układzie scalonym. Istnieją dwie słabe strony takiego rozwiązania. Po pierwsze liczba możliwych cykli zapisu / odczytu do i z pamięci EEPROM nie jest nieograniczona. Według danych producentów możliwe jest wykonanie około 100000 takich cykli. Druga wada tego rozwiązania, podobnie jak poprzednio, jest związana z możliwością rejestracji nieprawdziwego statusu osób. Jeśli pomiędzy dwoma zdarzeniami nastąpiła awaria systemu, do pamięci EEPROM może być zapisywany niepoprawny status kolejnego zdarzenia. W realizowanym układzie proponuję inne rozwiązanie. Układ zostanie wyposażony w dwa przyciski. Za pomocą, jednego z nich każda rejestrowana osoba będzie samodzielnie deklarowała status aktualnego zdarzenia. Drugi przycisk wykorzystamy do zatwierdzenia wprowadzanych danych.

Części

  1. platforma Arduino Nano,
  2. koszyczek na ogniwo 1 × 18650,
  3. moduł przetwornicy impulsowej 2-5V Step-up 5V 2A (Fig. 2),
  4. moduł ładowania ogniw Li-jon 18650 TP4056 (Fig. 3),
  5. moduł rejestratora RFID RC522 z kartami zbliżeniowymi i brelokami (Fig. 4),
  6. wyświetlacz znakowy LCD 20 × 4,
  7. moduł zegara czasu rzeczywistego DS3231 (Fig. 5),
  8. moduły komunikacji radiowej FS100A (Fig. 6),
  9. buzzer z generatorem 5V, 12mm,
  10. rezystor 100Ω,
  11. mikrowłączniki (2 szt.),
  12. płytka prototypowa,
  13. przewody/mostki.
Moduł rejestratora RFID RC522 z kartą zbliżeniową i brelokiem
Fig. 4. Moduł rejestratora RFID RC522 z kartą zbliżeniową i brelokiem
Moduł zegara czasu rzeczywistego DS3231
Fig. 5. Moduł zegara czasu rzeczywistego DS3231

Moduły komunikacji radiowej FS100A
Fig. 6. Moduły komunikacji radiowej FS100A

Projekt układu czytnika kart zbliżeniowej PICC z nadajnikiem oprzemy na projekcie rejestratora RFID RC522. Modyfikacje układu będą obejmowały: zmianę wyświetlacza LCD z 16 × 2 na 20 × 4, dodanie modułu zegara czasu rzeczywistego (Fig. 5), dodanie buzzera oraz dodanie dwóch przycisków sterujących. Zmiana modułu wyświetlacza umożliwi stałe wyświetlanie czasu oraz daty. Moduł zegara czasu rzeczywisytego, podobnie jak wyświetlacz LCD, wykorzystuje magistralę I2C. Sygnały SDA oraz SCL podpinamy więc odpowiednio do pinów A4 i A5 układu arduino. Buzzer poprzez rezystor 100Ω ograniczający prąd podpinamy do pinu cyfrowego D4. Przyciski podpinamy bezpośrednio do pinów cyfrowych D2 i D3 mikrokontrolera. Zastosujemy podciąganie programowe pullup. Po zarejestrowaniu zdarzenia układ będzie miał zadanie bezprzewodowo przesłać niezbędne informacje (czas zdarzenia, identyfikator osoby oraz status zdarzenia) do układu odbiornika z rejestratorem. Wykorzystamy do tego nadajnik komunikacji radiowej FS100A (Fig. 6).

Schemat

Schemat montażowy czytnika RFID z nadajnikiem
Fig. 7. Schemat montażowy czytnika RFID z nadajnikiem

Szkic

2. Odbiornik z rejestratorem

Odbiornik-rejestrator składa się z jednego urządzenia wejściowego - modułu odbiornika RFID RC522 (Fig. 5) . oraz jednego urządzenia wyjściowego - czytnika kard SD (Fig. 8) .

Części

  1. platforma Arduino Nano,
  2. koszyczek na ogniwo 1 × 18650,
  3. moduł przetwornicy impulsowej 2-5V Step-up 5V 2A (Fig. 2),
  4. moduł ładowania ogniw Li-jon 18650 TP4056 (Fig. 3),
  5. moduły komunikacji radiowej FS100A (Fig. 6),
  6. moduł czytnika kard SD (Fig. 8),
  7. płytka prototypowa,
  8. przewody/mostki.

Moduł czytnika kart SD
Fig. 8. Moduł czytnika kart SD

Schemat

Schemat montażowy układu odbiornika z rejestratorem
Fig. 9. Schemat montażowy układu odbiornika z rejestratorem

Działanie

Układ czytnik RFID z nadajnikiem cały czas nasłuchuje pojawienia się karty zbliżeniowej lub breloka zbliżeniowego. W tym czasie na wyświetlaczu LCD wyświetlany jest monit oczekiwania wraz z aktualną datą i godziną (Fig. 10; zob. kod case 1).

Ekran pierwszy
Fig. 10. Ekran oczekiwania na pojawienie się urządzenia RFID

Po zbliżeniu urządzenia RFID do rejestratora RC522 rejestrowany jest dokładny czas zdarzenia. Na wyświetlaczu pojawia się komunikat o statusie zdarzenia (Event: input) oraz komunikat o statusie rejestracji zdarzenia (Confirmation: none) (Fig. 11; zob. kod case 2).

Ekran drugi
Fig. 11. Ekran wyświetlany w momencie wykrycia urządzenia RFID

Program przez 15 sekund oczekuje na reakcję użytkownika. Należy wtedy wybrać za pomocą przycisku "Input / Output" odpowiedni rodzaj zdarzenia, t.j. wejście (input) lub wyjście (output) oraz potwierdzić zapis zdarzenia klawiszem "Zarejestruj". W zależności od tego, które zdarzenie zostaje wybrane (wejście czy wyjście), generowany jest odpowiedni charakterystyczny sygnał dźwiękowy. Gdy zostanie naciśnięty przycisk "Zarejestruj", do transmitera przekazywany jest komunikat w formacie użytkownik#czas_zdarzebnia#status_zdarzenia. Na wyświetlaczu w tym czasie pojawia się komunikat "Confirmation: send" (Fig. 12; zob. kod case 2).

Ekran drugi w trakcie wysyłania komunikatu do odbiornika-rejestratora
Fig. 12. Ekran potwierdzający wysłanie raportu do urządzenia odbiornika-rejestratora

Po wysłaniu komunikatu do rządzenia odbiornika-rejestratora na wyświetlaczu LCD czytnika-nadajnika pojawia się komunikat potwierdzający rejestrację zdarzenia (Fig. 13; zob. kod case 3).

Ekran trzeci
Fig. 13. Ekran potwierdzający rejestrację zdarzenia

Jeżeli odbiornik odbierze przesłany tekst, po skonwertowaniu go z kodu szesnastkowego na znaki ASCII zapisuje wiersz komunikatu na karcie SD. Komunikaty zgromadzone na karcie można przetwarzać w arkuszach kalkulacyjnych w celu generowania raportów obliczających łączne czasy pracy.

Film




Wykorzystane materiały

Elektroprzewodnik, 2014. Przyciski | #25 [Arduino].
Elektro Maras, 2014. Jak przesyłać dane z użyciem nadajnika i odbiornika RF?
ELECTRONOOBS, 2018. Arduino RFID door lock
Gałaś P., 2015. Kurs Arduino #10: Obsługa modułów RF 433MHz i 315MHz
saiyojeff, 2014. How to pass a function from the RFID-RC522 into a variable then be sent into either serial or ethernet?
 
 

Doktorat

Spis treści
Rozdzialy
Abstrakt [pl]
Abstract [eng]