清泛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