Per Gesichtserkennung einen GPIO-Pin steuern
Erkennt die ESP32-CAM ein Gesicht, lassen sich weitere Aktionen auf dem Mikrocontroller starten. Per GPIO kann man ein Relais steuern, um Türöffner zu bedienen.
- Daniel Bachfeld
Im Artikel „WLAN-Cam für 5 Euro" haben wir bereits gezeigt, wie man den offiziellen Beispiel-Sketch „CameraWebServer“ für die Arduino IDE für das eigene WLAN anpasst und wie die Gesichtserkennung arbeitet. Zwar funktioniert das Antrainieren von bestimmten Gesichtern bereits mit diesem Sketch, allerdings gehen die gemerkten Gesichter beim Ausschalten verloren. Zudem kann man mit dem Sketch zunächst nichts steuern und nicht immer will man das Videobild per WLAN irgendwohin streamen. Unser Projekt soll ohne WLAN funktionieren, aber bei einem erkannten Gesicht einen GPIO-Pin steuern und ein daran angeschlossenes Relais schalten. Daran kann man weitere Verbraucher anschließen. Eine Anwendung wäre beispielsweise ein Türöffner, eine Entriegelung oder eine Steuerung im Smart Home für die Beleuchtung.
Für das permanente Speichern der antrainierten Gesichter muss man den Sketch eigentlich nur um drei Zeilen erweitern. Unpraktischerweise will die dem Sketch zugrunde liegende Gesichtserkennungssoftware die Daten jedoch nicht in der standardmäßig für solche Zwecke gedachten Datenpartition im Flash-Speicher des Boards ablegen. Vielmehr erwartet die Software eine spezielle Partition mit dem Namen fr. Eine Erklärung zu den normalen Partitionen des ESP32 finden Sie weiter unten im Kasten „Partitionen“.
- ESP32-Speicher partitionieren
- Bilder speichern
- GPIOs der ESP32-CAM steuern
Checkliste
- Zeitaufwand: 1–2 Stunden
- Kosten: 20–30 Euro
- Programmieren: Programmieren der Arduino IDE, Umgang mit Github
Material
- ESP32-CAM (AI Thinker)
- USB-zu-Seriell-Konverter
- Jumperkabel female/female
- SaintSmart 4 Relay Module
- Stromversorgung
Die neue Aufteilung des Speichers soll wie im folgenden Bild aussehen.
Die dazu passende CSV-Datei stellen wir im Github-Repository dieses Projekts zum Download bereit. Die Datei müssen Sie im Ordner C:\Users\Benutzername\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\tools\partitions Ihres Windows-PCs speichern – wobei Sie Benutzername durch Ihren eigenen ersetzen. Nun müssen Sie die neue Partitionstabelle noch in die Arduino IDE integrieren. Die bereits verfügbaren Partitionstabellen sind mit allen möglichen ESP32-Boards in der Datei boards.txt gekoppelt, die im Ordner C:\Users\Benutzername\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\ liegt.
Mit einem Texteditor öffnet man die Datei und sucht nach den Definitionen für das verwendete AI Thinker Board (esp32cam.name=AI Thinker ESP32-CAM). Am Ende des Abschnitts für das Board (also vor der Hash-Reihe) fügt man die Zeilen wie im folgenden Listing zu sehen ein.
esp32cam.menu.PartitionScheme.partition=Face Recognition (2621440 bytes with OTA)
esp32cam.menu.PartitionScheme.partition.build.partitions=make_partitions
esp32cam.menu.PartitionScheme.partition.upload.maximum_size=2621440
Keine Sorge, für Ungeübte haben wir die angepasste Boards-Datei im Github-Repo hinterlegt. Speichern Sie die Datei und starten Sie gegebenenfalls die Arduino IDE neu. Nun sollte unter dem Menüpunkt Werkzeuge beim ausgewählten Board „AI Thinker“ das neue Partitionsschema zu sehen sein.