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 wie man offensichtlich erkennt nicht komplex ist.

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 (Pin 36) die bereits mit mehreren Kondensatoren gestützt wird (siehe Pico W Schaltplan bzw. Datenblatt).

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 der ich nicht arbeite (meine Tests gingen bis max. 400 kHz), 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 oder “Machine Learning” (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 und Vieles ist nicht trivial, daher verweise ich auf Literaturquelle 2.

Der zweite Schritt war ein ML-Programm mit einer ausreichend großen Zahl an Messungen zu trainieren.
Hier ist die Sprache Python1 besonders nützlich: ein “Webcrawling”-Programm auf meinem Raspberry Pi 5 greift die so strukturierten Temperaturmessdaten ab und speichert sie in einem Textfile.
Mehrere solcher Messungen – für erste Versuche reichen etwa zwanzig Messungen, je mehr Trainingsdaten desto besser die Vorhersagen – kopiere ich dann per Hand mit einem “Einbrecher ja oder nein” (binär 1 oder 0) Kategorielabel in ein größeres Textfile.
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 kontinuierlichen Zeitabständen Temperaturmessdaten abruft (man könnte auch andere, grundsätzlich besser geeignete Methoden wie MQTT implementieren), visuell darstellt, und anhand der Gewichte die Entscheidung “Einbrecher ja oder nein” trifft.
Der Rest ist der Phantasie des Entwicklers überlassen.
Naheliegend ist die Aktivierung eines Alarms, neben der Generierung niedrigauflösender Wärmebilder (eben mit der Auflösung 32×24) auf einem Raspberry Pi oder Windows Rechner.
3. Prototyp
All das Gesagte nun in ein Video kondensiert und veranschaulicht.
Sinnvollerweise wird ein produktives System in der Praxis an verborgener Position angebracht, die Sichtweite des Sensors beträgt durchaus einige Meter.
Es laufen eine Prototypen SW-Version 1.00 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 nicht zu erreichen, doch ist das System an sich schon weit gereift und flexibel ausgelegt.
Übertragungsgeschwindigkeiten, Miniaturisierung, erweitertes ML, Entwicklung einer eigenen Smartphone-App für die Fernüberwachung, Fusionierung von Raspberry Pi Kamera und Sensor (siehe Visualisierung am Kopf des Artikels) sind gewiss lohnende Themen auf welche 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; Micropython wäre die Sprache für den Mikrocontroller
2 es sind 1 + 768 Gewichte (oft abgekürzt mit w für “weight”), 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
5.3 Online Ressourcen
hackaday.io Projektseite (englisch) Einbrecheralarm
5.4 PCB-Erstellung
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)
