news 2026/6/16 23:23:21

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 亮 / 灭

数据设计(非常重要)

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

写入值含义
0x00LED OFF
0x01LED ON

四、准备工作说明

硬件

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

软件

  • MCU 官方 BLE SDK

  • 手机 BLE 调试 App
    推荐:

    • nRF Connect
    • LightBlue

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

BLE 通信的核心是:

Service + Characteristic

1️⃣ 自定义 LED Service

Service UUID: 0xFFF0

2️⃣ LED Control Characteristic

Characteristic UUID: 0xFFF1 Property: Write / Write Without Response

六、MCU 端关键实现思路

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

逻辑上等价于:

ble_init();ble_start_advertising();

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


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

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

voidon_led_char_write(uint8_t*data,uint16_tlen){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 工程开发


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 18:28:25

Python 日期和时间处理指南

Python 日期和时间处理指南 引言 Python 是一种功能强大的编程语言,在数据处理、科学计算和软件开发等领域有着广泛的应用。在处理时间序列数据、日志记录以及系统时间管理时,日期和时间的正确处理至关重要。Python 提供了丰富的库来处理日期和时间,本文将详细介绍 Python…

作者头像 李华
网站建设 2026/6/13 16:48:37

小程序毕设项目推荐-基于django+小程序的工厂定制化ERP办公系统APP小程序【附源码+文档,调试定制服务】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/6/16 12:00:48

英特尔AI双赛走出的万名开发者,正在弥合AI人才缺口

作者:金旺近日,据央视新闻报道,我国人工智能企业数量已突破6200家,2025年我国人工智能核心产业规模已经突破1万亿元,人工智能大模型正在融入千行百业。与此同时,另一个来自人力资源社会保障部的统计数据显示…

作者头像 李华
网站建设 2026/6/15 14:34:27

大数据领域数据架构的经典案例剖析

好的,各位热爱技术的朋友们!今天,我们来深入探讨一个在大数据领域至关重要,却又常常让人感到困惑的话题——数据架构。 你是不是有过这样的经历? 业务部门抱怨:“我要的报表怎么又要等两天?这…

作者头像 李华
网站建设 2026/6/15 23:04:08

django景点印象服务系统-计算机毕业设计源码+无LW文档

Django景点印象服务系统 摘要 本文围绕基于Django框架开发的景点印象服务系统展开论述。通过深入分析研究背景与意义,明确系统开发的必要性;详细阐述需求分析,确定系统的功能与非功能要求;合理规划功能设计,构建系统的…

作者头像 李华