При разработке данной системы преследовалась цель организации простейшей беспроводной сети ZigBee, состоящей из удаленного устройства с двумя сенсорами и приемника. Удаленное устройство имеет встроенный ZigBee трансивер, посредством которого передает информацию на приемник о состоянии двух герокновых датчиков, установленных на дверях. Приемник через интерфейс USB подключен к персональному компьютеру, на котором специальное приложение обрабатывает данные, информирует пользователя и ведет лог-файл с записью всех событий.
Спецификация:
- Система физически состоит из двух частей: датчики и программное приложение на компьютере.
- Программа визуально отображает состояния дверей в течение 10 секунд после срабатывания датчиков.
- Звуковое информирование пользователя о сигнале тревоги.
- Условия, при которых вырабатывается сигнал тревоги:
|
- Запись событий в лог-файл в формате ASCII, условия которые записываются в файл:
|
- Коммуникация между датчиками и и персональным компьютером по беспроводному протоколу ZigBee.
- Удаленные датчики питаются от батареи.
- Работоспособность удаленных сенсоров сохраняется в течение года без замены элементов питания.
- Каждый датчик отслеживает состояние двух дверей.
- Программное приложение отображает состояние всех датчиков и в текстовой форме отображает условия тревоги, ведет лог-файл с записью всех событий.
В качестве сенсоров положения дверей используются герконовые датчики, на дверях закрепляются постоянные магниты.
Блок-схема системы
Коммуникационный протокол: 8 бит данных:
- биты 7 – 4: адрес сенсора (поддерживается до 16 сенсоров);
- биты 3 – 2: не используются в данном приложении;
- бит 1: датчик внутренней двери (1 – дверь открыта, 0 – дверь закрыта);
- бит 0: датчик наружной двери (1 – дверь открыта, 0 – дверь закрыта).
Удаленный сенсор.
Удаленный сенсор состоит из следующих аппаратных частей:
- микроконтроллер AVR ATtiny45 (Atmel);
- модуль ZigBee трансивера Maxstream XBee;
- герконовые датчики и магниты;
- литиевая батарея 3.0 В;
- интегральный DC преобразователь MAX1724EZK30.
Принципиальная схема удаленного датчика изображена на рисунке ниже.
Микроконтроллер отслеживает состояние двух герконовых датчиков, в зависимости от их состояния, формирует сообщение и посылает его посредством встроенного интерфейса UART в модуль трансивера XBee. Трансивер отправляет информацию на совместимую беспроводную точку. Для коммуникации микроконтроллера с модулем используются линии Rx и Tx, линии CTS, RTS не используются вследствие простого протокола (посылка одного байта).
Также микроконтроллер управляет питанием модуля по линии SLEEP_RQ. При высоком уровне на линии трансивер переходит в режим пониженного энергопотребления.
Питание удаленного датчика осуществляется от литиевой батареи (тип CR123A) напряжением 3.0 В, трансивер, для снижения энергопотребления, также предпочтительнее питать напряжением 3.0 В. С этой целью в схему был введен DC преобразователь на микросхеме MAX1724EZK30, чтобы обеспечить питание модуля и микроконтроллера в случае снижения напряжения батареи ниже уровня 3.0 В.
Возможно использование микросхемы LTC3531ES6-3, а также литиевых батарей с напряжением 3.2 В, 3.6 В.
Микроконтроллер ATtiny45 полностью сохраняет работоспособность при напряжении питания 3.0 В, ATtiny45V-10PI при напряжении питания 3.0 В поддерживает работу на частоте до 10 МГц. С целью уменьшения габаритных размеров платы для микроконтроллера был выбран внутренний источник тактовой частоты 8 МГц.
Микроконтроллер имеет несколько режимов пониженного энергопотребления. В нашем проекте используется режим Idle. В этом режиме тактовая частота работы снижается до 31 кГц и ток потребления составляет около 0.6 мА. Интерфейс UART реализован с помощью модуля USI микроконтроллера (полудуплексный режим), скорость работы 9600 бод.
Отличительные особенности работы удаленного сенсора проявляются при определении состояния датчиков. Резисторы R1 – R3 образуют делитель напряжения, к которым подключены герконовые датчики и питание на делитель подается микроконтроллером только при необходимости (в моменты определения состояния датчиков). Такая схема включения и работа микроконтроллера исключает излишнее потребление тока в случаях, когда оба герконовых датчики замкнуты.
При программировании микроконтроллера удаленного сенсора необходимо учитывать, что используется внутренний RC осциллятор 8 МГц (время старта 0 ms), отключен предделитель тактовой частоты, отключен сторожевой таймер и функция brownout detection, отключен вывод Reset на PB5 (используется как линия ввода/вывода). Отключение вывода Reset необходимо делать лишь после полной проверки кода, так как после отключения Reset микроконтроллер будет новозможно запрограммировать с помощью последовательного программатора.
Для написания кода использовалась среда AVR Studio совместно с компилятором WinAVR.
Список использованных компонентов для удаленного датчика
Обозначение |
Наименование |
Описание |
U1 |
Maxim MAX1724EZK30 |
Интегральный DC преобразователь |
U2 |
Atmel ATtiny45V-10PI |
Микроконтроллер |
U3 |
Maxstream XBee |
Беспроводной трансивер ZigBee |
R1, R2 |
10 кОм, 5% |
Резистор |
R3 |
22 кОм, 5% |
Резистор |
C1, C2 |
10 мкФ, 6 В |
Конденсатор (танталовый) |
C3 |
0.1 мкФ, 6 В |
Кондесатор (керамический) |
B1 |
Panasonic CR123A |
Литиевая батарея 3.0 В |
L1 |
Coilcraft DO1608C-103MLB |
Индуктивность |
SW1, SW2 |
Герконовый датчик |
Беспроводной адаптер для подключения к компьютеру
Адаптер состоит из следующих аппаратных частей:
- ZigBee трансивер Maxstream XBee;
- модуль преобразователя USB-RS232 DLP Designs UM232R, выполнен на базе преобразователя FT232R;
- LDO регулятор напряжения Vishay SI9183DT-30
Трансивер получает сообщения от удаленных сенсоров и посылает данные посредством UART интерфейса преобразователю USB-RS232, который далее передает данные по интерфейсу USB на персональный компьютер с установленным ПО. Здесь, в отличие от удаленного датчика, в интерфейсе UART, кроме сигналов Rx и Tx, используются RTS и CTS.
Принципиальная схема адаптера для ПК представлена на рисунке ниже
Адаптер питается от USB шины, с этой целью установлен LDO регулятор напряжения, который вырабатывает напряжение питания для трансивера XBee. Причиной введения регулятора является то, что UM232R не может обеспечить достаточный выходной ток (95 мА) для питания трансивера.
Преобразователь USB-RS232 UM232R, кроме своей основной функции, управляет электропитанием трансивера XBee (линия SLEEP_RQ).
Список использованных компонентов для беспроводного адаптера к ПК
Обозначение |
Наименование |
Описание |
U1 |
Maxstream XBee |
Беспроводной трансивер ZigBee |
U2 |
DLP Designs UM232R |
Модуль преобразователя USB-UART, 24-выводный DIP |
U3 |
Vishay SI9183DT-30 |
LDO регулятор напряжения 3.0 В |
C1 |
1 мкФ, 16 В |
|
C2 |
0.1 мкФ, 16 В |
|
C3 |
10 мкФ, 16 В |
Программное обеспечение для компьютера написано в среде Visual C# с использованием компоненты последовательного порта NET 2.0. При запуске приложения отображается окно:
- «Door Status:» – состояние дверей и условие тревоги, если таковое выполняется;
- «Heartbeat:» - сообщает о работоспособности линии связи, т.е. периодически поступают сообщения от удаленного датчика – в данном поле надпись “ОК”, в противном случае отображается сообщение - “No heartbeat”.
- «Comm Err:» - сообщает об ошибке, например о неопознанном принятом сообщении.
Кнопка “Silence” – позволяет на 60 минут отключить визуальное и звуковое оповещение пользователя. В поле “Silence” в этом случае отображается соответствующая запись.
Дополнительно ведется лог-файл с записью всей активности.
Формат лог-фала: месяц/день/год <пробел> чч:мм:сс <пробел> AM/PM <пробел> сообщение
Сообщение |
Пояснение |
CC |
Обе двери закрыты |
CO |
Дверь 1 (SW1) закрыта, дверь 2 (SW2) открыта |
OC |
Дверь 1 (SW1) открыта, дверь 2 (SW2) закрыта |
OO |
Обе двери открыты |
+Door Alarm (open, alarm) |
Сигнал тревоги активен (дверь открыта, тревога) |
-Door Alarm (open) |
Сигнал тревоги неактивен (дверь открыта) |
-Door Alarm (closed) |
Сигнал тревоги неактивен (дверь закрыта) |
+Heartbeat Alarm |
Сигнал тревоги нарушения линии связи активен |
-Heartbeat Alarm |
Сигнал тревоги нарушения линии связи неактивен |
Comm Err (bad msg:x) |
Получено неопределенное сообщение, где“x” – сообщение (один байт) |
Исходный код программы микроконтроллера и .hex-файл, исходный код приложения для ПК и .exe-файл приложения - скачать