Dieses Projekt implementiert ein RFID-Zugangskontrollsystem auf Basis eines ESP32-Boards. Es ermöglicht das Scannen von RFID-Tags und überprüft, ob diese in einer gespeicherten Liste von autorisierten Tags enthalten sind. Wenn ein autorisierter Tag erkannt wird, wird der Zugang gewährt oder verweigert.
- ESP32-Board: Das Haupt-Mikrocontroller-Board, das die Logik des Systems steuert.
- RFID-Modul (Adafruit PN532): Ein NFC/RFID-Modul, das zum Scannen und Lesen von RFID-Tags verwendet wird.
- SIM7000 Modem: Ein GSM/LTE-Modem für die Kommunikation mit einem entfernten Server zur Aktualisierung der RFID-Liste.
-
Diese können in der
include/Config.hDatei angepasst werden. -
Modem Pins:
PIN_TX: 27PIN_RX: 26PWR_PIN: 4POWER_PIN: 25 (Notwendig für das T-PCIE-Board)
-
NFC Modul Pins:
NCF_SDA: 21NCF_SCL: 22NFC_MISO: 18NFC_MOSI: 19NFC_SCLK: 23NFC_SS: 5
-
LED Pins:
LED_PIN: 12LED_COUNT: 3
-
Schlüssel Pins:
OPEN_KEY: 15CLOSE_KEY: 14An diese Pins werden nach dem Lesen eines RFID-Tags Signale gesendet, um den Zugang zu gewähren oder zu verweigern.
Die folgenden Bibliotheken werden verwendet und sind in der platformio.ini Datei definiert:
TinyGSMArduinoHttpClientArduinoJson- Um das Programm einfach zu testen, siehe Website ArduinoJson Assistant
Adafruit PN532Adafruit NeoPixel
- Hardware verbinden: Verbinden Sie das ESP32-Board mit dem RFID-Modul und dem SIM7000-Modem gemäß der oben angegebenen Pinbelegung.
- Software einrichten: Klonen Sie das Repository und öffnen Sie es in Visual Studio Code mit der PlatformIO-Erweiterung.
- Konfiguration anpassen: Bearbeiten Sie die
include/Config.hDatei, um die Serverinformationen und andere Konfigurationen anzupassen. - Server einrichten: Richten Sie einen Server ein, der die RFID-Liste hostet und die Liste über eine HTTPS-Schnittstelle aktualisieren kann.
- Projekt kompilieren und hochladen: Kompilieren Sie das Projekt und laden Sie es auf das ESP32-Board hoch.
- Weiß: Das ESP32-Board wurde gerade gestartet und wird initialisiert.
- Lila: Es wird nach Firmware-Updates gesucht und diese werden ggf. installiert.
- Orange: Die Zugangskarten werden aktualisiert.
- Blau: Logs werden auf den Server hochgeladen.
- Es wurde ein zweiter timer für den Hardware-Watchdog hinzugefügt welcher bei dem OverTheAir (OTA) Update aktiv wird. Somit kann der Download auch mal länger als die Zeit für den normalen Timer dauern.
- Sobald der Firmwarecheck feststellt das ein Update nötig ist wird das Intervall auf
HW_WATCHDOG_OTA_UPDATE_TIMEOUT= 3600 ms (1 Stunde) gesetzt. - Unanhängig davon ob das Update erfogreich war oder nicht wird der Watchdogtimer anschießend wieder auf
HW_WATCHDOG_DEFAULT_TIMEOUTgesetzt.
- Sobald der Firmwarecheck feststellt das ein Update nötig ist wird das Intervall auf
- Ein Hardware-Watchdog wurde aktiviert, um den Arduino bei unerwartetem Verhalten automatisch neu zu starten.
- Der Arduino setzt den Watchdog regelmäßig alle
HW_WATCHDOG_RESET_DELAY_MS= 100ms zurück. - Der tatsächliche Timeout liegt bei
HW_WATCHDOG_DEFAULT_TIMEOUT= 300s (5min) – wird der Watchdog innerhalb dieser Zeit nicht zurückgesetzt, erfolgt ein automatischer Reset
- Der Arduino setzt den Watchdog regelmäßig alle
- Uhrzeit für Reboot geändert auf 03:30 Uhr
- Pins auf neues Shield angepasst
- modem delay reduziert
- Falls der interne Speicher beim Hochfahren nicht benutzt werden kann wird dieser formatiert
- Es wird sichergestellt, dass der Firmware-Update-Prozess korrekt beendet wird, wenn alle Bytes gelesen wurden
- Überarbeitung der Erstellung des
HTTP-Client-Objekts. - Anpassung der NFC-Lese-Funktionen: Diese verwenden jetzt
String-Objekte anstelle vonchar-Arrays.
- In der
Config.h-Datei kann die Unterstützung für dasT-PCIE-Board mit#define TINY_GSM_T_PCIEaktiviert werden. - Möglichkeit, das
Adafruit PN532über I2C zu betreiben:- Verwenden Sie
#define NFC_I2C,#define NFC_SDA,#define NFC_SCL.
- Verwenden Sie
- Die Einstellung zum Verbinden mit dem Server wurde von
Config.hentfernt. Nun muss beim erste initialiserung des ESP32 folgende Zeichenkette in Serial Monitor eingegeben werden:apn="";gprsUser="";gprsPass="";GSM_PIN="";server="";port=;username="";password="";
- Wichtige Prozesse (z. B. das Auf- und Zusperren des Autos oder der Neustart des ESP32) werden in einer Log-Datei gespeichert und einmal täglich auf den Server hochgeladen.
- Eine neue Firmware-Version kann vom Server heruntergeladen und installiert werden.
- Über die Mac-Adresse wird die zugehörige Firmware-Version ermittelt.
- Neue Farben für die LED-Steuerung wurden hinzugefügt.
- Das ESP32 wird zur definierten Uhrzeit
targetTimeToRestartESP32neu gestartet, um die RFID-Liste zu aktualisieren und neue Firmware-Versionen zu installieren.
- Fix Pin-Modus für
OPEN_KEYundCLOSE_KEY
- Pinbelegung für NFC-Modul
- Fehler behoben, bei der Abfrage der RFID-Liste vom Server war die Antwort manchmal leer.
- Aktuelle Firmware-Version wird jetzt in
Intern.hdefiniert. - Nach auf und zu Sperren werden an die definierten Pins (
OPEN_KEYundCLOSE_KEY) Signale gesendet.
Adafruit NeoPixelBibliothek und Funktionen für die LED-Steuerung.- Nach dem Scannen eines RFID-Tags wird die LED grün oder rot beleuchtet.