Интернет-магазин «Неглупый Дом»
Конвертер UR485 превращает UART в RS485 — устойчиво к помехам, работает на десятки метров.
Как и CAN, RS485 — дифференциальная шина (A и B), что даёт устойчивость на больших расстояниях. Но в отличие от CAN, у RS485 нет встроенного арбитража: это "общий провод", и при одновременной передаче двух плат данные столкнутся. RS485 half-duplex, поэтому в сетях нужна дисциплина очерёдности или протокол поверх (например, Modbus).
UR485 (на чипе типа MAX485) обычно сам определяет направление передачи по факту начала отправки — на части простых модулей направление переключается вручную через пин DE перед отправкой.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, что указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, я языковая
// модель, а не специализированный кодер, могу что-то упустить.
#include <SoftwareSerial.h>
SoftwareSerial rs485(2, 3);
const bool isSender = true;
void setup() {
rs485.begin(9600);
Serial.begin(9600);
Serial.println(isSender ? "Режим: отправитель" : "Режим: приёмник");
}
void loop() {
if (isSender) {
rs485.println("Hello from node A");
delay(1000);
} else {
if (rs485.available()) {
String msg = rs485.readStringUntil('\n');
Serial.println(msg);
}
}
}
Модуль UR485 обычно сам определяет направление — при ручном переключении добавьте управление DE-пином перед отправкой.
Ещё модули для Arduino: Электронные модули.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.