ZNET LoRa Remote Sensor Node
Battery-powered sensor nodes that transmit temperature, humidity, and air quality data to the ZNET gateway via LoRa.
Supported Hardware
| Board |
Chip |
LoRa |
Notes |
| Heltec WiFi LoRa 32 V3 |
ESP32-S3 |
SX1262 |
Recommended - built-in OLED |
| TTGO LoRa32 V2.1 |
ESP32 |
SX1276 |
Budget option |
| DIY ESP32 + SX1276 |
ESP32 |
SX1276 |
Full customization |
Supported Sensors
| Sensor |
Data |
Use Case |
| DHT22 |
Temp + Humidity |
Ambient monitoring |
| BME680 |
Temp + Humidity + Pressure + Gas |
Air quality monitoring |
| DS18B20 |
Temperature (high precision) |
Remote tank monitoring |
Quick Start
1. Install PlatformIO
2. Configure Node
Edit include/config.h:
3. Build & Upload
4. Monitor Output
Wiring
DHT22 Sensor
BME680 Sensor (I2C)
Battery Connection
Power Consumption
| State |
Current |
Notes |
| Deep Sleep |
~10 μA |
ESP32 deep sleep |
| Active (reading) |
~15 mA |
Sensor reading |
| TX |
~80 mA |
LoRa transmission |
| Average @ 60s |
~1 mA |
Typical |
Battery Life Estimates (1000mAh LiPo)
| Interval |
Battery Life |
| 30 sec |
~2 weeks |
| 60 sec |
~1 month |
| 5 min |
~6 months |
| 10 min |
~1 year |
Protocol
See ../docs/LORA_PROTOCOL.md for full LoRa packet specification.
Node ID Ranges
| Range |
Purpose |
| 0x0001-0x00FF |
Tank sensors |
| 0x0100-0x01FF |
Ambient (DHT22) |
| 0x0200-0x02FF |
Environmental (BME680) |
| 0xFFFF |
Auto-assign |
Troubleshooting
No LoRa transmission
- Check LoRa frequency matches gateway (915 MHz for US)
- Verify SPI pins are correct for your board
- Check serial monitor for "LoRa init failed" errors
Sensor read fails
- Check wiring connections
- Verify correct GPIO pins in config.h
- For I2C sensors, run I2C scanner to verify address
Short battery life
- Increase
REPORT_INTERVAL_SEC
- Disable OLED (
ENABLE_OLED 0)
- Disable serial debug in production (
ENABLE_SERIAL_DEBUG 0)
Not receiving ACKs
- Verify gateway is running and receiving
- Check sync word matches (0x12)
- Reduce spreading factor if range is short (better reliability)