启动从 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) 发送数据