将MAX485 RS485模块与Raspberry Pi一起使用

Using the MAX485 RS485 Module with the Raspberry Pi

这 Max485 模块允许Raspberry Pi使用 RS485协议,它广泛用于工业自动化,modbus通信和长距离序列数据传输。本指南将向您展示如何连接,配置和使用 Max485 RS485带Raspberry Pi的模块 使用Python。


你需要什么

  1. 覆盆子pi (任何具有GPIO支持的模型,例如PI 3,PI 4)
  2. MAX485 RS485模块
  3. RS485设备 (例如Modbus传感器,工业控制器)
  4. 跳线
  5. 安装了Python 在覆盆子pi上

步骤1:了解Max485模块

Max485 是一个 TTL-TO-RS485收发器 这允许Raspberry Pi发送和接收RS485信号。

关键功能:

  • 支持半双链RS485通信
  • 操作 5V功率 (与Raspberry Pi上的3.3V逻辑兼容)
  • 用途 TX,RX,DE和RE 通信控制的别针

步骤2:将MAX485接线到Raspberry Pi

Max485针 覆盆子Pi Pin 功能
VCC 5V(引脚2) 电源
gnd GND(引脚6) 地面
ro GPIO15(引脚10) RS485数据接收(RX)
di GPIO14(引脚8) RS485数据传输(TX)
关于 GPIO18(引脚12) 接收启用(低接收)
de GPIO18(引脚12) 驾驶员启用(高点发送)
一个 RS485一行 连接到RS485设备
b RS485 B线 连接到RS485设备

笔记:关于de 引脚由 GPIO18,启用或禁用传输。


步骤3:在Raspberry Pi上启用UART

  1. 打开Raspberry Pi配置工具:

    sudo raspi-config
    
  2. 导航到 接口选项>串行端口.

  3. 禁用串行控制台,但 启用串行硬件.

  4. 重新启动覆盆子Pi:

    sudo reboot
    
  5. 验证 串行设备可用:

    ls /dev/serial*
    

    你应该看 /dev/serial0.


步骤4:安装所需的Python库

  1. 更新您的Raspberry Pi:
    sudo apt update && sudo apt upgrade -y
    
  2. 安装Python串行通信库:
    pip3 install pyserial
    

步骤5:Python代码通过RS485进行通信

基本的Python代码将通过RS485发送和接收数据

import serial
import RPi.GPIO as GPIO
import time

# Define GPIO pin for RE/DE control
RS485_CONTROL = 18  

# Set up GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(RS485_CONTROL, GPIO.OUT)

# Configure the serial connection
ser = serial.Serial(
    port='/dev/serial0',  # Raspberry Pi UART port
    baudrate=9600,        # Set baud rate to match RS485 device
    timeout=1
)

def send_data(data):
    GPIO.output(RS485_CONTROL, GPIO.HIGH)  # Enable transmission
    time.sleep(0.01)  # Small delay before sending
    ser.write(data.encode())  # Send data as bytes
    time.sleep(0.01)  # Small delay to ensure data is sent
    GPIO.output(RS485_CONTROL, GPIO.LOW)  # Enable receiving

def receive_data():
    GPIO.output(RS485_CONTROL, GPIO.LOW)  # Enable reception
    data = ser.readline().decode('utf-8').strip()
    return data

try:
    while True:
        send_data("Hello RS485 Device!\n")
        print("Data sent!")

        # Wait for a response
        response = receive_data()
        if response:
            print(f"Received: {response}")

        time.sleep(2)
except KeyboardInterrupt:
    print("Exiting...")
finally:
    ser.close()
    GPIO.cleanup()

步骤6:RS485与Raspberry Pi通信的应用

  1. 工业自动化 - 使用Modbus RTU与PLC,传感器和控制器进行通信。
  2. 长途交流 - RS485支持 远程数据传输 最多1200米。
  3. 多设备网络 - 在同一RS485总线上连接多个设备。
  4. 智能能量表 - 读取与Modbus兼容的能量计。
  5. 物联网和数据记录 - 收集传感器数据并将其传输到云服务器。

故障排除

  1. 没有沟通

    • 检查接线连接,确保 A和B线 正确连接。
    • 验证这一点 UART已启用 使用 sudo raspi-config.
    • 确保 RS485设备使用相同的波特率 如在Python中所设置的。
  2. 权限拒绝错误

    • 将用户添加到 dialout 串行端口访问组:
      sudo usermod -aG dialout $USER
      sudo reboot
      
  3. 收到的数据中的垃圾字符

    • 确保两个设备都使用 相同的波特率和串行设置.
    • 检查是否 屏蔽电缆 需要更长的距离。

结论

Max485模块 使覆盆子Pi可以交流 RS485,使其理想 工业自动化,modbus设备和长距离序列数据传输。通过遵循本指南,您可以建立 Raspberry Pi和RS485设备之间的双向通信 用于物联网和嵌入式系统项目。 🚀

发表评论

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.