RGB-Lichter per TinyML-Schlüsselworterkennung steuern
Komponenten und Materialien
| Arduino Nano 33 BLE Sense | 1 Stück |
Apps und Online-Dienste
- Edge Impulse Studio
Projektbeschreibung
Maschinelles Lernen am Edge (TinyML) ermöglicht „intelligente“ Geräte mit weit weniger Programmieraufwand als klassische Logik. Hier wird ein Schlüsselwort-Erkennungsmodell trainiert, das gesprochene Befehle („on“, „off“, „red“, „green“, „blue“) erkennt und die onboard RGB-LED des Nano 33 BLE Sense entsprechend steuert.
Hardware
Nur der Arduino Nano 33 BLE Sense: Er besitzt Mikrofon, 9-Achsen-IMU, Umweltsensor, APDS-9960 (Gestik/Nähe/Farbe/Licht) und einen nRF52840 (64 MHz, 1 MB Flash, 256 KB RAM). Die onboard RGB-LED (Pins 22/23/24) dient als Ausgabe.
Edge Impulse einrichten
- Neues Projekt in Edge Impulse Studio anlegen.
- Edge Impulse CLI installieren, Firmware auf den Nano flashen (Doppelklick Reset → Bootloader, dann
flash_windows.bat). edge-impulse-daemonstarten, Wizard durchlaufen → Board erscheint in Geräteliste.
Datensammlung (Training)
Je ca. 1 Minute Audio pro Klasse aufnehmen (Wort im 1–2-Sekunden-Abstand wiederholen, dann splitten):
- on, off, red, green, blue
Zusätzlich: Rauschen („noise“) und unbekannte Wörter („unknown“) aus Edge-Impulse-vordefinierten Datensätzen hochladen. Datensatz auf 80 % Training / 20 % Test aufteilen.
Modelltraining
- Impulse: Audio-Time-Series, Fenster 1000 ms, Schritt 500 ms.
- DSP-Block: MFCC (Mel-Frequency Cepstral Coefficients) mit Spektrogramm-Ansicht.
- Lernblock: Keras Neural Network. Anpassungen: Confidence Threshold 0,70 (statt 0,80), Data Augmentation (Rauschen, Time-Masking) gegen Overfitting.
Deployment auf Arduino Nano 33 BLE Sense
Modell als Arduino-Bibliothek herunterladen, in Arduino IDE importieren, kompilieren & flashen. Der Nano fungiert als immer-aktives Mikrofon: kontinuierliche Audio-Abtastung, Inferenz, bei Erkennung eines Keywords → Index → Farbe setzen (on/off = Grau/Schwarz, red/green/blue = entsprechende Farbe).
Arduino-Code (Auszug)
#define EI_CLASSIFIER_SLICES_PER_MODEL_WINDOW 3
#define CONFIDENCE_THRESHOLD 0.7
#include <PDM.h>
#include <keyword_detection_inference.h>
#include <map>
static const uint32_t colors[] = {0x00ff0000, 0x0000ff00, 0x000000ff}; // R, G, B
enum Actions { LED_ON=1, LED_OFF=0, LED_RED=2, LED_GREEN=3, LED_BLUE=4, NONE=5 };
enum Functions { CHANGE_LED_ON_OFF=0, CHANGE_LED_COLOR=1, CHANGE_LED_NONE=2 };
static const uint8_t redPin=22, greenPin=23, bluePin=24;
const std::map actionToFunctionMap = { ... };
const std::map labelToActionMap = {
{"on", LED_ON}, {"off", LED_OFF}, {"red", LED_RED},
{"green", LED_GREEN}, {"blue", LED_BLUE}, {"unknown", NONE}, {"noise", NONE}
};
// PDM-Mikrofon-Setup, Inferenz-Loop, performAction() setzt LED-Farbe per analogWrite()
// Vollständiger Code im Originalprojekt.
Ergebnis: Das Gerät reagiert zuverlässig auf die fünf Keywords, ignoriert Hintergrundgeräusche und unbekannte Wörter. Die onboard RGB-LED visualisiert den erkannten Befehl sofort.
Herstellungsprozess
- Industrial IoT Security: Schlüsseltrends und Best Practices für 2020
- Edge & Cloud Computing im IoT: Ein prägnanter evolutionärer Überblick
- Warum Edge Computing für IoT-Erfolg essenziell ist
- Kontron KBox A‑150‑WKL: High-Performance, Low-Power IoT Edge PC für Industrial Automation
- Edge Computing: KI-Einsatz am Netzwerkrand beschleunigen
- Vier bewährte Schritte für erfolgreichen Edge-Computing-Einsatz in Smart Factories
- Microsoft stellt Azure Edge Zones für 5G-fähige IoT- und KI-Workloads vor
- Warum Open Source Innovation am Edge antreibt – Essential eBook
- Ultraempfindliches Chemiewaffen-Detektionssystem für Bedrohungen niedriger Konzentration
- Warum Gaswarngeräte in Top-Zustand gehalten werden müssen: 3 wesentliche Gründe