1

我试图实现我的 arduino 内置设备在打开后自动连接到设备。开发板是 Arduino Mini Pro,蓝牙模块是 Bluetooth Mate Silver (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

4 回答 4

1

将近一周后,我遇到了一个解决方案。实际上,有任何接受蓝牙连接的程序似乎很重要。我一直在尝试使用 Windows 7 蓝牙对话框菜单项“接收文件”,但没有成功。所以我使用了一个第三方程序来监听传入的连接并且确实有效。基本上我所做的一切都很好,除了缺少连接侦听器。

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

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

于 2013-09-17T23:08:43.480 回答
0

我认为您可能需要在 bluetooth.begin(9600) 之后延迟一些时间,以便设置其波特率,然后发出打印命令。

于 2013-09-12T10:32:23.977 回答
0

模块上电60s后才能进入命令模式。您可以使用状态 LED(如果每秒闪烁 2 次)查看计时器是否仍在计数。对不起,我的英语不好。

于 2014-01-09T06:58:33.637 回答
0

启动时,RN-42 需要 500 毫秒才能进入命令模式尝试“延迟(500);” 在'bluetooth.begin(115200);'之前 那应该会让你到达那里。CTS 也应保持低电平

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

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

PG 45

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

于 2016-01-03T04:20:31.610 回答