Загрузка любого HEX-файла в Arduino

Вступление
Все платы Arduino поставляются с предварительно установленным загрузчиком (bootloader). Благодаря данному загрузчику любой обладатель Arduino без труда может загрузить в микроконтроллер любые скетчи (sketch) напрямую из среды Arduino IDE. Но что же делать, если программа разработана в другой среде программирования и уже скомпилирована в виде бинарного (Hex) файла, ведь Arduino IDE с таким контентом не работает? Как прошить Arduino любым HEX-файлом?
Решение есть!
При использовании Arduino IDE скетч ее же силами так же преобразуется в двоичный код (компилируется), который затем записывается в память микроконтроллера. Осталось только найти способ воспользоваться этим механизмом записи бинарного файла. С этим нам поможет альтернативная программа-загрузчик. Их существует много, но принцип работы у них всех одинаков. Я сосредоточусь на такой, как XLoader.
Скачать:
Xloader (1347 Загрузок)
Что нам потребуется?
Во первых наше внимание будет сосредоточено на платах Arduino с определенным микроконтроллером – ATmega328p. Можно выделить 2 основных варианта (Arduino Uno и Arduino Nano) и один потенциальный (Arduino Pro Mini). О последнем я расскажу отдельно.
С Arduino Uno и Arduino Nano все просто. Они имеют встроенный USB-UART преобразователь и свой USB-разъем. Они подключаются напрямую к компьютеру по соответствующему USB-кабелю.
После подключения платы Arduino к компьютеру и запуска программы XLoader все сводится к 4 кликам мышки:

- Выбираем нужную прошивку (Hex-фаил)
- Выбираем тип Arduino платы
- Указание виртуального COM-порта, к которому подключена плата Arduino
- Нажатие кнопки Upload.
После данных действий начнется процесс загрузки выбранной прошивки (Hex-файла) в память микроконтроллера. Светодиоды (RXD и TXD) на плате Arduino начнут неистово мигать. Когда они прекратят это делать – процесс будет завершен.
Собственно и все! Больше никаких действий не требуется. Прошивка загружена в микроконтроллер.
Что не так с Arduino Pro Mini?
Arduino Pro Mini является одой из самых миниатюрных плат семейства Arduino. Есть варианты на микроконтроллере ATmega328p, поэтому нам она тоже подходит. Однако есть нюанс: данная плата не имеет встроенного USB-UART преобразователя. Поэтому она выигрывает в плане компактности, но напрямую ее к компьютеру не подключишь. Для этого необходимо воспользоваться внешним USB-UART преобразователем. Конечно же, если таковой имеется в наличии. Дополнительно нужно убедиться, что кварцевый резонатор установлен номиналом 16 МГц, ведь данный тип платы Arduino бывает еще с кварцевым резонатором на 8 МГц.
В остальном, все действия производятся согласно предыдущему пункту.
