【发布时间】:2016-07-28 15:44:15
【问题描述】:
我正在尝试从 Arduino Nano 发送的树莓派上读取来自主 uart /dev/ttyAMA0 的数据。
arduino 端的库https://gitlab.com/creator-makerspace/rs485-nodeproto
所以我使用一个简单的 python 脚本来验证来自 arduino 的数据:
import serial
sp = serial.Serial(
port="/dev/ttyAMA0",
baudrate=9600,
timeout=0.1
)
while True:
i = sp.read()
print i.encode("hex")
但是输出的数据在 n 次中大约有 x 次损坏/错误。
一个好的数据包看起来像 A0 2 1 4F 50 45 4E B7 1B 80
大多数情况下的坏包: 13 0a 7a 41 15 39 dd 1b 80 00
当使用连接到 rs485 收发器而不是内部 uart 的 USB 转 UART 时,测试脚本也可以正常工作。
关于我做错了什么的建议?
【问题讨论】:
-
缺少终结器(可能是 120 欧姆)?
-
我的两端都是 120 欧姆。
-
Raspberry和 Arduino 一侧的接口你申请了什么硬件布局? RS485 不是它们中的任何一个的“本机”接口:在双方都需要一个收发器。而RS485往往与Modbus协议的应用挂钩。
-
"USB to UART - 你的意思是“USB RS232”并且你将它的 RX 直接连接到 RS485 收发器的非差分端?如果可行,那么你肯定有RS485 +/- 线交叉,因为 0-3.3V 电平与 RS232 反转:当收发器输出为 +3.3V 时,RS232 空闲 -ve,当收发器输出为 0V 时,RS232 空闲为 +ve。此外,您只指定波特率在 python 代码中速率 - 确保断言您在 arduino 端使用的停止/奇偶校验设置。
标签: python arduino raspberry-pi raspberry-pi2 rs485