Arduino + Debugging上的HC-05蓝牙模块

时间:2014-02-05 05:08:41

标签: bluetooth serial-port arduino

我有点被困在这里。我有一个HC-05蓝牙模块 - 来自ebay-我正在测试它以确保它有效。我已将以下草图上传到芯片:

//////////////////////////////////////////////////////////////////////////////////

// REMIXED BY: TECHBITAR (HAZIM BITAR)
// LICENSE: PUBLIC DOMAIN
// DATE: MAY 2, 2012
// CONTACT: techbitar at gmail dot com

char INBYTE;
int  LED = 13; // LED on pin 13

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

void loop() {
  Serial.println("Press 1 to turn Arduino pin 13 LED ON or 0 to turn it OFF:");
  while (!Serial.available());   // stay here so long as COM port is empty   
  INBYTE = Serial.read();        // read next available byte
  if( INBYTE == '0' ) digitalWrite(LED, LOW);  // if it's a 0 (zero) tun LED off
  if( INBYTE == '1' ) digitalWrite(LED, HIGH); // if it's a 1 (one) turn LED on
  delay(50);
}

我在Android上使用了三个不同的蓝牙终端以及WIN7上的TeraTerm终端来测试blutooth模块是否成功通信。无论出于何种原因,所有4接收线路Press 1 to turn Arduino pin 13 LED ON or 0 to turn it OFF:但是当我在终端中输入1并将其发送到模块时,LED不会亮起。

注意: LED工作 我是肯定的,我已经适当地连接了所有东西 我的RX和TX串行线必须工作,否则我将无法上传草图。

HC-05是否可能无法正常工作且无法接收信息?我该怎么做才能测试呢?

非常感谢!

3 个答案:

答案 0 :(得分:2)

感谢@SunGa的循环理念。它工作,所以我可以确认蓝牙模块是否健康。通过其他论坛阅读试图理解为什么pin 0无法接收蓝牙模块发送的串行信号,我发现这是一个常见问题。事实证明,由于RX和TX硬接线到板上的USB到TTL转换器芯片,有时Pin 0Pin 1的状态会“卡住”并且它们无法正确使用(这是不幸的!而且工程设计很糟糕。)

我能够通过使用SoftwareSerial库成功发送和接收数据 并将Pins 10 and 11重新映射到RX和TX。

那就是说,如果AtMega芯片被用作独立的微控制器(例如DIYduino),则可以使用Pins 0 and 1与蓝牙模块进行通信!

希望这可以帮助那些面临同样问题的人

答案 1 :(得分:0)

我对Arduino一点也不熟悉。但是可以建议您在HC05引脚配置环回连接,并仅测试Android(或PC)终端与HC05之间的通信。这将弄清楚HC05是否有效。

答案 2 :(得分:0)

我遇到了同样的问题,找到了一个很棒的解决方案。该解决方案以名为SoftwareSerial.h的库的形式存在。该库的确为我们带来了奇迹,因为它在最重要的事情上帮助“调试”您正在使用的应用,可能是android应用还是ios应用。

我使用了以下设置/设备:

  1. Adruino模块
  2. LightBlue Explorer应用程序(ios 10)
  3. HC-05蓝牙模块(BLE)

请注意:将ur蓝牙rx引脚连接到adriuno引脚9,将蓝牙tx引脚连接到adruino引脚10。

通过这种方式,您可以使用adruino板的串行接口进行调试。

#include <SoftwareSerial.h>
int state = 0;
SoftwareSerial Bluetooth(10,9);
int data;

void setup() {
  // put your setup code here, to run once:
  pinMode(4,OUTPUT);
  Serial.begin(9600);
  Bluetooth.begin(9600);
}

void loop() {
  if(Bluetooth.available() > 0)
  {
    data = Bluetooth.read();
    if(data == '1')
    {
      digitalWrite(4,HIGH);
      Serial.println("LED Turned ON");
    }
    else{
      digitalWrite(4,LOW);
      Serial.println("LED Turned OFF");
    }
    Serial.println(data);
  }
  delay(1000);
}

有关更多信息,请参阅Bluetooth Module Debugging