A Budget Meshtastic Node with ESP32 and LoRa for Under 500 Rubles
A basic Meshtastic node only requires a microcontroller with WiFi/Bluetooth/USB and a LoRa modem. The antenna can be a simple wire, while the case and battery are optional. The total cost is around 500 rubles when purchasing components.
The choice of microcontroller determines the use case: stationary with WiFi or portable with Bluetooth and low power consumption.
Suitable Microcontrollers
Meshtastic firmware is compatible with ESP32, NRF52, and RP2040. For a budget build:
- ESP32-C3 SuperMini (~200 rub.): Compact, with WiFi, suitable for stationary nodes with network power.
- NRF52840 Pro Micro (~250 rub.): Energy-efficient, no WiFi, with a built-in LiPo/LiIon charger, ideal for wearable devices—offering twice the battery life.
- ESP32 Devkit V1: If you have one on hand, it allows for a cost-free build.
NRF52 is preferable for battery-powered nodes, while ESP32-C3 is better for testing with WiFi.
Choosing a LoRa Modem
For 868 MHz (common in Russia):
- SX1276: A basic chip, outdated but readily available.
- SX1262: Modern, more powerful on TX, with lower power consumption.
- LLCC68: A simplified version of the SX1262.
The optimal module is the Heltec HT-RA62 (300–350 rub.), an SMD component that requires soldering. An alternative is a used NiceRF LoRa1276 from Avito (~250 rub.), such as from Softline 2018 smart helmets.
Flashing Before Assembly
First, flash the microcontroller separately using the web flasher at mrekin.duckdns.org/flasher (accessible from Russia):
- Official Meshtastic (including DIY).
- m1nl (improved power saving for ESP32).
- Meshcore / Meshcore RU (with Cyrillic support).
For ESP32 Devkit V1 + LoRa1276, select esp32/diy/v1. In variant.h:
#define LORA_— connection pins.USE_RF95for SX1276.RF95_RXEN/RF95_TXEN— additional pins.
Flash while holding BOOT, with a full erase, baud rate 115200. UART logs will show LoRa/GPS initialization. Disable GPS in the Meshtastic app for cleaner logs.
Connection Diagram
For ESP32 Devkit V1 + LoRa1276 (according to variant.h):
| LoRa Pin | ESP32 Pin | Purpose |
|----------|-----------|-------------------|
| VCC | 3.3V | Power |
| GND | GND | Ground |
| SCK | GPIO 18 | SPI |
| MISO | GPIO 19 | SPI |
| MOSI | GPIO 23 | SPI |
| NSS (CS) | GPIO 5 | SPI |
| DIO0 | GPIO 26 | RX/TX Interrupt |
| NRESET | GPIO 14 | Chip Reset |
| ANT | Antenna | Antenna |
Do not connect DIO1/DIO2/NC. Remove the STM32 from the LoRa board with pliers or a heat gun. Power at 3.3V from ESP32 (the helmet's LDO at 2.5V is insufficient). Ceramic capacitors on the board provide stabilization.
For ESP32-C3 SuperMini, an external LDO for LoRa is needed.
Antenna and Startup
Operating without an antenna risks TX overheating. Start with a wire. Settings in the city's Telegram channel:
- Role: CLIENT_MUTE (not a repeater).
- Region: Russia.
- Preset: Long Range - Fast.
- Slot: 2.
- Frequency: 869.075 MHz.
Test: Communication in the LongFast channel, verified via bot.
Enhancements
Dipole Antenna
Two pieces of copper wire (twisted pair, 82 mm for 869 MHz, at a 120° angle to GND). Vertical polarization, circular pattern. Remove matching circuits.
Ready-Made PCBs
fakeTec for NRF52840 + HT-RA62. Variations:
- Pro Micro + RA-62.
- Pro Micro + SX1276.
- ESP32-C3 + RA-62.
- ESP32-C3 + SX1276.
Cost ~90 rub./piece in bulk.
Firmware on Helmet STM32
On STM32L051C8T6 (64KB Flash, 8KB RAM):
- RX Meshtastic packets.
- Retransmission with a ring buffer.
- AES decoding of chat/telemetry.
Limitations: Synchronous code, logs block RX. Suitable for low-power sensors.
Key Points
- Always flash before soldering: Logs will reveal connection errors.
- CLIENT_MUTE in cities: Avoid unnecessary retransmission.
- Antenna is critical: Wire for testing, dipole for production.
- ESP32-C3 vs NRF52: WiFi or autonomy.
- 868 MHz SX1276/1262: Available and energy-efficient.
— Editorial Team
No comments yet.