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

Posted

技术标签:

【中文标题】启动从 Arduino 到远程设备的连接【英文标题】:Initiate connection from Arduino to remote device 【发布时间】:2013-09-11 22:42:31 【问题描述】:

我正在尝试实现我的 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 启动连接,但我还没有完全了解它是如何工作的。谁能提供任何帮助来解决我的问题?

编辑:设备似乎根本没有进入命令模式。至少闪光灯没有表明这一点。是不是命令有问题导致无法进入命令模式?

【问题讨论】:

【参考方案1】:

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

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

上述 RN42 蓝牙客户端的代码有效。使用Arduino软件自带的库SoftwareSerial。

【讨论】:

【参考方案2】:

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

【讨论】:

没有用。我认为主要问题是设备甚至没有进入命令模式。闪光灯仅表明设备处于可发现模式(1 次闪烁/秒)... 希望您可以尝试此讨论中列出的建议数量。 sparkfun.com/tutorials/264。或者尝试不同的波特率 如果您通过单独的远程连接而不是通过 Arduino 程序代码对蓝牙设备进行编程,这似乎可以避免很多麻烦。另外ST,255 是一个很好的帮手,因为如果上传新程序代码,蓝牙设备不会重置,因此不会切换到命令模式(默认必须在启动后 60 秒内完成)。但是主要问题(自动连接)仍然没有解决......【参考方案3】:

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

【讨论】:

代码会有帮助 这是默认设置。我一发现怎么改就改了:)【参考方案4】:

在启动时,RN-42 需要 500 毫秒才能进入命令模式 try 'delay(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.3-V(仅限)微处理器 UART接口。与微处理器接口时,请遵循以下准则: • 必须连接蓝牙设备的电源、接地、RX 和 TX 信号,并且 CTS 应保持在较低水平或与 RTS 挂钩。 • 蓝牙设备可以在启动 500 毫秒后进入命令模式。 • 微处理器应该发送$$$,没有回车或换行输入 命令模式。 3.3.0.1 我如何知道模块已准备好进入命令模式? 重启后 500 毫秒,模块已准备好进入命令模式。你发送$$$没有 回车。 3.3.0.2 我应该连接哪些硬信号? 您应该连接电源、接地、RX 和 TX。 CTS 应该很低或者你可以连接 或将其绑定到 RTS。”

【讨论】:

以上是关于启动从 Arduino 到远程设备的连接的主要内容,如果未能解决你的问题,请参考以下文章

将数据从腻子发送到连接在 Arduino 上的蓝牙 HC-6

Android + ESP32 通过蓝牙 (BLE) 发送数据

arduino连接电脑后设备管理器没有显示?

怎样用Arduino和手机控制LED

arduino下esp8266+web实现远程开关窗和雨滴感应开关窗

怎样连接arduino101 usb