BLE 蓝牙开发入门:用手机控制开发板 LED

📱 BLE 蓝牙开发入门:用手机控制开发板 LED

学 BLE,不从点灯开始,等于白学。

这一篇,我们用最经典、成功率最高的 BLE Demo:
手机 → 蓝牙 → 单片机 → 控制 LED

帮你真正入门 BLE,而不是只停留在"概念层"。


一、BLE 到底在干嘛?先用一句话讲清楚

BLE(Bluetooth Low Energy)本质是:

通过"属性(Attribute)"读写数据,实现设备之间的交互。

点灯这件事,本质上就是:

  • 手机 写一个值
  • MCU 收到这个值
  • MCU 根据值控制 GPIO

二、BLE 架构速览(新手必懂)

在 BLE 中,有 3 个关键角色:

名称 作用
Central 手机(主控)
Peripheral 开发板
GATT Server 提供服务与特征

本例中:

  • 手机 = Central
  • 开发板 = Peripheral + GATT Server

三、整体方案设计(先有全局观)

我们要做什么?

  1. 开发板广播 BLE
  2. 手机扫描并连接
  3. 手机写 LED 控制指令
  4. MCU 收到写事件
  5. 控制 LED 亮 / 灭

数据设计(非常重要)

我们设计一个最简单的协议:

写入值 含义
0x00 LED OFF
0x01 LED ON

四、准备工作说明

硬件

  • 任意支持 BLE 的 MCU
    (如 EFR32 / nRF52 / ESP32 / STM32WB)
  • 一个 LED(板载即可)

软件

  • MCU 官方 BLE SDK

  • 手机 BLE 调试 App

    推荐:

    • nRF Connect
    • LightBlue

五、BLE 服务与特征设计(核心)

BLE 通信的核心是:

Service + Characteristic

1️⃣ 自定义 LED Service

text 复制代码
Service UUID: 0xFFF0

2️⃣ LED Control Characteristic

text 复制代码
Characteristic UUID: 0xFFF1
Property: Write / Write Without Response

六、MCU 端关键实现思路

1️⃣ 初始化 BLE 并开始广播

逻辑上等价于:

c 复制代码
ble_init();
ble_start_advertising();

手机能扫描到你,说明这一步成功了。


2️⃣ 处理手机写特征值事件(重点)

BLE SDK 一般会给你一个 写事件回调:

c 复制代码
void on_led_char_write(uint8_t *data, uint16_t len)
{
    if(data[0] == 0x01)
    {
        LED_ON();
    }
    else
    {
        LED_OFF();
    }
}

注意几点:

  • 不要在这里做复杂逻辑
  • 只解析数据 + 控 GPIO
  • 保证执行快

七、手机端操作步骤(新手成功率 100%)

  1. 打开 nRF Connect

  2. 扫描设备

  3. 找到你的开发板

  4. 点击连接

  5. 展开 GATT

  6. 找到 FFF1 特征

  7. 写入:

    • 01 → LED 亮
    • 00 → LED 灭

如果 LED 跟着变化------

🎉 恭喜,BLE 通了。


八、为什么 BLE 点灯是"入门必做"?

因为这个例子:

  • 覆盖了 BLE 全流程

  • 能验证:

    • 广播是否成功
    • 连接是否稳定
    • GATT 是否正确
    • 数据链路是否可用

一句话:

点亮 LED,等于验证了 BLE 的 80%。


九、新手最常踩的 8 个坑

❌ 扫描不到设备

  • 广播没开
  • UUID 配错
  • 手机没开蓝牙

❌ 能连上但写无效

  • Characteristic 没开 Write
  • 回调函数没注册

❌ 写一次就断开

  • 回调里做了阻塞操作
  • 栈溢出

❌ LED 状态不对

  • GPIO 没初始化
  • 高低电平反了

❌ 手机上写的是字符串 "01"

👉 BLE 是 字节,不是 ASCII。


十、这个 Demo 的工程价值

它不是玩具。

它是后续所有 BLE 项目的基础:

  • BLE 控制继电器
  • BLE 控制电机
  • BLE 参数配置
  • BLE OTA
  • BLE 智能家居

十一、下一步可以怎么进阶?

  • LED 状态 Notify 回手机
  • 多个 LED / 多路 IO
  • 加入密码 / 加密
  • BLE + RTOS
  • BLE 低功耗优化

十二、总结一句话

BLE 学习的第一道门槛,
就是让"手机写的数据,真的能控制硬件"。

当你用手机点亮 LED 的那一刻,

你已经真正走进了 BLE 工程开发。


相关推荐
UrSpecial1 小时前
GPIO 是什么?
单片机·嵌入式硬件
修船大队长3 小时前
配置接受报文每个报文对应一个mailbox配置流程记录
网络·单片机·mcu
搁浅小泽5 小时前
二极管选型技术规范
单片机·嵌入式硬件·汽车
搁浅小泽5 小时前
电感选型技术规范
单片机·嵌入式硬件·汽车
..Dauntless..5 小时前
【stm32】串口——在MCU内部的工作过程
stm32·单片机·嵌入式硬件
lzqrzpt6 小时前
临沂LED驱动电源工程选型标准与工艺对比解析
python·单片机·嵌入式硬件·物联网
小黄蚁6 小时前
使用LVGL模拟示波器创建正弦函数波形
单片机·学习
Code_Solitude9 小时前
开发板点灯实验源码
stm32·单片机·嵌入式硬件
炸膛坦客20 小时前
单片机开发工具篇:(十四)配置输出 .map 文件及其本地路径
c语言·单片机·嵌入式硬件
笨笨饿21 小时前
140_AI新手村MCP与Skills是干嘛的
开发语言·人工智能·python·stm32·单片机·嵌入式硬件·物联网