首页 文章

检查我的Arduino板上的蓝牙模块是否正常工作

提问于
浏览
1

我正在努力让我的Arduino UNO板与BlueSmirf Gold合作(http://www.sparkfun.com/products/10268) .

我按照各种教程中的说明连接了它(例如:http://www.instructables.com/id/how-to-Control-arduino-by-bluetooth-from-PC-pock/

我已将波特率设置为9600,如下所述:http://forum.sparkfun.com/viewtopic.php?p=94557

我设法使用默认的Arduino串行终端,ZTerm和我的手机(使用Amarino)连接到它 . 在每种情况下,蓝牙调制解调器上的绿灯都会亮起,所以直到它看起来很好 .

主要的问题是我的调制解调器似乎无法发送/接收任何东西(唯一一次我有任何响应是当我将波特率设置为9600时) .

例如,我有这个代码(在这里简化,但主要的想法是在那里):

int out_pin = 2;

String readLine() {
  char command[100];
  int i = 0;

  if(Serial.available()){

     delay(100);
     while( Serial.available() > 0 && i< 99) {
        command[i++] = Serial.read();
     }

     command[i++]='\0';
     Serial.flush();
  }

  Serial.print("command: ");
  Serial.println(command);
  return (String) command;
}

void menu() {
  if (Serial.available() <= 0) {
    return;
  }

  String command = readLine();

  // Do thing based on the command
}

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

void loop() {
 menu();
}

从逻辑上讲,当我通过终端发送内容时,我应该将其取回(这是使用USB序列时会发生的情况) . 当我通过蓝牙连接到主板时,它只是保持沉默 .

我也试过这段代码:

void setup() {
     Serial.begin(9600);
 }

 void loop() {
     Serial.println("Spam ...");
 }

使用USB串口时工作正常,但是当使用蓝牙连接到我的主板时,我什么也得不到 .

使用这两个代码,我还尝试使用Amarino中的监视工具向主板发送消息,但似乎它从未得到过 .

我尝试了其他各种各样的东西: - 没有可用的USB串口(我通过USB为Arduino板供电,但是使用了一个插墙式适配器 . 我稍后会尝试使用9V电池,但我没有在那一刻) - 不要将CTS-1连接到调制解调器中的RTS-0(一些教程告诉连接它们,另一个没有 . 所以当我怀疑我尝试了两种解决方案时) .

我唯一一次看起来像通信的东西就是这个设置:

  • Arduino - 通过蓝牙连接手机

  • Amarino的监控工作正在进行中

  • Arduino - 通过USB串口连接的计算机

将新代码上传到我的主板时,它的某些部分显示在手机的监控工具上 . 它发生了一两次,我现在无法重现它 .

我很确定我在某处做错了(似乎至少这是最合乎逻辑的解释)但是我也想知道它是不是蓝牙模型的问题(我的意思是,即使示例教程也没有工作) .

所以问题是:

  • 有什么我错过/忘记做的可以帮助我解决问题吗?

  • 如果没有:是否有一种简单的方法来检查我的蓝牙调制解调器是否正常工作?

谢谢,文森特

2 回答

  • 0

    我仍然没有第二个问题的答案(“有一种简单的方法来检查我的蓝牙调制解调器工作正常吗?”)但我终于能够从蓝牙调制解调器发送/接收消息 .

    正如我猜测(至少我如何理解)这是同一板上的两个连续出版物(蓝牙和USB)的问题 . 为了解决这个问题,我将BT TX-1插在数字3上的引脚数字5,RX-0上并使用以下代码(基于SoftwareSerial教程):

    #include <SoftwareSerial.h>
    SoftwareSerial bluetooth(5, 3);
    
    void setup()
    {
      // Start the hardware serial port
      Serial.begin(9600);
      bluetooth.begin(9600);
    }
    
    void loop()
    {
      bluetooth.listen();
      // while there is data coming in, read it
      // and send to the hardware serial port:
      while (bluetooth.available() > 0) {
        char inByte = bluetooth.read();
        Serial.write(inByte);
      }
    }
    

    它会在默认串行(在我的情况下为USB)上发送从蓝牙收到的所有条目 . 我已经检查过Amarino,手机发来的消息显示在Arduino串口监视器中 .

  • 0

    同样的问题在这里我尝试连接,反之亦然,0和1,RX和TX(即RX到RX和TX到TX),我得到了一些乱码,而不是什么都没有 .

相关问题