TinyML-Vibrationsanomalie-Erkennung auf Arduino Nano 33 BLE Sense Rev2
Ein leichtgewichtiges Softmax-Modell klassifiziert lokale IMU-Fenster als NORMAL oder ANOMALY und löst nach drei aufeinanderfolgenden Anomaliefenstern einen ALERT aus.
Rolle
Ich entwickelte die Pipeline von der synthetischen Datengenerierung und Merkmalsextraktion bis zum Modelltraining, C++-Export und zur Inferenz auf dem Arduino.
Kernergebnisse
- 98,61 %
- Offline-Testgenauigkeit · synthetischer Datensatz
- ~1 ms
- Gemessene Inferenzlatenz
- 12 % Flash · 19 % RAM
- Kompilierte Ressourcennutzung
Problem und Rahmenbedingungen
Kleine Lüfter und Motoren können vor einem Ausfall auffällige Vibrationen entwickeln. Ein Node-Device soll dies lokal, speicherschonend, ohne Cloud-Abhängigkeit und mit klarer Live-Ausgabe erkennen.
Sicherheit
Das Gerät verarbeitet Bewegungsdaten lokal und überträgt keine Sensordaten. Das Design bleibt in der Demo eigenständig und vermeidet Credentials, Netzabhängigkeit und externe Services.
Zuverlässigkeit
Der Sketch nutzt überlappende Fenster, normalisierte Features, eine Anomalie-Schwelle von 0.60 und eine 3-Fenster-ALERT-Persistenz, damit ein einzelner Störimpuls nicht sofort einen finalen Alarm auslöst.
Was ich gebaut habe
Ich habe balancierte synthetische Vibrationsfenster erzeugt, 20 statistische Features aus 2-Sekunden-IMU-Fenstern extrahiert, ein zweiklassiges Softmax-Modell trainiert, Mittelwerte, Standardabweichungen, Gewichte und Biases nach model_parameters.h exportiert und denselben Verarbeitungspfad in Arduino-C++ umgesetzt.
Architektur
Node-Device
Der Arduino Nano 33 BLE Sense Rev2 liest Beschleunigungsdaten mit 100 Hz, speichert 2-Sekunden-Rolling-Windows, extrahiert Features, führt Inferenz aus, druckt Serial-Monitor-Ausgabe und schaltet bei ALERT die LED.
Training-Umgebung
Python generiert den Datensatz, trainiert das Modell offline, validiert die Performance und exportiert die Modellparameter in einen kleinen C++-Header.
Ausgaben
Während der Inferenz ist keine Cloud erforderlich; der Laptop dient nur zum Programmieren, Kompilieren und Anzeigen des Serial Monitors in der Demo.
TinyML-Training und lokaler Inferenzfluss
End-to-End-TinyML-Architektur für Vibrationsanomalie-Erkennung: Offline-Training in Python, C++-Parameterexport, Arduino-Deployment, lokales IMU-Sampling, Softmax-Inferenz, Serial-Monitor-Ausgabe und Built-in-LED-Alerting.
Diagramm öffnen
TinyML-Training und lokaler Inferenzfluss
End-to-End-TinyML-Architektur für Vibrationsanomalie-Erkennung: Offline-Training in Python, C++-Parameterexport, Arduino-Deployment, lokales IMU-Sampling, Softmax-Inferenz, Serial-Monitor-Ausgabe und Built-in-LED-Alerting.
Was das Diagramm zeigt
- Trennt Offline-Training/Export vom Runtime-Pfad und macht klar, dass keine Cloud-Inferenz genutzt wird
- Zeigt den Embedded-Runtime-Loop: 100-Hz-Sampling, 2-Sekunden-Fenster, 50% Überlappung, 20 Features, Normalisierung, Softmax-Inferenz, Schwellwert und Persistenz
- Enthält die Projektnachweise: 98,61 % Offline-Genauigkeit, ca. 1 ms Inferenzlatenz, 12 % Flash-Nutzung und 19 % RAM-Nutzung
Technische Entscheidungen
- 100-Hz-IMU-Sampling mit 2-Sekunden-Fenstern und 50% Überlappung
- 20 leichtgewichtige Vibrationsfeatures aus X/Y/Z-Achsen und kombinierter Magnitude
- Zweiklassiger Softmax-Klassifikator direkt als C++ exportiert, ohne große Inferenz-Runtime
- Serial-Monitor-Ausgabe für Zeit, Zustand, Wahrscheinlichkeiten, Persistenzzähler und Latenz
- Onboard-LED-Alarm nach 3 aufeinanderfolgenden Anomaliefenstern
Validierung
- Klassifikator offline auf dem synthetischen balancierten Datensatz trainiert und bewertet.
- Serial-Monitor-Ausgabe für Zustand, Wahrscheinlichkeiten, Persistenzzähler und Latenz geprüft.
- Sketch auf dem Arduino Nano 33 BLE Sense Rev2 kompiliert und Flash-/RAM-Nutzung festgehalten.
Ergebnisse
98,61 %
98,61 % Offline-Testgenauigkeit auf dem synthetischen balancierten Datensatz erreicht
ca. 1 ms
ca. 1 ms Inferenzlatenz im Arduino Serial Monitor gemessen
12 %
Kompiliert mit 12 % Flash- und 19 % RAM-Nutzung auf dem Nano 33 BLE Sense Rev2
Live-Demo zeigte stabiles Board als NORMAL, Tippen/Schütteln als ANOMALY, anhaltende Bewegung als ALERT und Rückkehr zu NORMAL
Vollständiger Stack
Embedded-Hardware
Training-Pipeline
Runtime-Modell
Validierung
Artefakte
Nächster technischer Schritt
Geplante Arbeit
Das Modell mit real gemessenen Vibrationsdaten zusätzlich zum synthetischen balancierten Datensatz validieren.