Machine Learning auf Mikrocontrollern
Hier erhalten Sie eine kurze Anleitung zur Benutzung der Hardware und die Dateien für die Teilprojekte
Die Hardware
Das Päckchen, dass Sie erhalten haben enthällt folgende Teile:
Arduino Nano 33 BLE Sense
USB 2.0 Kabel, A Stecker auf Micro B Stecker, 1,0 m
3D gedrucktes Gehäuse für den Mikocontroller
Agenda
Tag 1
Kennenlernen der Teilnehmer.
-
Installation der Programmierumgebung:
PlatformIO
Google Colab (wird an Tag 2/3 fürs Training benötigt)
-
Kennenlernen des Mikrocontrollers:
Wie legt man ein neues Projekt für diesen Miktocontoller an.
Welche Sensoren sind verbaut (Eckdaten der Sensoren)?
Wie spricht man die einzelnen Sensoren an?
Tag 2
-
Das “Hello Wold!” des maschinellen Lernens auf dem Mikrocontroller:
Erzeugen/Sammeln der Training-, Validierungs- und Testdaten
Erstellen eine neuronalen Netzes in Keras.
Trainieren/validieren/testen des Netzes.
Konvertieren in ein Tenserflow Lite Model
Umwandeln des TFLite Models in ein C-Header Datei.
Implementation des Modells auf dem MC.
Verändern der gelernten Funktion
Tag 3
-
Gesture to Emoji
Gestenerkennung mit der eingebauten IMU
-
Fruit to Emoji
Objekterkennung anhand der Farbe
-
Stopworterkennung (“Alexa” / “OK Google”):
Yes/No Erkennung
Eigenes Stopwort (evtl. selbst aufnehmen) ← Dauert sehr lange (ca 2h fürs Trainieren + Zeit für Aufnahme und Nachbearbeiteung des Stopworts)
Software
PlatformIO
Auf PlatformIO IDE sieht man, wie man PlatformIO als Erweiterung in VSCode installiert.
Nun müssen wir noch einige weitere hilfreiche Erweiterungen und die Toolchain für unser Board installieren:
Google Colab
Google Colab bietet die Möglichkeit Python Code in einer Weboberfläche auszuführen. In der kostenlosen Variante wird die darunterliegende virtuelle Maschine nach 90 min Inaktivität beendet. Ferner könne Sie pro Tag ca 12h GPU/TPU Rechenleistung nutzen (allerdings wird dies von google evtl. dynamisch angepasst).
Serial Plotter
Wir verwenden SerialPlot - Realtime Plotting Software um Daten, die der Mikrocontroller via serieller Schnittstelle sendet, darzustellen.
Download:
Unter Linux lade AppImage herunter und mach es ausführbar.
Unter Windows benutze win32-setup.exe und installiere das Programm.
Leider gibt es keine Version für MacOS. Hier kann man auf die normale Arduino IDE zurückgreifen und dort den SerialPlotter verwenden.
Der Mikrocontroller
Sie sehen unten eine schematische Darstellung des Arduino Nano 33 BLE Sense wo alle verbauten Sensoren markiert sind.
Und hier noch das Pinout des Mikrocontrollers:
Sensoren und deren Libraries
IMU
Die IMU (inertia measuring unit) LSM9D1 enthält einen 3-Achsen Beschleunigungssensor, ein 3-Achsen Gyroskop und ein 3-Achsen Magenetometer (Kompass). Sie kann mit ArduinoLSM9DS1 programmiert werden.
Wichtig: Verwenden Sie die Version 1.1.0 da dort der Continous Modus implementiert ist.
Digitale Mikrofon
Das digitale Mikrofon MP34DT05 kann mit der PDM Bibliothek, die bereits installiert ist, programmiert werden.
Gestensensor
Der Gestensensor APDS9960 kann einfache Gesten, Farbe, Helligkeit und Annäherung messen. Mit der Bibliothek ArduinoAPDS9960 kann man auf den Sensor zugreifen.
Luftdrucksensor
Der Luftdrucksensor LPS22HB kann mit der Bibliothek ArduinoLPS22HB programmiert werden.
Rel. Luftfeuchtigkeits- und Temperatursensor
Der Sensor HTS221 kann mit der Bibliothek ArduinoHTS221 programmiert werden.
Machine Learning Aufgaben
Hello World!
Hier lernen Sie die Grundzüge des Maschine Learnings auf Mikrocontrollern.
Sie werden dem Mikrocontroller beibringen die Form einer Sinus Kurve zu produzieren.
Gesture To Emoji [1]
Mit Hilfe der IMU werden Sie dem Mikrocontroller Gesten beibringen und diese via eines Emojis anzeigen.
Hier ist der Link zur Anzeigeseite für Emojis.
Und auf dieser Seite finden Sie die Tabellen für Unicodes: Emoji unicode characters for use on the web.
Fruit to Emoji [1]
Schließlich sollen Sie in dieser Aufgabe dem Mikrocontroller beibringen verschieden Früchte (oder auch andere Objekte) anhand ihrer Farbe zu erkennen und das Ergebnis als Emoji darstellen.
Micro Speech [2]
Hier wird dem Mikrocontroller beigebracht auf sogenannte Stop words zu reagieren.
Diese Aufgabe ist bereits als Beispiel in der TensorFlowLite Bibliothek enthalten.
Einen Link zur Trainingbeschreibung und des Jupyter Notebooks finden Sie hier: MicroSpeechTraining.
Ebenfalls nützlich ist der folgende Link: How to Do Speech Recognition with Arduino | Digi-Key Electronics - YouTube
Weiterführende Links und Fußnoten
- In den nachfolgenden Videos wir noch einmal das "Hello World!" Beispiel
-
beschrieben:
Bei diesen Videos wird das Trainieren des Spracherkennungs Modells beschrieben. Achtung: Diese Videos beschreiben das Vorgehen auf dem Raspberry Pi und nicht auf den Arduino! Allerdings ist das Vorgehen ähnlich.