Способ последовательного взаимодействия с многосетевой подчиненной сетью Arduino.

У меня есть один ПК с запущенной Visual Studio и программой, которая будет отправлять команды Arduinos через последовательные COM-порты. Таким образом, в 11 Nano MCU у меня будут драйверы двигателей L293D/L298N IC, а в других Nanos у меня будут датчики.

Я хотел бы иметь программу в Visual Studio, которая отправляет команды через последовательный порт для приведения в действие двигателей для каждого микроконтроллера на борту. Это роботизированное приложение, и все, что я упомянул выше, будет заключено в Humanoid.

Вот несколько примеров того, что я думаю сделать:

char data = Serial.read();
if (data == 'A') 
{
  digitalWrite(13, HIGH);
}

Или что-то вроде этого:

servodata = Serial.read();
if (servodata == '1') // Одинарная кавычка! Это символ.
{
  SERVO.write(pos); 
}             

Как вы можете видеть, Arduinos будет иметь что-то вроде этого, работающее и ожидающее, пока Visual Studio отправит команды через последовательный интерфейс на один или несколько микроконтроллеров одновременно. Я думаю, 30 символов, разделяющих/распределяющих это число по каждому Rx Arduino.

р>

, 👍0


2 ответа


6

Не совсем понятно, какой именно запрос, но отвечая на вопрос в теме письма:

Вы можете легко подключить несколько последовательных / RS232 COM-портов, имея все подчиненные входы RX и главный выход TX на одной линии, и все подчиненные выходы TX подключены сетью OR к одной линии к главному входу RX. Главный «общается» со всеми подчиненными одновременно. Каждый подчиненный общается только с главным. Только один подчиненный может полезно общаться одновременно. Назначение назначения сообщения и арбитраж подчиненного разговора выполняются программно.

Как показано ниже, сеть OR на каждом подчиненном устройстве может быть такой же простой, как диод с катодом (сторона стержня) к линии TX и анодом к общей линии к главному RX. Один подтягивающий резистор (или внутренний подтягивающий резистор в главном устройстве на линии RX) подтягивает линию к высокому уровню, когда все подчиненные линии TX имеют высокий уровень.

Эта диаграмма показывает, насколько простой может быть многоточечная связь.
Примечание. Как показано, полярность диодов соответствует истинному RS232 с логической 1 = низкий = отрицательный.
При прямом подключении выходов UART TTL уровня (5 В/0 В) поменяйте местами диоды.

Кроме того, добавьте подтягивающее сопротивление от +5 В к синей линии RX к главному устройству — 10 кОм к 5 В, вероятно, будет достаточно.

Многоточечная сеть для RS232
Отсюда - Многоточечная сеть для RS232.

Когда вывод ведомого TX имеет высокий уровень, его диод «заблокирован», и он не влияет на общий уровень ведомого устройства и ведущего. Когда любая линия ведомого TX имеет низкий уровень, общая линия через свой диод подтягивается к низкому уровню, и ведущий видит низкий уровень. Обычные RS232 COM могут возникать между ведомым и ведущим.

Когда мастер отправляет, все подчиненные видят передачу одновременно. Должен быть установлен базовый протокол, позволяющий обрабатывать сообщения предполагаемому получателю. Это может состоять, например, из отправки адресного слова + командного слова или слов. Вы можете иметь одно подчиненное устройство, действующее на сообщение, или все подчиненные, или закат, в зависимости от вашей системы адресации.

Направление «от подчиненного устройства к главному» позволяет отправлять данные только одному подчиненному устройству, и необходимо гарантировать, что одновременно отправляет данные только одно подчиненное устройство и/или что конфликты можно разрешить.

Несмотря на очевидные ограничения такой системы, она может работать очень хорошо, дешева и проста в реализации. Если есть много подчиненных устройств, нагрузки должны быть проверены, например, чтобы главный TX мог управлять всеми подчиненными RX одновременно. Поскольку схема однонаправленная, легко добавить базовый буфер.

,

2

RS-485 или RS-422 — это обычные промышленные способы, позволяющие одному последовательному порту общаться со многими устройствами, особенно в шумных условиях с большим количеством двигателей. Для получения правильного электрического интерфейса требуется микросхема драйвера для каждого устройства.

RS-485 обеспечивает двунаправленную связь, если вы хотите получать данные обратно от удаленных узлов, а RS-422 обеспечивает «симплексную» или однонаправленную связь, если вы просто хотите слепо отправлять команды без какой-либо обратной связи.

Что касается программного обеспечения, то, вероятно, проще всего будет воспользоваться моей библиотекой ICSC — она позволяет обращаться к отдельным устройствам на шине RS422 или RS485 и отправлять им команды.

,