Raspberry Pi Pico: Neuronales Netz mit Daten vom MPU-6050 trainieren
In diesem KI-Projekt wird ein einfacher Ansatz zur Bewegungserkennung mithilfe eines neuronalen Netzes direkt auf einem Raspberry Pi Pico umgesetzt. Ein MPU-6050-Sensor erfasst Beschleunigungs- und Rotationsdaten, aus denen charakteristische Muster für bestimmte Bewegungen wie z. B. „ruhig“ oder „schütteln“ extrahiert werden.
Der MPU-6050 ist als Sensor besonders gut für KI-Projekte geeignet, weil er mit seinen 6 Kanälen sehr viele Informationen liefert, die sich gut für die Klassifikation eignen. Er ist Ideal für eine dynamische Erkennung von Bewegung, Haltung und Aktivität.
KI-typisch besteht das Projekt aus drei Phasen:
- Datenerfassung: Sensorwerte werden gesammelt und mit Label (Klassifikation) versehen.
- Training: Ein kleines künstliches neuronales Netz wird direkt auf dem Raspberry Pi Pico trainiert.
- Inferenz: Das trainierte KI-Modell wird verwendet, um Bewegungen in Echtzeit zu klassifizieren.
Das Projekt zeigt, dass auch auf einem Mikrocontroller mit begrenzten Ressourcen einfache KI-Anwendungen ohne externe Tools, Lösungen und Dienste realisierbar sind. Alle Programmcodes laufen auf einem Raspberry Pi Pico.
Übersicht: Grundlagen zur künstlichen Intelligenz (KI)
- Künstliche Intelligenz (KI) / Artificial Intelligence (AI)
- Machine Learning / Maschinelles Lernen
- Künstliche neuronale Netze (KNN)
Aufbau und Bauteile
Raspberry Pi Pico | MPU-6050 | |
---|---|---|
Pin 38 | GND | GND |
Pin 36 | VCC +3,3V | VCC |
Pin 27 | GPIO 21 | SCL |
Pin 26 | GPIO 20 | SDA |
I2C verbinden und programmieren
- Raspberry Pi Pico: Grundlagen zum I2C
- Raspberry Pi Pico: I2C verbinden und programmieren
- Raspberry Pi Pico: Troubleshooting I2C - Fehler, Probleme und Lösungen
Schnell und einfach alle Bauteile zusammen bestellen
Download
Das gesamte Projekt besteht aus mehreren Dateien mit Programmcode und Daten, die unterschiedliche Aufgaben haben. Im folgenden werden die einzelnen Dateien beschrieben und wie sie zu benutzen sind.
Bibliothek für MPU-6050 (mpu6050.py)
Zur softwareseitigen Ansteuerung des MPU-6050 benötigst du eine Bibliothek. Die Bibliothek stellt nur die notwendigsten Funktionen bereit, um die Beschleunigungsdaten (get_accel_data) und Gyroskopdaten (get_gyro_data) aller drei Raumachsen (x, y, z) auszulesen. Die Sensorwerte werden in physikalischen Einheiten (g, °/s) zurückgegeben.
Programmcode: Datensätze sammeln (1_data_collect.py)
Dieser Programmcode sammelt Sensordaten vom MPU-6050 und speichert sie zusammen mit einem Label (ruhig und schütteln) in einer Datei „data_collect.txt“.
Wenn du die Daten nicht sammeln kannst oder nicht willst, dann verwende den bereits erstellten Trainingsdatensatz für das Training des neuronalen Netzes.
Programmcode: Neuronales Netz trainieren (2_nn_training.py)
Der Programmcode lädt die Datei „data_collect.txt“, trainiert ein kleines neuronales Netz und speichert die gelernten Gewichte in der Datei „data_training.txt“.
Wenn du das neuronale Netz nicht trainieren kannst oder nicht willst, dann verwende die Datei mit den bereits berechneten Gewichte für die Klassifikation.
Programmcode: Klassifikation (3_nn_inverence.py)
Der Programmcode lädt die gespeicherten Gewichte und klassifiziert anschließend alle Bewegungen in Echtzeit in „schütteln“ oder „ruhig“.
Anleitung: Wie die Programmcodes zu benutzen sind
Im Gegensatz zu anderen Projekten sind KI-Projekte komplexer. Allein schon deshalb, weil man in der Regel Daten zum Trainieren erzeugen oder beschaffen muss, anschließend das neuronale Netz trainieren, um danach das Modell anwenden zu können.
1. Datensätze fürs Training erzeugen und sammmeln (1_data_collect.py)
Um ein neuronales Netz für Bewegungserkennung zu trainieren, müssen zunächst Trainingsdaten gesammelt werden. Dabei misst der Raspberry Pi Pico mit dem MPU-6050-Sensor kontinuierlich die Beschleunigungs- und Gyroskopdaten in mehreren Achsen.
Für jede Bewegungsart (z. B. „ruhig“ oder „schütteln“) wird jeweils eine Messreihen aufgenommen. Jeder dieser Datensätze wird mit einem Label versehen (z. B. 0 = ruhig, 1 = schütteln) und gemeinsam in einer Datei gespeichert. Diese Datei dient später als Grundlage für das Training des neuronalen Netzes.
Nach dem Starten des Programmcodes muss man den Aufbau schütteln, bis die Datenaufzeichnung abgeschlossen ist. Das dauert aber nur wenige Sekunden. Danach werden die Daten in einer Datei gespeichert.
2. Neuronales Netz trainieren (2_nn_training.py)
Beim Training des neuronalen Netzes werden die aufgezeichneten Trainingsdaten (Sensorwerte + Label) eingelesen und mithilfe eines einfachen Backpropagation-Algorithmus die Netzwerkgewichte angepasst.
Das Ziel ist, dass das Netz aus den Beispielen lernt, typische Muster von Bewegungen wie „ruhig“ oder „schütteln“ zu erkennen. Nach dem Training werden die gelernten Gewichte in einer Datei gespeichert, um sie später für die Klassifikation zu nutzen.
3. Anwenden der Klassifikation (3_nn_inference.py)
Beim Inferencing wird das zuvor trainierte neuronale Netz, mit neuen Sensordaten des MPU-6050 in Echtzeit analysiert. Dazu werden die zuvor gespeicherten Gewichte des Modells geladen und genutzt, um die Bewegungen „schütteln“ oder „ruhig“ zu erkennen.
Die Bewegungsklasse wird anhand der Netzwerkausgabe bestimmt und kann zur Steuerung von Aktionen oder zur Anzeige genutzt werden.
Weitere verwandte Themen:
- Raspberry Pi Pico: MPU-6050 programmieren
- Raspberry Pi Pico: Bewegung und Erschütterung erkennen mit dem MPU-6050
- Raspberry Pi Pico: Künstliche Intelligenz (KI)
- Raspberry Pi Pico: Einfaches neuronales Netz trainieren und anwenden (KI)
Frag Elektronik-Kompendium.de
Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython
Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.
- LED: Einschalten, ausschalten, blinken und Helligkeit steuern
- Taster: Entprellen und Zustände anzeigen
- LED mit Taster einschalten und ausschalten
- Ampel- und Lauflicht-Steuerung
- Elektronischer Würfel
- Eigene Steuerungen programmieren
Online-Workshop: Programmieren mit dem Raspberry Pi Pico
Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.
Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.