micro:bit 微控制器教程

« 返回首页 Iot 专题

micro:bit 微控制器教程

教程概述

本教程将指导您如何使用 App Inventor 2 通过蓝牙连接和控制 micro:bit 微控制器。您将学会:

  • 蓝牙连接 micro:bit 设备
  • 读取 micro:bit 传感器数据(如温度传感器)
  • 向 micro:bit 发送控制指令
  • 双向通信实现

作者/摄影: 曾吉弘 时间: 2小时 成本: Android手机 (>8000) + micro:bit

下载和准备

下载资源

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 教育团队的技术博客内容整理,更多信息请参考原始教程

文档反馈