LattePanda V1 RS485接口扩展板

1. 简介


2. 产品参数

产品尺寸


3. 应用


4. 引脚说明

LattePanda RS485扩展版引脚图



LattePanda V1 引脚定义(建议参考 LattePanda 官方wiki



5. RS485 通信协议简介

典型的串行通信标准之一。

RS485 接口具有良好的抗噪声干扰性,较长的传输距离、多站能力和布线简单等优点,因而在工业上被广泛使用。

RS485 通信协议只定义了传输的电压,阻抗等电气特性,但不对软件协议给予定义。数据信号采用差分传输方式,因此具有抑制共模干扰的能力。总线收发器具有高灵敏度,能检测低至200mV的电压。RS-485用于多点互连时非常方便,可以省掉许多信号线。它使用一对双绞线,将其中一线定义为A,另一线定义为B。通常情况下,发送驱动器A、B之间的正电平在+2~+6V,是逻辑1状态,负电平在-2V~6V,是逻辑0状态。其最大传输距离约为1200米,传输速率与传输距离成反比,只有在很短的距离下才能获得最高速率传输。RS485需要2个终端电阻,其阻值要求等于传输电缆的特性阻抗(一般为120Ω)。在短距离传输时可不需终端电阻,终端电阻需接在传输总线的两端。



6. ModBus 通信协议简介

Modbus 协议是一个 master/slave 架构的协议。有一个节点是 master 节点,其他使用 Modbus 协议参与通信的节点是 slave 节点。每一个 slave 设备都有一个唯一的地址。一个 ModBus 命令包含了打算执行的设备的 Modbus 地址。所有设备都会收到命令,但只有指定位置的设备会执行及回应指令(地址0例外,指定地址0的指令是广播指令,所有收到指令的设备都会运行,不过不回应指令)。所有的 Modbus 命令包含了校验码,以确定到达的命令没有被破坏。基本的 ModBus 命令能指令一个 RTU 改变它的寄存器的某个值,控制或者读取一个 I/O 端口,以及指挥设备回送一个或者多个其寄存器中的数据。

Modbus协议有多种变体:



7. 使用教程

这里演示 LattePanda V1 通过 RS485 接口控制 DFR0290 8路继电器

准备硬件:

  1. 一块 LattePanda V1
  2. 一块 LattePanda V1 RS485 接口扩展板(DFR0684)
  3. 一块 RLY-8-PoE-RS485 8路继电器(DFR0290)

7.1 扩展板与 LattePanda V1 插接示意

插接示意

需使用尼龙柱和尼龙螺丝固定扩展版与 LattePanda

7.2 连线图

如下图:

连线图



7.3 使用上位机软件

  1. LattePanda 与 RS485 接口扩展板插接好后,开机
  2. RLY-8-PoE-RS485 8路网络控制继电器模块接通电源
  3. LattePanda 上打开DFRobot出品的上位机软件,选择COM1串口,波特率设置115200
  4. 通过上位机软件即可操作继电器模块

上位机界面 操作效果图



7.4 使用串口调试助手

  1. 重复上述步骤
  2. 根据 8路网络控制继电器模块的自定义通信规则,使用串口调试工具发送正确指令,控制继电器模块

如下图,控制继电器 1 号继电器的开关

串口调试助手控制继电器



7.5 使用 ModBus 调试助手

  1. 重复上述步骤
  2. 根据 8 路网络控制继电器模块的ModBus协议规则,使用ModBus调试助手发送正确指令,控制继电器模块

如下图,获取设备名称和控制继电器 2 号继电器的开关

ModBus调试助手



7.6 使用 Python 的 ModBus 库

目前 Python 关于 ModBus 协议的第三方库,比较主流的有以下几种:

库名称 源码 3rd party 依赖 主要功能
modbus_tk https://github.com/ljean/modbus-tk pyserial Support modbus TCP and RTU, both master and slave。Don’t support modbus ASCII。 重量级
pymodbus https://github.com/riptideio/pymodbus/ pyserial Support modbus TCP/RTU/ASCII, master and slave。 重量级
minimalmodbus https://github.com/pyhys/minimalmodbus pyserial Only support Modbus RTU and ASCII, and only work in master(clinet). 非常轻量级
uModbus https://github.com/AdvancedClimateSystems/uModbus/ pyserial Support both Modbus client amd server (both TCP and RTU). Don’t support Modbus ASCII。轻量级

这里以 modbus_tk 的使用为例。

  1. 重复上述步骤
  2. 在 LattePanda V1 上安装 Python 和 modbus_tk 和其他依赖包
  3. 根据 8路网络控制继电器模块的ModBus协议规则,编写 python 代码,控制继电器模块

如下图,在命令行运行 Python 脚本,获取设备名称和控制设备依次开关所有的继电器

命令行运行python脚本 运行效果

python3脚本示例,点击获取.zip



疑难解答

更多问题及有趣的应用,请访问论坛



更多

DFshopping_car1.png DFRobot商城购买链接