Построение сетей мониторинга на примере набора eZ430-RF2500
В рассматриваемом примере сети термодатчиков конечные устройства передают значения измеренной температуры и напряжения по беспроводному каналу к точке доступа, которая сообщает все накопленные данные через интерфейс UART в COM-порт компьютера.
Описание беспроводной сети
Приложение построено на базе микроконтроллера MSP430, беспроводного приемопередатчика с низким энергопотреблением CC2500 и сетевого протокола SimpliciTI. Разработчик может повторить систему, используя два готовых решения:
- Отладочный набор eZ430-RF2500;
- Беспроводной протокол SimpliciTI.
eZ430-RF2500 - это полный отладочный комплект для работы с микроконтроллером MSP430F2274 и беспроводным трансивером CC2500 на 2,4 ГГц. В отладочный комплект входит: USB-программатор/эмулятор; две съемные целевые платы; две батарейки в специальном корпусе (рис. 1); а также диск с документацией, графическим интерфейсом пользователя Network Visualizer и исходными кодами приложения. Целевая плата eZ430-RF2500T может использоваться как в паре с USB-программатором, так и в виде отдельной системы с внешним датчиком или без него, а также - как готовое решение. Через USB-интерфейс программатора можно организовать прием и передачу данных между компьютером и MSP430.
Отличительными характеристиками eZ430-RF2500 являются:
- USB программатор/эмулятор;
- 21 доступный вывод для отладки;
- Высокоинтегрированный микроконтроллер с низким энергопотреблением MSP430, работающий на частоте 16МГц;
- Два светодиода, зеленый и красный, управляющиеся двумя цифровыми портами ввода/вывода общего назначения;
- Кнопка, генерирующая внешнее прерывание приложения.
Блок батареек и плата расширения используются для запуска программы на eZ430-RF2500T без программатора (рис. 1).
Рис. 1. Отладочный набор eZ430-RF2500
Подробно о eZ430-RF2500 можно узнать на сайте TI: www.ti.com/ez430-rf или в документе [1].
SimpliciTI - разработанный компанией TI протокол, ориентированный на сети с маломощными устройствами (до 30 устройств в сети). Сетевой протокол SimpliciTI очень прост в применении и требует минимальных ресурсов микроконтроллера. Протокол может быть реализован на базе микроконтроллеров с ультранизким энергопотреблением MSP430 и многочисленных радиочастотных приемопередатчиков. Несмотря на скромные требования к ресурсам микроконтроллера, сетевой протокол SimpliciTI поддерживает топологии «звезда» с точкой доступа для записи и отправки сообщений конечному устройству, а также до четырех расширителей дальности. Протокол SimpliciTI предназначен для таких приложений, как системы безопасности и сигнализации (датчики присутствия и движения, датчики управления включением света, датчики разрушения стекла, детекторы дыма и угарного газа), бытовые расходомеры (измерители расхода газа, воды и электричества), домашняя автоматизация (дистанционные системы открывания гаражных дверей, системы кондиционирования и отопления), системы радиочастотной идентификации. Сетевой протокол SimpliciTI распространяется с открытым кодом и не требует лицензии. Разработчики беспроводных устройств могут адаптировать протокол под свои задачи. Более подробную информацию о протоколе см. в [2],[3].
Две целевые платы eZ430-RF2500 отладочного комплекта изначально запрограммированы различным программным обеспечением для работы в беспроводной сети. Точка доступа (AP) всегда включена и управляет сетью, один раз в секунду принимает информацию от одного или нескольких конечных устройств (ED). Конечное устройство (ED) большую часть времени проводит в режиме низкого энергопотребления LPM3, «просыпаясь» раз в секунду для измерения температуры окружающей среды и напряжения батарейки, затем пересылая результаты измерений точке доступа. При получении данных от конечного устройства точка доступа пересылает их через UART в COM-порт компьютера для отображения. Безусловно, все устройства в сети должны работать по протоколу SimlpiciTI.
Точка доступа (AP)
Первое, что делает точка доступа при включении - передает текст (рис. 2) в COM-порт. Затем точка доступа инициализируется как сетевой концентратор. При успешном завершении этой процедуры точка доступа передает сообщение, показанное на рис. 2.
Рис. 2. Сообщение, передаваемое точкой доступа в COM-порт при инициализации
С помощью температурного датчика, встроенного в 10-битный АЦП (ADC10), точка доступа проводит измерение температуры окружающей среды один раз в секунду, постоянно тестируя сеть на факт подключения новых конечных устройств, а также принимает посылки от подключившихся ранее. С помощью двух светодиодов точка доступа сигнализирует о двух транзакциях в сети: красный светодиод показывает передачу измеренных значений от AP в компьютер, а зеленый светодиод сигнализирует о приеме пакета от одного из сетевых ED.
Код программы для точки доступа содержится в файле demo_AP.c. Выполнение кода программы начинается с системной инициализации, которая практически идентична для точки доступа и конечных устройств сети (рис. 3).
Рис. 3. Блок-схема алгоритма работы точки доступа
Функция BSP_Init() определяет взаимодействие между MSP430 и CC2500, а также настраивает светодиоды для использования в приложении. После аппаратной инициализации AP и ED создают (случайным образом) 4-байтный адрес, записывают этот адрес во flash-память для последующего его использования после сброса. Как только AP обнаруживает новое устройство в сети по его адресу, оно записывает этот адрес во flash и проверяет эту область при инициализации, чтобы ED, в случае сброса, всегда определялось как то же самое устройство, или, в случае сброса самой AP, конечные устройства, использующие эту точку доступа, правильно определили ее. Случайный адрес генерируется с помощью функции TI_getRandomIntegerFromVLO библиотеки vlo_rand.s43, доступной в проекте. Для более подробной информации о библиотеке генерирования случайных чисел для MSP430, см. документ Random Number Generation Using the MSP430 (SLAA338). Функция MCU_Init() инициализирует MSP430 следующим образом:
- DCO и MCLK настраиваются на частоту 8 МГц;
- Таймер A настраивается на генерирование прерываний каждую секунду;
- UART инициализируется на работу с COM-портом компьютера со скоростью 9600 бит/с, разрешаются прерывания.
После завершения инициализации аппаратной части, на экране появляется текст, изображенный на рис. 2, и вызывается функция инициализации сети SMPL_Init(sCB). Параметр sCB представляет собой указатель на функцию вызова, выполняющуюся в обработчике прерываний (ISR) при получении посылки точкой доступа.
Функция обратного вызова sCB фильтрует принятые пакеты в зависимости от их идентификатора канала связи для того, чтобы определить источник посылки и различить запрос на подключение к сети нового конечного устройства. Нулевой идентификатор канала связи означает запрос на подключение. Если запрос принят, точка доступа присваивает подключившемуся конечному устройству очередной идентификатор в диапазоне от 0x01 до 0x1D. Это означает, что протокол SimpliciTI поддерживает сеть из 30 конечных устройств, подключенных к точке доступа. Однако, Wireless Sensor Monitor v1.02 позволяет подключить не более восьми конечных устройств. В соответствии с идентификатором канала связи, функция обратного вызова sCB определяет и инкрементирует соответствующий семафор sPeerFrameSem или sJoinSem для их обработки в теле основной программы. В коде программы точки доступа также используется семафор sSelfMeasureSem, который устанавливается таймером А, чтобы каждую секунду измерять и отображать собственные значения температуры и напряжения точки доступа. Таким образом, ходом программы после инициализации сети управляют три семафора. Функция sCB возвращает определенное значение. Если это значение больше нуля - функция обратного вызова обработала принятое сообщение. Функция обратного вызова sCB в файле demo_AP.c возвращает ноль, потому что программа оставляет принятое сообщение в буфере для обработки его приложением.
Семафор sJoinSem в соответствии с кодом в файле demo_AP.c устанавливается, когда конечное устройство вызывает функцию SMPL_Init(). Подключение к сети является побочным эффектом инициализации, так как не существует специального запроса на подключение. Не существует таких функций, как SMPL_Join() или SMPL_JoinListen(). Если семафор sJoinSem установлен в функции обратного вызова точки доступа, и AP установила число каналов связи меньше максимально возможного (определяется в файле smpl_config.dat), AP вызывает функцию SMPL_LinkListen(). Программа не возвращается из функции SMPL_LinkListen() до момента успешного установления канала связи. Очень важно, чтобы функция SMPL_LinkListen() вызывалась только тогда, когда пользователь знает, что другое устройство в сети посылает запрос с помощью SMPL_Link(). После установления канала связи увеличивается число устройств, распознаваемых точкой доступа, и семафор sJoinSem устанавливается для другого устройства.
Семафор sPeerFrameSem инкрементируется в функции обратного вызова каждый раз, когда точка доступа принимает сообщение от устройства в сети. После определения или инкрементирования семафора sPeerFrameSem, точка доступа сначала создает буфер сообщений, в котором размещается поступившее сообщение, обрабатываемое в данный момент, и все последующие.
Семафор sSelfMeasureSem устанавливается с интервалом, определяемым пользователем для выполнения функций приложения. Этот случай является хорошим примером того, как просто на базе eZ430-RF2500 с помощью простой операционной системы низкого уровня можно совмещать пользовательские функции, такие, как измерение температуры и напряжения, с протоколом SimpliciTI.
Конечное устройство (ED)
При запуске конечное устройство начинает поиск точки доступа, к которой можно подключиться. Во время поиска мигают оба светодиода (красный и зеленый). При обнаружении точки доступа конечное устройство пытается установить с ней связь, в это время мигает красный светодиод. Если связь с точкой доступа установить не удается, красный светодиод продолжает мигать. При установке соединения, оба светодиода выключаются, и конечное устройство переходит в режим низкого энергопотребления LPM3, мигая зеленым светодиодом в моменты активной работы.
В момент включения конечное устройство инициализируется, затем раз в секунду измеряет температуру и напряжение батареи и передает их значения в сеть (рис. 4).
Рис. 4. Блок-схема алгоритма работы конечного устройства
Параметр точки доступа, передаваемый в функцию SMPL_Init(), является указателем типа void на несуществующую функцию обратного вызова, которая должна была бы использоваться при приеме сообщения. Но в рассматриваемом приложении конечное устройство не принимает сообщения, а только передает. Если бы точка доступа принимала сообщение, она делала бы это следующим образом: в случае, если конечное устройство «спит» и «просыпается» для приема сообщения от точки доступа, оно должно вызывать функцию SMPL_Receive() для проверки наличия сообщений в выходном буфере точки доступа; в случае, если конечное устройство всегда в активном режиме и отслеживает принятые сообщения, точка доступа должна использовать функцию обратного вызова, сходную с функцией sCB в файле demo_AP.c.
Производительность системы
Необходимый объем памяти для приложения приведен в таблице 1. Компиляция программного кода производилась с использованием среды разработки IAR Embedded Workbench for MSP430 KickStart v.5.10 с оптимизацией Balanced ® Low.
Таблица 1. Объем памяти, требуемый для проекта Wireless Sensor Monitor v1.02
Сетевые устройства | Flash/ROM, байт | ОЗУ, байт |
---|---|---|
Точка доступа | 9922 | 724 |
Конечное устройство | 6616 | 395 |
На рис. 5 изображена осциллограмма потребляемого тока в момент приема/передачи данных. На осциллограмме присутствует смещение напряжения 6,8 мВ, вызванное погрешностью измерения. При этом погрешность измерения тока при использовании резистора с сопротивлением 5 Ом составляет 1,3 мА. Из-за этого не получится измерить потребляемый ток в те моменты, когда устройство находится в режиме низкого энергопотребления, ожидается, что в этом режиме MSP430 в сумме с CC2500 потребляют 1,3 мкА (900 нА [MSP430] + 400 нА [CC2500]).
Рис. 5. Осциллограмма потребляемого тока ED в момент передачи данных
В таблице 2 приведены значения потребляемого тока при выполнении основных программных и аппаратных функций приложения. Такие функции, как передача данных через последовательный интерфейс USCI, присутствующие в приложении, не показаны в таблице из-за того, что потребляемый ими ток относительно мал.
Таблица 2. Энергопотребление при выполнении отдельных функцийАппаратная часть | Потребляемый ток |
---|---|
Режимы энергосбережения | |
MSP430 LPM0 | 1,1 мА |
MSP430 LPM3 | 900 нА |
СС2500 sleep state | 400 нА |
Активный режим MSP430 | |
8 МГц = DCO = SMCLK, 3 В | 2,7 мА |
10-бит АЦП MSP430 | |
fADC10CLK = 5 МГц, ADC10ON = 1, REFON = 1, REFOUT = 0, ADC10DIV = 0x4 (ADC10CLK/5) | 850 мкА |
Режимы CC2500 | |
Idle | 1,5 мА |
Прием (RX) (слабый входной сигнал, DEM_DCFILT_OF = 0,250 kbps) | 18,8 мА |
Передача (TX) (250 kbps, дБ выходная мощность) | 21,3 мА |
Программная часть | Время выполнения, мкс |
Осциллятор | |
Время старта XOSC | 30 |
Счетчик со сквозным переносом | |
Время до CHP_RDY Hi ® Lo | 150 |
PLL | |
Калибровка частоты синтезатора | 809 |
Измерение температуры | |
ADC10REFON + время стабилизации | 130 |
LPM0 + синхронизация + выборка температуры (30 мкс) + преобразование (13 циклов ADC10CLK) | 44 |
Измерение напряжения | |
ADC10 2.5 В REFON + время стабилизации | 130 |
LPM0 + синхронизация + выборка напряжения (30 мкс) + преобразование (13 циклов ADC10CLK) | 22 |
FIFO | |
Подготовка посылки для передачи | 140 |
Запись сообщения в TX FIFO | 110 |
Режимы RX/TX | |
Режим RX | 2560 |
Передача сообщения | 800 |
Примечание: Значения приведены для MSP430F2274 и CC2500. Значения приведены для MSP430F2274 и CC2500. |
В отличие от CC2500, функциональность которого задана аппаратно, на энергопотребление MSP430 можно влиять программным способом: анализировать, на выполнение каких функций тратится больше энергии, и делать соответствующие изменения. На рис. 6 показана осциллограмма потребляемого тока приложения в моменты его работы, за исключением тех, когда устройство находится в режиме приема и передачи.
Рис. 6. Осциллограмма тока потребления ED во время передачи
1. «A» - Запуск XOSC (осциллятора CC2500).
2. «B» - Истечение времени таймера. Установки в конфигурационном регистре определяют: как много раз счетчик должен переполниться после успешного запуска XOSC до передачи сигнала готовности (отрицательный перепад на выводе CHP_RDY). В этом случае требуется 64 истечения времени таймера или 150 мкс.
3. «С» - IDLE ® режим RX + калибровка PLL. После запуска XOSC, CC2500 по умолчанию переходит в режим ожидания IDLE. В соответствии с протоколом SimpliciTI функция пробуждения переводит CC2500 в режим приема RX после инициализации в IDLE. При переходе из режима IDLE в режим приема или передачи, ФАПЧ частотного генератора, использующаяся при модуляции/демодуляции в момент приема и передачи, автоматически калибруется в соответствии с установками в конфигурационных регистрах радиочастотного трансивера. Эту конфигурацию нужно осуществлять регулярно, и она длится 809 мкс.
4. «D» - режим приема. Перед передачей данных нужно убедиться, что канал свободен (другие устройства не осуществляют передачу). Это осуществляется при помощи алгоритма CCA (Clear Channel Assessment). CCA проверяет, принимает ли радиочастотный трансивер в данный момент какое-нибудь сообщение, а также оценивает уровень RSSI на превышение заданного порога. После завершения CCA радиочастотный трансивер может переходить в режим передачи.
Очень важно понять, что большая часть энергии затрачивается не на саму передачу информации, а на инициализацию CC2500 и MSP430 и подготовку к передаче. Вычислить средний потребляемый ток приложения можно двумя способами:
- Вручную;
- Интегрировав кривую напряжения, полученную с помощью осциллографа.
Сначала определим энергопотребление вручную, отдельно для MSP430 и для радиочастотного трансивера.
При расчете потребляемого тока нужно также учесть ток в режиме низкого энергопотребления конечного устройства.
- Ток в режиме «сна» = 1,3 мкА ╢ (период передачи- время работы приложения)= 1,3 [мкА] ╢ (1 [с] - 4,7 [мс])= 1,29 мкАс
Средний потребляемый ток приложения также можно выразить следующим образом:
- Средний потребляемый ток= (ток в режиме «сна»+ ток в режиме передачи)/период передачи = (1294 [нАс]+ 85170 [нАс])/1[с]= 86,46мкА
- Для сравнения вычислим потребляемый ток вторым способом, интегрировав кривую напряжения, полученную с помощью осциллографа. Врезультате получим значение 465 мкВс. В это значение входит ток смещения.
- Средний потребляемый ток = ((измеренное напряжение- (ошибка измерения ╢ время работы приложения)) / 5 Ом + ток в режиме «сна»)/период передачи = ((465 [мкВс] - (6,8 [мВ]╢ 4,7 [мс]))/5+ 1,29 [мкАс])/1 [c]= 87,9мкА
Из-за небольших упрощений при вычислении потребляемого тока, а также из-за погрешности измерения результаты отличаются на 1,6%. Вычислим время работы приложения от двух батареек типа ААА 1000 мА/час, предположив, что напряжение каждой из батареек постоянно до момента полной разрядки:
Время работы = номинальный_ток/средний_ток
С использованием результатов полученных первым способом:
- = 1000 [мАчас]/0.08646[мА]= 11566 [час]/24 [час/день]= 481,9 [день]/365 [день/год]= 1,32лет= 1год 3 месяца 25 дней
С использованием результатов полученных вторым способом:
- = 1000 [мАчас]/0.0879 [мА]= 11376 [час]/24 [час/день]= 474 [день]/365 [день/год]= 1,29 лет= 1 год 3 месяца 18 дней
На рис. 7 изображена зависимость времени «жизни» батарейки от интервала передачи.
Рис. 7. Зависимость времени «жизни» батарейки от интервала передачи
Чтобы минимизировать энергопотребление, разработчик должен всегда:
- Максимально возможно увеличить интервал передачи сообщений;
- За время одной посылки передать максимально возможный объем информации.
Используя этот пример и доступные бесплатно коды программ проекта Wireless Sensor Monitor v1.02, пользователь может без особого труда разработать недорогое, простое в использовании беспроводное приложение.
Таблица 3. Ожидаемое энергопотреблениеТрансивер | Потребляемый ток, мА | Время выполнения, мкс | Ампер в секунду, нА•с |
---|---|---|---|
Запуск XOSC | 2,7 | 300 | 810 |
Счетчик таймера | 1,75 | 150 | 262 |
Калибровка ФАПЧ | 7,5 | 809 | 6068 |
Режим приема | 18,8 | 2,56 | 48 128 |
Режим передачи | 12,3 | 800 | 17 040 |
Всего | 72 308 | ||
MSP430 | Потребляемый ток, мА | Время выполнения, мкс | Ампер в секунду, нА•с |
Активный режим | 2,7 | 4,634 мс | 12 512 |
Режим LPM0 | 1,1 | 66 | 73 |
ADC10 | 850 | 326 | 277 |
Всего | 12 862 | ||
MSP430 + CC2500 | 85 170 |
Литература
1. eZ430-RF2500 User's Guide (SLAU227).
2. SimpliciTI Developer's Notes Measuring Power Consumption With CC2430 and Z-Stack (SWRA144).
3. TI Delivers SimpliciTITM Network Protocol for Simple Low-Power RF Networks (SC-07149).
4. MSP430F22x2, MSP430F22x4 Mixed Signal Microcontroller, Rev. B (SLAS504).
5. CC2500 Single-Chip Low-Cost Low-Power RF Transceiver, Rev. A (SWRS040).
6. Random Number Generation Using the MSP430 (SLAA338).
Получение технической информации, заказ образцов, поставка - e-mail: mcu.vesti@compel.ru
Денис пишет... Перезвоните мне пожалуйста 8(999) 529-09-18 Денис. 19/09/2019 22:21:37 |
Ваш комментарий к статье | ||||