MYNOVA RFC (Radio Frequency Control) is an open-source handheld hardware project designed for analyzing, copying, and transmitting Radio Frequency (RF) signals. Powered by an ESP32 microcontroller, it combines a rich OLED user interface with powerful RF capabilities, web management, and Home Assistant integration.
- Signal Reception & Analysis: Capture and analyze RF signals (315MHz/433MHz depending on module).
- Signal Cloning: Save captured signals to local storage.
- Signal Transmission: Replay saved signals to control devices.
- Database: Manage a library of RF codes directly on the device.
- OLED Display: Smooth graphical interface powered by U8g2.
- Interactive Menu: Easy navigation with physical buttons.
- Games: Includes built-in games like Snake, Tetris, Arkanoid, Tank Battle, and more for entertainment.
- WiFi Support: Connect to your home network or run as an Access Point (AP).
- Web Interface: comprehensive web-based management dashboard.
- Manage WiFi settings.
- View and edit saved RF data.
- Configure MQTT/Home Assistant settings.
- Home Assistant Integration: Seamlessly integrate with Home Assistant via MQTT to control your RF devices from your smart home hub.
- Battery Monitoring: Real-time battery voltage and percentage display.
- Power Saving: Sleep modes and screen dimming.
- IDE: Arduino IDE 2.3.6
- Board Package: ESP32 by Espressif Systems v3.1.1 (Strictly required).
The firmware relies on the following Arduino libraries:
- U8g2 (v2.34.22) - Graphics library for OLED.
- ArrayList (v1.0.0) - Dynamic array implementation.
- ESP Async WebServer (v3.9.2) - Asynchronous HTTP server.
- AsyncTCP (v3.4.9) - Asynchronous TCP library.
- ArduinoJson (v7.0.3) - JSON parsing and serialization.
- PubSubClient (v2.8) - MQTT client library.
MYNOVA_RFC/
├── MYNOVA_RFC/ # Firmware Source Code
│ ├── src/
│ │ ├── GUI/ # Custom UI Engine
│ │ │ ├── Animation/ # Animation System (Transitions, Effects)
│ │ │ ├── Widget/ # UI Components (Button, Menu, ProgressBar)
│ │ │ ├── UIEngine # Core UI Manager (Page Stack, Rendering)
│ │ │ └── UIPage # Base Page Class
│ │ ├── Pages/ # Application Pages (Home, Games, Settings)
│ │ ├── Lib/ # Hardware Libraries (RCSwitch, etc.)
│ │ └── ... # System Managers (WiFi, MQTT, Battery)
│ └── MYNOVA_RFC.ino # Arduino Main Entry Point
├── RFCWeb/ # Web Interface (Vue.js 3 + Vite)
├── 3DModel/ # 3DModels for shell
└── PCB/ # PCB design file
MYNOVA RFC features a powerful, self-developed GUI engine optimized for embedded ESP32 systems with OLED displays.
- Page Management (Stack-based): Implements a robust page stack system allowing seamless navigation (push/pop) similar to mobile apps.
- Component-based Design (Widgets): The UI is built using reusable
UIWidgetcomponents (Buttons, Menus, ProgressBars), making it highly modular and easy to extend. - Deferred Deletion Mechanism: Features a sophisticated memory management system (
markForDeletion) that safely cleans up resources after the rendering frame completes, preventing runtime crashes common in C++ GUIs. - Animation System: Supports smooth, non-blocking page transitions (Slide, Zoom) and element animations, decoupled from the rendering loop for maximum performance.
- Open
MYNOVA_RFC/MYNOVA_RFC.inoin Arduino IDE. - Install the required libraries listed above via the Library Manager.
- Select your board: ESP32 Dev Module.
- Ensure Core Debug Level is set appropriately if you need logs.
- Compile and upload to your device.
The web interface is pre-compiled and stored in the LittleFS of the ESP32. If you want to modify the web UI:
- Navigate to the
RFCWebdirectory. - Install dependencies:
npm install
- Run development server:
npm run dev
- Build for production:
npm run build
- Upload the contents of the
distfolder to the ESP32's file system (LittleFS).- Note: The upload address offset is
0x610000, with a size of0x1D0000. This is defined inpartitions.csv.
- Note: The upload address offset is
Note: You can use my open-source tool, ESP32-LittleFS-Flash, to easily upload the contents of the dist folder to the ESP32 file system (LittleFS).
The upload address offset is 0x610000 with a size of 0x1D0000. This is defined in partitions.csv.
- Download Firmware: Download the latest
.binfile from the Release page. - Flashing Methods:
- Flash Download Tool: Select the
.binfile and set the flash address to0x0000.- Note: The firmware includes all partitions include Web UI; no additional configuration is required.
- Command Line:
Replace
esptool.py --port /dev/ttyUSB0 write_flash 0x0000 MYNOVA_RFC-firmware.bin
/dev/ttyUSB0with your ESP32's serial port.
- Flash Download Tool: Select the
This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.












