用手机App Inventor 2做个遥控器:5分钟实现蓝牙控制Arduino LED(HC-42模块实战) 用App Inventor 2打造专属蓝牙遥控器5分钟掌控Arduino灯光秀当你第一次用手机控制LED灯亮起的瞬间那种隔空取物的奇妙感会瞬间点燃创造的热情。不同于现成的蓝牙调试工具自己动手编写一个专属控制App不仅能深度理解物联网的底层逻辑更能在朋友面前炫耀看这个遥控器是我自己做的我们将使用MIT App Inventor 2这款图形化编程神器配合HC-42蓝牙模块带你完成从界面设计到功能实现的完整闭环。1. 硬件准备与基础配置在开始App开发之前我们需要确保硬件系统搭建无误。HC-42蓝牙模块作为新一代BLE 5.0设备相比传统HC-05有着更低的功耗和更稳定的连接性能。准备以下材料清单核心组件Arduino Uno开发板 ×1HC-42蓝牙模块 ×1LED灯 ×1建议使用高亮款增加视觉效果220Ω电阻 ×1杜邦线若干接线示意图HC-42引脚Arduino连接注意事项VCC3.3V严禁接5VGNDGND共地必要TXDD2软件串口RXDD3软件串口硬件组装完成后上传以下基础测试代码到Arduino#include SoftwareSerial.h SoftwareSerial BT(2, 3); // RXD2, TXD3 void setup() { Serial.begin(9600); BT.begin(9600); pinMode(8, OUTPUT); digitalWrite(8, LOW); } void loop() { if(BT.available()) { char cmd BT.read(); Serial.println(cmd); // 调试输出 if(cmd a) digitalWrite(8, HIGH); if(cmd b) digitalWrite(8, LOW); } }关键点验证使用手机通用蓝牙串口工具发送字符a应点亮LED发送b熄灭。若失败请检查蓝牙模块STATE灯是否常亮已连接串口波特率是否统一为9600软件串口引脚定义是否与接线一致2. App Inventor界面设计实战打开App Inventor官网(ai2.appinventor.mit.edu)新建项目ArduinoBTController。我们将采用Material Design风格构建一个极简控制面板核心组件树BluetoothClient非可视组件负责通信HorizontalArrangement×2布局容器Button×3连接/断开控制Label×2状态显示ListPicker设备选择界面设计技巧将按钮背景色设为#4CAF50Material Green为开关按钮添加不同状态图标如→使用Clock组件实现自动重连机制关键属性设置参考下表组件类型命名规范关键属性值示例ButtonbtnConnectText扫描设备ListPickerlstDevicesText选择HC-42LabellblStatusFontSize18设计原则保持Fitts定律——高频操作元素放大且置于拇指热区。连接状态建议采用颜色编码红色#F44336未连接蓝色#2196F3连接中绿色#4CAF50已连接3. 逻辑块编程深度解析切换到Blocks编程视图我们将实现三大核心功能设备连接管理when btnConnect.Click call BluetoothClient1.ConnectWithAddress address: lstDevices.Selection end when when BluetoothClient1.Connected set lblStatus.Text to 已连接 set lblStatus.BackgroundColor to green end whenLED控制协议when btnOn.Click if BluetoothClient1.IsConnected call BluetoothClient1.SendText text: a else call Notifier1.ShowAlert message: 请先连接蓝牙设备 end if end when异常处理机制when BluetoothClient1.ErrorOccurred set lblStatus.Text to 错误: join get message set lblStatus.BackgroundColor to red call Notifier1.ShowAlert message: 连接中断正在重试... call Clock1.Timer end when高级技巧添加振动反馈增强操作体验when btnOn.Click call Phone1.Vibrate milliseconds: 50 end when4. 功能扩展与项目进阶基础功能实现后可以考虑以下增强方案多设备控制矩阵// Arduino端代码扩展 if(cmd c) digitalWrite(9, HIGH); // 第二盏灯 if(cmd d) analogWrite(10, 128); // PWM调光语音控制集成 在App Inventor中添加SpeechRecognizer组件when btnVoice.Click call SpeechRecognizer1.GetText end when when SpeechRecognizer1.AfterGettingText if result 开灯 call BluetoothClient1.SendText text: a end if end when状态同步显示 双向通信实现// Arduino端添加 if(digitalRead(8) HIGH){ BT.println(LED_STATUS:ON); }// App端添加 when BluetoothClient1.BytesAvailable set lblFeedback.Text to call BluetoothClient1.ReceiveText end when项目打包时建议开启压缩APK选项减少安装包体积。对于华为等国产手机可能需要额外设置允许安装未知来源应用。实际测试中HC-42在10米范围内响应延迟200ms完全满足室内控制需求。