73 lines
3.2 KiB
Markdown
73 lines
3.2 KiB
Markdown
# 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ń.
|
|
|
|
## 🏗 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:
|
|
|
|
```sql
|
|
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. |