我正在努力让我的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 回答
我仍然没有第二个问题的答案(“有一种简单的方法来检查我的蓝牙调制解调器工作正常吗?”)但我终于能够从蓝牙调制解调器发送/接收消息 .
正如我猜测(至少我如何理解)这是同一板上的两个连续出版物(蓝牙和USB)的问题 . 为了解决这个问题,我将BT TX-1插在数字3上的引脚数字5,RX-0上并使用以下代码(基于SoftwareSerial教程):
它会在默认串行(在我的情况下为USB)上发送从蓝牙收到的所有条目 . 我已经检查过Amarino,手机发来的消息显示在Arduino串口监视器中 .
同样的问题在这里我尝试连接,反之亦然,0和1,RX和TX(即RX到RX和TX到TX),我得到了一些乱码,而不是什么都没有 .