基于 ESP32 的室内太阳能免电池环境传感器

本项目基于 ESP32 与 BME680,打造一款室内光能自供电的 BLE 环境传感器。采用 50F 超级电容储能,无需锂电池;设备每 5‑分钟短暂唤醒采集温湿度气压,以 20ms 蓝牙广播上报数据。无光环境可连续工作 19 天,室内日常光照下近乎永久运行。项目开源 PCB、3D 外壳、ESP‑IDF 固件以及 ESP32‑C6 数据接收程序。

基于 ESP32 的室内太阳能免电池环境传感器封面
oshw_hqzl2026-07-09 18:43:47CC BY-NC-SA 4.0
5
Star

PCBA

设计文件

KiCad图标everAliveSensor-main.zip8.70MB(0次下载)

EDA查看器

复制嵌入代码

详细介绍

本项目基于 ESP32 与 BME680,打造一款室内光能自供电的 BLE 环境传感器。采用 50F 超级电容储能,无需锂电池;设备每 5‑分钟短暂唤醒采集温湿度气压,以 20ms 蓝牙广播上报数据。无光环境可连续工作 19 天,室内日常光照下近乎永久运行。项目开源 PCB、3D 外壳、ESP‑IDF 固件以及 ESP32‑C6 数据接收程序。

一. 硬件核心参数

项目

详情

主控 MCU

ESP32(ESP‑IDF 框架,搭配 NimBLE 蓝牙协议栈)

环境传感器

BOSCH BME680(采集温度、湿度、气压)

通信方式

BLE 不可连接广播(Non‑connectable advertising)

BLE 设备名

EnvSensor

广播时长

单次仅 20ms

休眠周期

300 秒(5 分钟)唤醒一次

能量来源

室内可用太阳能光伏板

储能元件

50F 超级电容

无光续航

最长约 19 天

二. 设备运行逻辑(工作循环)

每 5 分钟执行一轮完整周期:

  1. ESP32 从深度休眠唤醒;

  2. 读取 BME680 获取温湿度、气压数据;

  3. 仅用 20ms 时间向外发送 BLE 广播数据包;

  4. 再次进入深度休眠,等待下一个 5 分钟周期。

设计思路:虽然唤醒瞬间电流较高,但平均占空比极低(20ms / 300s),平均功耗极低,依靠室内微弱光照即可持续补能。

三. BLE 广播数据包格式(厂商自定义数据)

广播报文一共占用 8 字节:

字节范围

字段

数据类型

缩放规则

0‑1

Company ID(0x0CDE)

uint16_t

固定值

2‑3

温度 Temperature

int16_t

实际值 = 数值 ÷ 100 (℃)

4‑5

湿度 Humidity

uint16_t

实际值 = 数值 ÷ 100 (% RH)

6‑7

气压 Pressure

uint16_t

实际值 = 数值 ÷10 (hPa)

示例:如果温度字段读到 2540,代表温度为 25.40℃。

四. 配套 Demo:BLERouter 接收端

  • 硬件:ESP32‑C6 开发板;

  • 功能:持续扫描 EnvSensor 的 BLE 广播帧;解析温湿度气压;通过 NTP 网络时间给读数打上时间戳,串口打印数据;

  • 部署方式:参考demo/BLERouter/README.md编译烧录。

五. 硬件配套资源

  1. PCB 文件:仓库内提供 PCB 正面、背面版图,可以直接打板生产;

  2. 结构外壳:STL 文件分为上下两半,3D 打印即可装配电路板和太阳能板;

  3. 固件编译方式:基于 ESP‑IDF 编译框架,执行指令:

    bash

    运行

    cd everAlive_Firmware
    idf.py set-target esp32
    idf.py -p /dev/ttyUSB0 flash monitor
    

六. 版权与项目定位

  • License:CC‑BY‑NC‑SA‑4.0

  • 项目性质:个人实验项目,禁止直接商用,制作者提醒如果自行复刻需要自己承担风险。

七、项目亮点

  1. 超低功耗设计:依靠超级电容代替锂电池,规避电池老化、更换问题;室内灯光就能充电;

  2. 选用不可连接 BLE 广播模式:省去蓝牙握手连接过程,最大限度缩短工作时长;

  3. 硬件完全开源:PCB、结构、驱动代码全部开放,适合 ESP32 低功耗、能量采集学习;

  4. 配套接收端方案完整,不需要手机 APP,用 ESP32‑C6 就能搭建本地监测节点。

八、项目地址

https://github.com/jfm92/everAliveSensor