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.

vorlesen Druckansicht 3 Kommentare lesen
Gesichtssteuerung
Lesezeit: 7 Min.
Von
  • Daniel Bachfeld
Inhaltsverzeichnis
Make Special: ESP32-CAM
Make Special: ESP32-CAM

Die ESP32-CAM ist bei Makern beliebt – kompakt, aber mit leistungsstarkem ESP32-Mikrocontroller, einem videofähigen Kameramodul und einem MicroSD-Karten Slot ausgestattet. Will man aus dem Board das meiste rausholen, lohnt sich ein tieferer Einstieg in die Hardware-Interna und Programmierschnittstellen. Das 80-seitige Make-Special nimmt die Leserinnen und Leser dabei an der Hand und dank des beiliegenden ESP32-CAM-Board samt 2-MP-Kameramodul und Programmier-Adapter kann man sofort mit den ersten Projekten loslegen.

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“.

Kurzinfo
  • 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 neue Partitionstabelle für die ESP32-CAM enthält nun auch einen Eintrag namens fr – für „face recognition“. Darin speichert der neue Sketch die aufgenommenen Bilder.

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.

Dank der neuen Board-Definition bekommt die ESP32-CAM eine neue Partitionstabelle.