无法检测到Seeedstudio Bluetooth Shield

时间:2014-06-02 09:06:21

标签: bluetooth arduino

我遇到有关Seeedstudio蓝牙盾http://www.seeedstudio.com/depot/Bluetooth-Shield-p-866.html

的问题

我无法通过任何其他设备检测到它的存在。

我上传到Arduino的代码是来自库的从属设备的标准示例:

/* Upload this sketch into Seeeduino and press reset*/

#include <SoftwareSerial.h>   //Software Serial Port
#define RxD 6
#define TxD 7

#define DEBUG_ENABLED  1

SoftwareSerial blueToothSerial(RxD,TxD);

void setup() 
{ 
    Serial.begin(9600);
    pinMode(RxD, INPUT);
    pinMode(TxD, OUTPUT);
    setupBlueToothConnection(); 
} 

void loop() 
{ 
    char recvChar;
    while(1)
    {
        if(blueToothSerial.available()){//check if there's any data sent from the remote bluetooth shield
            recvChar = blueToothSerial.read();
            Serial.print(recvChar);
        }
        if(Serial.available()){//check if there's any data sent from the local serial terminal, you can add the other applications here
            recvChar  = Serial.read();
            blueToothSerial.print(recvChar);
        }
    }
} 

void setupBlueToothConnection()
{
    blueToothSerial.begin(38400); //Set BluetoothBee BaudRate to default baud rate 38400
    blueToothSerial.print("\r\n+STWMOD=0\r\n"); //set the bluetooth work in slave mode
    blueToothSerial.print("\r\n+STNA=SeeedBTSlave\r\n"); //set the bluetooth name as "SeeedBTSlave"
    blueToothSerial.print("\r\n+STOAUT=1\r\n"); // Permit Paired device to connect me
    blueToothSerial.print("\r\n+STAUTO=0\r\n"); // Auto-connection should be forbidden here
    delay(2000); // This delay is required.
    blueToothSerial.print("\r\n+INQ=1\r\n"); //make the slave bluetooth inquirable 
    Serial.println("The slave bluetooth is inquirable!");
    delay(2000); // This delay is required.
    blueToothSerial.flush();
}

我已将它上传到Arduino UNO,连接盾牌......没什么。

标记为D1的LED呈绿色闪烁,D2已关闭。我尝试过的三种设备(两台计算机和一部智能手机)都没有检测到该设备。

未检测到&#34;&#34;我的意思是&#34; hcitool什么都不返回,基于操作系统的蓝牙设备搜索没有任何报告&#34;。所有这三种设备都可以毫无问题地互相检测。

我试图将它连接到其他UNO板(如果第一个被损坏),但结果是一样的。 我认为盾牌在某种程度上是错误的,所以我用一个新的替换它 - 但结果仍然是相同的。

总结:

  • 3个外部设备
  • 2 Arduinos
  • 2盾

在所有可能的组合中进行测试,但仍然没有成功。

设备已上电,因为当我将其设置为将其状态发送到A1模拟端口时,我始终会读取0而不是随机值。

唯一合乎逻辑的结论是上面的代码存在问题,但我所做的每一次谷歌搜索都指向了该文件。它来自官方维基,并且在我发现的每个例子中。我曾尝试联系Seeedstudio,但他们没有任何有价值的东西可以添加(&#34;尝试重新启动直到它工作&#34;)。

有没有人遇到类似的问题,或者有什么建议代码有什么问题?

1 个答案:

答案 0 :(得分:2)

我已经设法自己解决了这个问题。

需要两个步骤:

首先,我必须使用硬件串口(Arduino UNO上的端口0和1),因为出于某种原因,SoftwareSerial不能很好地使用这个屏蔽。

然后我不得不用电池作为电源,因为通过端口0和1的串行通信的优先级低于USB串口。

此解决方案的缺点是您丢失了与PC的USB通信,但幸运的是我不需要它。

编辑:为了避免混淆,这里有一个代码对我有用的例子:

void setup() 
{ 
  setupBlueToothConnection(); 
  Serial.flush();
} 

void loop() 
{ 
  for (char i = 0; i <= 254; i++)
  {
    Serial.print(i);
    delay(1000);
  }  

} 

void setupBlueToothConnection()
{
  Serial.begin(38400); //Set BluetoothBee BaudRate to default baud rate 38400
  Serial.print("\r\n+STWMOD=0\r\n"); //set the bluetooth work in slave mode
  Serial.print("\r\n+STNA=SeeedBTSlave\r\n"); //set the bluetooth name as "SeeedBTSlave"
  Serial.print("\r\n+STOAUT=1\r\n"); // Permit Paired device to connect me
  Serial.print("\r\n+STAUTO=0\r\n"); // Auto-connection should be forbidden here
  delay(2000); // This delay is required.
  Serial.print("\r\n+INQ=1\r\n"); //make the slave bluetooth inquirable 
  //Serial.println("The slave bluetooth is inquirable!");
  delay(2000); // This delay is required.
  Serial.flush();      
}

请注意,调制解调器会发送一些命令的答案,您应该先清除Serial缓冲区。

此外,屏蔽层上的跳线应按如下方式连接:BT_TX至引脚0,BT_RX至引脚1.