вторник, 29 ноября 2016 г.

Умный дом просто как никогда (часть 5 подключаем devDuino Sensor Node)

Теперь когда вся система функционирует, будем подключать наши первые узлы. В нашем каталоге есть такие чудные devDuino Sensor Node у которых на борту имеется универсальный датчик температуры на базе чипа MCP9700 и температуры и влажности на базе чипа HTU21D.

Краткие характеристики чипа MCP9700:
 -40°C +125°C (погрешность не более ±2°C, относительная влажность: 0 - 100%, точность ± 2%))

Краткие характеристики чипа HTU21D:
-40°C +125°C (погрешность не более ±2°C)

Сами devDuino Sensor Node построены на базе микроконтроллера ATmega 328p,
Тактовая частота - 16МГц (может быть уменьшена для снижения энергопотребления до 8МГц или 1МГц), кроме версии V3.0 (у него 8МГц ), а значить это то что нам нужно.

Мы рассмотрим по мимо возможности подключения, но и как правильно настроить энергосбережение нашего устройства. (при таком подходе, приблизительное время работы от батарей будет составлять около полутора лет).
Первым в обзоре будет devDuino Sensor Node V4.0 (ATmega 328) 



В этой части (5), нам понадобится:

Железо:

Программатор USBtinyISP-Arduino для восстановления /заливки загрузчика на МК
Программатор Foca V2.2 (FT232RL) для интерфейса UART с дополнительным выходом тактового генератора.

Программное обеспечение:

Arduino IDE  для программирования микроконтроллеров
AVRDUDESS 2.x для заливки загрузчиков в микроконтроллер

При первом подключении нам надо проверить какой загрузчик у нас был "залит" по умолчанию.

Внимание! при программировании не надо вставлять батарейку, иначе она может "бахнуть".
А так же не забываем отключить модуль nFR24.

Для этого, подключим программатор USBtinyISP-Arduino к ISP порту.





Запустим AVRDUDESS, из списка выберем наш программатор



и нажмем кнопку Detect (MCU -p). Затем кнопку Read (Fuses & lock bits). Увидим вот такую картинку:


Отлично, процессор определился, фьюзы рабочии.
Судя по фьюзам у нас установлен загрузчик Arduino UNO Optiboot.
По умолчанию оставим частоту процессора на 16 МГц (для отладки).

Скачаем тестовый скетч для этого микроконтроллера с github.
Дополнительно нам понадобятся еще 2 библиотеки (положите их в директорию C:\Program Files\Arduino\libraries)
HTU21D.h  - скачать тут.
RunningAverage.h - скачать тут.

Подключим программатор Foca V2.2 (FT232RL) к сериальному интерфейсу. Внимательно посмотрите на ревизию модели, если у вас стоит rev.1, тогда программатор правильно соединять вот таким образом, в этом нет ничего страшного (просто при производстве не правильно нанесли шелкографию). Подробно об этом можно прочесть на Вики-странице тут.


Запустим Arduino IDE, выберем наш скетч devDuino_v4_0_FW_2_0.ino
Из списка плат выберем Arduino UNO и наш com-порт, нажмем кнопку Загрузить.

  
 При удачном раскладе, в мониторе порта появится вот такая куча отладочной информации.


Теперь зайдем на наш ранее установленный контролер по адресу https://192.168.0.30:8443



Откроем вкладку Resources > Nodes и в таблице увидим два новых Нода.
Под EUI 0 всегда обозначается Гетевей (в нашем случае это Raspberry PI nFR24 Add-on).
Под EUI 3 это как раз наш devDuino Sensor Node.

Проверим остальные подробности наших датчиков, жмем View details



Проверяем значения разряда нашей батареи


т.к. наш микроконтроллер получает питание от программатора, то по понятным причинам это всегда будет 100 %

Далее нажимаем вкладку Resources > Sensors и видим наши сенсоры и их типы.


 жмем View details (к примеру Humidity)


и видим, что наши данные постепенно заполняют нашу базу данных.

Ну а что бы было красиво на все это смотреть, переходим на вкладку Dashboard
и оформляем все в стиле который подходит для вас.



Теперь пришло время поговорить об энергосбережении. Это важный момент, когда наши устройства будут работать от батарей.

Вторым в обзоре будет devDuino Sensor Node V3.0 (ATmega 328)

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


Необходимо заметить, что  по умолчанию частота этого МК соответствует 8 МГц и не может быть повышена! Не стоит грузить загрузчик от Adruino UNO, это приведет к повреждению МК. 
Как правило с завода загрузчик делается на базе Arduino Pro Mini 8 MHz 3.3 v

Давайте проверим на практике. Снова подключим программатор USBtinyISP-Arduino к ISP порту. А так же не забываем отключить модуль nFR24.


Запустим AVRDUDESS, нажмем кнопку Detect (MCU -p). Затем кнопку Read (Fuses & lock bits).

Как видим, действительно фьюзы соответствуют Arduino Pro Mini 8 MHz 3.3 v

low_fuses=0x92
high_fuses=0xDA
extended_fuses=0x07

Но нам надо записать наш загрузчик devDuino 328 1-8 MHz

Для этого,
запустим Arduino IDE, в меню Инструменты > Плата, выбираем devDuino 328 1-8 MHz with OTA


Инструменты > Процессор, выбираем Atmega 328 8 MHz


и в конце Инструменты > Записать загрузчик


Для контроля можно проверить AVRDUDESS
Фьюзы должны изменится на такие:

low_fuses=0xE2
high_fuses=0xDA
extended_fuses=0x06

Осторожно! Данная операция необратима, т.е. если вы записали наш загрузчик, то не сможите обратно записать загрузчик от Arduino Pro Mini 8 MHz 3.3 v.

Теперь подключим программатор Foca V2.2 (FT232RL) к сериальному интерфейсу.





Скачаем тестовый скетч devDuino_v3_0_FW_2_0.ino с github от сюда.

Выберем наш скетч devDuino_v3_0_FW_2_0.ino
Из списка плат выберем ранее установленные загрузчики. В меню Инструменты > Плата, выбираем devDuino 328 1-8 MHz with OTA


в меню Инструменты > Процессор, выбираем Atmega 328 8 MHz


Жмем кнопку Загрузка.

Когда вы сделаете всю отладку, то при финальной загрузке в меню Инструменты > Процессор, выбираем Atmega 328 1 MHz.

В тестовых скетчах по умолчанию переменная
#define MY_DEBUG
не закомментирована, дабы избежать мусора в эфир и сократить размер скетча, поставьте знак (#)

Подключим солнечную панель

Теперь ваш узел будет работать вечно!, ну почти. При выборе других датчиков не забывайте, что они так же должны иметь правильные характеристики по питанию и энергосбережению.
Ну и в конце, после загрузки скетча, проверим наш узел на контроллере:


В следующей части, мы рассмотрим остальные микроконтроллеры devDuino.
Научимся обновляться по воздуху и шифровать трафик.





Комментариев нет:

Отправить комментарий