четверг, 15 декабря 2016 г.

Умный дом просто как никогда (часть 6 обновляемся во воздуху на devDuino R1N)

В этом обзоре, мы научимся делать обновления по воздуху (OTA), подписывать и шифровать данные будем в следующей части. А пока, в качестве оконечного устройства выберем devDuino Relay 1 Node V1.0 (ATmega 328).

Краткие характеристики:

- Построенный на Arduino-совместимой архитектуре (UNO DualOptiboot)
- Приемопередатчик nRF24L01 + (мини)
- На борту 64kb SPI флэш-памяти / E2prom (для обновления прошивки OTA)
- На борту ATSHA204A (для шифрования данных)
- Тактовая частота - 16МГц
- 1 изолированное реле - 10A
- Встроенный ACS712 Датчик тока (20А)
- Встроенная тактовая кнопка
- Встроенные 3 светодиода (пользовательский, питания, реле)
- FTDI для загрузки через программатор
- Пины для программирования ISCP Atmel
- Пины для датчика температуры DS18B20
- 2 GROVE - совместимs[ разъема: I2C, 2- Цифровых
- Источник питания (110 - 220 В)
Как видно, на борту есть все необходимое для реализации нашего проекта.

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

Ранее настроенный Контроллер с RPI nFR24 Add-on и Raspberry PI 

Железо:

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

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

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

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

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



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





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


Как правило, с производства загрузчик делаю на базе Arduino UNO Optiboot, но нам надо загрузить наш, для того что бы поиметь все фишки. Тут нам не нужно энергосбережение по этому отлаживать и настраивать будем сразу на нашем загрузчике на 16 МГц и больше менять его не будем.
1. Скачаем последнюю версию для этого микроконтроллера с github.(в последней версии, мы сделали ряд изменений, по этому стало намного проще производить процедуру загрузки загрузчика).

Запустим Arduino IDE, в меню Инструменты > Плата, выбираем devDuino 328 16 MHz with OTA




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





Обратите внимание! При загрузке может возникнуть вот такое сообщение, но это не страшно


Посмотрите на микроконтроллер, если после загрузки, реле щелкнуло и загорелся красный светодиод, то все в порядке. Для полного контроля запустим AVRDUDESS и проверим фьюзы.

Фьюзы должны изменится на такие:

low_fuses=0xDE
high_fuses=0xDC
extended_fuses=0x05

2. Теперь скачаем тестовые скетчи с github 

devDuino_R1N_booting_OTA.ino - загрузочный
devDuino_R1N_2.0.0_FW_release_1.0.4_button.ino - рабочий

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



Запустим Arduino IDE, в меню Инструменты > Плата, выбираем devDuino 328 16 MHz with OTA

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



Посмотрим в терминальном окне строку
TSF:MSG:SEND,1-1-0-0,s=255,c=4,t=0,pt=6,l=10,sg=0,ft=0,st=OK:FFFFFFFFFFFFFFFF0300
Круто, загрузчик в ожидании принять свежую прошивку.

Для отладки, не закрываем окно терминала, нам надо первый раз понаблюдать за процессом загрузки.


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

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





Теперь нам надо сделать прошивку, которая будет обновляться по воздуху. 
В нашей Arduino IDE, откроем скетч devDuino_R1N_2.0.0_FW_release_1.0.4_button.ino 



В меню выбираем Скетч > Проверить/Компилировать. 

Теперь необходимо найти файл прошивки, как правило он находится в темповой директории, но можно сделать это проще. Посмотрите в окно отладки и найдите примерно вот такую строку
C:\Users\08A4~1\AppData\Local\Temp\buildf55a229da48bf1ade6f49aa7bf18b8be.tmp/
Скопируйте ее в буфер, запустите Пуск > Выполнить,  вставте строку, нажмите ОК



В Проводнике мы увидим нашу прошивку



Название прошивки всегда будет точно такое как имя скетча. В нашем случае это
Mysensors_devDuino_R1N_2.0.0_FW_release_1.0.4_button.ino.hex

Вернемся на наш установленный контролер по адресу https://192.168.0.30:8443 и начнем привинчивать прошивку.

Зайдем на вкладку Firmwares и в правом углу выберем кнопку versions.


Затем синюю кнопку Add firmware version


Запишем в поле Version к примеру 1.0.4 (номер версии нашей прошивки из скетча)

Тоже самое проделаем с кнопкой types и запишем туда Тип нашего микроконтроллера.

Осталось добавить нашу готовую прошивку

Жмем кнопку Firmwares > Add firmware
Выберем Тип > Версию > ну и конечно файл прошивки.  Сохраняем > Save


Результатом будет вот такая строка в окне


Переходим на вкладку Recources > Nodes и выбираем наш Нод


Жмем кнопку Actions > Edit и в поле Firmware выбираем нашу версию. Сохраняем.



Теперь снова на нашем Ноде жмем кнопку Actions > Edit > Upload Firmware


Одновременно смотрим в окно терминала и наблюдаем за быстро бегущими циферками.
А так же наблюдаем на Raspberry PI nFR24 Add-on за зеленым (RX) и оранжевым (TX) светодиодами. После удачной загрузки, devDuino Relay 1 Node щелкнет релюхой и погасит светик настроеный на (TX). Теперь он будет моргать только когда, когда принимать данные от контроллера.

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

Ну и по доброй традиции после загрузки скетча, проверим наш узел на контроллере:



Версии вроде похожи на наши :-)

Не забудьте пощелкать релюхой и посмотреть графики загрузки.


На момент написания статьи Контроллер Mycontroller.org имеет актуальную версию 0.0.3.Alpha2
Поддержка же обновления OTA для типа нашего микроконтроллера с новым загрузчиком пока не поддерживается. Пожалуйста дождитесь выхода версии 0.0.3.Final



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

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