🔋 用 EFR32 实现低功耗蓝牙传感器节点(从原理到实战)
做 IoT,如果设备只能跑一天,那就是“玩具”。
能跑一年,才叫“产品”。本文带你用 EFR32 做一个:
👉低功耗 BLE 传感器节点
具备:
- 环境数据采集
- 蓝牙广播/连接上传
- 深度睡眠(µA级)
目标是:电池供电长期运行。
一、项目目标(工程级思维)
设计一个节点:
| 功能 | 描述 |
|---|---|
| 传感采集 | 温湿度/电池电压 |
| BLE通信 | 广播 + 手机读取 |
| 低功耗运行 | 长时间待机 |
| 周期唤醒 | 定时采样 |
| 可扩展OTA | 后期升级 |
二、系统架构
┌────────────┐ │ 传感器(I2C)│ └─────┬──────┘ ↓ ┌────────────┐ │ EFR32 MCU │ └─────┬──────┘ ↓ ┌────────────┐ │ BLE通信 │ └─────┬──────┘ ↓ 手机 / 网关三、硬件选型
1️⃣ 主控
推荐你当前使用的:
👉EFR32MG24 / BG22
优势:
- 超低功耗(EM2/EM3)
- BLE5.2
- 支持 Zigbee / Matter
- Silicon Labs 官方生态完整
2️⃣ 传感器
推荐:
- SHT30(温湿度)
- 或 SI7021(更低功耗)
3️⃣ 电源
- CR2032(纽扣电池)
或 - 2×AA电池
4️⃣ 低功耗设计关键
👉 所有外设都要支持“关电/休眠”
四、低功耗的核心思想(重点)
很多人以为:
❌ 低功耗 = 降低主频
其实真正的关键是:
让 MCU 大部分时间在睡觉。
EFR32 能耗模式(必须理解)
| 模式 | 说明 |
|---|---|
| EM0 | 运行 |
| EM1 | 低功耗运行 |
| EM2 | 深度睡眠 ⭐ |
| EM3 | 更低功耗 |
| EM4 | 极限低功耗 |
👉 实际项目中:
90%以上时间应该在 EM2。
五、系统工作流程设计
睡眠(EM2) ↓(定时唤醒) 采集传感器 ↓ BLE发送数据 ↓ 再次进入睡眠六、软件架构设计
建议分层:
App层(业务逻辑) ↓ BLE协议层 ↓ 驱动层(I2C/ADC) ↓ 硬件层任务逻辑(非RTOS简化版)
while(1){sleep();// 进入低功耗if(timer_event){read_sensor();ble_send();}}七、关键实现步骤
1️⃣ 定时唤醒(关键)
使用:
- LETIMER(低功耗定时器)
sl_sleeptimer_start_periodic_timer_ms(&timer,5000,callback,NULL,0,0);👉 每 5 秒唤醒一次。
2️⃣ 读取传感器
floattemp,humi;SHT30_Read(&temp,&humi);3️⃣ BLE 广播数据(低功耗推荐)
不用连接,直接广播:
ADV: T=25.6,H=48.2示例:
uint8_tadv_data[]={0x02,0x01,0x06,0x0A,0xFF,'T','2','5','.','6'};4️⃣ BLE Notify(连接模式)
sl_bt_gatt_server_notify_all(handle,len,data);5️⃣ 进入低功耗模式
sl_power_manager_sleep();👉 系统自动进入 EM2。
八、电池电量检测(实用功能)
使用 ADC:
uint16_tadc=ADC_Read();floatvoltage=adc*3.3/4095;上传:
Vbat:3.01V九、功耗优化核心技巧(干货)
1️⃣ 减少广播频率
100ms → 高功耗 1000ms → 推荐2️⃣ 减少连接时间
连接越久:
👉 功耗越高
3️⃣ 传感器供电控制
GPIO 控制电源 → 用完断电4️⃣ 使用广播代替连接
👉 无连接最省电
5️⃣ 避免频繁唤醒
👉 每 5~60 秒采样一次
十、功耗估算(典型)
| 状态 | 电流 |
|---|---|
| 睡眠(EM2) | ~2µA |
| 采样瞬间 | ~2mA |
| BLE发送 | 510mA |
平均电流:
👉 < 50µA(设计合理)
十一、续航估算
以 CR2032(220mAh)为例:
220mAh / 0.05mA ≈ 4400小时 ≈ 6个月+优化后:
👉可达 1 年
十二、常见踩坑
❌ 一直不进低功耗
👉 有外设没关闭
❌ 功耗异常高
👉 BLE广播太频繁
❌ 唤醒失败
👉 定时器配置错误
❌ 数据丢失
👉 睡眠前没发完数据
十三、应用场景
- 智能家居传感节点
- 仓储环境监控
- 冷链物流
- IoT 低功耗终端
十四、项目升级方向
🚀 BLE Mesh
多个节点组网
🚀 Zigbee / Matter
接入智能家居生态
🚀 OTA升级
远程更新固件
🚀 网关系统
BLE → WiFi → 云
总结一句话
低功耗嵌入式的本质,
不是“省一点电”,
而是“绝大多数时间不工作”。
当你的设备:
- 会睡觉
- 会按时醒来
- 只在必要时通信
你就已经在做一个真正的 IoT 产品。