实现Arduino的RS485通信库的Python版本

需积分: 10 0 下载量 157 浏览量 更新于2024-11-21 收藏 12KB ZIP 举报
资源摘要信息: "Nick-Gammon-RS485:Nick Gammon用于Arduino的RS485库的Python实现" 是一个专为Arduino开发的RS485通信库的Python语言实现版本。RS485是一种差分信号形式的串行通信协议,被广泛用于工业控制系统中,由于其能够在较长距离内进行可靠的数据传输,且能够连接多个设备(多点通信),因此在多节点系统中非常受欢迎。 在讨论这个库的具体实现之前,首先需要明确几个关键概念: 1. **RS485通信协议**: 该协议定义了物理层的电气特性,它允许通过双绞线进行半双工通信,即数据可以双向传输,但不能同时进行。RS485可以支持高达32个收发器和128个接收器在一个网络上,并支持长达1200米的传输距离。 2. **Nick Gammon**: Nick Gammon是知名的Arduino社区成员和贡献者,其在社区中发布的库和代码广泛被爱好者和专业人士所使用。他开发的RS485库被设计用来简化Arduino上RS485通信的实现。 3. **Arduino**: Arduino是一个开源电子原型平台,包括硬件(各种型号的开发板)和软件(Arduino IDE)。Arduino开发板特别适用于那些需要与真实世界交互的项目,例如自动化的环境控制、机器人、交互式艺术装置等。 在该资源的上下文中,Nick Gammon所开发的RS485库原本是用C++编写的,专为Arduino平台定制。然而,该资源还包含了库的Python实现,这意味着用户可以使用Python语言来控制和与Arduino板进行RS485通信。Python实现的优势在于其简洁性和易读性,这对于非专业程序员或希望快速原型开发的开发者来说是一个很大的福音。 资源中的描述提到,"当前状态:示例中的两个测试脚本可以通信。另一端仍未使用Nick Gammon的代码进行测试。" 这说明在资源当前版本中,至少有两个测试脚本能够成功进行RS485通信,但还需要对使用Nick Gammon代码的另一端进行测试,以确保通信的完整性。 从文件名称列表 "Nick-Gammon-RS485-master" 可以推断出这是一个代码库的根目录文件夹名称。该文件夹中可能包含了完整的Python实现代码,以及所有相关的测试脚本和示例代码。"master"通常指代代码库的主分支,这是开发中相对稳定的代码版本。 总结以上信息,我们可以得出以下几点知识点: - **RS485通信协议特性**:包括半双工通信、多节点支持、长距离传输能力和较高的抗干扰性。 - **Nick Gammon的贡献**:他在Arduino社区贡献了易于使用的RS485通信库,帮助开发者简化了Arduino平台上的串行通信过程。 - **Arduino平台和编程**:介绍了Arduino的基础知识,包括其在开源硬件平台中的地位和编程语言(如C++)。 - **Python语言的使用**:该资源使得开发者能够用Python语言实现与Arduino之间的RS485通信,增加了开发的灵活性。 - **代码库的结构和测试**:文件名称列表暗示了代码库的组织结构和当前的测试状态,为用户提供了关于如何开始使用和测试代码的线索。 了解这些知识点后,开发者可以更容易地理解和使用Nick-Gammon-RS485库,无论是在Python环境下实现Arduino设备之间的通信,还是贡献于代码的进一步开发和测试。
1965 浏览量
通常,在工业中,我们有几种机器和设备(PLC,CNC,变频器)来控制和监视最多样化的工业过程。 为了使所有这些设备一起工作,必须在它们之间建立通信网络。 但是,由于电动机,螺线管和其他执行器的激活,该行业环境中存在许多电磁干扰。 RS485通信标准是通信网络的物理层,可以实现多种协议,例如Modbus,Profibus等。 RS485通信标准适合在行业中实施,因为它接受几种网络拓扑,例如星形和环形。 它允许长距离通信,并使用双绞线电缆。由于我们具有差分通信信号,因此该电缆模型减少了电磁干扰,这有助于更好地抵抗噪声和电磁干扰。 除了RS485通讯之外,还有RS232通讯。它允许以点对点模式进行网络通信,并且遭受电磁干扰的影响更大。 但是,许多设备具有RS232通信,需要长距离传输数据。为此,我们需要使用称为MAX485的集成电路。 该集成电路在使TTL逻辑电平适应RS485通信所需的逻辑电平中发挥作用。 如今,已经有使用该集成电路的现成的低成本模块。它们允许信号调理并促进不同设备之间的通信。 因此,由于其坚固性,RS485通信可用于任何类型的环境。 因此,在本文中,我们将学习如何监视环境温度以及如何通过两个Arduino之间的串行/ RS485通信接收测量值。 Arduino Slave(发送器)将使用DS18B20数字传感器执行温度测量,并将测量值通过串行/ RS485发送到Arduino主设备(接收器),该设备将在LCD显示屏上写入20 x 4 I2C接收的温度值。 因此,通过本文您将学到: 在原型板上执行电路组装; 了解RS 485模块的操作; 了解DS18B20传感器的工作原理; 创建通信协议; 使用有线通信网络进行远程温度监控; 现在,我们将开始通过RS485串行通信使用DS18B20传感器进行温度监控项目的开发的完整介绍。 通过RS485串行通信使用DS18B20传感器开发温度监控项目 在图3中,我们具有项目组装所需的原理图电路。Arduino Uno将成为主机(接收器),它将接收温度测量值并将在LCD显示屏上显示20 x 4 I2C。 Arduino Nano将作为从设备(发送器),它将读取DS18B20传感器并通过RS485模块发送测量值。 现在,让我们转到设置项目所需的材料清单。 带有DS18B20和RS485模块的Arduino项目 温度传感器DS18B20是数字温度传感器,因为要传输信息,它使用协议1-Wire。 1-Wire协议由Dallas Semiconductor和Maxim制造。 1线总线对设备使用主/从概念。 微控制器是主机,外围设备是从机。 在制造过程中,每个设备都会收到一个唯一的ID,即设备标识号(地址),以便在有很多设备时可以在总线上对其进行标识。 信息格式: 1线仅使用一条数据线,并使用长脉冲和短脉冲表示1和0。60微秒脉冲表示0,15微秒脉冲表示1。 在VCC与DS18B20传感器的信号引脚之间必须使用4K7的上拉电阻,以使微控制器与传感器之间的通信稳定。 将发射器和接收器电路组装到原型板上之后,我们可以在图6中看到原型板上的物理组装。