首页 > 解决方案 > 我正在尝试通过 Rs485 从 RasPi 与 arduino 通信。我在 RasPi 端使用 USB 到 Rs485 转换器,在 arduino 端使用 Max485 芯片

问题描述

我需要将 RasPi 连接到我现有的 RS485 网络,以便我可以通过互联网访问所有这些网络。我知道两个设备都可以发送信息,但对方没有收到

我有一个 RasPi 4B,带有一个 [USB 到 Rs485 适配器][1]。这个特殊的适配器有两个 LED,当您接收信息 (RXD) 和传输信息 (TXD) 时会亮起。它们非常有用,因为它们,我知道信息是从 RasPi 发出的。

Arduino 是一个 Arduino Mega,并连接到 [MAX485 Transceiver][2]。我在 Arduino 到 Arduino 网络中广泛使用了这些芯片,它们的功能非常出色。

接线已反复检查:

USB 适配器:A 到 MAX485 A,B 到 MAX485 B,GND 到 Arduino GND

MAX485:VCC 到 Arduino 5v,GND 到 Arduino GND,RO 到 Arduino RX3,DI 到 Arduino TX3,DE/RE 到 Arduino 引脚 3。

在下面的代码中,我不想来回发送信息。我只想知道我是否收到了关于 Arduino 的任何信息。

蟒蛇代码:


#!/usr/bin/env python3
import serial

rs = serial.Serial(
  port="/dev/ttyUSB0",
  baudrate = 9600,
  parity=serial.PARITY_NONE,
  stopbits=serial.STOPBITS_ONE,
  bytesize=serial.EIGHTBITS,
  timeout=0,
  rtscts = True
  )

if (rs.isOpen() == True):
  rs.close()
rs.open()
rs.reset_input_buffer()

outstr = "5"
rs.write(outstr.encode(encoding = 'ascii'))

Arduino代码:

void setup() {
  Serial3.begin(9600);
  Serial.begin(9600);
  pinMode(3, OUTPUT); //Set enable pin as Output
  pinMode(3, LOW);    //Allows MAX485 to recieve
  Serial.println("Engaged.");
  
}

void loop() {

  while(Serial3.available()){
    Serial.println("We got somethin"); //Lets me know if I somehow got something
    if(Serial3.available()){
      byte data = Serial3.read();
      Serial.println(data);
    }
  }

}

我有多个 MAX485 芯片和 USB 到 RS485 适配器,并尝试使用它们以防设备内部出现故障。没变。

想法?[1]:https ://i.stack.imgur.com/iNBXZ.jpg [2]:https ://i.stack.imgur.com/jOM8W.jpg

标签: pythonarduinoraspberry-pirs485

解决方案


推荐阅读