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

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

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

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

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

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

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

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

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

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

5+

Изменено: