micro:bit 微控制器教程
教程概述
本教程将指导您如何使用 App Inventor 2 通过蓝牙连接和控制 micro:bit 微控制器。您将学会:
- 蓝牙连接 micro:bit 设备
- 读取 micro:bit 传感器数据(如温度传感器)
- 向 micro:bit 发送控制指令
- 双向通信实现
作者/摄影: 曾吉弘 时间: 2小时 成本: Android手机 (>8000) + micro:bit
下载和准备
下载资源
- micro:bit 扩展: micro:bit extension
- BLE 扩展: BluetoothLE extension
App Inventor 端设置
Designer 页面设置
用到的元件种类不多:
- 一个 ListPicker 用来选择要连接的蓝牙设备
- 一个用来断线的按钮
- 四个发送不同字符的按钮(控制机器人常见界面)

积木编程
步骤1:蓝牙初始化
程式初始化时,先扫描附近的蓝牙设备,并把扫描到的设备放到 SelectBLE 这个 ListPicker 里面。断线时直接调用 BluetoothLE.Disconnect 指令。

步骤2:设备选择
在 ListPicker 中选择您的 micro:bit(名字很特殊不会选错)
步骤3:读取温度传感器
在上一步已经要求取得 micro:bit 温度传感器,所以要用 TemperatureReceived 事件来取得回传的温度值。

步骤4:发送控制指令
使用四个按钮的 TouchDown 事件来发送不同的指令给 micro:bit,使用 WriteRXCharacteristic 指令来发送 “R\n” 这样的字符串,R 是根据不同按钮的控制指令,\n 是换行符号,代表一个命令的结尾。

用 anyButton.TouchUp 来管理所有按钮的 touchUp 事件,缺点是 Disconnect 按钮也算进去,您可以在事件中加入 component 不等于 Button_Disconnect 就可以了。

micro:bit 端设置
MakeCode 编程
请到 makecode 网站,开启一个新的 micro:bit 项目并完成以下程式。
步骤1:初始化设置
micro:bit 在启动时会显示 “BLE” 訊息提示使用者,并执行蓝牙温度服务与 UART 服务。宣告一个文字变量 RX_Data 来接收从手机发送过来的蓝牙訊息。
在蓝牙成功连线与断线的事件显示对应訊息(”C” / “D”)

步骤2:接收和处理指令
等待是否收到新的蓝牙信号,以换行符号 (newLine) 作区别,并把读取结果放在 RX_Data 变量中。比较变量内容并执行对应动作。如果您想要控制机器人的话,只需要在各个 case 中放入对应的马达控制指令即可。

执行效果
| App Inventor 界面 | 描述 |
|---|---|
| 程式初始画面 | 应用启动后的初始界面 |
| 选择蓝牙BLE装置 | [puvuz] 为该 micro:bit 的蓝牙装置名称 |
| 连线成功 | 显示 Connected 以及温度传感器值 |
| 按下上箭头按钮 | 显示对应訊息 |
| 放開按钮 | 显示对应訊息 |
| 按下右箭头按钮 | 显示对应訊息 |
核心功能说明
蓝牙连接管理
- Connect 连接蓝牙(设备地址)
- 连接到指定的蓝牙设备。
- Disconnect 断开连接()
- 断开当前蓝牙连接。
- ScanDevices 扫描设备()
- 扫描附近的蓝牙设备。
数据传输
- WriteRXCharacteristic 写入RX特征(数据)
- 通过蓝牙写入数据到设备的RX特征。
- RequestTemperature 请求温度()
- 请求获取 micro:bit 的温度传感器数据。
事件处理
- TemperatureReceived 温度接收(温度值)
- 接收到温度传感器数据时触发。
- Connected 已连接(设备信息)
- 蓝牙连接成功时触发。
- Disconnected 已断开()
- 蓝牙连接断开时触发。
应用场景
1. 机器人控制
使用四个按钮控制机器人移动:
- 上箭头:前进
- 下箭头:后退
- 左箭头:左转
- 右箭头:右转
// 按钮按下时发送指令
when Button_Forward.TouchDown
do
call BluetoothLE1.WriteRXCharacteristic "F\n"
when Button_Backward.TouchDown
do
call BluetoothLE1.WriteRXCharacteristic "B\n"
// 按钮释放时停止
when anyButton.TouchUp
do
call BluetoothLE1.WriteRXCharacteristic "S\n"
2. 传感器数据监控
实时显示 micro:bit 传感器数据:
// 定期请求温度数据
when Clock1.Timer
do
if BluetoothLE1.IsConnected then
call BluetoothLE1.RequestTemperature
// 处理温度数据
when BluetoothLE1.TemperatureReceived temperature
do
set Label_Temperature.Text to "温度: " & temperature & "°C"
3. 双向通信
实现手机与 micro:bit 的双向数据交换:
// micro:bit 端发送状态到手机
// 手机端处理自定义数据
when BluetoothLE1.BytesReceived bytes
do
// 解析接收到的字节数据
call ProcessReceivedData bytes
常见问题
Q: 扫描不到 micro:bit 设备?
A: 确保 micro:bit 已烧录蓝牙固件,且设备蓝牙已开启。
Q: 连接失败?
A: 检查设备是否已与其他设备连接,重启 micro:bit 和手机蓝牙。
Q: 无法接收温度数据?
A: 确保 micro:bit 程序中启用了蓝牙温度服务。
Q: 控制指令无效?
A: 检查指令格式是否正确,确保以换行符 “\n” 结尾。
扩展功能
1. 添加更多传感器
可以扩展读取其他传感器数据:
- 加速度计
- 磁力计
- 光传感器
- 按钮状态
2. 数据记录
添加数据库存储功能,记录传感器数据:
// 记录温度数据
when BluetoothLE1.TemperatureReceived temperature
do
call TinyDB1.StoreValue "temperature_" & Clock1.SystemTime, temperature
3. 图形化显示
使用图表组件显示温度变化趋势:
// 更新图表
when BluetoothLE1.TemperatureReceived temperature
do
call Chart1.AddDataPoint temperature
技术规格
- 蓝牙版本: Bluetooth Low Energy (BLE) 4.0+
- 通信协议: Nordic UART Service (NUS)
- 数据格式: 字符串,以换行符分隔
- 连接距离: 约10米
- 延迟: <100ms
相关资源
本教程基于 CAVEDU 教育团队的技术博客内容整理,更多信息请参考原始教程。
扫码添加客服咨询