3

我正在尝试在 BeagleBone 和我的笔记本电脑之间建立串行连接。这类似于我之前在 Arduino 和笔记本电脑上成功使用的设置。问题是,虽然机器之间显然有信号传递,但输出似乎已损坏。

BB 连接到 TX 和 RX 线上的 Bluesmirf Silver。

我用 Python 编写了一个类来处理串行通信。这在 BB 和 Arduino 之间进行通信时效果很好,所以我非常确信我已经处理了引脚、多路复用器模式等的设置。

但是相同的代码在通过 Bluesmirf 时无法工作。一切都设置为 19200 波特 8-N-1,从 BB 发送到笔记本电脑的文本以一系列 0xE0 字符的形式到达。更改波特率(是的,我很小心地在两端更改它)可以改变笔记本电脑上显示的内容 - 有时什么都无法通过,有时它显然是随机的。但是,大多数情况下,字节似乎具有很高的价值。在 19200 处,显示的字节数比发送的字符数多两个或三个字节。

使用 Serial()(即 PySerial)将 self.serPort 定义为串行端口后,我使用以下内容发送文本(作为字符串“sendStr”传递):

self.serPort.write(sendStr.encode('utf-8', 'replace'))

我试过使用'ascii'而不是'utf-8'

在同一个程序中,我以相同的方式将相同的字符串发送到 Arduino,Arduino 将其回显,并且在那里一切正常。只是通过 Bluesmirf 的东西让我很伤心。

(作为记录,在笔记本电脑 MacBook Pro 上,我使用 CoolTerm 进行发送和接收。在我之前的设置中,Arduino 通过 Bluesmirf 与笔记本电脑通信,笔记本电脑正在运行处理草图。我试过了与 BB 设置相同的草图,但仍然没有乐趣)。

有任何想法吗?

4

2 回答 2

1

好吧,您的问题似乎是由于您省略了配置 BlueSMIRF 模块本身的事实。实际上,您在计算机端指定的波特率并不重要,因为您可以使用任何波特率,并且不必与 BeagleBone 上使用的相同(尽管如果它高于波特率率,如果您不够小心,可能会出现缓冲区溢出错误)。

另一方面,需要配置 Blue 模块,使其本地 UART 接口(链接到 BeagleBone)的波特率与后者相同。为此,请参阅 Roving Network 用户手册中的命令指南(当前可在此处找到)。根据数据表,您需要:

(1) 进入命令模式(在开机后的前 60 秒内执行此操作,您可以从 PC 远程执行所有配置到蓝牙模块):

$$$(请勿发送 ASCII 13 和 10 个字符)

(2) 发送命令:

SU,19(按 ENTER,即发送 ASCII 13 和 10 个字符)

这会将 BlueSMIRF 上的 RN-42 模块设置为 19200 波特,与 BeagleBone 相同。您应该停止看到您看到的错误(从我可以从您的评论中推断,这可能是由于 BlueSMIRF 波特率设置为 57.6 K)。

请注意,模块配置完成后需要重新设置。

于 2012-09-01T04:31:14.673 回答
0

你是如何通过USB连接蓝牙的?您必须使用如下代码:

import serial as s
device = "/dev/tty01"
s.Serial(device, 4800)

BBB中的USB接口叫什么名字?或者你是如何在 BBB 中列出 USB 端口的?

于 2013-09-13T18:38:47.807 回答