You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决Arduino通过蓝牙模块向MIT Inventor App传输数据失败问题

Arduino蓝牙模块与MIT App数据传输故障修复方案

一、代码问题分析与修复

你的现有代码存在两个核心问题:

  • 仅在收到指令'1'后延迟10秒才发送数据,且delay(10000)会完全阻塞程序,期间无法响应蓝牙串口的其他操作
  • 缺乏主动、持续向App传输数据的逻辑

以下是修复后的代码,解决了阻塞问题并添加定时数据传输功能:

char Incoming_value = 0;
unsigned long previousMillis = 0;
const long interval = 1000; // 每隔1秒发送一次状态数据

void setup() 
{
  Serial.begin(9600);         
  pinMode(12, OUTPUT);       
}

void loop()
{
  // 处理蓝牙接收的指令
  if(Serial.available() > 0)  
  {
    Incoming_value = Serial.read();      
    Serial.print(Incoming_value);        
    Serial.print("\n");        
    if(Incoming_value == '1'){
      digitalWrite(12, HIGH); 
      Serial.println("5"); // 立即发送响应,避免阻塞等待
    } else if(Incoming_value == '0'){
      digitalWrite(12, LOW);
      Serial.println("0");
    }
  }                            

  // 定时向App发送引脚12的状态
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    int pinState = digitalRead(12);
    Serial.println(pinState);
  }
}

代码改进说明:

  • 用millis()替代delay(),避免程序阻塞,确保蓝牙串口始终能响应指令
  • 添加定时数据发送逻辑,每隔1秒主动向App传输引脚12的状态
  • 收到'1'后立即发送响应"5",不再等待10秒

二、MIT App配置检查

结合你提供的配置截图,需确认以下几点:

  • 已添加蓝牙客户端组件,且成功连接到你的蓝牙模块(如HC-05的设备名称)
  • 配置当蓝牙客户端收到文本事件,添加数据处理逻辑(例如将收到的内容显示到标签组件)
  • 发送指令时,确保发送的是字符格式(如发送'1'而非数字1),与Arduino代码的判断条件匹配

三、硬件与蓝牙模块排查

  • 接线规范:蓝牙模块(如HC-05)需交叉接线:
    • VCC接5V/3.3V(根据模块规格选择,避免烧毁)
    • GND接Arduino GND
    • TX接Arduino RX引脚(上传代码时需断开此接线,避免串口冲突)
    • RX接Arduino TX引脚
  • 波特率匹配:确保蓝牙模块的波特率设置为9600,与Arduino代码中Serial.begin(9600)一致(可通过AT指令修改蓝牙模块波特率)

四、调试步骤

  1. 先用USB串口监视器测试代码:发送'1',确认能立即返回"5",且每秒输出引脚状态
  2. 断开USB,给Arduino独立供电,打开MIT App连接蓝牙模块,发送'1'验证数据接收
  3. 检查蓝牙模块指示灯:连接成功后指示灯慢闪,未连接时快闪,以此判断连接状态

内容的提问来源于stack exchange,提问作者Unknown Source

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 07:05:30