Волков И.Ю.

гр. 218

Первая часть курсовой работы.

 

Часть 2. Разработка алгоритмов работы элементов сети и настройка аппаратной составляющей

 

Условно, реализацию проекта можно разделить на две части: аппаратную и программную. Программная часть будет включать в себя:

·         Определение функций, возлагаемых на программную часть;

·         Построение алгоритмов работы программы;

·         Определение и настройка среды разработки, используемых библиотек;

·         Написание программного кода;

·         Оптимизация программного кода.

 

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

В данной части курсовой работы будет рассмотрены программная (до написания кода) и аппаратная части. Написание и оптимизации программного кода будет рассмотрена в следующей части КР.

 

Программная часть

 

Функции, выполняемые программной частью

 

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

 

Общие функции


Инициализация модулей и портов – инициализация и первичная настройка параметров аппаратной платформы и трансивера.

Прием сообщений из радиоканала включает в себя: определение факта наличия сообщения для приема, непосредственно прием сообщения, определение его типа, передачу АСК и обработку полученных команд.

Передача сообщений в радиоканал включает в себя: определение наличия данных для передачи, формирование сообщения, передача сообщения в радиоканал, прием и обработку информации содержащейся в АСК (для Мастера).

 

Функции Мастера


Учет активных терминалов – Мастер должен отслеживать активность терминалов и обновлять информацию об их доступности.

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

Световая индикация работы – индикация того, что устройство выполняет определенный процесс (например, частое мигание светодиода – попытка передать сообщение Терминалу).

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

 

Функции Терминала


Регистрация – регистрация Терминала у Мастера. После этой процедуры Терминал готов к приему команд.

Заполнение сообщения АСК полезной информацией – обновление информации с датчиков записанной в полезной нагрузке отчета о доставке ACK. Приоритет имеют датчики, информация с которых не поступала Мастеру дольше всего.

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

 

Рис. 1 –Функции, возлагаемые на программную часть

 

Алгоритмы работы программной части

 

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

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

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

 

Алгоритмы Мастера


Обобщенный алгоритм работы (рис. 2)

 

 

Рис. 2 – Обобщенный алгоритм работы Мастера

 

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

Проверка условия «Радиоканал» – прослушивание радиоканала, при наличии сообщения в радиоканале запускается процедура приема и обработки сообщения.

Проверка условия «RX» – проверка наличия сообщений от пользовательского устройства (ПУ), при наличии сообщения запускается процедура его приема и обработки.

Обновление состояния терминалов – в системе предусмотрен специальный таймер - если на протяжении определенного времени какой-то из Терминалов не подавал признаков активности то Мастер «опускает» соответствующий флаг и извещает об этом ПУ.

 

Функция приема сообщения из радиоканала (рис 3)

 

 

Рис. 3 – Функция приема сообщения из радиоканала

 

Прием сообщения – прием и запись сообщения в буфер.

Определение типа сообщения – из записанного в буфер выделяется тип сообщения.

Проверка типа – возможно три типа сообщений принимаемых от Терминала: Сигнализация, Регистрация и Сообщение об изменении мощности.

Регистрация:

Поднятие флага об активности Терминал – Мастер помечает Терминала как активный.

Извещение ПУ – отправка пользовательскому устройству уведомления о регистрации нового Терминала.

Изменение мощности:

Изменение мощности сигнала для Терминала – из принятого сообщения извлекается уровень мощности на приемной стороне и Мастер корректирует мощность излучения, с которой он будет в будущем передавать сообщения этому Терминалу. Данное сообщение посылается Терминалов при (пере)регистрации [1] для первичной настройки уровня сигнала.

Сигнализация:

Определение источника – определение, от какого из подключенных к Терминалу датчиков поступила данная информация.

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

Обновление показаний датчиков – Мастер обновляет сохраненную в памяти информацию о показании датчиков.

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

 

Функция приема сообщения от пользовательского устройства (рис. 4)


 

Рис. 4 - Функция приема сообщения от пользовательского устройства

 

Считывание сообщения – запись сообщения от ПУ в буфер.

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

Если сообщение предназначено Мастеру:

Выполнение команды – выполнение команды (например, считывание списка активных терминалов) поступившей от ПУ.

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

Если сообщение предназначено Терминалу:

Формирование сообщения для передачи – подготовка сообщения для отправки Терминалу.

Передача сообщения по радиоканалу – включает в себя как непосредственно передачу сообщения, так и ожидание сообщения АСК и считывание из него полезной нагрузки.

Далее происходит проверка двух условий: было ли сообщение, переданное Терминалу запросом (т.е. ожидается ли какой-то ответ кроме АСК) и если да, был ли получен данный ответ. При отсутствии ответа на вопрос процедура повторяется (до 2-х раз, затем ПУ отправляетсясообщение об ошибке). Если ответ был получен, то ПУ отправляется отчет о выполнении его запроса.

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

 

Алгоритмы Терминала


Обобщенный алгоритм работы (рис. 5)


 

Рис. 5 - Обобщенный алгоритм работы Терминала

 

Инициализация – аналогична такому же блоку в алгоритме Мастера;

Регистрация – процедура (пере)регистрации;

Проверка условия «Радиоканал» – прослушивание радиоканала, при наличии сообщения в радиоканале запускается процедура приема и обработки сообщения;

Снятие показаний датчиков – обновление показаний датчиков подключенных к адресной шине датчиков;

Проверка условия «Условие» – проверка на истинность условия, при котором следует известить Мастерао информации с датчиков;

Извещение Мастера – извещение о показании датчиков;

Проверка условия «Регистрация» – проверка таймера отсчитывающего время до следующей перерегистрации, если время истекло, запускается процесс перерегистрации.

 

Функция приема сообщения из радиоканала (рис. 6)


 

Рис. 6 - Функция приема сообщения из радиоканала Терминалом

 

Считывание сообщения в буфер – запись сообщения из радиоканала в  буфер;

Выделение типа сообщения – выделения поля типа из буфера, от Мастера может прийти два типа сообщений: управление и запрос информации с датчиков.

При поступлении команды управления Терминал выполняет эту команду, передавая записанные в буфере команды управляемым устройствам.

При поступлении запрос на показания датчиков, выполняется опрос датчиков (Обновление показаний датчиков) и Передачу показаний Мастеру.

Сбрасывание таймера регистрации – т.к. Терминал подтвердил свою активность, он сбрасывает таймер отсчитывающий время до повторной регистрации;

Перезапись АСК – запись в полезную нагрузку АСК очередной порции показаний с датчиков.

 

Процедура регистрации (рис. 7а)

 

Рис. 7 – Процедура регистрации (а) и извещение Мастера (б)

 

Отправка сообщения о регистрации – отправка Мастеру заранее записанного в памяти сообщения о регистрации. Серым цветом блока обозначается то, что помимо повторов передачи, которые предпринимает сам трансивер в случае не удачной попытки, предусмотрен так же программный повтор.

Получение уровня сигнала из АСК – из принятого в ответ на регистрацию сообщения АСК Терминал определяет уровень принимаемого сигнала;

Отправка уровня принятого сигнала – Терминал отправляет Мастеру уровень принятого сигнала, на основании этих данных Мастер сможет скорректировать мощность излучения для повышения энергоэффективности;

Сбрасывание таймера регистрации – т.к. Терминал подтвердил свою активность, он сбрасывает таймер отсчитывающий время до повторной регистрации

 

Извещение Мастера (рис. 7б)

 

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

Формирование сообщения для передачи – формирование извещения для передачи его Мастеру.

Передача сообщения в радиоканал – передача Мастеру показаний датчиков.

 

Аппаратная часть

 

Как описывалось ранее [1], в устройстве будет использоваться следующие три модуля:

·         Трансивер nRF24l01+ (рис. 9);

·         Аппаратная платформа Arduino Pro Mini (рис. 8);

·         Стабилизатор напряжения 3,3В.

 

Определим назначение выводов каждого из этих модулей (рис. 8 и 9):

·         TX0, RXI – к интерфейсу обеспечивающему связь с  пользовательским устройством (для Мастера);

·         Для подключения трансивера выделим следующие контакты (АП - трансивер):

o   8 – CSN;

o   10  CE;

o   11 – MOSI;

o   12 – MISO;

o   13 – SCK;

·         Контакт GPIO 7 – адресная шина для подключения различных датчиков(для Терминала);

·         Контакты GPIO под номерами 3, 5, 6, 9 являются ШИМ выходами (для Терминала);

·         Контакты GPIO 2, 4 являются аналоговыми выходами (для Терминала);

·         Контакты GPIO A0, A1 – для подключения сигнального светодиода и звукового зуммера (для Мастера).

 

Рис. 8 – Аппаратная платформа Arduino Pro Mini

 

 

Рис. 9 – Трансивер nRF24l01+

 

Таким образом, у Мастера остается большое количество не используемых контактов GPIO (рис. 8), которые в будущем можно задействовать для подключения дополнительных интерфейсов.

Следующим шагом является определение источников питания для каждого элемента устройства (таблица 1).

 

Таблица 1. Источники питания различных элементов (контакты VCC и GND)

Устройство

Источник питания

Аппаратная платформа

Внешний источник питания

Трансивер

Стабилизатор напряжения

Стабилизатор напряжения

Внешний источник питания

Сигнальный светодиод

Аппаратная платформа

Сигнальный зуммер

Аппаратная платформа

 

Теперь определим настройки и используемые функции модуля nRF24l0+ [2]:

·         Тип модуляции: GFSK;

·         Скорость передачи: 1 Мб/с;

·         Количество попыток передать сообщения: 10;

·         Время между попытками передать сообщения: 15 мс;

·         Функция «Multiceiver»: Включена;

·         Полезная нагрузка в сообщение ACK: Включена;

·         Подтверждение приема (ARQ): Включено;

·         Контрольная сумма: CRC-16;

·         Номер частотного канала (по умолчанию): 76;

·         Мощность излучения (по умолчанию): 0 дБм (1 мВт).

 

Для адресной доставки сообщений модуль nRF24l01+ оперирует так называемыми «трубами» (pipes) [2], которые по сути являются логическими каналами связи и определяются HEX-адресом и порядковым номером. Каждый трансивер использует две трубы для взаимодействия с сетью – одну трубу для приема, и другую для передачи. Номера используемых труб и HEX-адреса не изменяются и жестко «вшиваются» в узлы сети на этапе их перепрограммирования. Зададим HEX-адреса (таблица 2) и номера используемых труб (таблица 3) для всех предполагаемых узлов сети.

 

Таблица 2. HEX-адреса «труб»

Номер трубы

HEX-адрес

0

0xF0F1F2F3F0

1

0xF0F1F2F3F1

2

0xF0F1F2F3F2

3

0xF0F1F2F3F3

4

0xF0F1F2F3F4

5

0xF0F1F2F3F5

6

0xF0F1F2F3F6

 

Таблица 3. Распределение «труб» между узлами сети

Узел сети

Труба передачи

Труба приема

Мастер

1..6

0

Терминал 1

0

1

Терминал 2

0

2

Терминал 3

0

3

Терминал 4

0

4

Терминал 5

0

5

Терминал 6

0

6

 

Источники:

  1. Первая часть курсовой работы;
  2. nRF24L01Single Chip 2.4GHz Transceiver Product Specification.