Softwareübersicht

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.

KomponenteTechnologie
MCUESP32-S3 mit PSRAM
FrameworkArduino für ESP32
Build-SystemPlatformIO
SpracheC++
DisplaybibliothekTFT_eSPI
BLE-StackNimBLE

Firmware-Version

KomponenteVersion
Hauptversion1
Nebenversion0
Patch-Version24
Vollversion1.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

KomponenteZweck
ZustandsmaschineVerwaltet Bildschirmzustände und den Navigationsfluss
GerätemanagerVerwaltet die Erkennung und Verbindung von Bluetooth-Geräten
DisplaytreiberRendert die Benutzeroberfläche mit TFT_eSPI und Canvas-Pufferung
EingabeverarbeitungVerarbeitet Eingaben von Encoder, Tasten und Bumper
Feedback-SystemSteuert LEDs, Summer und Vibration
GeräteregistrierungOrdnet 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 configuration

Entwicklungsumgebung

Voraussetzungen

Erste Schritte

Klonen Sie das Repository

git clone https://github.com/researchanddesire/radr-wireless-remote.git
cd radr-wireless-remote/Software

In 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 run

Auf das Gerät flashen

Verbinden Sie RADR über USB-C und klicken Sie auf „Upload“ oder führen Sie Folgendes aus:

pio run --target upload

Hauptmerkmale

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:

RegistrierungBeschreibung
EingebautUnterstützung für fest codierte R+D-Geräte (OSSM)
DynamischJSON-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

DateiZweck
platformio.iniBuild-Konfiguration und Abhängigkeiten
src/config.hDefinitionen und Konstanten der Hardware-Pins
data/registry.jsonButtplug.io-Geräte-UUID-Zuordnungen

Technische Referenz

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.

Auf dieser Seite