欢乐熊大话蓝牙知识7:如何用蓝牙芯片实现一个 BLE 传感器节点?
🤖 如何用蓝牙芯片实现一个 BLE 传感器节点?
——手把手带你把“感知世界”的设备装上蓝牙翅膀!
🧐 什么是 BLE 传感器节点?
你可以把它想象成这样一位选手:
“我有一堆传感器,比如温度、湿度、加速度……我用 BLE 把这些数据随时广播出去,谁想接就接,谁要看就连上看。”
这类节点广泛应用在:
- 智能农业(温湿度/光照节点)🌾
- 智能家居(门磁/烟雾检测)🏠
- 健康穿戴(心率/体温)🩺
- 工业监测(加速度/气体)🏭
🛠️ 你需要哪些“装备”?
💻 硬件方面:
项目 | 推荐 |
---|---|
单片机 | EFR32BG22、nRF52832、CC2640 等 |
传感器 | DHT11(温湿度)、SHT30、MPU6050 等 |
电源 | 电池 + LDO / DC-DC |
板子 | 开发板 or 自制原型板 |
![]() |
💡 软件方面:
工具 | 用途 |
---|---|
SDK(如 Gecko SDK) | BLE 协议栈 + 示例 |
BLE 调试工具 | nRF Connect、BGTool |
IDE | Simplicity Studio / Keil |
🧱 BLE 节点结构图(示意)
+----------------------+
| 传感器读取模块 |
+----------+-----------+|v
+----------+-----------+
| 数据处理(单位/范围) |
+----------+-----------+|v
+----------+-----------+
| BLE 模块(广播 / 连接)|
+----------------------+
🚦 开发流程:从零打造你的 BLE 节点
1️⃣ 确定你的“感知内容” 🤓
你打算测量什么?温度?光照?动作?
举个例子,我们来做一个BLE 温湿度节点(用 SHT30)!
2️⃣ 初始化传感器 🧪
以 I2C 接口的 SHT30 为例,伪代码如下:
sht30_init(); // 初始化I2C和SHT30float temp, humi;
sht30_read(&temp, &humi); // 获取温湿度值
3️⃣ 设置 BLE 广播 & GATT 服务 📡
你需要一个自定义服务,比如这样设计:
服务:0xFFF0(自定义环境服务)
├── 特征1:温度(UUID: 0xFFF1,Read + Notify)
├── 特征2:湿度(UUID: 0xFFF2,Read + Notify)
在 EFR32 的 GATT 配置中添加这两个特征,设置可读 + 可通知权限。
4️⃣ 启动 BLE 广播 & 等待连接
sl_bt_advertiser_start(advertising_set_handle,advertiser_general_discoverable,advertiser_connectable_scannable);
5️⃣ 定时读取数据并发送 Notify 🔔
app_timer_start(periodic_timer, 1000, NULL); // 每秒触发void periodic_timer_cb() {sht30_read(&temp, &humi);// 通知数据sl_bt_gatt_server_send_notification(conn_handle, gattdb_temperature, sizeof(temp), (uint8_t*)&temp);sl_bt_gatt_server_send_notification(conn_handle, gattdb_humidity, sizeof(humi), (uint8_t*)&humi);
}
6️⃣ 省电模式:能睡就睡 😴
BLE 的魅力之一就是“超低功耗”。你可以在没连接、传感器采样间隙进入 EM2 休眠:
EMU_EnterEM2(true);
唤醒方式:RTC 定时 or 外设中断。
📱 用手机测试节点?
推荐使用 nRF Connect Mobile App:
- 搜索你的设备(如
Env_Node_001
) - 点击连接 → 浏览服务 → 找到温湿度特征
- Enable Notify → 看着数据跳舞!
🧠 开发者常见问题速查
问题 | 原因 |
---|---|
手机连上但看不到数据? | Notify 没启用 / 没触发发送 |
数据不更新? | 采样定时器没启动 / 传感器无响应 |
电池太快没电? | 广播间隔太短 / 未使用休眠模式 |
为什么不广播? | 未开启广播 or BLE 状态未初始化完成 |
⚙️ 项目进阶思路
- 加入电量监测服务,BLE 报告电池电压
- 使用压缩或编码算法,节省数据量
- 多节点组网(使用 BLE Mesh 或 Zigbee 搭配 BLE)
- OTA 升级支持(别忘了设备也想“进化”)
🎯 总结:BLE 节点的核心思维
模块 | 你要做的事 |
---|---|
MCU | 控制传感器、控制 BLE 通信 |
BLE 服务 | 定义好 GATT 表结构 |
电源管理 | 合理进入低功耗模式,延长续航 |
数据传输 | 选对方式(广播?连接?Notify?) |
喜欢的盆友点赞加关注~~