我遇到有关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板(如果第一个被损坏),但结果是一样的。 我认为盾牌在某种程度上是错误的,所以我用一个新的替换它 - 但结果仍然是相同的。
总结:
在所有可能的组合中进行测试,但仍然没有成功。
设备已上电,因为当我将其设置为将其状态发送到A1
模拟端口时,我始终会读取0
而不是随机值。
唯一合乎逻辑的结论是上面的代码存在问题,但我所做的每一次谷歌搜索都指向了该文件。它来自官方维基,并且在我发现的每个例子中。我曾尝试联系Seeedstudio,但他们没有任何有价值的东西可以添加(&#34;尝试重新启动直到它工作&#34;)。
有没有人遇到类似的问题,或者有什么建议代码有什么问题?
答案 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.