Loading 3D model… large boards can take a moment.
A fully custom-designed embedded wireless node with its own PCB, firmware, and working radio communication demo.
Custom 2-layer embedded wireless node built around STM32G431KBT6, nRF24L01+ over SPI, and SSD1306 OLED over I2C.
This repository contains both the hardware design and the starter firmware for a compact custom communication platform.
This project is a custom PCB-based wireless node designed and assembled for experimenting with:
At the moment, this is a working wireless node platform.
Two identical boards can already exchange packets successfully, display information on OLED screens, and react to button input.
The board is a custom 2-layer PCB based on:
The schematic also includes the STM32 main sheet, the SPI-connected nRF24L01+ module, the I2C SSD1306 module, SWD with NRST, user/reset/boot buttons, and LED sheets.
The board uses STM32G431KBT6 as the main controller.
The MCU is connected to the radio, OLED, USB, LEDs, buttons, and SWD debug interface.
The STM32 uses an external 24 MHz crystal oscillator for system clock generation.
The radio is based on nRF24L01+ and is connected through SPI:
This is visible in the schematic on the nRF24L01+ module sheet and the STM32 interconnect sheet.
The nRF24L01+ module provides an IRQ pin, which signals internal radio events such as RX data ready, TX complete, or maximum retransmits reached.
In this hardware revision, the IRQ line is not connected to the MCU (R12 is not populated, DNP).
The current firmware uses a polling-based approach, reading the STATUS register over SPI.
If interrupt-driven operation is desired, the IRQ line can be connected by populating R12 (10kΩ pull-up to 3.3V) and configuring a GPIO interrupt on the MCU.
The OLED display is connected through I2C using:
The design uses a 4-pin display header and is intended for SSD1306-based modules.
The board includes a USB-C connector used for:
The USB/power sheet also includes the regulator and protection/power-path components.
The USB-C interface includes proper 5.1kΩ CC resistors, allowing correct device-mode detection when connected to a host.
A dedicated SWD header is included so the board can still be programmed and debugged even if USB firmware is broken or not available.
SWD header signals:
This is explicitly shown in the SWD sheet.
The board includes:
The two user buttons are intended for any firmware-defined purpose.
The button circuits include passive components for more stable operation and input conditioning.
User buttons include RC filtering for hardware-level debouncing and more stable input signals.
The board includes three LEDs:
The user LEDs can be controlled entirely from firmware.
The LED sheet shows dedicated LED status outputs.
The board can be powered in two ways:
A slide switch is included so power can be disconnected when the board is externally powered.
The power section also includes:
In practical terms, the diodes are used to help isolate power sources and reduce unwanted reverse-current paths between different supply inputs.
The board can be powered via:
The onboard AMS1117-3.3 linear regulator generates 3.3V for the system.
The AMS1117 is a linear regulator, so power dissipation increases with higher input voltage.
Using voltages significantly above 5V causes more heat and lower efficiency.
For reliable operation, a 5V supply is strongly recommended.
Direct LiPo input is not recommended without additional power-management circuitry, because the regulator may not maintain stable 3.3V output at lower battery voltage.
This project uses a 1.54" SSD1306 128x64 dots display, which is less common than smaller variants.
Other SSD1306 I2C displays may also be used if they are compatible electrically and use a standard 2.54 mm header.
The design also supports both:
Selection depends on placing the correct 0-ohm resistor option.
On the STM32 sheet, R15 and R16 are shown as 0Ω selectable positions related to the display supply configuration.
For exact details, see the schematic PDF in the hardware folder.
Approximate board dimensions:
Note: Actual dimensions may vary slightly due to manufacturing tolerances (typically within ±0.1 mm).
firmware/nrf24_wireless_node/
This firmware implements a wireless communication demo between two identical boards using the nRF24L01+ transceiver. One node operates as a transmitter (TX), while the other operates as a receiver (RX).
The device role is selected at compile time using the following macro:
#define NRF_ROLE_TX 1 // 1 = TX node, 0 = RX node
msg: 1
msg: 2
msg: 3
...
msg: 18995
msg: 18996
The device exposes a USB CDC (Virtual COM Port) interface.
From the user side, it behaves similarly to a serial UART/USART terminal connection, so output messages can be monitored with tools such as RealTerm or other serial terminal software.
System started
Button 1 pressed
Button 2 pressed
No comments yet. Be the first to ask about this board.