Softwareoverzicht

Firmwarearchitectuur en ontwikkelingsgids voor de draadloze RADR-afstandsbediening

In dit gedeelte wordt de RADR-firmware besproken, inclusief de architectuur, de ontwikkelomgeving en hoe u de codebase kunt wijzigen of eraan kunt bijdragen.

Firmware-overzicht

RADR draait op een ESP32-S3-microcontroller met aangepaste firmware geschreven in C++ met behulp van het Arduino-framework en PlatformIO.

OnderdeelTechnologie
MCUESP32-S3 met PSRAM
FrameworkArduino voor ESP32
Build-systeemPlatformIO
TaalC++
DisplaybibliotheekTFT_eSPI
BLE-stackNimBLE

Firmwareversie

OnderdeelVersie
Grote versie1
Kleine versie0
Patch-versie24
Volledige versie1.0.24

Controleer regelmatig op firmware-updates om toegang te krijgen tot nieuwe functies en apparaatondersteuning.

Broncode

De volledige firmwarebroncode is beschikbaar op GitHub:

RADR Firmware

Blader door de broncode en documentatie.

Architectuuroverzicht

Hoofdcomponenten

OnderdeelDoel
ToestandsmachineBeheert schermtoestanden en de navigatiestroom
ApparaatbeheerBeheert het detecteren en verbinden van Bluetooth-apparaten
BeeldschermstuurprogrammaRendert de gebruikersinterface met TFT_eSPI en canvasbuffering
InvoerverwerkingVerwerkt invoer van de encoder, knoppen en bumpers
FeedbacksysteemRegelt LED's, zoemer en trillingen
ApparaatregisterWijst Bluetooth-UUID's toe aan apparaattypen

Kernservices

├── 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

Ontwikkelingsomgeving

Vereisten

Aan de slag

Kloon de repository

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

Openen in VS Code

Open de map Software in VS Code. PlatformIO detecteert automatisch de projectconfiguratie.

Bouw de firmware

Klik op de PlatformIO Build-knop of voer het volgende uit:

pio run

Flash de firmware naar het apparaat

Sluit RADR aan via USB-C en klik op Upload, of voer het volgende uit:

pio run --target upload

Belangrijkste kenmerken

Op canvas gebaseerde weergave

RADR maakt gebruik van dubbelgebufferde canvasweergave voor soepele weergave-updates:

  • Sprites op volledig scherm voorkomen flikkering
  • Gedeeltelijke updates voor prestatiekritieke gebieden
  • Consistente UI-vernieuwingssnelheid van 60 fps

Architectuur van de toestandsmachine

De gebruikersinterface gebruikt een hiërarchische toestandsmachine:

  • Duidelijke overgangen tussen schermen
  • Geïsoleerde toestandslogica voor elk scherm
  • Gebeurtenisgestuurde invoerverwerking

Apparaatregister

RADR ondersteunt meerdere apparaattypen via een register met twee niveaus:

RegisterBeschrijving
IngebouwdOndersteuning voor hardgecodeerde R+D-apparaten (OSSM)
DynamischJSON-gebaseerde Buttplug.io-apparaatdefinities

Het dynamische register (registry.json) kan via firmware-updates worden bijgewerkt om nieuwe apparaatondersteuning toe te voegen zonder codewijzigingen.

Configuratiebestanden

BestandDoel
platformio.iniBuildconfiguratie en afhankelijkheden
src/config.hHardware-pindefinities en constanten
data/registry.jsonButtplug.io-apparaat-UUID-toewijzingen

Technische referentie

Bijdragen

Lees de richtlijnen voor bijdragen voordat u een wijziging indient voor de main-tak.

Codestijl

  • Volg de bestaande codeopmaak
  • Gebruik beschrijvende variabelen- en functienamen
  • Documenteer publieke functies en complexe logica
  • Test wijzigingen op daadwerkelijke hardware voordat u ze indient

Licentie

De RADR-firmware wordt uitgebracht onder de CERN Open Hardware Licence Version 2 - Strongly Reciprocal (CERN-OHL-S v2). Zie de licentie in de repository voor meer informatie.

Op deze pagina