Например если ардуина далеко, а прошивать неудобно ходить, можно прицепить Ethernet модуль на чипе WIZnet W5100
1. Берем какую нибудь простую ардуино и прошиваем ее скитчем arduino isp из примеров
2. подключаем так
Плата, которая прошивает |
Плата, которую прошивают |
SS -> |
reset |
Например у меня Nano |
Прошиваем Mega 2560 |
3. в arduino ide жмем файл – настройки, указываем там в дополнительных ссылках для менеджера плат это: https://per1234.github.io/Ariadne-Bootloader/package_codebendercc_ariadne-bootloader_index.json
4. в arduino ide жмем инструменты – платы – менеджер плат – жмем внизу Ariadne Bootloader — Установка
5. жмем инструменты – плата – и в разделе Ariadne Bootloader выбираем нужную плату (которую собираемся прошивать. У меня это mega 2560)
6. выбираем инструменты – программатор – arduino as isp
7. проверям все еще раз – должно быть так:
8. инструменты – записать загрузчик (пару раз если ошибки появляются)
9. отключаем программатор, втыкаем сетевую плату. по умолчанию ip 192.168.1.128. чтобы сменить надо прошить один раз скетч neteeprom – writeNetworkSettings, предварительно прописав там нужные IP
10. после этого надо попробовать прошить через сеть – для этого тоже надо сделать несколько странных действий. включаем в Arduino IDE через файл – настройки подробный вывод:
11. открываем нужный скетч например Blink из примеров:
12. жмем компилировать – и ищем куда ардуино сваливает временные файлы при компиляции. у меня это тут
13. открываем командную строку в этой папке и выполняем:
«C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avr-objcopy.exe» -I ihex Blink.ino.hex -O binary Blink.ino.bin
14. затем жмем ресет и через пару секунд выполняем там же tftp -i 192.168.1.128 PUT Blink.ino.bin
15. жать ресет каждый раз неудобно и для этого нам понадобиться скетч файл – примеры – ethernetreset – resetserver. это специальный маленький вебсервера на порту 8080, который при получении запроса перезагрузит ардуино http://192.168.1.128:8080/password/reset:
Для автоматизации я накатал батник – просто закинь его в папку своего скетча и перетаскивай на него файл .ino – он загрузит его к тебе. сначала только подредактируй – укажи свой сервер и пароль:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
@echo off set ip=192.168.1.128 set passwd=parol mkdir "%~dp0build" del build /F /S /Q set home=%HOMEDRIVE%%HOMEPATH% set targetfn=%~n1%~x1 "C:\Program Files (x86)\Arduino\arduino-builder.exe" -compile -logger=machine -hardware "C:\Program Files (x86)\Arduino\hardware" -hardware "%home%\AppData\Local\Arduino15\packages" -tools "C:\Program Files (x86)\Arduino\tools-builder" -tools "C:\Program Files (x86)\Arduino\hardware\tools\avr" -tools "%home%\AppData\Local\Arduino15\packages" -built-in-libraries "C:\Program Files (x86)\Arduino\libraries" -libraries "%home%\Documents\Arduino\libraries" -fqbn=Ariadne-Bootloader:avr:ariadne2560:configuration=blink_shield -ide-version=10610 -build-path "%~dp0build" -warnings=none -prefs=build.warn_data_percentage=75 -verbose "%targetfn%" "C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avr-objcopy.exe" -I ihex build/%targetfn%.hex -O binary build/%targetfn%.bin powershell -Command "Invoke-WebRequest http://%ip%:8080/%passwd%/reset rem 6 sec delay PING 127.0.0.1 -n 6 >NUL 2>&1 || PING ::1 -n 6 >NUL 2>&1 tftp -i %ip% PUT build/%targetfn%.bin pause |
По мотивам https://github.com/per1234/Ariadne-Bootloader
Terrobit
Не получается загрузить загрузчик постоянно выходит «ошибка загрузки», как можно решить эту проблему? Используется nano и mega2560. остальные пункты все отлично проходят.
admin
а в логе есть что-то еще кроме ошибки загрузки?
Reketir
Очень на вас надеюсь!!!
admin
первый пункт сделали?
Reketir
Помогите пожалуйста, все сделал как написано, батник не грузит скетч…
Reketir
При попытке отправки .bin файла в ардуино пишет «Сбой запроса на подключение» я так понимаю время ожидания превышено…в чем может быть дело? помогите пожалуйста, написанный вами .bat у меня не заработал…
Константин
К п. 9 нужны комментарии. Как прошивать скетч, если программатор уже отключен, а загрузчик изменён?
И у меня п. 14 не отрабатывает… возвращает «Сбой запроса на подключение», на пинги тоже не отвечает. До этого пункта всё удалось сделать без ошибок. Что можно сделать?