В этом обзоре, мы научимся делать обновления по воздуху (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
Краткие характеристики:
- Построенный на 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). Увидим вот такую картинку:
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
Тоже самое проделаем с кнопкой 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
Комментариев нет:
Отправить комментарий