首页 文章

BeagleBone和Python的蓝牙串行问题

提问于
浏览
3

我正在尝试在BeagleBone和我的笔记本电脑之间 Build 串行连接 . 这类似于我之前成功使用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发送相同的字符串,它回复它并且一切正常 . 这只是通过Bluesmirf引起我悲伤的东西 .

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

有任何想法吗?

2 回答

  • 1

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

    另一方面,需要配置蓝色模块,以使其本地UART接口(链接到BeagleBone)的波特率与后者's. To do so, refer to the command guide from Roving Network'用户手册(目前可以找到here)相同 . 根据数据表,您需要:

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

    $$$ (不要发送ASCII 13和10个字符)

    (2)发送命令:

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

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

    请注意,完成配置后,需要重置模块 .

  • 0

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

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

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

相关问题