Тема работы:
Радиосеть передачи данных типа умный дом
Выполнил:
студент группы 218
Широких Дмитрий
Данная статья посвящена описанию программной части разработки системы; описанию работы сети и взаимодействия системы с пользователем.
Описание программной части включает:
- определение функций, возлагаемых на элементы сети;
- описание алгоритмов работы элементов сети;
1 Функции, возлагаемые на элементы сети
К функциям точки доступа (Рисунок 1) относится инициализация портов и функции сетевого взаимодействия. Сетевое взаимодействие делится на управление сетью в режиме АР и взаимодействие с сетью Интернет в режиме клиента домашней сети. Управление сетью сводится к определению формата сообщений (определение структуры сообщения, его размера, размера полей), определению алгоритма обмена сообщениями (выбор протокола обмена сообщениями, регистрации и адресации в сети) и обеспечению достоверной доставки сообщений в сети (проверка целостности).
Рисунок 1 – Функции АР
Функции терминала представлены на Рисунке 2. Они аналогичны функциям АР за исключением взаимодействия с сетью Интернет.
Рисунок 2 – Функции терминала
Инициализация портов
В качестве процедуры, упрощающей подключение различных устройств к плате, выступает инициализация портов. Её суть заключается в том, что каждому GPIO присваивается определенная задача/интерфейс. Например, для того, чтобы к конкретному терминалу присоединить устройство, взаимодействующее через SPI интерфейс, подключение следует осуществить через зарезервированные порты. Для осуществления подключения необходимо внести в программный код изменения для конкретного устройства.
Рисунок 3 – Распиновка (pinout) для платы NodeMCU v1.0
Присвоим каждому порту определенные функции.
А0 – используется для подключения устройств сбора информации посредством аналого-цифрового преобразования. Подходит для подключения потенциометров, термисторов, фоторезисторов.
D0/D1 – служат для подключения устройств сбора дискретной информации (значений логической 1 или 0). Подходит для подключения датчиков движения, кнопок и переключателей. Для инициализации необходимо ввести данные GPIO в режим INPUT.
D2/D3/D4/D11/D12 – предназначены для установления значений управляемых устройств. Подходит для подключения реле, ШИМ. Для инициализации необходимо ввести данные GPIO в режим OUTPUT.
D5/D6/D7/D8 – служат для подключения устройств, использующих SPI интерфейс.
D9/D10 – используются для устройств, подключаемых через UART.
Сетевое взаимодействие
Обеспечение обмена сообщениями через сеть Интернет: для реализации обмена информацией с пользователем существует два пути, а именно:
использование облачного сервера совместно с http сервером на базе ESP 8266 и использование специальных приложений. Суть первого решения заключается в том, что на базе данного модуля формируется http сервер. Запросы данного сервера перенаправляются через облачный сервер (например, MQTT), к которому может обращаться пользовательское устройство. Основной недостаток этого решения − необходимость хранить в памяти устройства http сервер. С учётом размера памяти модуля реализовать сложный сервер для управления умным домом не представляется возможным.
Второе решение − использование приложений на базе Android или IOS. Существует несколько приложений, специализирующихся на управлении IоT устройствами. К ним относятся IoT Manager и Blynk.
Остановлюсь на приложении с, поскольку оно позволяет управлять устройствами как с использованием, так и без использования сети Интернет.
Blynk представляет собой облачный сервис для создания графических пультов управления и подходит для широкого спектра микрокомпьютеров и микроконтроллеров. Подключение и настройка данного приложения описана на сетевом ресурсе. После установки и настройки Blynk на мобильное устройство получаем «пульт управления» умным домом (Рисунок 4).
Рисунок 4 – Рабочий проект Blynk
Blynk позволяет управлять портами/пинами устройства, которое подключается к нему, без внесения изменения в программный код, а также обмениваться любой информацией с пользователем, используя вирутальные пины.
Управление сетью
Определение структуры сообщений.
Для обмена информации внутри сети необходимо определиться со структурой сообщений.
Структура сообщений представлена на рисунке 5, где размеры полей указаны в байтах.
Рисунок 5 – Структура сообщений Uplink и Downlink внутри сети
В состав сообщения Downlink включены поля:
-тип сообщения: определяет назначение сообщения – широковещательное или сообщение опроса;
-интервал опроса: поле, предназначенное для определения частоты отправки сообщения данного типа ( «00»−каждые 100мс, «FF»−25,6 с);
-данные: поле для передачи данных фиксированной длины;
-CRC: используется для определения целостности сообщения.
В состав сообщения Uplink включены поля:
-адрес источника: IP-адрес;
-назначение терминала: для определения функций, возлагаемых на данный терминал;
-данные: поле для передачи данных фиксированной длины;
-СRC: используется для определения целостности сообщения.
Определение алгоритмов обмена сообщениями сводится к определению адресации в сети и выбору протокола обмена сообщениями.
Адресация в сети будет производиться посредством IP-адресов. В сети будет два типа адресов: адрес элемента сети и широковещательный адрес.
Адреса элементов сети:
192.168.4.1−индивидуальный адрес точки доступа;
192.168.4.10−индивидуальный адрес первого терминала;
192.168.4.11− индивидуальный адрес второго терминала. И так далее по аналогии. Адреса указываются в каждом элементе сети при прошивке и хранятся в памяти.
Широковещательный адрес будет образован адресом точки доступа и маской подсети: маска 255.255.255.0, тогда широковещательный (broadcast) IP-адрес − 192.168.4.255.
Для определения адресов терминалов при опросе необходимо производить процедуру регистрации. Алгоритм регистрации со стороны точки доступа представлен на рисунке 6.
Рисунок 6 − Алгоритм регистрации в сети со стороны АР
Точка доступа периодически (раз в пять секунд) отправляет сообщения по широковещательному каналу (broadcast). В случае наличия ответа на это сообщение точка доступа выделяет из сообщения ответа IP-адрес регистрирующегося терминала и производит опрос по этому адресу. В сообщении опроса указывается интервал, через который будет производиться обмен сообщениями с данным терминалом. Если после опроса приходит ответное сообщение, терминал считается зарегистрированным по указанному им адресу с указанным интервалом опроса. Иначе производится повторный опрос данного терминала через интервал указанный ему точкой доступа. Повторный опрос будет производиться три раза, в случае, если ответное сообщение не будет принято, терминал считается незарегистрированным, его адрес удаляется из буфера.
На рисунке 7 представлен алгоритм регистрации со стороны терминала.
При регистрации терминал производит прием сообщения по широковещательному каналу. В случае приема сообщения производится отправка сообщения-ответа, в котором указывается адрес данного терминала.
Далее производится прием по собственному адресу. При наличии сообщения терминал пытается отправить ответ, и регистрация считается завершенной. В случае, если сообщение не принято, производится повторный прием сообщения по этому адресу в течение трех интервалов опроса. Если же по истечении этого времени сообщение от АР не будет принято, то терминал считается незарегистрированным, и процедура регистрации повторяется.
Рисунок 7 – Алгоритм регистрации со стороны терминала
Определение протокола обмена сообщениями.
Существует два способа доставки сообщений, использующих IP-технологию:
TCP/IP и UDP/IP. TCP/IP гарантирует достоверную доставку сообщений, используется понятие «соединение», что говорит о том, что данный протокол больше подходит для передачи потокового трафика, что скажется на количестве коллизий в домашней сети. Протокол UDP/IP позволяет передавать короткие сообщения и конфигурировать их по своему усмотрению. Для решения задачи управления сетью подойдет UDP/IP.
Обеспечение достоверной доставки сообщений сводится к определению достоверности принятого сообщения методом расчета контрольных сумм. В случае, если сообщение признано ошибочным, команда в блоке «данные» этого сообщения не выполняется. Процедура ARQ не имеет смысла, так как управление осуществляется в режиме реального времени (Рисунок 8).
Рисунок 8 – Сценарий взаимодействия при обмене сообщениями
2 Описание алгоритмов работы элементов сети
Точка доступа:
Для работы системы с сервером Blynk необходимо обеспечивать постоянный обмен с данным ресурсом. Обновление и установка значений виртуальных пинов (см.выше) производится не чаще, чем 10 запросов в секунду, иначе произойдет обрыв соединения с сервером. Также периодически производится опрос терминалов с установленным интервалом и регистрация в сети раз в 5 секунд (Рисунок 9).
Рисунок 9 – Диаграммы состояний элементов сети
Терминал:
При включении терминала будет производиться регистрация. Она будет производиться до тех пор, пока не будет успешной. После регистрации терминал переходит в состояние опроса, который будет осуществляться с указанным точкой доступа интервалом. Также с определенным интервалом будет производиться связь с оконечными устройствами (интервал установления связи зависит от типа оконечного устройства).
Список использованной литературы
1.Использование Arduino IDE для esp8266