A library for building wireless, low power mesh networks using long range radios. Perfect for sensor networks, IoT devices, and remote control/monitoring systems.
RadioMesh combines an adaptive wireless mesh protocol design with an easy to use and flexible device development kit. It leverages LoRa radios and the Arduino framework.
At its core, RadioMesh implements a mesh network protocol aimed at self-organizing, low-power, long-range devices. It's focused on rapid and secure deployment of small to medium-sized networks without extensive configuration or management. key features (current and planned) include:
- Datagram-based messaging
- Two-way communication
- Passive route learning
- Multi-hop message delivery
- Adaptive role-based network topology
- Power-efficient operation
Additionally, RadioMesh provides an developer friendly framework for building mesh-capable devices:
- Hardware abstraction interfaces (Display, Radio, WiFi)
- Modular component architecture
- Security and encryption
- Easy-to-use builder pattern for device configuration
- Heltec Wifi Lora 32 v3 ESP32S3 with OLED display and SX1262 radio
- Seeed Studio Xiao ESP32 WIO-SX1262 Thumb size ESP32S3 board with SX1262 radio
- Heltec CubeCell ASR650X series with SX1262 radio , e.g: CubeCell Board v2, CubeCell Board Plus,...
- Install VSCode
- Install PlatformIO IDE
- Connect a board to your PC USB e.g Heltec WiFi LoRa 32 V3
- Clone the project:
git clone https://github.com/amirna2/RadioMesh
- From the project root
- Navigate to the SensorDevice example
- Update the
device_config_example.h
as indicated. - Switch the
env.lib_deps
to use the local library:${radio_mesh.local}
- Build and Deploy the example to the board:
../tools/builder.py build -t heltec_wifi_lora_32_V3 --clean --deploy
- Open a serial terminal and check the output. The device will initialize and start sending a simple counter message periodically
- Repeat the build/deploy steps with the HubDevice example to setup a device-to-device communication
- Detailed instructions are in the Wiki
RadioMesh welcomes contributions! Whether you're interested in adding new features, fixing bugs, improving documentation, or sharing example applications, check out the Contributing Guide to get started.