清泛IT社区App Inventor 2 中文社区

搜索

扫码访问移动社区 移动社区

关注我,精彩不错过! 公众号

扫码安装最新版AI伴侣 获取 App

Aia StoreApp上架指南 .aia 源码一站式解决方案 发布日志AI2连接测试ai2Starter模拟器

AppInventor2离线版中文教育版接入DeepSeek VIP会员 享专有教程,免费赠送基础版*技术支持服务! AI2入门必读中文文档AI2拓展IoT专题

查看: 14|回复: 0
打印 上一主题 下一主题

[经验分享] 【Mixly×AI2系列·第5讲】手机发指令控制LED/舵机:蓝牙双向通信实战① ...

  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 899 天

    [LV.10]以坛为家III

    1271

    主题

    2108

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    60111

    AI2中文网VIP弹球达人接水果达人撸猫达人

    跳转到指定楼层
    楼主
    发表于 2 小时前 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    【系列教程·第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 块)

    下一讲预告:传感器数据上手机——温湿度实时监测与图表显示。
    App Inventor 2 中文网 - AI + 积木,让想法变成 App!Android/HarmonyOS/iOS 更新日志
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    © 2026 tsingfun.com, Inc.  沪ICP备2020034476号-1  沪公网安备31011702000040号

    GMT+8, 2026-08-20 12:16 , Processed in 0.018138 second(s), 30 queries .