我正试图通过Rs485从RasPi到arduino进行通信。我在RasPi端使用Usb到Rs485转换器,在arduino端使用Max485芯片

2024-10-01 02:35:29 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

Arduino是一个Arduino Mega,与[MAX485收发器][2]相连。我在Arduino-to-Arduino网络中广泛使用了这些芯片,它们的功能非常出色

已反复检查接线:

USB适配器:A至MAX485 A,B至MAX485 B,接地至Arduino接地

MAX485:VCC至Arduino 5v,接地至Arduino接地,RO至Arduino RX3,DI至Arduino TX3,DE/RE至Arduino引脚3

在下面的代码中,我没有试图来回发送信息。我只是想知道我在Arduino号上有没有收到任何消息

Python代码:


#!/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


Tags: 代码网络信息ifserial适配器arduinoraspi