启动从Arduino到远程设备的连接

时间:2013-09-11 22:42:32

标签: bluetooth arduino

我正在尝试实现我的arduino构建的设备在打开后自动连接到设备。该板是Arduino Mini Pro,蓝牙模块是蓝牙伴侣银(RN42)。设备已经配对,蓝牙模块处于从属模式,远程设备(在这种情况下是普通笔记本电脑)是可发现的。我正在使用随Arduino软件提供的SoftwareSerial库。

这是我的设置:

void setup()
{
  Serial.begin(9600);  // Begin the serial monitor at 9600bps

  // bluetooth

  // set baud rate to 9600 
  bluetooth.begin(9600);  
  // start command mode
  bluetooth.print("$$$");
  // reply delay
  delay(100);
  // set to slave mode
  bluetooth.println("SM,0");
  // reply delay
  delay(100);
  // set device pin to 0403
  bluetooth.println("SP,0403");
  // reply delay
  delay(100);
  // connect to pixelsense
  bluetooth.println("C," + remoteMAC); // remoteMAC is a string with the mac address
  // reply delay
  delay(2500);
  // leave command mode
  bluetooth.println("---");
  // reply delay
  delay(100);
}

我读了RN42的命令集,我认为命令是正确的。我可以通过蓝牙连接到Arduino,但另一个方向不起作用。我也尝试使用主模式或将远程mac存储在闪存中而不是使用字符串。从文档中可以发起RN42的连接,但我还没有详细了解它的工作原理。任何人都可以提供任何帮助来解决我的问题吗?

编辑:设备似乎根本不进入命令模式。至少闪光灯不表示这一点。这些命令有什么问题,以至于无法访问命令模式吗?

4 个答案:

答案 0 :(得分:1)

经过近一周的时间,我遇到了一个解决方案。实际上,有任何接受蓝牙连接的程序似乎很重要。我一直尝试使用Windows 7蓝牙对话框菜单条目“接收文件”,但这不起作用。所以我使用了第三方程序来监听传入的连接并且实际上有效。基本上我所做的一切都很好,除了缺少连接监听器。

有时,如果我将新代码上传到Arduino,则存在无法建立连接的问题。这可以通过移除和读取蓝牙设备来解决。

以上RN42蓝牙客户端的代码有效。使用随Arduino软件提供的库SoftwareSerial

答案 1 :(得分:0)

我想你可能需要在bluetooth.begin(9600)之后加一些延迟来设置它的波特率然后发出打印命令。

答案 2 :(得分:0)

只能在模块开机后60秒内进入命令模式。您可以使用状态LED查看计时器是否仍在计数(如果它每秒闪烁2次)。抱歉我的英语不好。

答案 3 :(得分:0)

在启动时,RN-42需要500ms才能进入命令模式尝试延迟(500);'之前' bluetooth.begin(115200);'这应该会让你到那里。 CTS也应低估

可以在下面链接中找到的文件的第45页上看到。

https://cdn.sparkfun.com/assets/1/e/e/5/d/5217b297757b7fd3748b4567.pdf

PG 45

" 3.3与微处理器的接口 Roving Networks蓝牙设备可以使用连接到3.3V(仅)的微处理器 UART接口。与微处理器连接时,请遵循以下准则: •必须连接蓝牙设备电源,接地,RX和TX信号 CTS应保持低位 或与RTS绑定。 • 蓝牙设备可在启动后500毫秒进入命令模式。 •微处理器应发送$$$,没有回车或换行输入 命令模式。 3.3.0.1我如何知道模块是否已准备好用于命令模式? 重启后 500毫秒 ,模块已准备好进入命令模式。你发送$$$没有 回车。 3.3.0.2我应该连接哪些硬信号? 您应该连接电源,接地,RX和TX。 CTS应该低 或者您可以连接 或将其绑定到RTS。"