This guide shows you how to flash the pre-compiled .bin files to your ESP32-C3 using your web browser. No command-line tools or software installation required!
Download the latest firmware from the Releases page or from the firmware/ directory:
- Transmitter:
Transmitter_ESP32C3_v1.0.bin(4MB) - Receiver:
Receiver_ESP32C3_v1.0.bin(4MB)
- Browser: Chrome, Edge, or Opera (WebSerial support required)
- USB Cable: Data cable (not charge-only)
- Driver: CH340 or CP2102 USB driver (usually auto-installed)
Open this website in Chrome, Edge, or Opera:
🔗 https://espressif.github.io/esptool-js/
- Connect your ESP32-C3 SuperMini to your computer via USB
- The device should be recognized automatically
Click "Connect" button on the website
A popup will appear showing available serial ports:
- Select your ESP32-C3 device (usually shows as "USB Serial" or "CH340")
- Click "Connect"
- Choose BaudRate "115200"
-
Choose File: Click and select your downloaded
.binfile- For Transmitter:
Transmitter_ESP32C3_v1.0.bin - For Receiver:
Receiver_ESP32C3_v1.0.bin
- For Transmitter:
-
Flash Address: Enter
0x0(zero-x-zero)- This is VERY IMPORTANT - must be
0x0
- This is VERY IMPORTANT - must be
-
Flash Mode: Leave as default (DIO)
-
Flash Speed: Leave as default (40MHz or higher)
-
Click "Program"
- Progress bar will show flashing status
- Takes about 30-60 seconds
- Wait for "Success" message
- Do NOT disconnect during flashing!
After flashing completes:
- Disconnect USB cable
- Wait 2 seconds
- Reconnect USB cable
- Device will boot with new firmware
LED Indicators:
- 🟡 Yellow: Starting up
- 🔵 Blue: Taking measurements
- 🔵 Cyan: Transmitting
- 🟢 Green (3 blinks): Success!
Serial Monitor (optional): If you have serial monitor:
╔════════════════════════════════════════════════════════════╗
║ LoRa Water Tank Monitor - TRANSMITTER ║
╠════════════════════════════════════════════════════════════╣
║ Frequency: 865000000 Hz ║
║ Network ID: 6 TX Power: 14 dBm ║
║ My Address: 1 Receiver: 2 ║
║ Sleep Time: 5 minutes ║
╚════════════════════════════════════════════════════════════╝
OLED Display should show:
┌─────────────┐
│ TankSync │
│ Initializing│
│ │
│ AP: 192... │
└─────────────┘
LED Indicators:
- Both LEDs pulse cyan briefly during boot
- LED 1 (Status): Orange during initialization
- LED 1 (Status): Green after LoRa connects
- LED 0 (Water): Orange blinking (waiting for data)
WiFi AP Created:
- Look for WiFi network: "TankSync" (no password)
The transmitter uses default settings:
LORA_FREQUENCY: 865000000 (865 MHz - India)
LORA_NETWORK_ID: 6
MY_ADDRESS: 1
RECEIVER_ADDRESS: 2
SLEEP_MINUTES: 5
TX_POWER: 14 dBm
Note: Settings are hardcoded. To change, you need to edit source code and recompile.
Configure via web interface:
-
Connect to WiFi AP:
- WiFi Network:
TankSync - Password: None (open network)
- WiFi Network:
-
Open Configuration Page:
- Navigate to:
http://192.168.4.1/config
- Navigate to:
-
Configure Settings:
- WiFi: Your SSID and password
- MQTT: Broker IP, port, credentials (optional)
- Tank: Min/max distance, capacity
- LoRa: Frequency, network ID (must match transmitter)
-
Save and Reboot:
- Click "Save"
- Device will restart and connect to your WiFi
-
Access Dashboard:
- Find receiver IP on OLED display
- Navigate to:
http://<receiver-ip>/
Solutions:
-
Wrong Browser:
- Use Chrome, Edge, or Opera
- Safari and Firefox don't support WebSerial
-
USB Driver Missing:
- Windows: Install CH340 driver
- macOS: Usually works without driver
- Linux: Usually works without driver
-
Bad USB Cable:
- Use a DATA cable, not charge-only
- Try a different cable
-
USB Port Issue:
- Try different USB port
- Avoid USB hubs - connect directly to computer
Solutions:
-
Put Device in Bootloader Mode:
- Disconnect USB
- Hold BOOT button (if available)
- Connect USB while holding BOOT
- Release BOOT
- Try flashing again
-
Lower Flash Speed:
- In web tool, try lower baud rate
- Try 115200 instead of 921600
-
Full Erase First:
- Click "Erase" button in web tool
- Wait for completion
- Then flash firmware
Solutions:
-
Wrong Firmware:
- Make sure you flashed correct file
- Transmitter.bin → Tank unit
- Receiver.bin → Indoor unit
-
Power Cycle:
- Disconnect USB
- Wait 5 seconds
- Reconnect USB
-
Check Connections:
- Verify LoRa module connections
- Check sensor connections (transmitter)
- Check OLED connections (receiver)
Check:
- ✅ LoRa module connected (GPIO 20, 21)
- ✅ Sensor connected (GPIO 4, 5)
- ✅ Battery connected and charged
- ✅ Antenna attached to LoRa module
LED Pattern:
- If red blinks 10 times: LoRa initialization failed
- If red blinks 5 times: Transmission failed (no receiver)
Check:
- ✅ LoRa module connected (GPIO 20, 21)
- ✅ LoRa settings match transmitter
- ✅ Both devices on same frequency (865 MHz)
- ✅ Both devices on same network ID (6)
- ✅ Antenna attached to LoRa module
LED Pattern:
- Red solid: LoRa hardware error
- Blue blinking: AP mode, waiting for WiFi config
- Cyan blinking: Waiting for first data
To flash new firmware or switch between transmitter/receiver:
- Simply repeat the flashing process
- No need to erase first (unless having issues)
- New firmware will completely replace old firmware
| Setting | Value | Notes |
|---|---|---|
| Board | ESP32-C3 | SuperMini or Dev Module |
| LoRa Frequency | 865 MHz | For India (change if needed) |
| Network ID | 6 | Must match on both devices |
| Baud Rate | 115200 | Serial monitor |
| Setting | Value |
|---|---|
| Device Address | 1 |
| Receiver Address | 2 |
| Sleep Interval | 5 minutes |
| TX Power | 14 dBm |
| Setting | Value |
|---|---|
| Device Address | 2 |
| WiFi AP SSID | TankSync |
| WiFi AP Password | None (open) |
| MQTT Server | 192.168.0.163 |
| MQTT Port | 1885 |
- Open: https://espressif.github.io/esptool-js/
- Connect ESP32-C3
- Click "Connect" → Select device
- Choose
Transmitter_ESP32C3_v1.0.bin - Address:
0x0 - Click "Program"
- Wait for success
- Reconnect USB
- Open: https://espressif.github.io/esptool-js/
- Connect ESP32-C3
- Click "Connect" → Select device
- Choose
Receiver_ESP32C3_v1.0.bin - Address:
0x0 - Click "Program"
- Wait for success
- Reconnect USB
- Configure WiFi at http://192.168.4.1/config
-
Check Documentation:
- Main README - Hardware setup
- Transmitter README - Transmitter details
- Receiver README - Receiver details
-
Search Issues:
-
Ask for Help:
- Open new issue with:
- Browser and OS version
- Complete error message
- Photos of hardware connections
- Serial monitor output (if available)
- Open new issue with:
If web flasher doesn't work, you can use esptool command line:
# Install esptool
pip install esptool
# Flash command
esptool.py --chip esp32c3 --port COM3 --baud 921600 write_flash 0x0 firmware.binReplace COM3 with your port (Windows: COM3, Linux: /dev/ttyUSB0, macOS: /dev/cu.usbserial-*)
Happy Flashing! 💾
For complete hardware assembly and setup guide, see README.md


