Arduino базово имеет выход uart он же rs-232 и включается командой Serial.begin(****) этот интерфейс подходит для связи на коротких расстояниях и в чистом виде не предназначен для работы с большим количеством узлов, как этого избежать я описывал в другой статье. Однако когда нужно осуществить связь на больших расстояниях RS - 232 не подходит, его дальность связи ограничена 20 метрами.
Выход есть, нужно перейти на интерфейс RS-485. Но не все так просто, RS-485 физически не поддерживает одновременную передачу сообщений в двух направлениях. Придется в коде прописывать, чтоб сообщения от ведомого устройства посылались только в ответ на сообщение ведущего. Сигнал RS-232 передается относительно земли, для его подключения используется 3 провода GND, RXD и TXD. А RS-485 подключается двумя проводами A+ и B-. Биты кодируются дифференциально относительно А В, И при подключении проводом типа "витая пара" помеха пришедшая на провод будет как на одном так и на другом проводе, при обработке сигнала она просто вычитается из сигнала, за счет этого собственно и достигается высокая дальность связи и помехоустойчивость.
Для того чтобы перейти с интерфейса RS - 232 на RS-485 необходим преобразователь, на алиэкспрессе они стоят копейки, но с ними не все так просто, я всегда заказывал у одного и того-же продавца, и каждый раз получал разные платы. Сейчас разберем какие платы хорошие, а какие придется допиливать напильником, но они все равно будут плохими.
И так мне уже пришло 3 разных вида преобразователей, все они собраны по одной и той же схеме, но одна микросхема отличается и от неё зависит работоспособность модуля. на картинке слева направо от лучшей платы до худшей. На задней части модулей есть обозначения, но модуль который работает лучше всех не имеет никаких обозначений, а все микросхемы на нем были затерты, так что о нем особо то и нечего сказать, но он в отличи от остальных был на толстом текстолите.
Хорошо работающий модуль имеет микросхему 74HC04D и обозначение на задней части RS485 to TTL а под ней номер партии, на том, что на картинке это 2047L.
Модуль который работает крайне плохо имеет обозначение RS485 to TTL на задней части и микросхему cd4069bm аналог 74HC04D, но максимальный выходной ток у нее в 5 раз ниже чем у нужной, этого недостаточно, чтобы arduino приняла сигнал ножкой RX, однако если использовать softSerial, то на другом пине мощности сигнала все же хватает для работы.
Модернизация плохих модулей
Собственно говоря модернизация плат заключается в замене микросхемы cd4069bm на 74HC04D, в чип и дип стоит такая 36 рублей, думаю можно подобрать и другую микросхему, например MC74HC04ADR2G, но за нее я не могу говорить, я не пробовал, хоть по характеристикам она точно такая-же. Сами по себе это логические микросхемы типа "6НЕ". Если Вы знаете такие микросхемы с большой силой тока на выходе, то пишите в комментариях, будет интересно почитать.
Узнать какая же микросхема стоит на модуле, который работает лучше всех, к сожалению, не представляется возможным, все микросхемы затерты... эх китайцы... Но я продолжу свои эксперименты и найду лучшее сочетание микросхем для таких модулей!