Open-source firmware and lab scaffolding for a classroom-ready ESP32 + CC1101 platform with optional SDR extensions. The repository hosts matched transmitter and receiver builds used in our conference publications on digital modulation education.
- Educator station (RX): CC1101 receiver on ESP32 with 10-LED array for visual feedback; validates packets and toggles LEDs per control nibble.
- Student stations (TX): CC1101 transmitters on ESP32; send control bytes using predefined modulation presets.
- Five prebuilt lab presets: 2-FSK, 4-FSK, GFSK, MSK, ASK. Adjustable preamble, address, checksum mode, and LED mapping to create unique challenges.
- Optional SDR layer: RTL-SDR for receive-only analysis; HackRF One for full-duplex SDR exercises and advanced labs.
- ESP32 + CC1101 only - baseline TX/RX practice.
- ESP32 + CC1101 + RTL-SDR - capture/analyze educator signals, then recreate packets on ESP32.
- ESP32 + CC1101 + HackRF One - advanced SDR-based transmit/receive while targeting the CC1101 RX for validation.
- 2× ESP32-DevKit (or compatible)
- 2× CC1101 433 MHz modules (default frequency 433.92 MHz)
- Receiver: status LED on GPIO2, 10× control LEDs on GPIO13/14/16/17/21/22/25/26/32/33 with ~300 Ω resistors
- Transmitter: status LED on GPIO32
- Breadboard, jumper wires, 3.3 V supply, antennas for CC1101 modules
- Optional: RTL-SDR v3 (RX), HackRF One (TX/RX)
The figure matches the paper: ESP32 DevKit wired to the CC1101 and a 10-LED array (with resistors) for visual feedback. Core CC1101 pins: CSN GPIO5, GDO0 GPIO27, SCK GPIO18, MISO GPIO19, MOSI GPIO23, VCC 3.3 V, GND GND. The transmitter wiring is identical minus the LED array.
- PlatformIO Core (
pio) or VS Code + PlatformIO extension - Arduino framework for ESP32 (auto-installed by PlatformIO)
- Library:
mfurga/CC1101@^1.2.0(declared in eachplatformio.ini)
CC1101_Receiver/- educator RX firmware (ESP32 + LED array)CC1101_Transmitter/- student TX firmware (ESP32)cc1101/- vendored CC1101 Arduino library sourcesLICENSE- MIT License
- Plug in the receiver first so it enumerates as
/dev/ttyUSB0, then the transmitter as/dev/ttyUSB1(adjust if your OS assigns differently). - Confirm ports and update
upload_portin eachplatformio.iniif needed. - Build, upload, and open the monitor to verify connectivity:
- Receiver:
cd CC1101_Receiver upload.sh monitor.sh - Transmitter:
cd CC1101_Transmitter upload.sh monitor.sh
- Receiver:
- Both sides must share the same
SESSION_CONFIGinsrc/main.cpp. Presets set modulation (2FSK/4FSK/GFSK/MSK/ASK), preamble, address, data rate (1.2 kBaud), deviation, and optional checksum mode (SUM/XOR/CRC8; off by default). - Packet structure (fixed length):
- Byte 0: Preamble
- Byte 1: Address (lower 6 bits checked)
- Byte 2: Control (lower 4 bits drive LED mapping)
- Byte 3: Optional checksum (if enabled)
- Receiver serial (115200 baud):
hshows config;d/debugtoggles raw packet logging. Valid packets print RSSI/LQI and toggle mapped LEDs. - Transmitter serial:
0-9,a-f/A-Fsend control 0-15;r/Rsends a raw packet (hex);hshows config.
- Configuration 1 (ESP32 only): Provide preamble/address and modulation parameters; students iterate data bytes to light assigned LEDs on the educator RX.
- Configuration 2 (RTL-SDR assist): Educator transmits a reference signal; students capture/analyze with GNU Radio/URH to recover modulation, data rate/deviation, preamble, and address, then recreate the packet on ESP32.
- Configuration 3 (HackRF advanced): Teams perform SDR RX/TX with HackRF while keeping the CC1101 RX as the validation target.
- Increase difficulty by enabling checksums, Manchester encoding, whitening, or FEC in
main.cpp, or by altering LED mappings/preamble/address per lab.
- Keep antennas attached and avoid placing modules too close to prevent front-end saturation.
- If packets are missed: verify matched
SESSION_CONFIG, preamble, address; widen RX bandwidth or lower data rate in noisy environments. - Serial monitor line endings: LF or CRLF are accepted.
- When changing bands, update frequency consistently on TX/RX and ensure regulatory compliance.
- Fork and adapt lab parameters (preamble/address/LED mappings) to create new exercises or assessments.
- If you publish derivative work, please cite the papers below and retain the MIT license notice.
MIT License © 2026 Erwin Karincic, Lauren Linkous, Erdem Topsakal. See LICENSE for details.
- “Interactive Educational Platform for Digital Modulation Recognition and Signal Analysis” - Erwin Karincic, Lauren Linkous, Erdem Topsakal.
- “Classroom Approaches to RF Education with Visual-Based Modulation Recognition Labs” - Erwin Karincic, Lauren Linkous, Erdem Topsakal.
@inproceedings{karincic2026interactiverf,
title = {Interactive Educational Platform for Digital Modulation Recognition and Signal Analysis},
author = {Karincic, Erwin and Linkous, Lauren and Topsakal, Erdem},
booktitle = {Proceedings of USNC-URSI NRSM},
year = {2026}
}
@inproceedings{karincic2026classroomrf,
title = {Classroom Approaches to RF Education with Visual-Based Modulation Recognition Labs},
author = {Karincic, Erwin and Linkous, Lauren and Topsakal, Erdem},
booktitle = {Proceedings of ASEE},
year = {2026}
}