Способ последовательного взаимодействия с многосетевой подчиненной сетью 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.
р>@Frank, 👍0
2 ответа
Не совсем понятно, какой именно запрос, но отвечая на вопрос в теме письма:
Вы можете легко подключить несколько последовательных / RS232 COM-портов, имея все подчиненные входы RX и главный выход TX на одной линии, и все подчиненные выходы TX подключены сетью OR к одной линии к главному входу RX. Главный «общается» со всеми подчиненными одновременно. Каждый подчиненный общается только с главным. Только один подчиненный может полезно общаться одновременно. Назначение назначения сообщения и арбитраж подчиненного разговора выполняются программно.
Как показано ниже, сеть OR на каждом подчиненном устройстве может быть такой же простой, как диод с катодом (сторона стержня) к линии TX и анодом к общей линии к главному RX. Один подтягивающий резистор (или внутренний подтягивающий резистор в главном устройстве на линии RX) подтягивает линию к высокому уровню, когда все подчиненные линии TX имеют высокий уровень.
Эта диаграмма показывает, насколько простой может быть многоточечная связь.
Примечание. Как показано, полярность диодов соответствует истинному RS232 с логической 1 = низкий = отрицательный.
При прямом подключении выходов UART TTL уровня (5 В/0 В) поменяйте местами диоды.
Кроме того, добавьте подтягивающее сопротивление от +5 В к синей линии RX к главному устройству — 10 кОм к 5 В, вероятно, будет достаточно.
Отсюда - Многоточечная сеть для RS232.
Когда вывод ведомого TX имеет высокий уровень, его диод «заблокирован», и он не влияет на общий уровень ведомого устройства и ведущего. Когда любая линия ведомого TX имеет низкий уровень, общая линия через свой диод подтягивается к низкому уровню, и ведущий видит низкий уровень. Обычные RS232 COM могут возникать между ведомым и ведущим.
Когда мастер отправляет, все подчиненные видят передачу одновременно. Должен быть установлен базовый протокол, позволяющий обрабатывать сообщения предполагаемому получателю. Это может состоять, например, из отправки адресного слова + командного слова или слов. Вы можете иметь одно подчиненное устройство, действующее на сообщение, или все подчиненные, или закат, в зависимости от вашей системы адресации.
Направление «от подчиненного устройства к главному» позволяет отправлять данные только одному подчиненному устройству, и необходимо гарантировать, что одновременно отправляет данные только одно подчиненное устройство и/или что конфликты можно разрешить.
Несмотря на очевидные ограничения такой системы, она может работать очень хорошо, дешева и проста в реализации. Если есть много подчиненных устройств, нагрузки должны быть проверены, например, чтобы главный TX мог управлять всеми подчиненными RX одновременно. Поскольку схема однонаправленная, легко добавить базовый буфер.
RS-485 или RS-422 — это обычные промышленные способы, позволяющие одному последовательному порту общаться со многими устройствами, особенно в шумных условиях с большим количеством двигателей. Для получения правильного электрического интерфейса требуется микросхема драйвера для каждого устройства.
RS-485 обеспечивает двунаправленную связь, если вы хотите получать данные обратно от удаленных узлов, а RS-422 обеспечивает «симплексную» или однонаправленную связь, если вы просто хотите слепо отправлять команды без какой-либо обратной связи.
Что касается программного обеспечения, то, вероятно, проще всего будет воспользоваться моей библиотекой ICSC — она позволяет обращаться к отдельным устройствам на шине RS422 или RS485 и отправлять им команды.
- AT-команда не отвечает на последовательный монитор
- Как отправить команду AT на sim800l с помощью SoftwareSerial
- Как остановить SoftwareSerial от получения данных и повторно включить его в какой-то другой момент?
- Ардуино для чтения с преобразователя RS232 в последовательный модуль TTL
- Не нашел датчик отпечатков пальцев :( Arduino Mega 2560 Adafruit Fingerprint Sensor
- Чтение SMS с помощью Arduino Uno и SIM800L и печать на LCD (16x2 буквенно-цифровых) с использованием последовательного соединения
- Как работает последовательная связь на Arduino?
- Как связаться с ESP8266 ESP01, отправив данные через программный сериал на Arduino Uno?