Есть ли ограничения на расстояние последовательной связи Arduino Nano?

Я пытаюсь создать проект, который взаимодействует с несколькими Arduino Nano. Я хотел понять, способен ли Arudino Nano на это, во время исследования я наткнулся на сообщение, в котором говорится, что связь с nano может осуществляться на расстоянии до 2-3 метров, тогда как моя цель — до 30 метров.

Проект — я пытаюсь использовать систему внутренней связи, у меня есть 4 кнопки звонка на главных воротах, когда пользователь нажимает любую из этих 4 кнопок, Arduino поймет это и отправит на один из 4 Arduino, находящихся в другом месте. Каждый Arduino прочитает это сообщение, если оно предназначено для них, они выполнят действие, если нет, то пропустят его.

Моя проблема в том, что я нахожусь в режиме выбора и хочу знать, справится ли с этим Arduino Nano, связь не так уж и сложна. Во время связи будет отправлено не более 2/3 значения. Поскольку я увидел сообщение об ограничении расстояния, я просто хочу получить информацию от сообщества. Если у вас есть подобные примеры последовательной связи между несколькими Arduino Nano, дайте мне знать, я нашел несколько, но, возможно, я сэкономлю свое время, если найду что-то более похожее.

, 👍4

Обсуждение

зачем нужны микроконтроллеры для дверного звонка?, @Juraj

@Juraj Я пытаюсь построить домофон, который соединит 5 квартир с 3 разными дверями. Используя MCU, я пытаюсь управлять тремя камерами, расположенными у каждой двери, а затем разрешаю пользователю открыть эту дверь из выбранной комнаты., @Akshay

Я согласен с Бобом Крофтом, Ник Гаммон очень хорошо описывает, как делать то, что вам нужно. Вот ссылка на его сайт RS485. http://www.gammon.com.au/forum/?id=11428, @Wendall


3 ответа


Лучший ответ:

7

Для такой разницы лучше использовать RS-485 вместо UART. UART действительно предназначен только для связи на небольших расстояниях.

Преобразование UART в RS-232 даст улучшение, но переключение на RS-485 вместо этого даст вам возможность создать многоточечную шину для соединения более двух Arduino вместе на большом расстоянии.

  • UART использует сигнализацию логического уровня 5 В (на обычных Arduinoх — 3,3 В на большинстве 32-битных плат). Он имеет «слабый привод» и очень чувствителен к наведенному шуму на больших расстояниях.
  • RS-232 использует сигнализацию «Невозврат к нулю» ±10 В. Это обеспечивает гораздо большую устойчивость к шуму и более сильную тягу на большие расстояния.
  • RS-485 (и связанный с ним одноранговый RS-422) используют дифференциальную сигнализацию. Это обеспечивает максимальную невосприимчивость к шуму на больших расстояниях.

Вкратце:

  • RS-232 можно использовать, если вы хотите соединить только два устройства вместе в среде с низким уровнем шума.
  • RS-422 можно использовать для соединения двух устройств в промышленной среде с высоким уровнем шума.
  • RS-485 можно использовать для соединения множества устройств в среде с высоким уровнем шума.

Для получения дополнительной информации о том, как они работают, есть несколько хороших страниц в Википедии:

  • RS-232
  • RS-422
  • RS-485

Для подключения любого из них к Arduino вам понадобится дополнительное оборудование («Чипы драйверов»). Например:

  • RS-232: MAX232
  • RS-422: MAX1184
  • RS-485: MAX485

Существует также CAN, который является более современной заменой RS-485 и используется во многих промышленных и автомобильных средах. Поскольку это более новая технология, чем RS-485, доступно меньше ресурсов, а «начальная стоимость входа» может быть выше.

,

Есть ли у вас какой-нибудь пример, на который я могу сослаться для этого. Я нашел видео на YouTube, но в нем нет подробностей., @Akshay

В сети миллионы. Просто Google Arduino rs485 или Arduino max485., @Majenko


3

Грубо говоря, для данного протокола и среды (кабеля) скорость передачи данных и расстояние находятся в обратной зависимости, то есть соединение с половиной скорости передачи данных может работать на удвоенном расстоянии. В конечном итоге вы достигнете жесткого предела, когда общая емкость кабеля станет слишком большой для драйвера.

Стандарт RS-232 предоставляет следующую таблицу максимальной длины стандартных экранированных кабелей:

Data rate (bps) Distance (m)
2400            60
4800            30
9600            15
19200           7.6
38400           3.7
56000           2.6

Таким образом, 30 метров можно легко достичь даже с RS-232, если вы не возражаете против скорости передачи данных 4800 бит/с. Еще большие расстояния (или более высокие скорости передачи данных) могут быть достигнуты при использовании RS-232 по витой паре, например кабелю UTP 5: эти кабели имеют меньшую емкость и могут работать со скоростью 9600 бит/с на расстоянии 100 м и более.

Существуют и другие протоколы, подходящие для дальней связи. Существуют шилды Arduino для CAN, RS-485 и даже Ethernet.

,

Стоит отметить, что RS-232 — это не то же самое, что контакты TX/RX. Протокол тот же, но электрически это не так. UART — это логические уровни 5 В и слабый сигнал, тогда как RS-232 — сигнализация ±10 В NRZ и более сильный сигнал. Независимо от того, выберете ли вы RS-232, CAN или RS-485, вам потребуются дополнительные аппаратные «чипы драйверов», чтобы он работал., @Majenko

@Маженко Очевидно. Я считаю, что ограничение в 2-3 метра, упомянутое в вопросе, относится к встроенному драйверу UART. К нему применимы те же замечания: использование кабеля с более низкой скоростью передачи данных и меньшей емкостью может заставить его работать на большем расстоянии (хотя 30 метров, скорее всего, недостижимо)., @Dmitry Grigoryev


0

Привет, пожалуйста, взгляните на сайт Ника Гаммона, где он создает библиотеку Arduino для RS485 с использованием дешевых модулей драйверов. В частности, неблокирующий пример вполне может соответствовать вашим потребностям. Библиотека также работает с модулями ESP8266 и ESP32 в среде Arduino IDE.

,