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_entryw bazie). - Niskie Opóźnienie: Dzięki optymalizacji kodu, czas od zbliżenia karty do reakcji przekaźnika wynosi zazwyczaj poniżej 500ms.
🏗 Architektura systemu
- ESP32: Odczytuje unikalny numer (UID) karty zbliżeniowej.
- API (PHP): Skrypt pośredniczący, który odbiera UID od ESP32 i komunikuje się z bazą danych.
- Baza Danych (MySQL): Przechowuje informacje o studentach, ich numerach UID oraz ważności uprawnień.
- 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
- 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.
- 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.