欢乐熊大话蓝牙知识11:如何打造一个低功耗蓝牙温湿度传感器?
🧊 如何打造一个低功耗蓝牙温湿度传感器?
用电像抠门老头,通信像特工密谈。
🌡️ 引子:为什么你需要一个低功耗 BLE 传感器?
你是不是有过这种需求:
- 想在办公室角落放个传感器看温湿度,却不想拉电源线?
- 想给智能养宠箱加个环境感知模块,但不能三天一换电池?
- 想造个能跑一整年的 BLE 节点,好拿去打比赛、交 KPI?
恭喜你,BLE + 低功耗温湿度传感器就是你的福音!
📦 硬件选型:别让传感器耗你电!
一、主控芯片(BLE SoC)
型号 | 特点 |
---|---|
EFR32BG22 | 超低功耗、蓝牙5.2、安全加密强 |
nRF52810 | 成熟方案、文档丰富 |
CC2340R5 | TI新星、功耗低、性价比高 |
推荐使用 EFR32BG22,支持 DCDC、EM2/EM3 等超低功耗模式,打工人专属。
二、温湿度传感器
型号 | 接口 | 功耗(睡眠) | 精度 |
---|---|---|---|
SHTC3 | I2C | <1 µA | ±0.2°C/±2%RH |
AHT20 | I2C | ~1 µA | ±0.3°C/±2%RH |
HDC2080 | I2C | 0.1 µA | ±0.2°C/±2%RH |
传感器记得“读完就拔电”!GPIO 控电神器走起!
🔋 BLE 低功耗设计要点
1. 睡,必须睡!
BLE不是一直广播的,它更多时候像是在“闭目养神”。
- 广播间隔:越长越省电,推荐 1-5 秒。
- 连接方式:如无需要实时传输,使用广播即可。
// 设置每5秒广播一次(单位0.625ms)
sl_bt_advertiser_set_timing(handle, 8000, 8000, 0, 0);
2. EM2 模式下美美睡觉
EFR32BG22 支持 EM2 深睡眠模式,只有 RTC & GPIO 会“陪着它”。
EMU_DCDCInit_TypeDef dcdcInit = EMU_DCDCINIT_DEFAULT;
EMU_DCDCInit(&dcdcInit); // 打开 DCDC,省电利器!EMU_EnterEM2(true); // 深度睡眠,别叫我醒!
3. RTC 唤醒 + 定时测量
sl_sleeptimer_start_timer_ms(&timer_handle, 60000, timer_callback, NULL, 0, 0);
1分钟唤醒一次,读取数据→广播→再睡,像极了早八醒一次看看有没有地震。
📡 数据上传:GATT 还是广播包?
✅ GATT方式(连接)
- 客户端连接,读取温湿度
- 可带 Notify 主动上报
sl_bt_gatt_server_send_notification(conn, gattdb_temperature,