Проблема последовательной связи RS-485 с arduino
Я использую 485 модулей для последовательной передачи данных от одного arduino uno к другому uno.
Если я подключу 2 платы arduino напрямую, не используя модуль rs485, то данные будут отправляться и приниматься без проблем. Но при использовании модуля rs485 передача прекращается.
Код Tx:
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.write(200);
Serial.flush();
delay(50);
}
Код Rx:
#include <LiquidCrystal.h>
// инициализировать библиотеку номерами интерфейсных контактов
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available()) { // Если данные поступили от ведущего устройства
int reply= Serial.read(); // Читать байт
delay(10);
lcd.print(reply);
}
}
Я не понимаю, в чем проблема. Я проверил каждую проводку, а код такой простой. Я просто посылаю один номер 200 и хочу показать его на rx.
Пожалуйста, помогите. Если кто-то имеет представление об этой проблеме, спасибо в любом случае.
@Mohammad Bitar, 👍2
Обсуждение2 ответа
В modbus есть два вывода типа DE и RE, которые необходимо установить и сбросить при передаче данных. Также вы можете проверить Modbus в этой библиотеке есть несколько примеров, которые могут быть вам полезны также в arduino Uno не используйте последовательное программное обеспечение для передачи данных используйте только последовательное оборудование Я предложу реализовать ваш код на arduino Mega, если у вас есть, а затем перенесите код для Uno. Просто пролистайте библиотеку, вы найдете несколько полезных примеров, и это решит вашу проблему
В вопросе нет упоминания о "modbus", это базовый RS485. В двухпроводном полудуплексном RS485 "приемопередатчик" обычно имеет вывод, который следует вытягивать вверх или вниз. (Да, в некоторых случаях modbus использует это как физический/электрический уровень), @Paul
Я протер очки, но не нашел схемы и списка запчастей. Похоже, вам нужно включить передатчик и / или приемник, чтобы заставить их работать. DE и RE-это контакты на чипе драйвера Max RSS 485 и других. Они не будут передавать или принимать, если они неверны. Многие соединяют DE и RE вместе, чтобы упростить переключение. В вашем случае вы должны включить передатчик на передающем Arduino и прием на принимающем Arduino. Не включайте передатчик на стороне приема, так как это может привести к конфликту шин, и он, вероятно, перестанет работать. Прием может быть включен на передатчике. Это делается с помощью некоторых протоколов для проверки отправленного сообщения. Поскольку вы отправляете только одним способом, вы можете подключить их к правильному логическому уровню. Также вам следует отключить шину, она может работать без, но лучше всего добавить резисторы.
- Основная связь Arduino ModBus RTU с проблемой измерителя мощности
- Связь Arduino master/slave с использованием RS485
- Команда strtok() с Serial связью
- Как изменить переменную при нажатии кнопки, подключенной к контакту 2
- Реализовать связь Visible Light с помощью Arduino
- Как автоматически сбросить nrf24l01+ с кодом?
- Многоканальная связь с Arduino и передатчиком HC-12
- SIM800L GSM-модуль, нет сигнала сети RSSI
ваш код не очень разборчив в том виде, как он представлен ... пожалуйста отформатируйте его правильно, @jsotola
Что делать, если вы печатаете на последовательный терминал приемника, вместо того, чтобы пытаться отобразить его на ЖК-дисплее?, @Paul