Firmware-Architektur und Entwicklungsleitfaden für die drahtlose RADR-Fernbedienung
Dieser Abschnitt behandelt die RADR-Firmware, einschließlich ihrer Architektur, der Entwicklungsumgebung sowie der Frage, wie Sie die Codebasis ändern oder dazu beitragen können.
Firmware-Übersicht
RADR läuft auf einem ESP32-S3-Mikrocontroller mit benutzerdefinierter Firmware, die in C++ unter Verwendung des Arduino-Frameworks und PlatformIO geschrieben wurde.
| Komponente | Technologie |
|---|---|
| MCU | ESP32-S3 mit PSRAM |
| Framework | Arduino für ESP32 |
| Build-System | PlatformIO |
| Sprache | C++ |
| Displaybibliothek | TFT_eSPI |
| BLE-Stack | NimBLE |
Firmware-Version
| Komponente | Version |
|---|---|
| Hauptversion | 1 |
| Nebenversion | 0 |
| Patch-Version | 24 |
| Vollversion | 1.0.24 |
Suchen Sie regelmäßig nach Firmware-Updates, um auf neue Funktionen und Geräteunterstützung zuzugreifen.
Quellcode
Der vollständige Firmware-Quellcode ist auf GitHub verfügbar:
RADR Firmware
Durchsuchen Sie den Quellcode und die Dokumentation.
Architekturübersicht
Hauptkomponenten
| Komponente | Zweck |
|---|---|
| Zustandsmaschine | Verwaltet Bildschirmzustände und den Navigationsfluss |
| Gerätemanager | Verwaltet die Erkennung und Verbindung von Bluetooth-Geräten |
| Displaytreiber | Rendert die Benutzeroberfläche mit TFT_eSPI und Canvas-Pufferung |
| Eingabeverarbeitung | Verarbeitet Eingaben von Encoder, Tasten und Bumper |
| Feedback-System | Steuert LEDs, Summer und Vibration |
| Geräteregistrierung | Ordnet Bluetooth-UUIDs Gerätetypen zu |
Kerndienste
├── BluetoothService # BLE scanning and connection
├── DisplayService # Screen rendering
├── InputService # Encoder and button handling
├── FeedbackService # LED, buzzer, vibration
├── DeviceService # Connected device control
├── WiFiService # WiFi and OTA updates
└── StorageService # LittleFS configurationEntwicklungsumgebung
Voraussetzungen
- Visual Studio Code
- PlatformIO-Erweiterung
- USB-C-Kabel zum Flashen
Erste Schritte
Klonen Sie das Repository
git clone https://github.com/researchanddesire/radr-wireless-remote.git
cd radr-wireless-remote/SoftwareIn VS Code öffnen
Öffnen Sie den Ordner Software in VS Code. PlatformIO erkennt die Projektkonfiguration automatisch.
Kompilieren Sie die Firmware
Klicken Sie auf die Schaltfläche „PlatformIO Build“ oder führen Sie Folgendes aus:
pio runAuf das Gerät flashen
Verbinden Sie RADR über USB-C und klicken Sie auf „Upload“ oder führen Sie Folgendes aus:
pio run --target uploadHauptmerkmale
Canvas-basiertes Rendering
RADR verwendet doppelt gepuffertes Canvas-Rendering für reibungslose Anzeigeaktualisierungen:
- Vollbild-Sprites verhindern ein Flackern
- Teilweise Aktualisierungen für leistungskritische Bereiche
- Konsistente UI-Aktualisierungsrate von 60 Bildern pro Sekunde
Zustandsmaschinenarchitektur
Die Benutzeroberfläche verwendet eine hierarchische Zustandsmaschine:
- Klare Übergänge zwischen Bildschirmen
- Isolierte Zustandslogik für jeden Bildschirm
- Ereignisgesteuerte Eingabeverarbeitung
Geräteregistrierung
RADR unterstützt mehrere Gerätetypen über eine zweistufige Registrierung:
| Registrierung | Beschreibung |
|---|---|
| Eingebaut | Unterstützung für fest codierte R+D-Geräte (OSSM) |
| Dynamisch | JSON-basierte Buttplug.io-Gerätedefinitionen |
Die dynamische Registrierung (registry.json) kann über Firmware-Updates aktualisiert werden, um neue Geräteunterstützung ohne Codeänderungen hinzuzufügen.
Konfigurationsdateien
| Datei | Zweck |
|---|---|
platformio.ini | Build-Konfiguration und Abhängigkeiten |
src/config.h | Definitionen und Konstanten der Hardware-Pins |
data/registry.json | Buttplug.io-Geräte-UUID-Zuordnungen |
Technische Referenz
Web Flasher
Flashen Sie die Firmware mit dem webbasierten Tool.
BLE-Kommunikation
Details zum Bluetooth-Protokoll und zur Gerätekommunikation.
Mitwirken
Lesen Sie die Beitragsrichtlinien, bevor Sie eine Änderung am main-Zweig einreichen.
Codestil
- Befolgen Sie die vorhandene Codeformatierung
- Verwenden Sie beschreibende Variablen- und Funktionsnamen
- Dokumentieren Sie öffentliche Funktionen und komplexe Logik
- Testen Sie Änderungen auf der tatsächlichen Hardware, bevor Sie sie einreichen
Lizenz
Die RADR-Firmware wird unter der CERN Open Hardware Licence Version 2 - Strongly Reciprocal (CERN-OHL-S v2) veröffentlicht. Weitere Informationen finden Sie in der Lizenzdatei.