Прошивка Arduino в Openwrt через последовательный порт

Apr 26, 2016 18:11

Удаленная прошивка микроконтроллера по cети, функция иногда очень нужная и полезная, т.к. это позволяет обновлять программное обеспечение без физического доступа на объект. Сегодня расскажу об опыте перепрошивки arduino, а по факту - микроконтроллера ATmega 328P с ардуиновским загрузчиком, используя последовательный порт маршрутизатора. Для этого ( Read more... )

arduino, openwrt, электроника, linux

Leave a comment

Comments 16

chyvack April 26 2016, 12:58:29 UTC
спасибо за информацию

Reply

vladikoms April 27 2016, 10:01:19 UTC

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

Reply

chyvack July 17 2016, 06:38:04 UTC
Можно через vpn создать сеть, но нужен сервер "белым" ip. Я делал через pppoe.
Если дома белый ip (через dyndns, если динамический), можно и на домашнем роутере сделать это.
Можно сделать по-другому: раз в минуту/10/час или день (скрипт в кронтабе и в wan-UP) проверять наличие измененного файла прошивки (это можно делать по timestamp) на сервере (например гитхаб или дропбокс). Но я бы делал мелкий текстовый файл с датой, (опционально именем новой прошивки) и контрольной суммой новой прошивки. Этот файл скачивается удалённым роутером, проверяется дата, если новее чем прошлая прошивка, то качаем .hex c сервера, проверяем контрольную сумму (я бы ещё шифрование добавил с помощью openssl), может ещё какие маркеры для отказустойчивости, прошиваем новую прошивку, сохраняем номер версии/дату этой прошивки для сравнения, отправлял себе на почту результаты апдейта (например log avrdude).

Reply

vladikoms July 17 2016, 09:36:08 UTC
Беда в том, что мой провайдер выдаёт динамические "серые" IP. Слышал что-то про ssh тунеллирование, но особо не разбирался. Честно говоря, пока нет особой необходимости, но все равно периодически возвращаюсь к этой мысли. Идея с проверкой прошивки на удаленном сервере интересна

Reply


chyvack July 17 2016, 06:19:42 UTC
Получить *.hex
На клавиатуре нажимаем и Shift, а в Arduino IDE нажать кнопку компилировать
После компиляции в папке со скетчем, появится папка applet и в ней Вы найдете нужный нам файлик *.cpp.hex

http://cyber-place.ru/showpost.php?p=2015&postcount=6

Reply

vladikoms July 17 2016, 08:57:47 UTC
Пробовал, не получается :) Причем не работает ни в linux, ни в windows версии. Похоже эту фичу убрали в новых версиях Arduino IDE

Reply


aurum727 September 24 2016, 15:11:50 UTC
Спасибо а вашу статью! Какой версией openwrt пользуетесь?

Reply

vladikoms September 24 2016, 23:31:52 UTC
Не самой свежей :) Barrier Breaker 14.07

Reply

aurum727 September 29 2016, 14:35:06 UTC
В репозитории BB 14.07 нет avrdude :(
Unknown package 'avrdude'.
Collected errors:
* opkg_install_cmd: Cannot install package avrdude.

Есть в репозиториях AA и CC!

поставил на ВВ Avrdude из репозитория АА! не работает ваша схема:

root@OpenWrt:~# avrdude -p m328p -P /dev/ttyATH0 -c arduino -b 57600 -C /etc/avr
dude.conf -U flash:w:/tmp/Blink.hex
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x4c

avrdude done. Thank you.

или

root@OpenWrt:~# avrdude -p m328p -P /dev/ttyATH0 -c stk500v1 -b 57600 -C /etc/av
rdude.conf -U flash:w:/tmp/Blink_boot.hex
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding

В чем может быть дело?

Reply

vladikoms September 29 2016, 23:24:50 UTC
Насколько помню, я отдельно собирал этот пакет (avrdude) используя Buildroot http://vladikoms.livejournal.com/7155.html
Почему не работает, так сразу не скажу - нужно проверить работоспособность ttyATH0 порта и GPIO7, если у вас именно такая железка. Транзистор VT1 открывается при включении GPIO7?

Reply


Leave a comment

Up