Передача данных по RS485

Ардуино: передача данных на большие расстояния — RS485

Из предыдущих уроков мы знаем, что Ардуино имеет несколько встроенных шин для быстрой передачи данных. Например, для работы с дисплеями обычно используют шину SPI. Разного рода датчики часто подключают по шине I2C. Есть ещё популярный UART, который часто используют вместе с интерфейсом USB для обмена данным с компьютером. Но у всех этих способов есть серьёзный недостаток — они не работают на больших дистанциях!

Представим себе ситуацию, когда нам нужно собирать данные с датчиков на крыше дома, и в зависимости от их показаний, переключать реле в подвале. Как быть? Нужен какой-то мощный, помехоустойчивый интерфейс. И такой интерфейс уже десятки лет используется в промышленности. Имя ему — RS485.

На этом уроке мы попробуем соединить две платы Ардуино с помощью длинного кабеля, используя тот самый 485-й интерфейс.

Несколько фактов о RS485

RS485 — это последовательный интерфейс, предком которого является RS232. Последний получил известность из-за COM-портов старых компьютеров, которые как раз работали по интерфейсу RS232.

Максимальная длина линии при соединении по RS485 составляет 1200 метров! А если на линии будут специальные усилители, то ещё больше. Конечно, скорость передачи по такому длинному проводу будет всего около 60 кб/с, но для передачи показаний датчиков больше и не требуется.

В качестве кабеля для RS485 используется витая пара. Это два провода, сплетенные друг с другом. Такой кабель ещё используется в Ethernet линиях, так что его легко можно достать. Чтобы передавать данные на дистанции более 500 метров, потребуется экранированная витая пара.

К одному кабелю может быть подключено 32 устройства. Но в один момент времени только одно устройство может передавать данные.


Изменено:

Ардуино: передача данных на большие расстояния — RS485: 3 комментария

  1. Светодиод не мигает, хотя pjng приходит, проверено через монитор порта, функция сравнения почему-то не работает.

  2. По стандарту полагается тянуть не только линии A и B, но и общий провод, подключая его через последовательный 100-омный резистор на каждом устройстве — это необходимо для уравнивания потенциалов, без него входы могут и погореть. Жаль, что на платке клеммник не имеет такой возможности. Не смертельно, конечно — можно и внешний поставить, а этот использовать для подключения терминатора.
    Кстати, интересно: организовано ли смещение линий A и B? Этих модулей у меня пока нет, куплю — проверю.

Добавить комментарий для Константин Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.