Files
NFC-University-Gate-Access-…/Readme.md
2026-01-14 10:22:05 +01:00

4.1 KiB

NFC University Gate Access System 🎓🚗

System kontroli dostępu do bramy lub drzwi na uczelni, wykorzystujący Elektroniczną Legitymację Studencką (ELS) oraz komunikację online z bazą danych MySQL.

📝 Opis projektu

Projekt umożliwia autoryzację wjazdu na teren uczelni za pomocą standardowych legitymacji studenckich (standard NFC/RFID 13.56MHz). System nie przechowuje listy uprawnionych osób lokalnie na urządzeniu, lecz każdorazowo odpytuje serwer bazy danych, co pozwala na natychmiastowe nadawanie lub odbieranie uprawnień.

Funkcje systemu

  • Autoryzacja Online: Weryfikacja kart ELS w czasie rzeczywistym poprzez API PHP i bazę danych MySQL.
  • Tryb Hybrydowy (Offline Cache): System zapamiętuje 10 ostatnio autoryzowanych kart w pamięci nieulotnej (NVS). Brama otworzy się nawet w przypadku awarii sieci WiFi lub serwera.
  • Zarządzanie Czasowe: Możliwość blokowania dostępu po wygaśnięciu ważności legitymacji bezpośrednio w bazie danych.
  • Bezpieczeństwo (API Key): Każde zapytanie z ESP32 do serwera jest autoryzowane unikalnym kluczem, co zapobiega nieautoryzowanym próbom otwarcia bramy.
  • Zapis Logów: Serwer automatycznie rejestruje datę i godzinę każdego użycia karty (pole last_entry w bazie).
  • Niskie Opóźnienie: Dzięki optymalizacji kodu, czas od zbliżenia karty do reakcji przekaźnika wynosi zazwyczaj poniżej 500ms.

🏗 Architektura systemu

  1. ESP32: Odczytuje unikalny numer (UID) karty zbliżeniowej.
  2. API (PHP): Skrypt pośredniczący, który odbiera UID od ESP32 i komunikuje się z bazą danych.
  3. Baza Danych (MySQL): Przechowuje informacje o studentach, ich numerach UID oraz ważności uprawnień.
  4. Przekaźnik: Fizycznie zwiera styki w sterowniku bramy po otrzymaniu pozytywnej weryfikacji.

🛠 Wymagania sprzętowe

  • Mikrokontroler: ESP32 (lub ESP8266 z poprawkami w kodzie).
  • Czytnik NFC: MFRC522 (RC522) lub PN532.
  • Moduł przekaźnika: 1-kanałowy (Low/High level trigger).
  • Zasilanie: 5V/12V (zależnie od sterownika bramy).
  • Pozostałe: Diody LED (status), rezystory, przewody połączeniowe.

💻 Struktura bazy danych

Wykonaj poniższe zapytanie SQL, aby przygotować bazę danych:

CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
card_uid VARCHAR(20) UNIQUE NOT NULL,
full_name VARCHAR(100),
student_id_number VARCHAR(15),
is_active BOOLEAN DEFAULT 1,
expiry_date DATE,
last_entry TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

🚀 Instalacja i Konfiguracja

  1. Serwer (Backend) Skopiuj pliki z folderu /server na swój hosting/serwer. Skonfiguruj połączenie z bazą danych w pliku db_config.php. Dodaj testowy rekord (UID swojej legitymacji) do tabeli students.
  2. Urządzenie (Firmware) Otwórz projekt w Arduino IDE lub PlatformIO. Zainstaluj biblioteki: MFRC522 oraz HTTPClient. W pliku głównym uzupełnij dane: SSID i Password Twojej sieci WiFi. API_URL (adres do Twojego skryptu PHP). Wgraj program na ESP32.

🔌 Schemat połączeń (Pinout)

Poniższa tabela przedstawia połączenie czytnika RFID-RC522 z mikrokontrolerem ESP32:

Moduł RC522 ESP32 (GPIO) Opis
VCC 3.3V Zasilanie (UWAGA: Nie podłączać pod 5V!)
RST GPIO 22 Reset
GND GND Masa
MISO GPIO 19 Master In Slave Out (SPI)
MOSI GPIO 23 Master Out Slave In (SPI)
SCK GPIO 18 Serial Clock (SPI)
SDA (SS) GPIO 5 Chip Select (SPI)

Elementy dodatkowe:

  • Przekaźnik (Relay): Sygnał sterujący podłączony do GPIO 2.
  • Dioda LED (Opcjonalnie): GPIO 4 (sygnalizacja otwarcia).

🔒 Bezpieczeństwo

HTTPS: Zaleca się hostowanie skryptu API na serwerze z certyfikatem SSL. API KEY: Warto dodać nagłówek autoryzacji w zapytaniach HTTP, aby uniemożliwić ręczne wywoływanie skryptu z przeglądarki. Fail-safe: System w przypadku braku połączenia z siecią pozostaje w trybie zamkniętym.

📄 Licencja

Projekt udostępniony na licencji MIT. Możesz go dowolnie modyfikować na potrzeby własnych projektów edukacyjnych.