A precision temperature control system with wireless LoRa communication for home heating automation.
Complete documentation is organized into four guides:
For end users - Features, operation, LED status codes, and basic troubleshooting
- Temperature display and control
- Heating operation
- Receiver LED status codes
- Power management
- Basic troubleshooting
For installation - Pin connections, baud rates, wiring diagrams, and technical specifications
- Complete wiring diagrams
- Pin assignments (M5Dial & XIAO)
- UART baud rate configuration (9600 - factory default)
- Grove-Wio-E5 setup
- Power requirements
- Range optimization
For setup - Communication modes, network configuration, and connectivity troubleshooting
- P2P vs LoRaWAN modes
- LoRa configuration
- WiFi setup (time sync only)
- Range testing
- Communication troubleshooting
- Security considerations
👨💻 Developer Guide
For developers - Build instructions, code architecture, and development workflow
- Development environment setup
- Build and upload procedures
- Code architecture
- Communication protocol
- Power management implementation
- Adding features
- Read User Guide for operation
- Plug in both units (M5Dial and receiver)
- Watch receiver LED - should pulse then show steady patterns
- Rotate dial to adjust base temperature (0.5°F per click, 50-90°F range)
- Press button to reset temperature to initial configured value
- System automatically controls heating based on temperature
- Follow Hardware Guide for wiring
- Connect Grove-Wio-E5 modules to both devices
- Current baud rate: 9600 (both devices - Grove-Wio-E5 factory default)
- Power on, optionally check serial monitor at 115200 baud for debug messages.
- Read Developer Guide
- Install VS Code + PlatformIO
- Copy
secrets_template.htosecrets.h - Build and upload code & data file. NOTE: both devices must be in 'code
upload' mode for these next steps (power them on while holding down their
RESET buttons):
pio run --target upload --upload-port COM4 pio run --target uploadfs --upload-port COM4 cd receiver && pio run --target upload --upload-port COM6 ; cd ..
- Power cycle both devices within a minute or so of each other. (Other sequences have not been tested.)
Transmitter (M5Dial):
- Temperature monitoring (MCP9808 sensor)
- Rotary dial interface (adjusts base temp in 0.5°F increments)
- Button to reset temperature to initial value
- Wireless LoRa transmitter
- Battery or USB powered
- https://shop.m5stack.com/products/m5stack-dial-esp32-s3-smart-rotary-knob-w-1-28-round-touch-screen
~$23

- https://www.seeedstudio.com/Grove-LoRa-E5-STM32WLE5JC-p-4867.html ~$16

Receiver (XIAO ESP32S3):
- Receives heating commands
- Controls relay (GPIO10)
- Status LED (GPIO9)
- Safety auto-shutoff (10 min timeout)
- https://www.seeedstudio.com/XIAO-ESP32S3-p-5627.html or similar ~$8

- https://www.seeedstudio.com/Grove-LoRa-E5-STM32WLE5JC-p-4867.html ~$16

- https://www.adafruit.com/product/1782 or other temperature sensor ~$5

Communication:
- P2P Mode (default) - Direct device-to-device
- LoRaWAN Mode (fallback) - Network infrastructure
- Automatic mode fallback for reliability
- ✅ Precision temperature control (±0.25°C accuracy)
- ✅ Wireless LoRa communication (100-300m indoor range)
- ✅ Automatic temperature scheduling
- ✅ Power-optimized battery operation
- ✅ Safety timeout protection
- ✅ Dual communication modes with fallback
- ✅ Visual status indicators
- 🛡️ 10-minute timeout auto-shutoff
- 🛡️ Always starts with heater OFF
- 🛡️ Watchdog timer protection
- 🛡️ State verification
- 🛡️ Communication loss detection
- M5Stack Dial (ESP32-S3)
- MCP9808 temperature sensor
- Seeed XIAO ESP32S3
- 2x Grove-Wio-E5 LoRa modules
- Relay module for heater control
- Optional: Status LED, battery pack
LoRa UART Baud Rate: 9600 (Grove-Wio-E5 factory default)
USB Serial Monitor: 115200
Connection Timeout: 3 minutes
Auto Baud Search: Disabled (for reliable sync)
See Hardware Guide - UART Configuration for details.
- Issues: Open an issue on GitHub
- Questions: See documentation guides above
- Updates: Check for firmware updates
MIT License - See LICENSE file
John Cornelison
[email protected]
Version 2.0.0 - January 2026
Safe, efficient home heating control 🏠🔥