Machine Learning auf Mikrocontrollern
Hier erhalten Sie eine kurze Anleitung zur Benutzung der Hardware und die Dateien für die Teilprojekt.
Die Hardware
Das Päckchen, dass Sie erhalten haben enthält folgende Teile:
Arduino Nano 33 BLE Sense ✨ Rev2 ✨
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 Mikrocontroller an.
Welche Sensoren sind verbaut (Eckdaten der Sensoren)?
Kalibrieren der IMU.
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 Tensorflow 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 (vgl. “Alexa” / “OK Google”):
Yes/No Erkennung
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).
Der Mikrocontroller
Sie sehen unter Arduino Nano 33 BLE Sense Rev2 eine Übersicht über den Mikrocontroller und der verbauten Peripherie.
Hier der Link zum Nano 33 BLE Sense Rev2 Cheat Sheet wo alle verbauten Sensoren erklärt sind sind.
Und hier noch das Pinout des Mikrocontrollers:
Sensoren und deren Bibliotheken
IMU
Die IMU (inertia measuring unit) BMI270 und BMM150 enthält einen 3-Achsen (BMI270) Beschleunigungssensor, ein 3-Achsen Gyroskop (BMI270) und ein 3-Achsen Magnetometer (BMM150) (Kompass). Sie kann mit Arduino_BMI270_BMM150 programmiert werden.
Digitale Mikrofon
Das digitale Mikrofon MP34DT06JTR 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 HS3003 kann mit der Bibliothek Arduino_HS300x programmiert werden.
Aufgaben zur Einführung in den Arduino Nano 33 BLE Sense Rev2
Für die Einführung benutzen wir die Daten aus Introduction.zip.
Kalibrieren des Gyroskops und des Beschleunigungssensors
Hier lernen Sie, wie man die o.G. Sensoren kalibriert.
Wir benötigen die Daten aus dem Verzeichnis jupyter und platformio/01_IMU.
Ausprobieren der verschiedenen Sensoren
Im Verzeichnis platformio befinden sich Beipielprojekte für die verbauten Sensoren.
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.