Sind Sie es leid, dass der Infrarot-Näherungssensor jedes Mal die Tür öffnet, wenn jemand vorübergeht? Mit diesem Projekt können Sie eine Tür mit künstlicher Intelligenz ausstatten, damit sich diese nur dann automatisch öffnet, wenn auch jemand wirklich eintreten will. Das ist nicht nur praktisch, sondern hilft, Geräuschbelästigungen von außen zu minimieren und die Energieeffizienz zu verbessern. Das System verwendet das Entwicklungsboard Maixduino mit einem Kendryte-K210-Chip, der eine KI-gestützte Gesichtserkennung mit Kamera und TFT-Display kombiniert, um zu erkennen, wenn sich eine Person direkt der Tür nähert. Die in MicroPython geschriebene Software nutzt einen KPU-Prozessor für neuronale Netze zur Gesichtserkennung in Echtzeit und steuert die Tür über Relais, die an den GPIO-Pins angeschlossen sind.       

Ein Problem mit automatischen Türen

Automatische Türen leisten in der Regel gute Dienste zum Schutz der Büroangestellten vor der Außenwelt. Sie tragen dazu bei, dass im Büro eine optimale Temperatur herrscht, während sie gleichzeitig allen, die das Büro betreten oder es verlassen wollen, leichten Zugang gewähren. Üblicherweise steuert ein Infrarot-Näherungssensor die Türen, aber in lauten industriellen Umgebungen kann eine etwas anspruchsvollere Technologie erforderlich sein. In einem indischen Kraftwerk gibt es drei massive 660-MW-Turbinen in einer 100 m langen Turbinenhalle. Diese dampfgetriebenen Turbinen, die einen Generator antreiben, erzeugen rund 900 MW Strom, genug, um eine Stadt von der doppelten Größe San Franciscos zu versorgen.

Der Kontrollraum dieses wichtigen Kraftwerks hat eine Haupteingangstür, die sich auf der Seite der Turbinenhalle befindet. Der einzige Zugang erfolgt durch ein Paar Glasschiebetüren mit einer äußeren und einer inneren Tür. Dieses zweitürige System schützt die klimatisierte Atmosphäre im Kontrollraum. Wenn sich jemand der Tür nähert, egal ob von innen oder von außen, öffnen sich die Türen nacheinander, so dass der Besucher ein- oder ausgehen kann.

Diese Doppeltürkonstruktion sorgt dafür, dass der Kontrollraum kühl und leise bleibt, da die zwischen den Türen eingeschlossene Luft sowohl als Isolierung als auch als Schallbarriere wirkt und den Kontrollraum so weit wie möglich vom 140-dB-Lärm der Turbinenhalle schützt.

Central Control Room at the NTPC power station. AI-Powered Automatic Door System article
Die Doppeltüren des zentralen Kontrollraums im NTPC-Kraftwerk schützen die Ingenieure im Inneren vor dem hohen
Geräuschpegel in der Turbinenhalle.

Es gibt jedoch einen Nachteil, den automatische Türen überall haben: Personen, die an den Türen vorbeilaufen, können die Bewegungssensoren veranlassen, die Türen zu öffnen, auch wenn sie gar nicht die Absicht haben, durch die Türen zu gehen. Dies kann dazu führen, dass die Ingenieure im Inneren des Kontrollraums ständig durch den Außenlärm gestört werden, da sich die Türen unnötigerweise öffnen und dadurch der Lärm aus der Turbinenhalle hereindringt.

Eine klügere Lösung

Wir haben daher die traditionellen, von Haus aus dummen IR-Näherungssensoren durch eine Hardware zur KI-Gesichtserkennung und einer Software zur Näherungsberechnung ersetzt, damit sich die Türen nur öffnen, wenn sich ein Mensch in der Absicht nähert, den Kontrollraum zu betreten.

Das kleine Entwicklungsboard Maixduino (Bild 1), unterstützt von einer Kamera, einem TFT-Bildschirm und dem KI-Code, stellt fest, ob die sich nähernde Person ein Mensch ist und inwieweit sein Gesicht in Türnähe ist. Unterschreitet das Gesicht einen bestimmten Abstand, öffnet sich die Tür, um den Eintritt zu gewähren. Werden die Abstandskriterien nicht erfüllt, sucht das System weiterhin nach Gesichtern und verhindert so, dass sich die Türen unnötig öffnen, wenn Personen nur vorübergehen.

Maixduino pinout diagram
Bild 1. Anschlussbelegung des Maixduino. (Quelle: Sipeed)

Der logische Ablauf mit Start und End ist in Bild 2 dargestellt. Die KI-Gesichtserkennung bewirkt, dass die Türen nicht geöffnet werden, wenn eine Person vorbeigeht, ohne die Tür anzusehen, selbst wenn das Abstandskriterium erfüllt ist.

Flowchart of the logic behind the AI-Powered Automatic Door System project.
Bild 2. Flussdiagramm der dem Projekt zugrunde liegenden Logik.

Türöffner-Mechanismus

Wenn die Bedingungen erfüllt sind, lösen zwei an die GPIOs des Controllers angeschlossene Relais den Türöffnungs-Mechanismen aus. Wenn sich eine Tür öffnet, bleibt die andere in der Regel vollständig geschlossen. Nachdem sich die erste Tür geöffnet hat und die Person den Türzwischenraum betritt, schließt diese Tür vollständig, wodurch der Zwischenraum von beiden Seiten isoliert ist, und erst dann wird die zweite Tür geöffnet. Dies geschieht in der Regel durch sequentielles Auslösen der GPIOs. Je nach Türmechanismus können bei Bedarf diese Anforderungen vor Ort angepasst und auch mehr GPIOs eingesetzt werden.

Berechnung der Entfernung

Um zu bestimmen, wann der Türöffner ausgelöst werden soll, erkennt der KI-Algorithmus das Gesicht einer Person (um es genau zu sagen, er erkennt, dass das, was auf ihn zukommt, ein Gesicht ist) und zeichnet im aufgenommenen Bild einen Begrenzungsrahmen um das Gesicht, wie dies in Echtzeit auf dem TFT-Display zu sehen ist. Die Breite dieses Rahmens wird verwendet, um den Abstand zwischen dem Gesicht und der Kamera anhand einer mathematischen Gleichung abzuschätzen, wobei für eine gewisse Präzision die Parameter durch Experimente feinabgestimmt werden müssen.

Die Brennweite der Kamera ist hilfreich bei der Bestimmung des Verhältnisses zwischen der Entfernung des Gesichts und der Größe des Gesichtsfeldes im Bild. Die Veränderung der Größe folgt innerhalb des Brennweitenbereichs einer linearen Beziehung, aber außerhalb dieses Bereichs wird die Beziehung nichtlinear und erfordert eine komplexere Berechnung, um den Abstand zu ermitteln.

Es wurden zwei Arten von Entfernungsberechnungen implementiert: linear für Entfernungen bis zu 175 cm und quadratisch für Entfernungen darüber hinaus bis zu 250 cm, weil dies die Genauigkeit und Effizienz des KI-Türsystems zu verbessert. Das lineare Modell sorgt für eine schnelle und zuverlässige Erkennung im Nahbereich, sodass die Tür reagiert, wenn sich jemand in der Nähe befindet. Das quadratische Modell sorgt für genauere Entfernungsberechnungen bei größeren Entfernungen und berücksichtigt die perspektivische Verzerrung, wenn sich eine Person aus größerer Entfernung nähert. Diese Kombination optimiert die Leistung bei unterschiedlichen Entfernungen, verhindert ein vorzeitiges Auslösen und verbessert die allgemeine Benutzerfreundlichkeit.

Perspective view of the base of a pyramid.
Bild 3. Perspektivische Ansicht einer Pyramide.

Anhand der ersten Entfernungsberechnung von bis zu 175 cm werden dann die Breite und Höhe der umgebenden „Box“ mit verschiedenen Entfernungen von der Kamera anhand eines linearen Modells verglichen. Die Entfernung wird auf der Grundlage der Breite des Objektrahmens extrapoliert. Dies ist vergleichbar mit der Art und Weise, wie das Grundrechteck, die Basis einer Pyramide nach oben hin immer kleiner wird und schließlich einen Punkt auf der Spitze erreicht (Bild 3). Genauso verhält es sich mit dem Bildrechteck, wenn es sich von der Kamera entfernt.

Bis zu einer Entfernung von 175 cm wird eine einfache lineare Formel verwendet:

Y = M × X + C

X ist die Pyramidenbasis (Gesichtsbreite) und Y ist die Höhe der Pyramide (Abstand).

Bei einer Höhe von mehr als 175 cm wird dann eine quadratische Gleichung verwendet:

Y = A × X2 + B × X + C

Diese Formel liefert dann von 175 cm bis 250 cm genauere Ergebnisse. Mit einer besseren Kamera (längere Brennweite) kann diese Berechnung weiter verbessert werden. Sobald die Entfernung weniger als 250 cm beträgt, lösen die GPIO aus und die Tür öffnet oder schließt sich.

Abonnieren
Tag-Benachrichtigung zu maixduino jetzt abonnieren!

Die Hardware

Der Chip, der das Herzstück des Maixduino-Boards bildet, ein Kendryte K210, ist ein hochintegrierter System-on-Chip (SoC) für KI- und IoT-Anwendungen, der Funktionen für maschinelles Sehen und Hören enthält. Er wird im 28-nm-Ultra-Low-Power-Prozess von TSMC gefertigt und verfügt über Dual-Core 64-Bit-RISC-V-Prozessoren für optimale Energieeffizienz, Stabilität und Zuverlässigkeit. Der K210 ist leicht und schnell einzusetzen und ermöglicht KI-Entwicklungen ohne „Hemmschwelle“ für eine schnelle Integration in Produkte.

Eine Schlüsselkomponente ist die Knowledge Processing Unit (KPU), ein Allzweckprozessor für neuronale Netze. Die KPU unterstützt Faltung, Batch-Normalisierung, Aktivierung und Pooling-Schichten und ist damit in der Lage, Objekte und Gesichter in Echtzeit zu erkennen.

Der Code wurde in der Programmiersprache MicroPython mit der MaixPy-IDE als Entwicklungsumgebung entwickelt, die speziell auf das Maixduino-Board zugeschnitten ist. Der MicroPython-Code ist knapp gehalten, weniger als 50 Zeilen, und nutzt für den Großteil der Berechnungen die KPU. Bei der Gesichtserkennung werden die Abmessungen des Rechtecks (Breite und Höhe) mit vordefinierten linearen Modellen verglichen, um die Nähe des Objekts zu bestimmen. Wenn der Schwellwert für den Abstand erreicht ist, werden die GPIO-Pins ausgelöst.

 Die beiden GPIO-Pins (GPIO 13 und GPIO 12, wie in Bild 4 gezeigt) steuern über BC547-Puffertransistoren 5-V-Relais den Türmechanismus. Bei 12-V-Relais kann eine separate (höhere) Versorgungsspannung über den Kollektor des Transistors angeschlossen werden, was der Angelegenheit mehr Flexibilität verleiht.

Connections for triggering the gate for AI-Powered Automatic Door System project.
Bild 4. Treiberstufen für die Relaissteuerung.

FaceDetect-Klassifikator

Der FaceDetect-Klassifikator für MaixPy verwendet ein vortrainiertes KI-Modell zur Objekterkennung, das die Implementierung der Gesichtserkennung vereinfacht. Dieses vorgefertigte Modell kann unter heruntergeladen werden.

Der MaixPy-FaceDetect-Klassifikator ist als*.kfpkg-Datei verfügbar, wobei das Sternchen für den Modellnamen steht. Diese Modelle sind hocheffiziente und schnell reagierende YOLO-Klassifikatoren (You Only Look Once) der Version 2. Jede Szene wird durch das Modell verarbeitet, und die Ausgabe wird mit den definierten Klassifikatoren verglichen. Die Geschwindigkeit von YOLO v2 erlaubt es, ein menschliches Gesicht auf dem Bildschirm schnell zu erkennen und einen Rahmen darum zu ziehen. Das hier verwendete Klassifikatormodell heißt facedetect.kfpkg.

Neben der einfachen Gesichtserkennung ist es auch möglich, den MaixPy-Gesichtserkennungs-Klassifikator zu verwenden, aber es ist zu berücksichtigen, dass dieses Programm derzeit nur eine Erkennung von maximal zehn Gesichtern unterstützt. Für ein umfangreicheres Gesichtserkennungsmodell wäre ein leistungsfähigeres Entwicklungsboard erforderlich.

Hochladen eines Projekts

Um die Software einzurichten und die erforderlichen Dateien zu installieren, gehen Sie wie folgt vor. Anschließend können Sie den Projektcode ausführen.

Installation von MicroPython auf dem MaixPy-Board

  • Schließen Sie zunächst Ihr MaixPy-Board über USB an Ihren Computer an.
  • Laden Sie zunächst das Tool zum Flashen kflash_gui von herunter, das für die Installation von Software auf dem Board erforderlich ist.
  • Öffnen Sie kflash_gui und wählen Sie den richtigen seriellen Anschluss für das Board (Bild 5).
  • Um MicroPython auf dem Board zu installieren, laden Sie die Firmware (zum Beispiel maixpy_v0.6.2_75_g973361c0d.bin) aus dem MaixPy-GitHub-Repository herunter .
  • Laden Sie diese Firmware-Datei in kflash_gui und klicken Sie auf den Knopf Download, um MicroPython auf dem MaixPy-Board zu installieren.
 
Steps to connect the MaixPy device using kflash_gui.
Bild 5. Schritte zur Verbindung des MaixPy-Boards mit kflash_gui.

Installation des Gesichtserkennungsmodells

  • Nach der Installation von MicroPython müssen Sie das vortrainierte Gesichtserkennungsmodell (facedetect.kfpkg) auswählen und hochladen.
  • Wählen Sie in kflash_gui die Datei facedetect.kfpkg und klicken Sie auf Download, um das KI-Modell auf dem Gerät zu installieren. Sie können auch die Datei flash-list.json ändern, um die registrierte Modellnummer (0x300000) zu ändern.

Laden Sie ein Projekt in der MaixPy-IDE hoch

  • Als Nächstes laden Sie die MaixPy-IDE von herunter und installieren Sie sie. Eine vollständige Installationsanleitung zur MaixPy-IDE finden Sie im MaixPy-Wiki .
  • Öffnen Sie die MaixPy-IDE und verbinden Sie Ihr MaixPy-Board, indem Sie auf das Kettensymbol unten links auf dem Bildschirm drücken.
  • Wählen Sie das Python-Programm (zum Beispiel doorman_mod3.py, wie in Bild 6 gezeigt) und öffnen Sie es im IDE-Fenster.
  • Um das Programm zu starten, drücken Sie auf die Play-Taste unten links.

Auto-Play beim Booten

  • Damit das Programm jedes Mal, wenn das MaixPy-Board eingeschaltet wird, automatisch gestartet wird, gehen Sie in der MaixPy-IDE auf Tools und wählen Sie Transfer File. Dadurch wird das Python-Skript als boot.py auf das Board kopiert, so dass es beim Booten automatisch startet.
  • Alternativ können Sie die Python-Datei in das Hauptverzeichnis einer SD-Karte kopieren und sie in boot.py umbenennen. Wenn Sie die SD-Karte in den MaixPy stecken, wird die Datei automatisch abgespielt.
 
Python program and the AI-Powered Automatic Door System prototype
Bild 6. Das IDE-Fenster mit dem Python-Programm. Bild 7. Der Prototyp in Aktion funktioniert tadellos!

Ergebnisse

KI-gestützte Gesichtserkennung ist nichts Neues. Sie lässt sich auf einem leistungsstarken Computer mit einer Kamera leicht einrichten. Die Implementierung auf einem eigenständigen, energieeffizienten MaixPy-Mikrocontroller zeigt jedoch, dass KI nicht nur auf leistungsstarken Computern lebt, sondern auch auf Mikrocontroller-Ebene. Das kostengünstige Maixduino-Board bietet mehrere Vorteile, darunter ein kleines, aber schnelles TFT-Display, die Möglichkeit, kleine KI-Projekte und Micropython-Codes auszuführen, sowie die Unterstützung des Repository sipeed.com.

Dieser automatische KI-Türöffner wurde an den Türen des Kontrollraums eines Kraftwerks installiert, in dem ich einmal gearbeitet habe (Bild 7). Ursprünglich verwendete ich einen linearen Näherungsschalter mit einer Reichweite von 175 cm . Später entdeckte ich jedoch, dass eine quadratische Lösung ab einer bestimmten Entfernung eine höhere Präzision bietet. Dies wurde in die aktuelle Softwareversion aufgenommen, die unter heruntergeladen werden kann. Nach dieser Verbesserung funktionierte das Gerät während meines gesamten Aufenthalts einwandfrei.

Sie haben Fragen oder Kommentare?

Wenn Sie technische Fragen oder Kommentare zu diesem Artikel haben, wenden Sie sich bitte per E-Mail an die Elektor-Redaktion unter redaktion@elektor.de.


Anmerkung der Redaktion: Der Artikel „Maixduino AI-Powered Automatic Doorman“ (230050-02) erschien in Elektor März/April 2025. 


Abonnieren
Tag-Benachrichtigung zu Embedded & AI jetzt abonnieren!