•  

    Новостная рассылка

    Подпишитесь и получайте самые свежие новости.
    Подписаться на новостную рассылку
    • Главная
    • >
    • Публикации
    • >
    • Постоянное наблюдение за температурой при помощи беспроводной сети датчиков. Часть 1

    Постоянное наблюдение за температурой при помощи беспроводной сети датчиков. Часть 1

    31 марта 2017 года

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


    Введение

    Одна из проблем жилья в Бостоне – старые квартиры. У автора оригинала статьи есть термостат, расположенный в центре квартиры, и часто происходит следующее: несмотря на то, что термостат выставлен на комфортные 22.7 С (73F), в спальне и кабинете все равно холодно. Исходя из этого, появилась задача отслеживания температуры по всей квартире, для управления отоплением, что бы температура была одинаковой. В течении нескольких постов, будет показано, как с отслеживать температуру с помощью MATLAB и подстраивать систему отопления (краны на батареях и термостат) на основе собранных данных. Ключевым элементом системы мониторинга является беспроводная сеть датчиков температуры, построенная на модулях XBee. У Mathworks есть пример по беспроводному управлению светодиодом и электроприводом с помощью XBee и MATLAB. Код из примера был переиспользован для того, чтобы быстро подключить MATLAB к сети XBee.

    Первый пост будет посвящен построению сети датчиков.


    Что потребуется?

    Узлы сети датчиков

    (1 узел поддерживает до 4 датчиков температуры, 1 узел на комнату)

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

    • XBee Series 2 Module – $20.95
    • XBee Breakout Board – $2.95
    • 2mm 10pin XBee Socket – $2.00
    • Разъем типа «гребенка», папа – $1.50/40
    • Разъем типа «гребенка», мама – $1.50/40
    • Макетная плата – $2.50/2
    • Датчик температуры – $1.50(за шт.)
    • 2 держателя батареек типа С – ~$51.5(за шт.)
    • Батарейки C (R14) – ~$13 за коробку из 12 штуков
    • Телефонный кабель – ~$15 за 100 футов

    Интерфейсы для PC

    В качестве интерфейса использован XBee с XBee Explorer USB.

    • XBee Series 2 – $20.95
    • XBee Explorer USB – $24.95
    • Кабель Mini-USB– ~$5
    • (опционально) Второй XBee Explorer USB для тестирования


    Инструменты и расходники

    • Паяльник и припой
    • Кусачки и стриппер
    • (опционально) Острогубцы
    • (опционально) Термоусадка
    • (опционально) Изолента


    Конфигурация модулей XBee

    Сначала, требуется обновить прошивку модулей XBee, используя ПО X-CTU от Digi. Инструкции по обновлению прошивки находятся в примере на File Exchange. Для этого проекта используется режим API Mode модулей XBee, который обеспечил более быстрый доступ к выводам аналогового ввода на каждом модуле, чем режим AT Mode. XBee, подключенный к ПК должен был быть сконфигурирован как координатор. Для этого была использована прошивка 21A7, “ZigBee Coordinator, API Mode”. Остальные модули конфигурируются как конечные устройства (прошивка 29A7, “ZigBee End Device, API Mode”), хотя они могут быть сконфигурированы, как и роутеры (прошивка 23A7, “ZigBee Router, API Mode”).


    Датчики температуры

    Использовались датчики температуры TMP36. Эти недорогие датчики используют 3х выводной интерфейс: GND, VCC, сигнал. Питающее напряжение находится в диапазоне от 2.7В до 5.5В, что позволяет объединить цепи питания XBee и датчиков. Выходной сигнал датчика линейно пропорционален температуре:

    form-2017-nablud-za-temp-1-1.png

    Так как автор поста из США, требуется использовать градусы Фаренгейта, а не Цельсия:

    form-2017-nablud-za-temp-1-2.png

    Максимальное напряжение на аналоговых входах XBee Series 2 – 1,2В, что дает диапазон измеряемых температур от -50 до 70 градусов Цельсия, что является достаточным для данного проекта.

    pic-2017-nablud-za-temp-1-1.png
    Рисунок 1. Датчик температуры TMP36



    Сборка интерфейсных плат для XBee

    Для каждого узла была использована одна интерфейсная плата. Так же требовалось припаять разъемы XBee и гребенку. Так как для тестирования использовался XBee Explorer USB, потребовалось также припаять гребенку и к нему

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

    Итоговое изделие выглядит так:

    pic-2017-nablud-za-temp-1-2.png
    Рисунок 2. Интерфейсная плата XBee


    Тестирование

    До сборки узлов сети, требовалось убедиться в том, что модули XBee и датчики температуры работают так, как задумывалось. Для проверки модуль-координатор был подключен к компьютеру через XBee Explorer USB, а 2 остальных XBee к макетной плате. Один XBee был подключен к XBee Explorer USB, а второй – в интерфейсную плату. Оба XBee были подключены к одному элементу питания. Источником питания служила старая зарядка от телефона, подключенная к USB-порту XBee Explorer USB. Однако, можно подключить XBee Explorer USB и напрямую к компьютеру. Регулятор напряжения на XBee Explorer USB обеспечил достаточное питание для 2х XBee и некоторых датчиков темперетауры.

    Внимание! Не подключайте к XBee напряжение питания больше 3.3В, так как максимальное напряжение питания у XBee – 3.6В.

    К выводам 19 и 20 обоих XBee были присоединены датчики температуры, таким образом стало возможным тестирование аналогового ввода.

    Внимание! Помните о том, что выводы земли и питания у интерфейсной платы и XBee Explorer USB различаются.

    pic-2017-nablud-za-temp-1-3.png
    Рисунок 3. Тестовая плата


    Привет, XBee!

    После сборки тестовой платы, требуется проверить взаимодействие MATLAB и сети XBee.

    Сначала, требуется установить связь с координатором: COM-порт должен будет быть изменен для соответствия COM-порту, используемого XBee explorer. Номер нужного порта можно узнать в X-CTU.

    >> xb = xbee('COM3');

    Проверка соединения с координатором при помощи запроса его настроек. Ответ должен совпадать с информацией из X-CTU.

    >> getLocalParameters(xb)

    PANID: 0000000000000000

    Operating PANID: F054514C95CA5757

    Address64: 0013A20040B181B2

    Address16: 0000

    BaudRate: 9600

    FirmwareVersion: 21A7

    HardwareVersion: 194B

    Поиск остальных XBee в сети:

    >> addrs = discoverNetwork(xb)

    addrs =

    '0013A20040B22000'

    '0013A20040B18EFB'

    Чтение значения напряжения на выводе 19 первого XBee:

    >> v19 = readVoltage(xb, 19, addrs{1})

    4/10

    v19 =

    0.7437

    И значений напряжения на выводе 20 обоих XBee:

    >> v20 = readVoltage(xb, 20)

    v20 =

    0.7425

    0.7437

    Перевод напряжений в градусы Фаренгейта:

    >> v = [v19; v20]

    v =

    0.7437

    0.7425

    0.7437

    >> tempC = v/0.01-50

    tempC =

    24.3695

    24.2522

    24.3695

    >> tempF = tempC*9/5 + 32

    tempF =

    75.8651

    75.6540

    75.8651


    Создание узлов сети

    Каждый узел сети состоит из 1-4 датчиков температуры. Каждый датчик соединен с телефонным кабелем различной длины, что позволяет свободно располагать датчики по комнате, в том числе и на батарее. Каждый узел питается от 2 батареек R14. Ниже приведена схема подключения узла с 4 датчиками температуры.

    pic-2017-nablud-za-temp-1-4.png
    Рисунок 4. Схема подключения датчиков температуры


    Сборка узлов сети

    Шаг 1: Присоединение гребенки типа «мама» к макетной плате

    a) Линейка гребенки ломается так, что бы получились длиной 10 выводов. Скорее всего будет потерян 1 вывод на каждый разлом, что необходимо учитывать при заказе. В крайнем случае, допускается использования одного 10-выводного разъема и одного 9-выводного, так как к выводу 11 XBee ничего не подключается. На рисунке к шагу 2г видно, где был использован клей для ремонта частично сломанного разъема.

    b) Используя интерфейсную плату как образец требуется припаять гребенку типа «мама» к макетной плате

    pic-2017-nablud-za-temp-1-5.png
    Рисунок 5. Макетная плата в сборе

    Шаг 2: Присоединение датчиков температуры

    a) Необходимо зачистить концы жил телефонного кабеля с двух концов.

    b) На одном из концов кабеля на каждую жилу требуется надеть термоусадку.

    c) Припаять датчик к телефонному кабелю. Рекомендуется использовать красный провод для питания и черный для земли (см. Рисунок 6). Для некоторых узлов к одному кабелю присоединены 2 датчика температуры. Два датчика используют общее питание и землю, поэтому для 2х датчиков требуется только 4 жилы. Такая схема включения позволяет сравнивать показания двух датчиков для проверки точности измерений каждого датчика.

    pic-2017-nablud-za-temp-1-6.png
    Рисунок 6. Подключенные датчики температуры

    d) Припаять другой конец кабеля к макетной плате. Все датчики температуры используют одно и тоже питание и землю, но сигнальные выводы должны быть припаяны на выводы 17-20 XBee. На рисунке, видно 4 провода на верхней правой части макетки. На XBee им соответствуют 4 верхних правых вывода (выводы 17-20)

    pic-2017-nablud-za-temp-1-7.png
    Рисунок 7. Цоколевка аналоговых вводов XBee

    pic-2017-nablud-za-temp-1-8.png
    Рисунок 8. Макетная плата с проводами


    e) Припаять провода от блока питания с батарейками к выводам питания и земли.

    pic-2017-nablud-za-temp-1-9.png
    Рисунок 9. Присоединенный блок питания


    f) Соединить интерфейсную плату и XBee

    pic-2017-nablud-za-temp-1-10.png
    Рисунок 10. Узел сети без XBee


    pic-2017-nablud-za-temp-1-11.png
    Рисунок 11. Узел сети с XBee


    pic-2017-nablud-za-temp-1-12.png
    Рисунок 12. Узел сети в сборе


    Тестирование узлов

    После сборки узлов требуется проверить их работы. В каждый узел вставляются свежие батарейки, а координирующий XBee подключается к компьютеру через XBee Explorer USB.

    Открывается соединение с координатором:

    xb = xbee('COM3');

    Выполняется проверка того, что XBee не были перепутаны:

    isCoordinator(xb)

    ans =

    1

    1 означает, то что подключенное устройство – координатор. Теперь требуется обнаружить другие устройства в сети:

    addrs = discoverNetwork(xb)

    addrs =

    '0013A20040B18D3E'

    '0013A20040B1916C'

    '0013A20040B18EFB'

    '0013A20040B22000'

    Используются 4 узла, должно быть возвращено 4 адреса. Теперь может быть получено значение напряжения на 20м выводе всех 4х XBee:

    [v,src] = xb.readVoltage(20)

    v =

    0.7449

    0.7472

    0.7425

    0.7460

    src =

    '0013A20040B18EFB'

    '0013A20040B22000'

    '0013A20040B18D3E'

    '0013A20040B1916C'

    И выполнено преобразование из вольтов в значения температуры в градусах Фаренгейта:

    tempC = v/0.01-50

    tempF = tempC*9/5 + 32

    tempC =

    24.4868

    24.7214

    24.2522

    24.6041

    tempF =

    76.0762

    76.4985

    75.6540

    76.2874


    Следующие шаги

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


    Публикации по данной теме:

    Постоянное наблюдение за температурой при помощи беспроводной сети датчиков. Часть 2

    Постоянное наблюдение за температурой при помощи беспроводной сети датчиков. Часть 3

    Постоянное наблюдение за температурой при помощи беспроводной сети датчиков. Часть 4