Eigene MicroPython-Firmware mit USB-HID für RP2040 erstellen
Erste vorläufige Anleitung[Bearbeiten | Quelltext bearbeiten]
Eigene MicroPython-Firmware mit USB-HID für RP2040 erstellen[Bearbeiten | Quelltext bearbeiten]
Ziel[Bearbeiten | Quelltext bearbeiten]
Für das Projekt WikiPad wird eine eigene MicroPython-Firmware erstellt.
Die Firmware soll folgende Eigenschaften besitzen:
- USB-CDC (REPL)
- USB-HID
- USB-HID-Keyboard
- später LVGL
- später Displaytreiber (ILI9488)
- später Touchtreiber (XPT2046)
In der ersten Ausbaustufe wird ausschließlich die USB-Funktionalität betrachtet.
Entwicklungsrechner[Bearbeiten | Quelltext bearbeiten]
Verwendetes System:
Ubuntu 26.04 LTS
Kernel 7.0
x86_64Vorhandene Werkzeuge:
git
cmake
python3
arm-none-eabi-gccGrundlagen[Bearbeiten | Quelltext bearbeiten]
MicroPython verwendet für den RP2040 den USB-Stack TinyUSB.
Die offizielle Standard-Firmware enthält eine USB-CDC-Schnittstelle (REPL), stellt jedoch keine Python-Module für USB-HID zur Verfügung.
Die Unterstützung für USB-Geräte wird über zusätzliche Python-Module realisiert, die beim Erstellen der Firmware eingefroren ("frozen") werden.
Frozen Modules[Bearbeiten | Quelltext bearbeiten]
MicroPython besitzt ein Manifest-System zum Einbinden zusätzlicher Python-Module.
Ein Manifest wird beim Erstellen der Firmware ausgewertet und bestimmt, welche Bibliotheken dauerhaft Bestandteil der Firmware werden.
Die offizielle Dokumentation beschreibt dieses Verfahren ausführlich.
USB-Module[Bearbeiten | Quelltext bearbeiten]
Nach aktuellem Stand existieren folgende USB-Module:
usb-device
usb-device-cdc
usb-device-hid
usb-device-keyboard
usb-device-mouse
usb-device-midiDiese Module werden über das Manifest eingebunden.
Beispiel:
require("usb-device")
require("usb-device-cdc")
require("usb-device-hid")
require("usb-device-keyboard")Erwartetes Ergebnis[Bearbeiten | Quelltext bearbeiten]
Nach erfolgreichem Erstellen der Firmware sollte der RP2040 dem PC gleichzeitig zwei USB-Geräte bereitstellen:
RP2040
USB Composite Device
├── CDC
│ └── REPL
│
└── HID
└── KeyboardDadurch kann die Firmware weiterhin mit Thonny verwendet werden, während gleichzeitig Tastaturdaten an den PC übertragen werden.
Projektplan[Bearbeiten | Quelltext bearbeiten]
Phase 1
- MicroPython selbst erstellen
- USB-Module einbinden
- Firmware erzeugen
- Firmware testen
Phase 2
- erstes HID-Testprogramm
- einzelne Tastencodes senden
- HID-Reports senden
Phase 3
- UART-Protokoll
- RP2040 als HID-Ausgabegerät
Phase 4
- CYD mit LVGL
- Makrotastatur
- JSON-Konfiguration
Offene Punkte[Bearbeiten | Quelltext bearbeiten]
Vor Beginn der eigentlichen Implementierung sind folgende Punkte zu überprüfen:
- Wo befinden sich die USB-Module im Repository?
- Werden sie automatisch mit ausgecheckt oder stammen sie aus micropython-lib?
- Welche Änderungen sind im Manifest erforderlich?
- Ist USB-CDC + USB-HID für den RP2040 vollständig unterstützt?
- Sind zusätzliche Build-Optionen erforderlich?
Erst nach Klärung dieser Punkte sollte die Firmware erstellt werden.