我正在努力让我的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(一些教程告诉连接它们,另一个没有。所以当我怀疑我尝试了两种解决方案时)。
我唯一一次看起来像是沟通的东西就是这个设置:
将新代码上传到我的主板时,它的某些部分显示在手机的监控工具上。 它发生了一两次,我现在无法重现它。
我很确定我在某处做错了(似乎至少这是最合乎逻辑的解释)但我也想知道蓝牙模型是否有问题(我的意思是,甚至是样本)教程不起作用)。
所以问题是:
谢谢, 文森特
答案 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),我得到了一些乱码,而没有任何东西。