Глава 2. Структура системы ”Умный дом”. Разработка конвертера USB – RS-485.

Проект Умный дом

Окончательно определим структуру системы и тип основной локальной сети. Подготовим все аппаратные и программные средства для отладки локальных контроллеров.

Предыдущая глава     Список статей     Следующая глава

 

Локальная сеть системы.

Структуру распределенной вычислительной системы в большей степени определяет тип локальной сети. В предыдущей статье в качестве основного сетевого интерфейса был выбран стандарт RS-485. Как-то по этому поводу и сомнений не было. Для подобных сетей он и был разработан. У интерфейса RS-485 много достоинств.

 

Для нас главное:

  • Топология общая шина. Новое сетевое устройство просто подключается к линии связи. Никаких дополнительных перекоммутаций не требуется. Мы собираемся постепенно расширять систему. Для нас очень важно, чтобы каждое сетевое устройство могло быть в любой момент просто подключено или отключено от линии связи.
  • Среда передачи - неэкранированная витая пара. Локальные контроллеры у нас будут расположены достаточно далеко друг от друга. Цена линии связи имеет существенное значение.
  • Длина линии связи RS-485 может достигать 1200 м. То, что нам надо.
  •  Скорость передачи до 1 мбит/сек. Для нас это больше чем достаточно.
  • Очень важно, что RS-485 имеет высокую помехозащищенность при отсутствии гальванической развязки. Мы собираемся запитать все локальные контроллеры от одного источника питания. Значит, они будут гальванически связаны. И только благодаря дифференциальным сигналам RS-485 будет обеспечиваться надежная передача данных.
  • Без повторителей RS-485 допускает подключение к одной линии связи до 32 устройств. Надеюсь, нам хватит. Если нет, то будем ставить повторители.
  • Нам очень важна стоимость комплектующих. Для подключения платы Ардуино к сети RS-485 достаточно добавить одну 8ми выводную микросхему. По моей партнерской ссылке цена такой микросхемы от 8 руб. Модуль стоит 45 руб. Интерфейс с более низкой ценой даже представить трудно.
  • RS-485 де-факто стандартный интерфейс малых сетей промышленной автоматики. Существует громадное число промышленных контроллеров, датчиков, исполнительных механизмом с этим интерфейсом. Удобно, когда есть возможность включить их в нашу систему.
  • Существует стандартный протокол ModBus RTU для сетей RS-485. Очень важно, что он обеспечивает контроль целостности информации, т.е. защищает данные от искажения.
  • Подробно RS-485 описан в уроке 60. В следующем уроке рассказано об его аппаратной реализации, есть примеры использования, программы, Ардуино-библиотека.

 

Структура системы.

С учетом всего вышесказанного общая структура системы выглядит так.

Структура Умного дома

Основу системы составляет локальная сеть RS-485, которая связывает один центральный и несколько локальных контроллеров.

Локальные контроллеры физически расположены вблизи объектов управления. К ним подключены датчики и исполнительные механизмы. Контроллеры считывают состояние своих датчиков и по определенным законам управляют исполнительными механизмами (локальное регулирование).

Локальный контроллер с датчиками и исполнительными механизмами образует подсистему управления объектом. Эта подсистема способна работать автономно, без связи с центральным контроллером, но в ограниченном режиме. Именно поэтому контроллеры называются локальными.

Кроме того, в процесс управления может вмешиваться центральный контроллер, как правило, за счет задания для локальных контроллеров параметров, уставок, команд. Естественно, центральный контроллер имеет полный доступ к информации о состоянии датчиков, исполнительных механизмов, процессе управления.

Локальные контроллеры будут реализовываться на основе плат Arduino Nano. При тиражировании можно использовать более дешевые Arduino PRO Mini.

Центральный контроллер управляет работой всех подсистем. Он контролирует работу подсистем, задает им параметры,  связывает  подсистемы в регуляторы высокого уровня. Кроме того он обеспечивает доступ к системе "Умный дом" через Интернет, GSM модем, устройства верхнего уровня. В качестве таких устройств могут использоваться компьютеры, ноутбуки, смартфоны, интеллектуальные дисплеи Nextion, компьютеры Raspberry и т.п. Подключаются они к центральному контроллеру через интерфейсы UART посредством конвертеров USB-UART.

Центральный контроллер планируется выполнить на базе платы Arduino Mega 2560. Плата выбрана благодаря наличию в ней 4 аппаратных интерфейсов UART и значительному объему памяти (256 кбайт Flash и 8 кбайт ОЗУ).

Система способна расширяться ”снизу”. Любой локальный контроллер может иметь свою сеть. Скорее, это будут беспроводные сети для подключения датчиков и интеллектуальных бытовых приборов.

Я обрисовал общий принцип построения системы. Реальные варианты могут быть разными. Система должна собираться из контроллеров, как слова из детских кубиков.

 

Структура системы на этапе разработки и отладки.

Центральный контроллер должен управлять локальными. Когда локальные контроллеры еще не разработаны непонятно, как разрабатывать центральный. И наоборот как отлаживать локальные, если еще нет центрального. Получается замкнутый круг.

Отлаживать локальные контроллеры в ходе разработки мы будем с помощью компьютера. Он заменит центральный контроллер. Только когда будет разработан минимальный набор локальных контроллеров, мы приступим к созданию центрального.

На этапе разработки локальных контроллеров система будет выглядеть так.

Этап отладки

Компьютер подключается к сети RS-485 через конвертер USB – RS-485. Специальная программа верхнего уровня будет отображать состояние локальных контроллеров, управлять ими, вести статистику ошибок. Более того, если на этапе, когда центральный контроллер уже будет разработан, появится необходимость в разработке нового локального контроллера, его отладка будет происходить по этой же схеме с помощью компьютера. Компьютер дает намного больше возможностей для мониторинга состояния контроллера. К тому же нельзя одновременно отлаживать программное обеспечение и локального, и центрального контроллеров.

Скорее всего, в центральном контроллере будет реализован режим для выхода компьютера непосредственно на системную сеть RS-485. Он будет превращаться в конвертер USB – RS-485.

 

Конвертер USB – RS-485.

Для дальнейшей работы над системой нам необходим конвертер USB – RS-485. Он должен обеспечивать компьютеру возможность обмениваться данными по сети RS-485.

Я решил сделать его из платы Arduino Nano. Плата подключается через штатный USB к компьютеру, и через драйвер MAX485 к сети RS-485.

Схема выглядит так.

Схема конвертера USB - RS-485

Обратите внимание, что сигналы драйвера MAX485 подключены к выводам 10, 13, 11, а не к RX и TX.

Резисторы добавлены в схему для обеспечения стабильного состояния линии в момент, когда драйверы всех сетевых устройств находятся в отключенном состоянии. Я буду испытывать все локальные контроллеры на столе, без длинной линии связи. Поэтому у меня нет резисторов-терминаторов. Об этом написано в уроках 60, 61.

Можно использовать готовый модуль. Вот варианты и цены из моего партнерского магазина.

MAX485 купить

У меня конвертер выглядит так.

Конвертер USB - RS-485

Для проверки я подключил его к сети из двух контроллеров урока 61.

Локальная сеть

 

Резидентное программное обеспечение конвертера USB – RS-485.

Я не буду подробно рассказывать о резидентной программе конвертера. Он работает под управлением программы верхнего уровня. Это совсем другая тема. Просто укажу ссылку на скетч AdapterRS485.zip .

 

Программа верхнего уровня.

Для управления системой от компьютера верхнего уровня мне пришлось написать функции, реализующие обмен по сети RS-485 согласно протоколу ModBus RTU. Я создал 3 функции:

  • чтение  регистров хранения (код 3);
  • запись в один регистр хранения (код 6);
  • последовательная запись в регистры хранения (код 16).

В свою очередь для проверки функций мне пришлось разработать программу, отображающую состояние моей системы из двух локальных компьютеров.

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

Монитор

Единственная цель создания программы была проверка программных функций обмена по сети, но если кому-то необходимо, он может загрузить ее по ссылке AdRS485_PC.zip . Установка и работа с программой такая же, как и со всеми программами верхнего уровня из уроков Ардуино.

 

Мы подготовили все необходимое для работы с локальными контроллерами по сети RS-485. В следующей главе начнем создавать сами контроллеры.

Предыдущая глава     Список статей     Следующая глава

15 комментариев на «Глава 2. Структура системы ”Умный дом”. Разработка конвертера USB – RS-485.»

  1. Добрый день! Интересная тема. Сам пытаюсь сделать подобное, но для квартиры. Если интересно, есть уже разработанные модули датчиков и центрального контроллера, который соответствует приведённой структурной схеме. Модуль датчиков работает с библиотекой Tiny_ModBusRTU_Slave и опрашивается программой QModBus с компьютера. Осталось отладить его работу с центральным контроллером.

    • Здравствуйте!
      Всегда интересно посмотреть альтернативные варианты. Сегодня открою раздел Умный дом на форуме сайта. Выкладывайте ваш проект, пишите замечания, дополнения.

  2. Здравствуйте Эдуард! А не рассматривали для связи радиомодули, например-NRF24L01 или аналогичные? В плане надёжности в некоторых случая хуже, в некоторых лучше, но зато, намного удобнее, чем соединять проводами.

    • Здравствуйте!
      Если строить надежную систему, то необходимо резервное питание. Все равно придется тянуть провода питания. Еще, конечно, цена.
      NRF24L01 рассматриваем, как вариант для подключения к локальным контроллерам удаленных датчиков.

  3. Вопрос на «засыпку», а зачем писать программы верхнего уровня? Есть хорошие открытые решения, совершенно бесплатно… например OpenHAB поддерживает Modbus TCP/RTU в полной мере. А освободившееся время потратить на разработку и отладку Ардуино-компонентов для умного дома.

  4. Добрый день. Интересует Ваш дополнительный комментарий на подключение МАХ485 сигналов DE,RE. У Вас Re постоянно подключен к земле. В других источниках информации DE и RE закороченные и соединены с сигналом переключения направления передачи?

    • Здравствуйте!
      При использовании моей библиотеки возможны оба варианта. После передачи данных пакета, перед приемом я очищаю приемный буфер. Все данные попавшие туда при передаче своих данных при этом удаляются. Поэтому возможно постоянное разрешение работы приемника.
      Но лучше использовать схему с соединенными сигналами DE и RE. В этом случае работа приемника в момент передачи данных запрещается, меньше дергается микроконтроллер по прерыванию. Другие библиотеки с сигналом RE, подключенным к земле, могут не работать.

  5. Эдуард,

    правильно ли я понял, что можно использовать любые выводы в цифровом режиме, за исключением Rx и Tx?

    И второй вопрос: можно ли Re подключить не к земле, а к цифровому выводу и задать на нем LOW (по аналогии с De)?

    Спасибо.

    • Здравствуйте!
      Да.
      «Лучше соединить между собой выводы Re и De и управлять ими одним сигналом. Об этом написано в Главе 3.
      Отмечу, что на предыдущих схемах вывод RE микросхемы MAX485 был подключен к земле. В новом варианте при передаче данных (сигнал DE высокого уровня), запрещается работа приемника, и микроконтроллер не принимает ненужные данные. Хотя, все будет работать и при подключенном к земле выводе RE.»

  6. Приветствую . Этот скетч AdapterRS485.zip загружается один раз в конвертер (Arduino Nano) и главы 3, 5 (примеры) — изучаем прошивкой скетча в платы, которые подключаются к этому конвертеру по RS485 интерфейсу ? Я правило понял ?

Добавить комментарий

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