Передача данных по RS485
Из предыдущих уроков мы знаем, что Ардуино имеет несколько встроенных шин для быстрой передачи данных. Например, для работы с дисплеями обычно используют шину SPI. Разного рода датчики часто подключают по шине I2C. Есть ещё популярный UART, который часто используют вместе с интерфейсом USB для обмена данным с компьютером. Но у всех этих способов есть серьёзный недостаток — они не работают на больших дистанциях!
Представим себе ситуацию, когда нам нужно собирать данные с датчиков на крыше дома, и в зависимости от их показаний, переключать реле в подвале. Как быть? Нужен какой-то мощный, помехоустойчивый интерфейс. И такой интерфейс уже десятки лет используется в промышленности. Имя ему — RS485.
На этом уроке мы попробуем соединить две платы Ардуино с помощью длинного кабеля, используя тот самый 485-й интерфейс.
Несколько фактов о RS485
RS485 — это последовательный интерфейс, предком которого является RS232. Последний получил известность из-за COM-портов старых компьютеров, которые как раз работали по интерфейсу RS232.
Максимальная длина линии при соединении по RS485 составляет 1200 метров! А если на линии будут специальные усилители, то ещё больше. Конечно, скорость передачи по такому длинному проводу будет всего около 60 кб/с, но для передачи показаний датчиков больше и не требуется.
В качестве кабеля для RS485 используется витая пара. Это два провода, сплетенные друг с другом. Такой кабель ещё используется в Ethernet линиях, так что его легко можно достать. Чтобы передавать данные на дистанции более 500 метров, потребуется экранированная витая пара.
К одному кабелю может быть подключено 32 устройства. Но в один момент времени только одно устройство может передавать данные.
Светодиод не мигает, хотя pjng приходит, проверено через монитор порта, функция сравнения почему-то не работает.
ping надо в одиночные кавычки, тогда все заработало
По стандарту полагается тянуть не только линии A и B, но и общий провод, подключая его через последовательный 100-омный резистор на каждом устройстве — это необходимо для уравнивания потенциалов, без него входы могут и погореть. Жаль, что на платке клеммник не имеет такой возможности. Не смертельно, конечно — можно и внешний поставить, а этот использовать для подключения терминатора.
Кстати, интересно: организовано ли смещение линий A и B? Этих модулей у меня пока нет, куплю — проверю.