Open-source DIY radio-control (RC) transmitter and receiver built around a SparkFun MicroView / ATmega328P transmitter, an ATtiny85 supervisor, and an nRF24L01+ 2.4 GHz radio link. The project is intended for makers building drones and multirotors, RC cars and trucks, boats, airplanes/fixed-wing models, robots, rovers and custom wireless-control projects.
Current reference release: 4.1.18.
MicroView RC is a compact, hackable Arduino-compatible radio-control platform for:
- drones, quadcopters and multirotors
- RC cars, trucks, tracked vehicles and rovers
- RC boats and marine models
- RC airplanes and fixed-wing aircraft
- robots and robotics platforms
- custom wireless controllers and embedded control projects
The current firmware targets the SparkFun MicroView / ATmega328P reference hardware. Its architecture, RF protocol and control concepts can also serve as a reference for DIY ports to ESP32, STM32, RP2040 / Raspberry Pi Pico and other microcontrollers, but those platforms are not drop-in firmware targets.
SparkFun MicroView hardware and the MicroView RC transmitter interface.
| Module | Version | Source |
|---|---|---|
| MicroView transmitter | 4.1.18 | firmware/transmitter/MicroView_TX/ |
| ATtiny85 supervisor | 3.17.1 | firmware/supervisor/ATtiny85_Supervisor/ |
| Receiver | 3.20.0 | firmware/receiver/MicroView_RX/ |
- 10 independent model memories (
MODEL01...MODEL10) - Model-specific receiver binding (
Rx001...Rx010) - 4 proportional flight controls: roll, pitch, yaw and throttle
- Potentiometer channel plus 4 auxiliary controls
- Per-model expo, dual rate, trim, reverse, deadband and positive/negative endpoints
BIDIRandFWD ONLYthrottle modes- RX battery telemetry through nRF24 ACK payloads
- TX battery monitoring through an ATtiny85 supervisor
- Buzzer / vibration alerts with L1, L2 and L3 levels
- RF debug page with last/average/max transaction time and retry count
- One-wire debug page for the MicroView <-> ATtiny85 link
- EEPROM-backed settings
The complete English user manual is here:
- User manual
- MicroView hardware and pin mapping reference
- Third-party reference assets and sources
- Changelog
The manual explains the main display, all menu items, RF diagnostics (L, A, M, R), one-wire diagnostics, alert levels, channel mapping, receiver outputs and calibration.
MicroView-RC/
├── README.md
├── LICENSE
├── CHANGELOG.md
├── firmware/
│ ├── transmitter/MicroView_TX/
│ ├── receiver/MicroView_RX/
│ └── supervisor/ATtiny85_Supervisor/
├── docs/
│ ├── USER_MANUAL.md
│ └── images/
├── hardware/
│ ├── schematic/
│ └── pcb/
└── releases/
The transmitter uses the SparkFun MicroView, a compact Arduino-compatible module based on the ATmega328P with a built-in 64 x 48 OLED display.
The dedicated hardware reference includes the complete 16-pin mapping, the MicroView RC-specific wiring, and upstream SparkFun references:
- MicroView hardware and pin mapping reference
- SparkFun Learn — MicroView Overview
- SparkFun MicroView product repository — v10
- SparkFun MicroView Arduino Library
The project uses an nRF24L01+ link with software SPI.
| Signal | MicroView pin |
|---|---|
| CE | D0 |
| CSN | D1 |
| MOSI | D3 |
| MISO | D5 |
| SCK | D6 |
| ATtiny85 one-wire | D2 |
| Signal | ATmega328P / Uno pin |
|---|---|
| CE | D7 |
| CSN | D8 |
| MOSI | D3 |
| MISO | D5 |
| SCK | D6 |
Validated radio settings in the current firmware include channel 76, 250 kbps data rate and automatic ACK/retries. The transmitter displays the nRF24 automatic retransmit count as R, read from OBSERVE_TX.ARC_CNT for compatibility with older RF24 libraries.
| Model | RF address |
|---|---|
| MODEL01 | Rx001 |
| MODEL02 | Rx002 |
| MODEL03 | Rx003 |
| MODEL04 | Rx004 |
| MODEL05 | Rx005 |
| MODEL06 | Rx006 |
| MODEL07 | Rx007 |
| MODEL08 | Rx008 |
| MODEL09 | Rx009 |
| MODEL10 | Rx010 |
Binding has been validated in hardware on MODEL06 and MODEL10.
RF24 requirement: the project uses software SPI. Keep
SOFTSPIenabled/configured in the RF24 library as required by the sketches.
| Function | Channel | RX pin |
|---|---|---|
| Potentiometer | CH0 | D11 |
| Roll | CH1 | D9 |
| Pitch | CH2 | D10 |
| Yaw | CH3 | A3 |
| Throttle | CH4 | D12 |
| JR | CH6 | D2 |
| JL | CH7 | D4 |
| PB Right | CH8 | A1 |
| PB Left | CH9 | A2 |
The ATtiny85 is intended to run from its 8 MHz internal clock.
| Function | ATtiny85 pin |
|---|---|
| Buzzer | PB0 / physical pin 5 |
| Vibration driver | PB1 / physical pin 6 |
| TX battery ADC | PB3 / physical pin 2 |
| One-wire data | PB4 / physical pin 3 |
The one-wire link is connected between MicroView D2 and ATtiny85 PB4 through a 1 kOhm series resistor. The current protocol is master/slave: the MicroView sends a command, then the ATtiny85 returns an ordered response containing timing/ACK/output-state/battery information.
The project has been developed with Arduino-compatible toolchains. The current recommended working environment is Arduino IDE 2.x with the required board cores and libraries installed.
Before compiling:
- Install/configure the RF24 library and its software-SPI dependency (
DigitalIO). - Ensure
SOFTSPIis enabled as required by the project. - Build the transmitter for the MicroView / ATmega328P target.
- Build the receiver for the ATmega328P / Arduino Uno-compatible target.
- Build the supervisor for ATtiny85 at 8 MHz internal clock.
For the ATtiny85, use the selected ATTinyCore clock/BOD settings consistently. If clock/fuse settings are changed, use the core's Burn Bootloader operation once to program the fuses before uploading by ISP.
Receiver 3.20.0 is delivered with Serial debug disabled and the fixed 3.800 V battery telemetry test value still enabled:
#define RX_SERIAL_DEBUG 0
#define RX_DEBUG_ANSI 1
#define RX_BATTERY_TEST_MV 3800Set RX_BATTERY_TEST_MV to 0 when you want to use the actual A0 battery-divider measurement.
RF DEBUG
TX 5.2V
RX 3.8V
L1.5MS/R0
A 1.5MS
M 4.5MS
L: latestradio.write()transaction timeA: filtered average transaction timeM: maximum observed transaction timeR: automatic retransmissions used by the latest packet (0means no retry)
L measures the radio transaction and ACK/retry process. It is not the complete stick-to-servo latency.
The transmitter version is used as the main public project version. Release 4.1.18 introduces the 10-model memory/address range together with receiver 3.20.0. Stable releases should be tagged as:
v4.1.18
v4.1.19
v4.1.20
The receiver and ATtiny85 keep their own independent firmware versions.
The current firmware bundle is also stored in releases/. For normal GitHub use, future release ZIP files can additionally be attached to GitHub Releases rather than duplicated permanently in the repository.
The repository includes the current PCB fabrication package under hardware/pcb/. The hardware/schematic/ directory is reserved for future schematic source files.
MicroView RC controller PCB overview.
Gerber files ready for PCB fabrication are available here:
hardware/pcb/Gerber_MicroviewRC_PCB_TX_MicroviewRC_2026-09-25.zip
The project source and project-owned documentation are released under the MIT License.
Third-party libraries and dependencies remain subject to their own licenses.
Relevant project terms include Arduino RC, DIY RC transmitter, DIY RC receiver, radio control, remote control, nRF24L01, RF24, ATmega328P, ATtiny85, SparkFun MicroView, RC telemetry, drone controller, quadcopter controller, RC car controller, RC boat controller, RC airplane controller, robot remote control, robotics, embedded systems, ESP32 RC, STM32 RC, RP2040 RC and Raspberry Pi Pico RC.
ESP32, STM32, RP2040 and Raspberry Pi Pico are listed as related adaptation/search terms. The current firmware is built for the MicroView / ATmega328P reference platform.
RC systems can control motors, propellers and other moving equipment. Secure the model and disable propulsion while configuring, calibrating, binding or testing the system. Validate failsafe behavior before normal operation.



