Skip to content

Arduino Library Overview

RadioKit is a powerful, object-oriented Arduino library that bridges your hardware and a highly customizable mobile dashboard. It allows you to build industrial-grade control interfaces using simple C++ structures.

  • Zero Configuration: The UI is defined in your Arduino code; the app dynamically builds the dashboard upon connection.
  • Reliable Communication: Built-in sequence tracking and retransmission for critical commands (VAR_UPDATE, META_UPDATE).
  • Spring Physics: High-fidelity spring simulations for sliders, knobs, and joysticks.
  • Multiple Transports: BLE (NimBLE), Serial (USB/UART), WiFi (WebSocket), and Cloud relay — all can run simultaneously.
  • NVS Persistence: Device configuration (name, passwords, WiFi/Cloud credentials) survives power cycles via ESP32 NVS.
  • OTA Firmware Updates: Over-the-air firmware updates via the companion app.
  • Filesystem Access: Browse, read, write, and manage files on the device’s LittleFS partition from the app.
  • Print Stream: Transport-agnostic RadioKit.print() API sends messages to the app’s console.
WidgetClassTypeDescription
Push ButtonRK_PushButtonInputMomentary (true while held)
Toggle ButtonRK_ToggleButtonInputLatching on/off
Slide SwitchRK_SlideSwitchInputiOS-style slide toggle
Rocker SwitchRK_RockerSwitchInputRocker-style on/off
SliderRK_SliderInputLinear -100..+100
Gas PedalRK_GasPedalInputSlider variant, springs to min
KnobRK_KnobInputRotary -100..+100
Steering WheelRK_Knob (variant)InputKnob variant, springs to center
JoystickRK_JoystickInput2-axis (-100..+100 each)
Multi ButtonRK_MultipleButtonInputRadio-style button group
Multi SelectRK_MultipleSelectInputCheckbox-style multi-select
LEDRK_LEDOutputRGB indicator
TextRK_TextOutputRead-only text display
Serial MonitorRK_SerialOutputSerial console in the app
TelemetryRK_TelemetryOutputDisplay-only metrics
TransportActivationUse case
BLERadioKit.startBLE(name)Local control via RadioKit app (NimBLE on ESP32)
SerialRadioKit.startSerial(Serial)USB/UART communication (1000000 baud recommended)
WiFiRadioKit.startWiFi()Local WiFi WebSocket server on port 5555
CloudRadioKit.startCloud()Internet relay via WebSocket (requires WiFi first)

Multiple transports can run simultaneously. The library broadcasts widget state changes across all active transports automatically.

PlatformBLESerialWiFiNotes
ESP32[X] NimBLE[X] USB CDC, FTDI[X] WebSocketFully supported
ESP32-S3[X] NimBLE[X] USB CDC[X] WebSocketFully supported
ESP32-C3[X] NimBLE[X] USB CDC[X] WebSocketWiFi/BLE only
nRF52[-][X] UART[-]Serial only
STM32[-][X] UART[-]Serial only
SAMD[-][X] UART[-]Serial only
  • BasicSwitch — Minimal BLE example (toggle switch + LED)
  • JoystickMotor — Joystick controlling a servo
  • SliderServo — Slider controlling a servo
  • BLE_RC_Truck — RC truck: dual motor, steering
  • Filesystem_LED — BLE + LittleFS bulk filesystem demo
  • FsCommandTest — FS command validation
  • WiFiCloudSwitch — BLE + WiFi + Cloud relay: multi-transport demo