目录
以下是 BLE技术在典型应用场景中的完整流程示例,涵盖 智能家居控制、健康监测、资产追踪 和 物联网数据采集 四个场景,结合 硬件配置、软件流程、通信交互 和 代码示例,帮助开发者快速理解实际应用逻辑:
1. 智能家居控制(如灯光开关)
场景描述
通过BLE控制智能灯泡的颜色和亮度。
流程步骤
(1) 设备初始化
-
硬件配置:
-
智能灯泡(Peripheral):nRF52840 + LED驱动电路。
-
控制端(Central):手机APP。
-
-
软件初始化:
// 灯泡端初始化(nRF Connect SDK) void main(void) { if (bt_enable(NULL)) { printk("Bluetooth init failed\n"); return; } init_light_service(); // 注册灯光服务 start_advertising(); }
(2) 广播与扫描
-
灯泡广播:
static struct bt_data ad[] = { BT_DATA_BYTES(BT_DATA_FLAGS, BT_LE_AD_FLAG_BREDR_NOT_SUPPORTED), BT_DATA(BT_DATA_NAME_COMPLETE, "Smart Light", 11), BT_DATA_UUID16_LIST(BT_UUID_LIGHT_SERVICE), }; void start_advertising(void) { bt_le_adv_start(BT_LE_ADV_NCONN_NAME, ad, ARRAY_SIZE(ad), NULL, 0); }
-
手机扫描:
// 手机端扫描并发现灯泡 bt_le_scan_start(BT_LE_SCAN_ACTIVE, scan_cb);
(3) 连接建立
-
手机发起连接:
void connect_to_light(const bt_addr_le_t *addr) { bt_conn_le_create(addr, BT_CONN_LE_CREATE_CONN, NULL, conn_cb); }
(4) 服务发现
-
发现灯光服务:
// 手机端发现服务 bt_gatt_discover(conn, BT_UUID_LIGHT_SERVICE, light_service_cb);
(5) 数据交互
-
设置灯光颜色与亮度:
// 手机端写入特征值 struct bt_gatt_write_params write_params = { .data = (uint8_t[]){0xFF, 0x00, 0x00, 0x80}, // 红色,亮度128 .length = 4, }; bt_gatt_write(conn, color_char, &write_params);
-
灯泡端响应:
// 灯泡端特征写入回调 static void color_write_cb(struct bt_conn *conn, struct bt_gatt_write_params *params) { uint8_t *data = params->data; set_led_color(data[0], data[1], data[2]); // 设置RGB值 set_brightness(data[3]); // 设置亮度 }
(6) 断开连接
-
手机主动断开:
bt_conn_disconnect(conn, BT_HCI_ERR_REMOTE_USER_TERM_CONN);
2. 健康监测(如心率传感器)
场景描述
通过BLE实时传输心率数据到手机APP。
流程步骤
(1) 设备初始化
-
硬件配置:
-
心率传感器(Peripheral):nRF528
-