zurück zum Artikel

Der Türhüter: Cthulhu-Statue mit ESP32-Herz erkennt Gesichter

Carsten Wartmann
Der Türhüter: Cthulhu-Statue mit ESP32-Herz erkennt Gesichter

Das Mythos-Wesen Cthulhu als Türwächter: Rotglühende Augen funkeln unbekannte Personen vor der Kamera an. Leuchten sie hingegen blau, hat der eingebaute ESP32 ein bekanntes Gesicht auf dem Live-Bild der versteckten Kamera erspäht.

(Bild: Carsten Wartmann)

Die ESP32-CAM für rund fünf Euro streamt Videos übers Netz, erkennt Gesichter wieder und lädt zu Experimenten ein – hier tarnen wir sie als mythisches Alien.

Wer wäre besser als Wache oder Toröffner geeignet als ein allwissendes, unsterbliches und gottgleiches Alien? Nun, die meisten werden so ein Wesen nicht verpflichten können, aber analog zu Türklopfern und Wasserspeiern an Kathedralen können wir ja wenigstens eine Statue solch einer Kreatur aus dem Cthulhu-Mythos von H. P. Lovecraft [1] in 3D drucken und sie mit Kamera, Gesichtserkennung, Mikrocontroller und glühenden LED-Augen ausstatten. Gerät ein bekanntes Gesicht ins Blickfeld der Kamera, wird die Person mit einem blauen Leuchten der Augen begrüßt, ist jemand unbekannt, wird er drohend rot angefunkelt.

Make 2/20

Als Basis für unser Projekt dient die Figur Cthulhu Idol [6], die der User namens Kubold Margariti auf Thingiverse zur Verfügung stellt. In 3D gedruckt ist sie von Haus aus 13cm hoch. Unser Ziel war es, das günstige WLAN-Kameramodul ESP32-CAM [7] so dort hineinzubekommen, dass das Objektiv zwischen Cthulhus Füßen sitzt. Dort ist im 3D-Modell eine recht ebene Fläche im Sockel zu finden und man muss keine allzu störenden Löcher in die wundervolle Figur bohren.

Cthulhu-Statue mit versteckter ESP32-CAM (0 Bilder) [8]

[9]

Das Board passt am besten hochkant in den Sockel, damit bleibt dann auch der SD-Kartenschlitz von unten zugänglich. Leider gibt es jetzt ein Problem: Das Bild der Kamera ist nun auch 90° verdreht und in der API/Firmware zur Kamera gibt es keine Möglichkeit, das zu korrigieren. Also muss die Kamera gedreht werden, was aber wegen des sehr kurzen Folienbandkabels etwas delikat ist. Daher habe ich eine Klammer [10] entworfen, die für beide Ausrichtungen der Kamera funktioniert und die auch für alle Besitzer der ESP32-CAM interessant ist, die ihr Modul nicht unbedingt in eine Statue einbauen wollen.

Mehr von Make Mehr von Make [11]

In der Standardausrichtung kommt die Kamera wie vom Kabel vorgegeben etwa auf dem SD-Slot zu liegen und kann dort mit der Klammer fixiert werden. Wenn man hingegen das Folienkabel vorsichtig faltet, kann man die Kamera aber auch 90° drehen und dann mittig auf dem Modul festklemmen. Für den Druck der Klammer empfiehlt sich PETG, das etwas flexibler als PLA ist, und nicht so leicht beim Aufklipsen bricht.

3D-gedruckte Klammer für die ESP32-CAM (0 Bilder) [12]

[13]

Die Klammer passt aber auch genau in eine Aussparung, die wir innen im Sockel der Figur angelegt haben. Für diese und andere Vorbereitungen des 3D-Modells der Figur kam die Open-Source-Software Blender [14] zum Einsatz. Zum Aushöhlen wurde ein einfacher Quader benutzt und per Boolescher Operation abgezogen – in der Höhe wird es dann zwar etwas knapp, da an dem Übergang von Sockel zur Figur nur wenig Material übrig bleibt. Optimiert man aber alles vorsichtig, entstehen aber keine Löcher und die Kamera lässt sich mittig positionieren.

Wie das im Detail funktioniert, zeigt ein Video aus unserer Tutorial-Serie 3D-Kurs für Maker: Konstruieren mit Blender 2.8 [15]. Aber keine Bange, Sie müssen die Konstruktion nicht selbst vornehmen, wenn Sie das nicht wollen – die druckfertige Datei gibt es natürlich auch zum Download bei Thingiverse [16] oder alternativ in der Online-Community von Prusa Printers [17]. Die Video-Anleitung ist aber nützlich, wenn Sie Ihre ESP32-CAM oder ein ähnliches Modul in ein anderes 3D-Objekt integrieren wollen.

Videokurs: Blender für Maker

Im Make-Videokurs zeigt der bekannte Buchautor und Blender-Tutor Carsten Wartmann anhand verschiedener kleiner Maker-Projekte, wie man das Open-Source-3D-Softwarepaket Blender für CAD-Aufgaben wie das Konstruieren eigener Vorlagen etwa für den 3D-Druck oder das CNC-Fräsen produktiv nutzen kann.

Deshalb die weiteren 3D-Operationen hier nur im Schnelldurchlauf: Wo das Objektiv sitzen soll, habe ich wieder mittels eines Booleschen Operators die oben schon erwähnte Aussparung für die Klammer gemacht – bei meinem Druck ist die Passung sehr gut, gegebenenfalls muss man die Verbindung mit einem Tropfen Heißkleber sichern. Das “Spionloch”, durch das die Kamera blickt, ist wie eine Zweistufenbohrung ausgeführt, sodass eine möglichst nur einen Druckperimeter dünne Außenwand durch ein möglichst kleines Loch durchstoßen wird, damit das sehr weitwinklige Objektiv keinen Rand mehr von der Figur aufnimmt.

Blick ins Innere des ESP32-CAM-Cthulhus (3 Bilder) [24]

[25]
Diese LEDs wurden mit Anschlussleitungen versehen und zusammen eingeschrumpft, um innen in den Kopf der ausgehöhlten Cthulhu-Statue zu wandern ...
(Bild: Carsten Wartmann)

Zum Kopf hin wurde innen außerdem der Hohlraum erweitert und noch Löcher in die beiden Augen gebohrt. Dort hinein klebt man Stücke transparenten Filaments mit 1,75mm Dicke als Lichtleiter, sodass die LED oder die LEDs bequemer im Inneren platziert werden können. Falls die Funkverbindung zu schlecht ist, kann man übrigens auch noch eine externe Antenne in diesem Hohlraum nach oben führen.

Gedruckt habe ich die Figur aus Prusa PETG Galaxy Black auf einem Prusa i3 MK2 mit 0,2mm Schichtdicke, was etwas über acht Stunden gedauert hat. Vorab hatten Versuche ergeben, dass ein weiteres Aushöhlen der Figur die Druckzeit kaum senkt, wenn man als inneres Füllmuster Gyroid mit 10% Dichte benutzt.

Verwendete Druckparameter
  • Drucker: Prusa i3 MK2
  • Ausgangsprofil im Prusa Slicer: 0.20mm 100mms Linear Advance
  • 0,4mm Düse – Parameter: Nozzle Diameter
  • 0,2mm Schichtdicke – Parameter: Layer height
  • 2 Perimeter – Parameter: Perimeters
  • 3 Schichten Boden – Parameter: Solid Layers Bottom
  • 4 Schichten Oben – Parameter: Solid Layers Top
  • gleiche Wandstärke aktiviert – Parameter: Ensure vertical shell thickness
  • Infill: 10% Gyroid
  • Material: Prusa PETG Galaxy Black
  • Drucktemperatur Düse: 240°C
  • Drucktemberatur Bett: 60°C
  • Druckzeit: ca. 8h
  • Kosten: weniger als 3 Euro Material, 30m/92g Filament

Anschließend habe ich per Dry Brushing silberne Akzente auf die erhabenen Figurenteile aufgebracht. Hierbei arbeitet man mit wirklich sehr wenig Farbe auf dem (fast) trockenen Pinsel (schließlich heißt dry trocken) und darf kaum die Oberfläche berühren, während man eine winzige Menge Farbe in schnellen Bewegungen “aufbürstet”. Die Farbe bleibt nur an den erhabenen Stellen hängen, bringt die Struktur schön zur Geltung, sorgt für einen Patina-Effekt und bringt die Plastizität der Figur deutlicher heraus, weil die tieferliegenden Stellen dunkel bleiben.

Carsten Wartmann

Mit einem fast trockenen Pinsel flüchtig aufgebürstete silberne Farbe verleiht der Statue den Anschein, als hätten Äonen ihre Spuren auf ihrer Oberfläche hinterlassen.

(Bild: Carsten Wartmann)

In dem Hohlraum hinter den Lichtleitern können nun eine oder mehrere LEDs oder auch eine RGB-LED vom Typ WS2812B (auch als Neopixel [26] bekannt) an etwas stärkerem Draht so platziert werden, dass die Lichtausbeute durch die Lichtleiter in den Augen am besten ist. An der gefundenen Position fixiert man die LEDs mit etwas Heißkleber. Je nach Zahl und Art der LEDs muss man meinen Code eventuell anpassen.

Denkbar ist natürlich auch, dass man statt oder zusätzlich zur Beleuchtung Technik für andere Reaktionen einbaut, etwa das tatsächliche Betätigen eines Türoffners per Relais, wenn eine zutrittsbefugte Person erkannt wurde, wie im Artikel "Gesichtssteuerung [27]" in der Make-Ausgabe 2/20 ab Seite 16 beschrieben. Das Abweisen von Unbefugten kann statt mit rotem Augenfunkeln etwa auch über böses Vibrieren per Motor erfolgen – der Fantasie sind keine Grenzen gesetzt.

Carsten Wartmann

Intruder Alert! Hier begehrt offenbar jemand unbefugtes Einlass. In der Folge leuchten die Augen der Figur rot auf.

(Bild: Carsten Wartmann)

Bei Programmierung und Aufbau der Elektronik habe ich mich so weit wie möglich am eben erwähnten Artikel in Make 2/20 und dem Vorgänger "Intelligente Webcam für 5 Euro [28]" in Make 1/20 (S. 28) orientiert. Am Code habe ich nur wenige Änderungen vorgenommen, die im Folgenden kurz Beschrieben sind. Das für meine Statue angepasste Programm gibt es aber bei GitHub im selben Repository zu finden wie die Software zur erwähnten Gesichtssteuerrung [29]. Achtung: Ich habe ich bisher noch nicht probieren können, ob die rote LED und das Relais sich tatsächlich parallel betreiben lassen. Im Moment benutze ich auch noch den Programmieradapter zur Stromversorgung, hinten in der Statue ist aber bereits eine Aussparung für eine USB-Buchse vorgesehen, deren Kontakte für die Spannungsversorgung man an die entsprechenden Pins der ESP32-CAM anschließt.

Carsten Wartmann

Die fertige Cthulhu-Statue: In 3D-gedruckt, patiniert und mittels ESP32-CAM mit Gesichtsgedächtnis ausgestatttet.

(Bild: Carsten Wartmann)

Die beiden LEDs in meiner Figur sind wie folgendermaßen verdrahtet: 3,3V Widerstand LED GPIO-Pin. Bei der roten LED benötigt man als Widerstand etwa 100Ohm, bei einer grünen oder blauen circa 60Ohm – aber bitte für die eigene LED-Ausstattung mit einem LED-Widerstandsrechner [30] nachrechnen, um weder die LED (siehe deren Datenblatt) noch den GPIO zu überlasten! Im Netz finden sich recht unterschiedliche Angaben zur Strombelastbarkeit der GPIOs. Die oft zu lesenden 12mA gelten für die alten ES82xx Boards. Das ESP32 kann wesentlich mehr (hier reichen die Angaben von 20mA bis 40mA), aber einen einzelnen GPIO kann man sicher mit 20mA belasten.

Die Gesichter können wie im Make-Artikel beschrieben und im folgenden Video gezeigt mit ESP32-Face angelernt und auf dem Board gespeichert werden. Den Sketch im Ordner Face-Relais aus dem GitHub zum Gesichtserkenner-Artikel habe ich wie folgt angepasst; er ist unter dem Namen Cthulhu_Relay im selben Repository zu finden.

Empfohlener redaktioneller Inhalt

Mit Ihrer Zustimmmung wird hier ein externes YouTube-Video (Google Ireland Limited) geladen.

Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit können personenbezogene Daten an Drittplattformen (Google Ireland Limited) übermittelt werden. Mehr dazu in unserer Datenschutzerklärung [31].

Ich verwende für die LEDs die GPIO-Pins 2 und 12:

#define relayPin 2 // (also Red LED -> Locked)
#define GreenLEDPin 12 // Green LED -> Open

Für erkannte Gesichter ist im Code eine grüne LED vorgesehen, dass bei mir stattdessen eine blaue leuchtet, tut dem Prinzip keinen Abbruch. Weitere Änderungen gegenüber dem Code aus dem Make-Artikel sind ab Zeile 112 in der Funktion rzoCheckForFace() zu finden:

void rzoCheckForFace() {
currentMillis = millis();
if (run_face_recognition()) {//face recognition function has returned true
Serial.println("Face recognised");
digitalWrite(relayPin, HIGH); //close (energise) relay also means RED LED TURN OFF!
digitalWrite(GreenLEDPin, LOW); //LOW means GREEEN LED TURN ON!
openedMillis = millis(); //time relay closed
}
if (currentMillis - interval > openedMillis){
digitalWrite(relayPin, LOW); //open relay
digitalWrite(GreenLEDPin, HIGH); //HIGH means GREEEN LED TURN OFF!
}
}

Man muss sich dabei nur daran gewöhnen, dass HIGH in diesem Fall bedeutet, dass die LED ausgeschaltet wird! Das liegt daran, dass die GPIO-Pins als Stromsenke geschaltet sind. Das Relaisboard dagegen benutzt einen Buffer und schaltet bei HIGH ein.

Das Sketch kann natürlich noch erweitert werden. Vielleicht ist es für Ihren Zweck auch interessant, den Webserver wieder einzubauen und/oder die aufgenommenen Bilder (etwa von rot weggeblitzten potenziellen Eindringlingen) auf einer SD-Karte zu speichern – dank der unten offenen Sockelaushöhlung kommt man an die Karte sehr einfach heran. (pek [32])


URL dieses Artikels:
https://www.heise.de/-4711670

Links in diesem Artikel:
[1] https://de.wikipedia.org/wiki/Cthulhu-Mythos
[2] https://shop.heise.de/katalog/make-02-2020?wt_mc=intern.shop.shop.make2002.dos1.textlink.textlink
[3] https://shop.heise.de/katalog/make-02-2020-pdf?wt_mc=intern.shop.shop.make2002.dosd1.textlink.textlink
[4] https://www.heise.de/select/make/2020/2
[5] https://www.mykiosk.com/suche/23141/make-
[6] https://www.thingiverse.com/thing:2086578
[7] https://de.aliexpress.com/item/32992663411.html
[8] https://www.heise.de/bilderstrecke/bilderstrecke_4714966.html?back=4711670;back=4711670
[9] https://www.heise.de/bilderstrecke/bilderstrecke_4714966.html?back=4711670;back=4711670
[10] https://www.thingiverse.com/thing:4339403
[11] https://www.heise.de/make/
[12] https://www.heise.de/bilderstrecke/bilderstrecke_4714981.html?back=4711670;back=4711670
[13] https://www.heise.de/bilderstrecke/bilderstrecke_4714981.html?back=4711670;back=4711670
[14] https://www.heise.de/news/3D-Software-Blender-2-82-Wasser-Feuer-und-Rauch-simulieren-4661622.html
[15] https://www.heise.de/ratgeber/3D-Kurs-fuer-Maker-Konstruieren-mit-Blender-2-8-4577160.html
[16] https://www.thingiverse.com/thing:4325817
[17] https://www.prusaprinters.org/prints/31668-cthulhu-idol-esp32cam/files
[18] https://www.heise.de/ratgeber/So-geht-s-Klemmbaustein-Modelle-nach-Wunsch-mit-Blender-und-3D-Drucker-bauen-9347531.html
[19] https://www.heise.de/ratgeber/Ladestecker-Huelle-mit-3D-Drucker-und-Blender-herstellen-9336111.html
[20] https://www.heise.de/ratgeber/Blumenkastenabdeckung-mit-Blender-nachbauen-und-ersetzen-9336340.html
[21] https://www.heise.de/ratgeber/3D-Kurs-fuer-Maker-Konstruieren-mit-Blender-2-8-4577160.html
[22] https://shop.heise.de/make-tutorial-konstruieren-mit-blender-2-8
[23] https://www.heise.de/forum/Make/Kommentare/3D-Kurs-fuer-Maker-Konstruieren-mit-Blender-2-8/forum-439159/
[24] https://www.heise.de/bilderstrecke/bilderstrecke_4714992.html?back=4711670
[25] https://www.heise.de/bilderstrecke/bilderstrecke_4714992.html?back=4711670
[26] https://www.heise.de/ratgeber/LED-Cube-fuer-3D-Animationen-4484515.html
[27] https://www.heise.de/select/make/2020/2/1587506140974317
[28] https://www.heise.de/select/make/2020/1/1583171309937840
[29] https://github.com/MakeMagazinDE/ESP32-CAM-Gesichtssteuerung
[30] https://www.elektronik-kompendium.de/sites/bau/1109111.htm
[31] https://www.heise.de/Datenschutzerklaerung-der-Heise-Medien-GmbH-Co-KG-4860.html
[32] mailto:pek@ct.de