Тема «Низкоскоростная сеть передачи данных»

Часть 1

 

Волков И.Ю.

гр. 218

Введение

 

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

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

Разработка именно такой беспроводной сети будет рассмотрена в данной курсовой работе.

 

Постановка задачи

 

Рис. 1 – Постановка задачи

 

Разрабатываемая система (рис. 1) должна обеспечивать передачу команд управления от пользовательского устройства к различным управляемым устройствам на расстоянии 30 м (приблизительный размер среднестатистической квартиры или частного дома), и передачу в обратном направлении различных отчетов. Для обеспечения экономичности решения, в системе не должно быть ничего лишнего: минимальная скорость передачи, минимально необходимый набор функций, минимальное энергопотребления и по возможности, максимально широкий спектр (универсальность) подключаемых устройств (как ПУ, так и управляемых устройств).

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

Для этого зададимся следующими параметрами цветного видео:

·         Соотношение сторон: 4:3;

·         Разрешение: 512x384;

·         FPS: 25;

·         Звуковая дорожка: отсутствует.

 

При использовании одного из наиболее распространенных кодеков DivX битрейт такого видео будет равен ~1 Мб/с [3]. Для передачи команд управления различным устройствам (например, системе освещения) и снятия показаний датчиков (например, показания датчиков движения) данной скорости передачи будет более чем достаточно.

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

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

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

Экономичность эксплуатации сети достигается в основном повышением энергоэффективности системы, путем:

·         Уменьшения времени работы устройств;

·         Использования минимально необходимой мощности передачи.

 

Основные положения

 

            После небольшого обзора представленных на современном рынке микроконтроллеров и приемо-передающих устройств в качестве основы разрабатываемой системы были выбраны следующие элементы:

·         Аппаратная платформа Arduino Pro Mini;

·         Приемо-передающий модуль (трансивер) nRF24l01+.

 

Для выполнения  указанных выше задач система объединяет в одну сеть центральный командный блок (Мастер) и несколько блоков непосредственного управления (Терминал). Структурная схема проекта изображена на рисунке 2.

 

Рис. 2 – Структурная схема проекта

 

Основой блоков является связка трансивера nRF24l01+ [1] и аппаратной платформы Arduino Pro Mini [2]. Каждый Терминал имеет 4 ШИМ-выхода, 2 аналоговых выхода  и шину цифровых адресных датчиков, что позволяет ему управлять сразу шестью различными устройствами и контролировать показания некоторого количества адресных датчиков. Наличие аппаратной платформы позволяет управлять устройствами различного типа, расширяя функционал, внося лишь незначительные изменения в прошивку модуля. Это достигается тем, что система является лишь «проводником» между пользовательским устройством (например, ПК) и конечным устройством, передавая команды управления (1 байт по умолчанию, с возможностью расширения до 5 байт на одну команду) от пользователя к управляемому устройству не внося в них никаких изменений. А так же, использование аппаратной платформы позволяет расширить поддержку пользовательских устройств лишь добавлением к нему соответствующих интерфейсов (и внесения соответствующих библиотек в исходный код Мастера). Интерфейсом по умолчанию будет являться Serial. Кроме того, использование модуля nRF24l01+ позволяет включать в сообщения о подтверждении приема (ACK) короткие блоки данных, например, показания датчиков, при передачи ACK-сообщения от Терминала к Мастеру

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

Основные технические характеристики сети обусловлены характеристиками приемо-передатчика nRF24l01+:

·         Пропускная способность: 256 кб/с, 1 Мб/с, 2 Мб/с (в этом случае используется два частотных канала);

·         Частотный диапазон: 2,4 ГГц;

·         Количество каналов: 126 (ширина полосы одного канала 1 МГц);

·         Мощность излучения: 0 дБм, -6 дБм, -12 дБм, -18 дБм;

·         Радиус зоны покрытия: 30 м и 100 м;

·         Питание: VCC = 5 В, IMAX = 29,3 мА;

·         Количество управляющих выходов: 4 ШИМ + 2 аналоговых;

·         Возможность подключения до 256 адресных датчиков;

·         Возможность добавления новых интерфейсов;

·         Постоянное проведение радиоизмерений, как следствие минимальная мощность передачи.

 

 

Рис. 3 – Программная структура системы

 

Для обеспечения разнообразия подключаемых устройств, при разработке будет использоваться объектно-ориентированное программирование и его отличительная особенность – классовая структура.

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

Уровень трансивера - уровень, отвечающий за непосредственную работу с  приемо-передатчиков, в его функции входит обеспечение достоверной передачи битов, настройка трансивера (изменение профиля, мощности передачи и др.), проведение радиоизмерений.

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

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

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

 

Основные состояния элементов сети

 

Основные состояния Мастера изображены на рис. 4.

Прослушивание радиоканала – основное состояние, Мастер прослушает радиоканал в ожидании сообщения от Терминала (например, сообщения регистрации).

Обновление списка активных терминалов – регистрирование в базе активных клиентов, нового Терминала.

Считывание команд от ПУ – Мастер считывает команды от пользовательского устройства и подготавливает их к передачи.

Передача сообщения – формирование пакета L2 в аппаратной платформе и передача его трансиверу для непосредственной передачи по радиоканалу.

Сигнализация – проверка на выполнение условия  запуска световой (звуковой) сигнализации.

 

Рис. 4 – Основные состояния Мастера

 

Основные состояния Терминала изображены на рисунке 5.

Регистрация – при включении Терминала посылает по радиоканалу запрос на регистрацию и ожидает подтверждение приема (ACK) от Мастера.

Прослушивание радиоканала – Терминал прослушивает радиоканал, ожидая поступления команд от Мастера.

Контроль датчиков – Терминал контролирует (через определенные пользователем промежутки времени) подключенные к нему датчики и принимает решение о досрочном извещении Мастера об этом по средствам служебного сообщения.

Прием и выполнение команд – Терминал принимает команду от Мастера и выполняет ее, а затем отсылает ему в ответ очередную порцию показаний датчиков.

Передача служебных сообщений  в этом состоянии Терминал передает Мастеру служебные сообщения различных типов.

 

Рис. 5 – Основные состояния Терминала

 

Сетевая составляющая системы

 

Рис. 6 – Сетевая модель системы

 

Рассмотрим сетевую модель системы представленную на рисунке 6, она включает в себя:

·         Канальный уровень L2 с двумя подуровнями:

o   LLC – Logical Link Control – уровень управления логической связью. Данный уровень предназначен для управления передачей данных и обеспечения ее достоверности;

o   MAC – Media Access Control – уровень управления доступом к среде. Данный уровень предназначен для управления доступом к каналу связи и обеспечения адресной доставки;

·         Физический уровень L1 – предназначен для обеспечения достоверной передачи сообщений между узлами сети.

Физический уровень сети полностью реализуется трансивером nRF24l01+ и его описание содержится в техническом описании [1] к данному модулю. В радиосети планируется использование всех основных функциональных особенностей nRF24l01+.

 

Сценарии взаимодействий элементов сети

 

Рассмотрим основные моменты функционирования сети. Регистрация нового Терминала в сети:

1.      После включения Терминал формирует и передает по радиоканалу запрос на регистрацию. Он повторяет передачу до тех пор, пока не получит подтверждение о регистрации от Мастера;

2.   Получив от Терминала запрос на регистрацию, Мастер отправляет ему подтверждение получения сообщения (ACK) и обновляет свой список активных клиентов. Терминал, получив подтверждение от Мастера, переходит в режим прослушивания радиоканала и становится готовым к приему команд.

 

Рис. 7 - Регистрация нового Терминала в сети

 

Передача сообщений в направлении Мастер - Терминал:

1.      Мастер передает сформированное сообщение Терминалу и ожидает подтверждение приема;

2.      Терминал передает подтверждающее сообщение (ACK) в котором, помимо элементов выполняющих функцию подтверждения приема, содержится информация с различных датчиков;

3.      После передачи подтверждения Терминал записывает в ACK информацию с последующего датчика(ов), Мастер считывает из полученного пакета ACK показания очередного датчика(ов).

 

Рис. 8 - Передача сообщений в направлении Мастер - Терминал

 

Передача сообщений в направлении Терминал - Мастер:

1.      Терминал передает сообщение Мастеру;

2.      Мастер передает подтверждение приема Терминалу.

 

Рис. 9 - Передача сообщений в направлении Терминал - Мастер

 

Пакеты L2-уровня используемые в сети

 

Рис. 10 – Пакеты L2 уровня, используемые в системе

 

В сети можно выделить 3 вида пакетов.

Основной информационный пакет – основной вид сообщений передаваемых в сети. Поле Service содержит 3 бита отвечающих за адрес, 3 бита отвечающих за тип сообщения и 2 бита обозначающие текущую мощность излучения. Остальные поля отвечают за передачу команд на 1-6 канал Терминала соответственно. Они все имеют одинаковый размер, который может варьироваться от 1 до 5 байт. За счет того, что они обладают одинаковым размером, не требуется введение дополнительного поля, которое бы указывало сколько байт приходится на каждый канал. При приеме трансивер может определить размер пакета L2, на основе этого значения и известного размера поля Service не трудно определить количество байт приходящихся на каждый канал.

Служебный пакет – состоит из поля Service имеющего аналогичные структуру и функции, что и у командного сообщения, а так же из информационного поля (2 байта).

ACK – подтверждение о получении – можно разделить на две части: первая – стандартное сообщение ACK генерируемое трансивером nRF24l01+, вторая – 2 байта информации, которые могут передаваться вместе с сообщением ACK. Эти 2 байта могут быть использованы для передачи любых видов информации, например, для показаний различных датчиков.

   

Решение задач энергоэффективности

 

Основой для решения задач по повышению энергоэффективности системы являются следующие функциональные особенности, предусмотренные в трансивере nRF24l01+:

·         Возможность проведения простейших радиоизмерений;

·         Возможность изменения мощности передачи;

·         Функция «Multiceiver» (мультиприем) – позволяющая Мастеру использовать уникальные настройки трансивера для каждого терминала.

 

Проведение радиоизмерений

 

Для измерения уровня сигнала в трансивере выделен лишь один бит (RPD) расположенный в 9-ом регистре, он имеет следующие два состояния:

·         «1» - мощность принимаемого сигнала не менее -64 дБм;

·         «0» - мощность принимаемого сигнала меньше -64 дБм.

 

Как следует из документации [1] к данному модулю, при профиле 1 Мбит/с чувствительность приемника составляет -85 дБм (рис.11). Мощность передачи Мастера и Терминала одинакова в обоих направлениях (М-Т и Т-М).  Если Мастеру требуется передать сообщение группе  Терминалов, то будет использоваться самая большая необходимая мощность в группе.

 

Рис. 11 – Некоторые уровни мощности

 

Измерение мощности сигнала будет происходить при каждом сеансе связи между Мастером и Терминалом. Если кто-то из участников обмена поменял мощность передачи, второй участник также меняет мощность передачи. Если RPD = 1 то доступны профили  (0, -6, -12, -18 дБм), если RPD = 0 доступны профили (0, -6, -12 дБм). Процесс регулировки мощности излучения можно описать несколькими условиями:

1.      Если сообщение было принято успешно и RPD = 1 снижаем профиль передачи до -18 дБм;

2.      Если сообщение было принято успешно и RPD = 0 снижаем профиль мощности на 1 шаг вниз;

3.      Если сообщение не удалось передать, увеличиваем мощность сигнала на 1 и повторяем передачу;

4.      Если сообщение вновь не удалось передать, увеличиваем мощность до максимума и повторяем передачу.

 

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

·         Передача стала невозможна – система переходит к регулировке мощности;

·         Флаг RPD поднят – это означает что мощность принятого сигнала более -64 дБм, в этом случае выбирается профиль -18 дБм;

·         Настало время перерегистрации – в этом случае система вновь переходит к регулировке мощности.

 

Источники:

  1. nRF24L01Single Chip 2.4GHz TransceiverProduct Specification;
  2. Arduino Pro Mini Specification;
  3. Cтатья «Расчет битрейта и размера картинки».