Sensorfusion

Einbrecheralarm mit Infrarot-Sensorfeld MLX90642 (Teil 2)

Link zu Teil 1

1. Erstellung eines Printed Circuit Boards

Das Design eines Printed Circuit Boards, abgekürzt PCB, war der Teil des Projekts der den meisten Spaß bereitete.

Ich nutzte dabei das Tool KiCad, eine kostenlose und intuitive CAD-Software für die Erstellung von PCB Layouts (hier findet man eine hilfreiche Videoeinführung).

Trotz meiner geringen Erfahrung mit solchen CAD-Programmen war ein Schaltplan nach kurzer Zeit gezeichnet, wobei natürlich nochmals zu erwähnen ist dass die Schaltung an sich nicht komplex ist.

Schaltplan Einbrecheralarm (Rev.: 1.00)
Schaltplan Einbrecheralarm (Rev.: 1.00)

Ein paar Gedanken musste man sich lediglich zu den Pull-Up-Widerständen für den I2C-Bus machen.

Der Sensor hat im Unterschied zu einigen anderen im Handel erhältlichen I2C-Geräten keine Pull-Up-Widerstände integriert, daher sind extra Widerstände in der Schaltung flexibel über jeweils einen Jumper für Datenleitung (SDA) und Taktleitung (SCL) zuschaltbar, je nachdem was zusätzlich am I2C-Bus hängt.

Im Datenblatt des Sensors gibt es in Abschnitt 4.2 auf einer halben Seite Applikationshinweise. Ich verwende anstelle der 1 kOhm jedoch entweder 3,9 kOhm oder 4,7 kOhm was gängige Werte für diese Widerstände sind, wie zu erwarten war das problemlos möglich.

Auch auf extra Abblockkondensatoren habe ich verzichtet, da ich den Sensor an der Pico W 3,3V Spannungsversorgung betreibe (siehe Pico W Schaltplan bzw. Datenblatt).

Bestücktes PCB Einbrecheralarm (Rev.: 1.00)
Bestücktes PCB Einbrecheralarm (Rev.: 1.00)

Das Design einer allerersten PCB-Revision stellte keine großartigen Anforderungen an zum Beispiel Masseflächen, Geometrie der Verbindungsleitungen, Ästhetik und dergleichen. 

Bei 1 MHz I2C-Frequenz (” fast mode plus”), mit welcher ich nicht arbeite, mag sich das Gesagte unter bestimmten Umständen relativieren.

Präferenz was die Wahl eines PCB-Herstellers angeht habe ich nicht, diese Platinen fertigte JLCPCB. Bei Interesse kann ich alle Gerber Files mit den CAD-Daten für Revision 1.00 zur Verfügung stellen (kostenlos aber Anfragen bitte per mail).

2. Entwicklung des ML Programmes

Der Anwendungsfall Einbrecheralarm scheint besonders prädestiniert für die Verwendung von maschinellem Lernen (ML) da es auf eine Bilderkennung hinausläuft.

Zunächst war die Aufgabe die kompletten Temperaturmessdaten auf dem Pico W Webserver in einer sinnvollen Struktur verfügbar zu machen. Dafür stellt das Pi Pico C/C++ SDK alle notwendigen Werkzeuge bereit. Eine Erläuterung sprengt an der Stelle den Rahmen dieses Artikels, daher verweise ich auf Literaturquelle 2.

Darstellung aller 768 Sensortemperaturmessdaten in 24 Zeilen und 32 Spalten (mit Label "Einbrecher nein")
Darstellung aller 768 Sensortemperaturmessdaten in 24 Zeilen und 32 Spalten (mit Label “Einbrecher nein”)

Der zweite Schritt war ein ML-Programm mit einer ausreichend großen Zahl an Messungen zu trainieren.

Hier ist die Sprache Python besonders nützlich1.

Über ein “Webcrawling”-Programm greife ich die so strukturierten Temperaturmessdaten ab und speichere sie in einem Textfile. Mehrere solcher Messungen – für erste Versuche reichen etwa zwanzig Messungen, je mehr Trainingsdaten desto besser werden offensichtlich Vorhersagen sein – kopiere ich dann mit einem “Einbrecher ja/nein” Kategorielabel per Hand in ein größeres File.

Anschließend berechnet ein Binärer Klassifizierer aus diesen Daten 769 sog. “Gewichte”2.

Jene werden in einem dritten Schritt in ein weiteres Python Programm hartcodiert, welches gleichfalls über “Webcrawling” in kontinuierlicher Art und Weise Temperaturmessdaten abruft (man könnte auch andere, grundsätzlich besser geeignete Methoden wie MQTT implementieren), visuell darstellt, und anhand der Gewichte eine Vorhersage “Einbrecher ja/nein” vollzieht.

Der Rest ist der Phantasie des Entwicklers überlassen. Naheliegend ist die Aktivierung eines Alarms, neben der Generierung von niedrigauflösenden Wärmebilder (eben mit der Auflösung 32×24) auf zum Beispiel einem Raspberry Pi 5.

3. Verbesserter Prototyp

All das Gesagte nun in einem Video zusammengeführt und veranschaulicht.

Sinnvollerweise wird ein produktives System in der Praxis an verborgener Position angebracht, die Reichweite des Sensors beträgt durchaus einige Meter.

Es laufen SW-Version 0.499 auf dem Pico W, sowie verschiedene Python Skripte auf dem Pi 5 (siehe auch Github).

4. Zusammenfassung

Man kann nun noch Einiges verbessern, ein perfekter und fertiger Stand ist niemals erreichbar, doch ist das System an sich schon weit gereift und auch flexibel ausgelegt.

Übertragungsgeschwindigkeit, Miniaturisierung, Entwicklung einer eigenen Smartphone-App für die Fernüberwachung, Sensorfusion (siehe Visualisierung am Kopf des Artikels) sind gewiss Themen die man in Angriff nehmen kann, und auf die ich gegebenenfalls in einem weiteren Blogartikel eingehe werde.

Hinweis: Wenn Sie Bedarf an einem maßgeschneiderten Einbrecheralarm für die eigenen vier Wände haben, kontaktieren Sie mich gerne unter florian.dirnberger@ome-eng.de.

5. Weiterführende Informationen

5.1 Fußnoten

1 nicht zu verwechseln mit Micropython das ich in diesem Projekt nicht genutzt habe, das wäre die Sprache für den Mikrocontroller

2 es sind 1 + 768 Gewichte, da es sich beim ersten Gewicht um den sog. “Bias” handelt; für eine ausführliche Erklärung zum Bias empfehle ich die angegebene Literaturquelle

5.2 Datenblätter

Pico-series Microcontrollers

MLX90642 Infrarot-Sensorfeld

5.3 Online Ressourcen

hackaday.io Projektseite (englisch) Einbrecheralarm

5.4 PCB-Erstellung

JLCPCB PCB Prototypes

KiCad

5.5 Literatur

1. Machine Learning für Softwareentwickler – Paolo Perrotta, dpunkt.verlag; ISBN 9783864907876 (1. Auflage)

2. Master the Raspberry Pi Pico in C: WiFi with lwIP & mbedtls – Harry Fairhead, I/O Press; ISBN 9781871962819 (First Edition)