Experimental project — not production-ready. This is a personal experiment. If you decide to build it, you do so at your own risk.
An ultra-low-power environmental sensor beacon that runs on solar energy — including indoor ambient light. With a 50 F supercapacitor as its energy reservoir, the device can operate for up to 19 days without any light source, and has the potential for indefinite lifetime under normal indoor illumination.
On every cycle the device:
- Wakes from deep sleep.
- Reads temperature, humidity, and pressure from the BME680 sensor.
- Broadcasts the data as a BLE advertisement for ~20 ms.
- Goes back to deep sleep for 5 minutes.
The aggressive duty cycle (20 ms active out of every 300 s) keeps average current consumption low enough to be sustained by an indoor solar panel.
| Parameter | Value |
|---|---|
| MCU | ESP32 (ESP-IDF + NimBLE) |
| Sensor | Bosch BME680 (temperature, humidity, pressure) |
| Communication | BLE non-connectable advertising |
| BLE device name | EnvSensor |
| Advertising window | 20 ms |
| Sleep interval | 300 s (5 min) |
| Energy source | Solar panel (indoor-capable) |
| Energy storage | 50 F supercapacitor |
| Autonomy (no light) | ~19 days |
| Bytes | Field | Type | Unit |
|---|---|---|---|
| 0–1 | Company ID (0x0CDE) | uint16_t | — |
| 2–3 | Temperature | int16_t | °C × 100 |
| 4–5 | Humidity | uint16_t | %RH × 100 |
| 6–7 | Pressure | uint16_t | hPa × 10 |
everAliveSensorProject/
├── everAlive_Firmware/ # ESP-IDF firmware for the sensor node
│ ├── main/
│ │ ├── main.c # Entry point — sensor read + BLE advertise + deep sleep
│ │ ├── gap.c / gap.h # BLE advertising logic
│ │ └── sensor/ # BME680 driver wrapper
│ └── components/
│ └── bme680x/ # Bosch BME680 sensor library
├── everAlive_Enclosure/ # 3D-printable enclosure (STL files)
│ ├── everAlive_Enclosure_Top.stl
│ └── everAlive_Enclosure_Bottom.stl
├── demo/
│ └── BLERouter/ # ESP32-C6 demo receiver — scans and logs sensor data over serial
└── Images/ # Device photos, PCB renders, and schematics
The firmware uses the ESP-IDF build system.
cd everAlive_Firmware
idf.py build
idf.py -p /dev/ttyUSB0 flash monitorThe demo/BLERouter directory contains a companion project for an ESP32-C6 that passively scans for EnvSensor advertisements, decodes the payload, and prints timestamped readings to the serial monitor (time is obtained from NTP on boot).
See demo/BLERouter/README.md for setup instructions.
The enclosure is designed to be 3D printed in two parts (top and bottom). The STL files are in everAlive_Enclosure/.
This project is licensed under the terms found in LICENSE.



