Одним из элементов системы домашней автоматизации, рассматриваемой на нашем сайте, является преобразователь уровней 3,3/5В, который одновременно служит и адаптером UART / RS485 между Raspberry Pi и сетевыми контроллерами.
В авторском варианте схема адаптера выполнена всего на двух транзисторах и микросхеме МАХ485 и особых нареканий в её работе не наблюдалось. Однако на форуме отмечалось, что такой адаптер у некоторых или работал нестабильно или вообще не заработал. Возможная причина этого в том, что не всегда получалось стабильное переключение с приема на передачу драйвера МАХ485. Поэтому предлагались различные варианты доработки адаптера, в частности формирование команды переключения с помощью отдельного узла, выполненного на интегральном таймере 555 (1006ВИ1) или микроконтроллере 12F629 (12F675). Сейчас не будем останавливаться на этих схемах, о них можно почитать на нашем форуме и там же задать интересующие вопросы авторам. Сегодня вашему вниманию предлагается альтернативный вариант подключения Raspberry Pi к сети контроллеров по шине RS485.
Сразу хочу отметить, что если ваш адаптер нормально работает через UART, то данный материал дальше вам читать нет смысла. Однако если такие проблемы имеются, то можно попробовать вместо UART задействовать один из портов USB Raspberry Pi. Для этого используем готовый адаптер USB/RS485 (рис.1), который без труда можно заказать, например, на том же aliexpress.com. Стоимость адаптера составляет всего лишь 1,5-2$.
Рис.1
Схема адаптера представляет собой преобразователь интерфейса USB в RS232 с последующим преобразованием в интерфейс RS485.
Аппаратная часть подключение адаптера заключаемся в том, что нужно его просто вставить в разъем USB Raspberry Pi и подключить шину RS485. Да и «программная» часть (т.е. настройка файла конфигурирования Raspberry Pi) является не немного более сложным процессом.
Для единообразия будем считать, что в текущий момент используется UART порта GPIO, настроенный по методике, описанной в третьей части нашего обзора по теме домашней автоматизации.
После подключения адаптера необходимо открыть терминальную программу Putty и выполнить команду по определению типа подключенного адаптера. Сделаем это командой:
$ dmesg | tail
После выполнения команды увидим примерно следующее (рис.2)
Рис.2
Тип нашего адаптера в данном случае ttyUSB0.
Далее открываем конфигурационный файл Webiopi Config командой
sudo nano /etc/webiopi/config
и находим в разделе [DEVICES] настройки последовательного порта (рис.3)
Рис.3
Отредактируем настройки. Закомментируем строчку настройки UART с именем serial0 и присвоим это имя порту USB с типом нашего адаптера (ttyUSB0), раскоментировав данную строку. В результате получим следующий вид настройки последовательного порта (рис.4).
Рис.4
Сохраняем настройки конфигурационного файла и выполняем перезагрузку Raspberry Pi:
sudo /etc/init.d/webiopi restart
Все, наш адаптер USB/RS485 готов для работы в составе системы домашней автоматизации.
1. Не очень люблю писать "мой, моё". Поэтому иногда о себе в третьем лице. 2. Беды большой не вижу, т.к. речь идет о внутренней структуре адаптера. RS232 является "промежуточным" звеном (USB-RS232-RS485). Другими словами - имеем "черный ящик", с одной стороны которого USB, а с другого RS485. Так что при всем желании подключится таким адаптером к СОМ порту будет очень проблематично
Две ремарки. 1)"В авторском варианте". О себе, Михаил, пишите в 3-м лице. Интересно. 2)"Схема адаптера представляет собой преобразователь интерфейса USB в RS232". Думаю надо поправить на преобразователь интерфейса USB в UART, а то кто-нибудь подключит к СОМ-порту. Спасибо за информацию.