Прошивка загрузчика Arduino

Одна из главных фишек платы Arduino заключается в том, что программу на неё можно загрузить без программатора, с помощью одного только USB-UART преобразователя. На ряду со средой разработки Arduino IDE, именно эта особенность позволила проекту Arduino вырасти и превратиться в глобальный тренд, который до сих пор будоражит умы DIY-энтузиастов.

Сердцем обычной Arduino Uno является микроконтроллер Atmega328. Чтобы этот микроконтроллер смог принимать программы через интерфейс UART и записывать их во встроенную постоянную память, в нём должна быть небольшая микропрограмма, которая всем этим заведует. Называется эта микропрограмма загрузчиком (bootloader).

Если мы возьмём готовую Arduino Uno, то, конечно, в ней уже есть загрузчик и эта инструкция не нужна. Хотя, бывают случаи, когда данные в памяти Atmega328 по разным причинам могут потерять целостность и загрузчик приходится прошивать заново. Но такие случаи достаточно редки.

А вот если мы решим сделать свою Arduino Uno, или сделать другую плату, которую хотелось бы также удобно программировать в среде Arduino IDE, то придётся разобраться с этим вопросом.

В этой инструкции займёмся прошивкой стандартного загрузчика Arduino на голый микроконтроллер Atmega328P-PU. В качестве программатора используем самую обычную Arduino UNO (оказывается, так можно).

Подготовка к работе

Для выполнения инструкции понадобится Arduino Uno, или любой её аналог. Мы используем плату UNO2 от AlashEd. Понадобится тот самый «голый» микроконтроллер Atmega328. Стенд для прошивки будем собирать на беспаечной макетной плате, обычными Dupont проводками. Для обвязки голого микроконтроллера нужны будут: два конденсатора на 22 пФ, резистор на 10 кОм и кварцевый резонатор на 16 МГц.

Примечание

Всё необходимое оборудование можно приобрести в магазине AlashEd Electronics.

Список комплектующих:

Подключение

Соединяем рабочую плату Arduino Uno R3 с чистым микроконтроллером по приведенной схеме. Здесь все очень просто. Внимательно смотрим на картинку, вставляем проводки, семь раз проверяем.

Важно

Внимательно проверьте все соединения перед подачей питания. Ошибки в подключении кварца или питания могут привести к неработоспособности схемы.

Принципиальная схема

Ардуино своими руками — принципиальная схема

Принципиальная схема подключения чистого микроконтроллера Atmega328 к Arduino Uno

Внешний вид макета

Ардуино своими руками — внешний вид макета

Внешний вид макета на беспаечной плате

Прошивка Arduino ISP

Arduino ISP — это программа для Arduino, которая превращает плату в программатор.

Подключаем плату Arduino UNO к компьютеру через USB.

Открываем среду Arduino IDE. Затем, открываем программу:

Файл > Примеры > Arduino ISP > Arduino ISP

Загружаем её на нашу плату Arduino UNO обычным способом.

Совет

Перед загрузкой скетча Arduino ISP убедитесь, что выбраны правильная плата и COM-порт в меню Инструменты.

Прошивка загрузчика (bootloader)

Теперь используем наш самодельный программатор, чтобы прошить загрузчик.

Выбираем целевую плату:

Инструменты > Плата > Arduino AVR Boards > Arduino Uno

Выбираем тип программатора:

Инструменты > Программатор > Arduino as ISP
Arduino as ISP

Выбор программатора Arduino as ISP в Arduino IDE

Наконец, записываем загрузчик:

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

Сразу после этого, Arduino IDE начнет копирование загрузчика на чистый микроконтроллер, используя плату Arduino UNO как программатор. При это будут активно мигать светодиоды RX и TX. Как только светодиоды перестанут мигать — копирование окончено!

Примечание

Процесс прошивки занимает несколько секунд. Активное мигание светодиодов RX и TX на плате-программаторе — нормальное явление и означает, что идёт обмен данными.

Теперь микроконтроллер готов к работе с Arduino IDE. Его можно смело подключать к компьютеру через USB-UART преобразователь и загружать скетчи.

Совет

После прошивки загрузчика микроконтроллер ведёт себя как полноценная Arduino Uno — можно использовать стандартные методы загрузки скетчей через USB-UART преобразователь.