清泛IT社区

标题: 【Mixly×AI2系列·第5讲】手机发指令控制LED/舵机:蓝牙双向通信实战① [打印本页]

作者: App Inventor 2     时间: 1 小时前
标题: 【Mixly×AI2系列·第5讲】手机发指令控制LED/舵机:蓝牙双向通信实战①
【系列教程·第5讲】手机发指令控制 LED/舵机:Mixly × App Inventor2 双向通信实战①

本讲是《米思齐(Mixly) × App Inventor2 接入系列》第 5 讲,完整版方案可参考同版块的系列开篇调研帖。

一、知识目标
• 理解"App → 蓝牙 → 串口 → 硬件"的指令传递链路
• 掌握 Mixly 串口读取与条件判断块
• 掌握 App Inventor2 BluetoothClient 发送文本指令
• 建立简单文本协议意识(指令集设计)

二、器件清单
• Arduino UNO × 1(或 Nano)
• HC-05 蓝牙模块 × 1(默认波特率 9600)
• LED(含 220Ω 电阻)× 1,接 D13 或面包板
• SG90 舵机(选做)× 1,接 D9
• 面包板 + 杜邦线若干

接线:HC-05 VCC→5V,GND→GND,TXD→Arduino D0(RX),RXD→Arduino D1(TX)。注意 TX/RX 交叉;上传程序时先拔掉蓝牙模块,避免串口冲突。

三、协议设计(先约定,再编程)
LED_ON
    → 点亮 LED
LED_OFF
   → 熄灭 LED
SERVO:90
  → 舵机转到 90 度


要点:指令以换行符结尾,硬件端按行解析,避免粘包。

四、Mixly 端编程

步骤 1:初始化
串口分类 → 串口初始化 (9600)

步骤 2:主循环读取并解析
当 循环执行:
    如果 串口有可用数据:
        设置 变量 line 为 串口读取一行(以
结束)
        如果 line = "LED_ON":
            数字引脚 13 输出 高
        否则如果 line = "LED_OFF":
            数字引脚 13 输出 低
        否则如果 line 以 "SERVO:" 开头:
            设置 变量 ang 为 文本转数字(取子串...)
            舵机 D9 转到角度 ang
        串口打印 "OK:" + line    ← 回执,方便调试


步骤 3:上传
板卡选 Arduino UNO,选对 COM 口,点"上传"。上传前断开 HC-05 的 TX/RX 连线(否则上传失败——最常见坑)。

五、App Inventor2 端

1. 组件设计
• ListPicker(ListPicker1):选择蓝牙设备
• 按钮 btnON / btnOFF / btnServo:发指令
• Slider(Slider1):舵机角度 0~180
• Label(lblStatus):显示连接状态
• BluetoothClient(BluetoothClient1,不可见):蓝牙通信
• Clock(Clock1,可选):轮询回执

2. 逻辑块

选设备并连接:
ListPicker1.BeforePicking:
    设置 ListPicker1.Elements = BluetoothClient1.AddressesAndNames

ListPicker1.AfterPicking:
    如果 BluetoothClient1.Connect(ListPicker1.Selection的地址):
        设置 lblStatus.Text = "已连接"
    否则:
        设置 lblStatus.Text = "连接失败"


发送指令:
btnON.Click:
    BluetoothClient1.SendText("LED_ON
")

btnOFF.Click:
    BluetoothClient1.SendText("LED_OFF
")

Slider1.PositionChanged:
    BluetoothClient1.SendText("SERVO:" + Slider1.ThumbPosition + "
")


接收回执(可选):
Clock1.Timer(间隔200ms):
    如果 BluetoothClient1.BytesAvailable > 0:
        设置 lblStatus.Text = BluetoothClient1.ReceiveText(-1)


3. 权限(Android 12+)
Screen1 属性中勾选蓝牙权限;或使用新版 AI2(自动申请 BLUETOOTH_SCAN/CONNECT)。首次运行允许位置权限(经典蓝牙扫描需要)。

六、联调步骤
1. 手机系统蓝牙先与 HC-05 配对(密码 1234/0000)
2. 硬件上电,Mixly 串口监视器确认无报错
3. 打开 App → ListPicker 选 "HC-05" → 状态变"已连接"
4. 点 btnON → 板载/外接 LED 亮;btnOFF → 灭
5. 拖动滑块 → 舵机跟随转动

七、常见问题
• 连接失败 → 未在系统蓝牙中配对,先配对再进 App
• 上传程序失败 → HC-05 占用串口,上传时拔掉 TX/RX
• 指令无反应 → 波特率不一致,确认双方都是 9600
• iPhone 连不上 → iOS 不支持 SPP,换 BLE 路线(第3讲扩展)
• 舵机乱转 → 指令粘包,保持
结尾、按行解析

八、课后练习
1. 增加一个"闪烁"指令(BLINK),硬件端闪烁 5 次
2. 把 LED 换成继电器,控制台灯
3. 增加 App 端断开按钮(Disconnect 块)

下一讲预告:传感器数据上手机——温湿度实时监测与图表显示。




欢迎光临 清泛IT社区 (https://bbs.tsingfun.com/) Powered by Discuz! X3.3