清泛IT社区

标题: 手机App控制Arduino:米思齐+App Inventor2蓝牙实战教程(图文) [打印本页]

作者: App Inventor 2     时间: 2 小时前
标题: 手机App控制Arduino:米思齐+App Inventor2蓝牙实战教程(图文)
手机App控制Arduino:米思齐+App Inventor2蓝牙实战教程(图文)

适用对象:创客教师、中学生、IoT入门爱好者
预计用时:60分钟 | 难度:★★☆

你将做出什么
用手机上自己做的App,通过蓝牙远程控制Arduino上的LED和舵机——滑动滑块,舵机转动;点击按钮,灯亮灯灭。全程无需写一行代码,米思齐和App Inventor2都是积木式编程。

准备工作
硬件:Arduino UNO ×1、HC-05蓝牙模块 ×1、LED+220Ω电阻 ×1、SG90舵机 ×1(选做)、面包板与杜邦线

软件
• 米思齐(Mixly)——图形化Arduino编程IDE,官方文档:https://mixly.readthedocs.io
• App Inventor2——在线手机App搭建平台

手机:Android(经典蓝牙方案不支持iPhone,iOS用户请等本系列BLE篇)

第一步:接线
HC-05与Arduino连接(注意TX/RX交叉):
• HC-05 VCC → Arduino 5V
• HC-05 GND → Arduino GND
• HC-05 TXD → Arduino D0 (RX)
• HC-05 RXD → Arduino D1 (TX)

LED长脚接D13,短脚经220Ω电阻接GND。舵机信号线接D9。

常见坑:上传程序时HC-05会占用串口导致上传失败,上传前先拔掉D0/D1两根线

第二步:米思齐编程(硬件端)
打开Mixly,板卡选择Arduino UNO,按以下积木搭建:

1. 初始化:串口分类 → 串口初始化 9600
2. 主循环
   • 如果 串口有可用数据
   • 读取一行文本存入变量 line
   • line = "LED_ON" → D13输出高
   • line = "LED_OFF" → D13输出低
   • line 以 "SERVO:" 开头 → 取出数字,舵机D9转到该角度
   • 串口打印 "OK:" + line(回执,便于调试)

选好COM口,点击"上传",看到"上传成功"即可。

第三步:App Inventor2 编程(手机端)

设计视图拖入组件:
• ListPicker(选蓝牙设备)
• 两个按钮:开灯、关灯
• Slider(0~180,控舵机)
• Label(显示连接状态)
• 不可见组件:BluetoothClient、Clock

逻辑视图搭积木:
1. ListPicker点击前:设置Elements = BluetoothClient1的AddressesAndNames
2. 选择后:Connect(选中地址),成功则Label显示"已连接"
3. 开灯按钮:SendText("LED_ON
");关灯按钮同理
4. 滑块位置变化:SendText("SERVO:" + 位置值 + "
")
5. Clock定时器200ms:有数据就收文本显示到Label(看回执)

打包APK装到手机(或用AI伴侣实时调试)。

第四步:联调
1. 手机系统蓝牙先配对HC-05(密码1234或0000)
2. 打开App → 点ListPicker → 选"HC-05" → 显示"已连接"
3. 点"开灯"——LED亮!拖滑块——舵机跟着转!

原理小结
手机App --蓝牙(SPP)--> HC-05 --串口(9600)--> Arduino解析指令 --> 控制引脚

关键点:双方事先约定好文本协议(指令+
结尾),硬件按行解析。这就是最朴素的"通信协议",理解了它,BLE、WiFi、MQTT都是同一思路的不同通道。

常见问题速查
• 连接失败 → 先在系统蓝牙里配对
• 程序上传失败 → 上传时拔掉D0/D1
• 指令无反应 → 检查两边波特率是否都是9600
• Android 12+闪退 → Screen1属性中勾选蓝牙权限

进阶挑战
• 把LED换成继电器,控制真实台灯
• 加传感器,下一篇文章我们做"硬件→手机"的数据上报和图表显示

本教程属于 Mixly×App Inventor2 系列,上一篇:手机发指令控制LED/舵机:蓝牙双向通信实战①(见同版块)。下一篇:《传感器数据上手机:温湿度实时监测》。




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