你有过这样的想法吗?想用手机控制家里的玩具车、小机器人,但又觉得那些复杂的蓝牙协议和Android开发门槛太高?其实,用App Inventor 2的蓝牙客户端组件,只需要几十行逻辑积木就能实现。
项目背景
家里一台闲置的遥控车,儿子想用手机操控。硬件选型:HC-05蓝牙模块(约15元)+ Arduino Nano(约20元),软件端用App Inventor 2完成。总成本不到40元。
核心实现流程
手机端(App Inventor 2)
组件布局:
- BluetoothClient — 蓝牙连接
- ListPicker — 选择配对设备
- Canvas + Ball — 触摸方向盘
- Clock(间隔100ms)— 轮询发送指令
连接设备:
ListPicker1.元素列表 = BluetoothClient1.地址及名称
→ 选择后调用 BluetoothClient1.连接(选中的地址)
发送控制指令: 自定义通讯协议:4字节包 [速度(0-100), 转向(-50~50), 校验, 0xFF]
硬件端(Arduino)
if (Serial.available() >= 4) {
读取4字节 → 校验帧尾和校验位 → 驱动电机和舵机
}
避坑要点
- 波特率务必匹配:HC-05默认9600,Arduino通讯代码要一致
- 发送间隔别太密:100ms以上比较稳妥,太密会使缓冲区溢出
- 蓝牙无接收事件:SPP蓝牙没有"收到数据"自动事件,双向通信需用Clock轮询
- 权限问题:Android 12+需要动态申请
BLUETOOTH_CONNECT权限
延伸
如果对耗电有要求,建议替换为BLE低功耗蓝牙方案(App Inventor 2中文网提供了专用拓展,支持"收到数据"事件自动触发)。
参考文档: App Inventor 2 通信连接组件文档