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

Mikrocontroller mit Gehäuse.
Mikrocontroller mit Gehäuse (2023 Edition mit bronzefarbenem Deckel).

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:

Pinout des Arduino Nano 33 BLE Sense
Pinout des Arduino Nano 33 BLE Sense

Sensoren und deren Bibliotheken

IMU

Das Arduino Nano 33 BLE Sense Rev2 IMU System
Das Arduino Nano 33 BLE Sense Rev2 IMU System

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 MP34DT06JTR Mikrofon
Das MP34DT06JTR Mikrofon

Das digitale Mikrofon MP34DT06JTR kann mit der PDM Bibliothek, die bereits installiert ist, programmiert werden.

Gestensensor

Der APDS-9960 Gestensensor
Der APDS-9960 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 LPS22HB Luftdrucksensor
Der LPS22HB Luftdrucksensor

Der Luftdrucksensor LPS22HB kann mit der Bibliothek ArduinoLPS22HB programmiert werden.

Rel. Luftfeuchtigkeits- und Temperatursensor

Der HS3003 Temperatur- und Luftfeuchtigkeitssensor
Der HS3003 Temperatur- und Luftfeuchtigkeitssensor

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.

Hello_World.zip

Gesture To Emoji [1]

Mit Hilfe der IMU werden Sie dem Mikrocontroller Gesten beibringen und diese via eines Emojis anzeigen.

GestureToEmoji.zip

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.

FruitToEmoji.zip

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.

MicroSpeech

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