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

时间:2012-02-22 13:18:42

标签: bluetooth arduino

我正在努力让我的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 :(得分: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串口监视器中。

答案 1 :(得分:0)

这里的问题相同。我尝试连接相反的0和1,RX和TX(即RX到RX和TX到TX),我得到了一些乱码,而没有任何东西。