Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Программное обеспечение разрабатывается для работы и взаимодействия следующих узлов системы: координатор, маршрутизатор и конечный узел. Управление их работой производится путем программирования конфигурационных регистров, доступ к которым осуществляется по радиоканалу через АТ-команды, а также набором типовых сценариев работы узла беспроводной сети, которыми разработчик беспроводной системы может пользоваться как готовыми подпрограммами.
Задачей программирования является разработка алгоритмов работы программы и написание программного обеспечения для взаимодействия координатора, маршрутизаторов и конечных узлов между собой. Задача написания программного обеспечения верхнего уровня не входит в данную лабораторную работу. Ниже будут представлены необходимые комментарии.
Датчик измерения температуры, освещенности и уровня влажности
В качестве датчиков измеряющих температуру, освещенность и уровень влажности выбран мультифункциональный датчик Xbee sensor XS-B14CB2RB производства компании Digi. Использование данного устройства позволит сэкономить затраты на приобретение дополнительных ZigBee модулей для интеграции датчиков температуры, освещенности и влажности в беспроводную сеть. Связь с другими узлами осуществляется через интерфейс ZigBee. Совместим со стеком EmberZNet версии 2.5.х.
Датчик наличия дыма
В качестве датчика наличия дыма выбрано устройство на основе микросхемы MC145012 от компании Freescale: уровень потребляемого напряжения не превышает 9 вольт, малое энергопотребление, оснащение устройством звуковой сигнализации. Обнаружение дыма выполняется путем сканирования рассеянного света на наличие мельчайших частиц дыма или других аэрозолей (Рис. 1). Интеграция датчика в беспроводную сеть осуществляется при помощи модуля ETRX2 от Telegesis.
Рис.1 Диаграмма работы датчика обнаружения дыма
Датчик движения
Устройство Pir sensor от компании Parallax выбрано в качестве датчика движения: обнаружение движение в радиусе не менее 5 метров, уровень потребляемого напряжения не должен превышать 9 вольт.
Принцип работы основан на отслеживании уровня ИК-излучения в поле зрения датчика. Распознавание движения выбранным датчиком движения осуществляется на расстояние 6 метров. На выходе датчик имеет однобитный сигнал. Интеграция датчика в беспроводную сеть осуществляется при помощи модуля ETRX2 от Telegesis.
Примерная схема обмена данными между узлами в сети (Рис. 2):
Рисунок 2. Схема обмена данными между узлами сети
Примерный план формирования и настройки сети:
Следуя этому списку, необходимо разработать следующие алгоритмы работы системы:
Все подпрограммы вводятся через координатор. Схема распределения программного обеспечения для узлов имеет вид: (3):
Рис. 3. Схема распределения программного обеспечения для узлов системы
Опираясь на описанную выше информацию, составлены алгоритмы работы программы взаимодействия узлов сети:
Для ввода AT-команд могут использоваться несколько программ. К примеру Hyper Terminal, TeraTerm или же программа прилагающаяся к ZigBee модулям ETRX2, - Telegesis terminal. Программирование всех устройств производится путем передачи команд с координатора по радиоканалу на другие узлы системы.
Необходимые настройки подключаемого модуля для программирования: скорость потока 19200 бит в секунду, проверка на четность отключена, 8 бит данных, 1 стоповый бит, управление потоком отключено. Данные настройки вносятся в программу из которой будут вводится AT-команды. К примеру, ввод настроек для программы Telegesis Terminal версии 1.2.5 показан на :
Рисунок 4. . Окно ввода настроек подключаемого модуля в программе Telegesis Terminal v.1.2.5
Далее в основном окне программы вводятся список AT-команд.
Рассмотрим список AT-команд, необходимых для конфигурации системы:
Формирование сети осуществляется вводом команды AT+EN. При этом устройство, с которого была введена эта команда, автоматически становится координатором сети. После создания сети генерируется случайный идентификатор (Pan Id) и происходит ожидание автоматического подключения остальных узлов сети.
После того как сеть создана вводится команда AT+SN, которая позволяет просканировать созданную сеть и установить связь к каждому присоединенному узлу.
После создание сети нам необходимо установить центральный узел сбора данных (Sink),а также запретить подключения остальных узлов к сети, для дальнейшего конфигурирования конечных узлов. Для этого необходимо записать значение 090С в 16 битный регистр координатора S06. Для доступа к регистру необходим пароль, который по умолчанию для координатора «TG-ETRX1USB», для других модулей «TG-ETRX1». В целях соображения безопасности и удобства будет целесообразно установить новый пароль. Делается это путем ввода следующей команды в регистр S09: ATS09=Password:TG-ETRX1USB, где слово «Password» - это новый пароль. Также можно сменить пароли для оставшихся узлов в сети: ATSREM09:<EUI64>= Password:TG-ETRX1, где EUI64 это идентификатор модуля ETRX2, подключенного к сети. Теперь команда для записи значения 090С в регистр S06 будет выглядеть следующим образом: ATS06=090C:Password. Далее необходимо провести конфигурацию конечных узлов. При автоматическом присоединении, по умолчанию узлы системы становятся маршрутизаторами. Для изменения типа узла необходимо изменить биты 9 и A на необходимое нам значение. Если бит 9 установлен, то устройство будет конечным. В противоположном случае устройство будет работать в режиме маршрутизатора. Если бит A установлен, то устройство будет мобильным, если нет спящим. В данной системе все конечные узлы будут спящими, поэтому необходимо внести значение 060С в регистр S06. При этом устройство не должно быть частью сети, поэтому необходимо его вывести из нее. После этого можно конфигурировать регистр S06. Команды будут выглядеть следующим образом:
AT+DASSR:<EUI64>
ATSREM06=060C:Password
После того как регистр S06 сконфигурирован, необходимо обратно присоединить узел к сети. Для этого на координаторе необходимо обратно разрешить функцию автоматического подключение узлов к сети записываем значение 010C в регистр S06 следующей командой - ATS06=010C:Password. Теперь после того как все конечные узлы сконфигурированы и вернулись в сеть обратно делаем сеть недоступной для автоматического присоединения новых узлов ATS06=090C:Password.
Узел датчика движения определен как конечный спящий узел. Целью его работы будет передача данных поступающих на модуль ETRX2 с датчика движения на центральный узел сбора информации. Для этого вначале необходимо перевести узел в рабочий режим, т.к. по умолчанию он «спит», после этого передать данные и снова перевести узел в спящий режим. Делается это с помощью встроенного типового сценария. Каждый сценарий имеет свое кодовое значение. За его исполнение отвечают регистры S17-S28, которые работают попарно. Первый регистр является таймером, определяющим время повторения сценария, второй определяет сам сценарий. При выполнении сценария передачи информации узел автоматически «просыпается», а после передачи данных возвращается в спящий режим. Для выполнения данного сценария необходимо записать следующие команды:
ATSREM17:<EUI64>=20:Password
ATSREM18:<EUI64>=0101:Password, где:
<EUI64> - идентификатор узла датчика движения.
20 число четверть секунд, через которые будут передаваться данные (Т.е. 5 секунд).
0101 значение типового сценария передачи данных на центральный узел сбора информации с последующим перезапуском таймера.
Узел датчика дыма будет осуществлять опрос A/D1 на наличие перепада. Для этого используются регистры S15-16,S2E и события IRQ0 и IRQ1. S2E будет отвечать за определение перепада и назначения события. Регистр S15 отвечает за действие, которое произойдет при наступлении IRQ0, S16 при наступлении IRQ1. Мы будем ожидать перепад на A/D1, допустим это событие IRQ0. Для его определения в регистр S2E записываем значение 0001 и выполняем передачу информации путем задания стандартного сценария через регистр S15:
ATSREM2E:<EUI64>=0001:Password
ATSREM15:<EUI64>=0101:Password, где:
<EUI64> - идентификатор узла датчика дыма.
Данный узел будет передавать значения температуры, уровня влажности и освещенности через заданные промежутки времени.
Вначале конфигурации данного узла следует включить всю группу датчиков, это производится записью значения 2 в регистры D1, D2 и D3. Команды будут выглядеть следующим образом:
ATSREMD1:<EUI64>=2:Password
ATSREMD2:<EUI64>=2:Password
ATSREMD3:<EUI64>=2:Password, где
<EUI64> - идентификатор узла Xbee sensor.
Далее данный узел должен знать устройство, на которое необходимо пересылать данные. Для этого в регистры DH и DL записываются старший и младший байты сетевого идентификатора координатора соответственно:
ATSREMDH:<EUI64>=XXXX:Password
ATSREMDL:<EUI64>=YYYY:Password, где
<EUI64> - идентификатор узла Xbee sensor,
XXXX старший байт сетевого идентификатора координатора,
YYYY - младший байт сетевого идентификатора координатора.
Далее необходимо задать время, через которое устройство будет передавать данные, а потом автоматически переходить в спящий режим:
ATSREMSP:<EUI64>=6000:Password
ATSREMSN:<EUI64>=3:Password, где
<EUI64> - идентификатор узла Xbee sensor,
6000 количество периодов по 10 мсек (SP),
3 количество SP-периодов.
Пример список последовательно вводимых AT-команд программы взаимодействия узлов сети
AT+EN
AT+SN
ATS09=Password:TG-ETRX1USB
ATSREM09:<EUI64>= Password:TG-ETRX1
ATS06=090C:Password
AT+DASSR:<EUI64>
ATSREM06=060C:Password
ATS06=010C:Password
ATS06=090C:Password
ATSREM17:<EUI64>=20:Password
ATSREM18:<EUI64>=0101:Password
ATSEM2E:<EUI64>=0001:Password
ATSREM15:<EUI64>=0101:Password
ATSREMD1:<EUI64>=2:Password
ATSREMD2:<EUI64>=2:Password
ATSREMD3:<EUI64>=2:Password
ATSREMDH:<EUI64>=XXXX:Password
ATSREMDL:<EUI64>=YYYY:Password
ATSREMSP:<EUI64>=6000:Password
ATSREMSN:<EUI64>=3:Password