Одна из главных фишек платы 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 от RobotClass. Понадобится тот самый «голый» микроконтроллер Atmega328. Стенд для прошивки будем собирать на беспаечной макетной плате, обычными Dupont проводками. Для обвязки голого микроконтроллера нужны будут: два конденсатора на 22 пФ, резистор на 10 кОм и кварцевый резонатор на 16 МГц.
Всё это можно приобрести в магазине RobotClass:
Подключение
Соединяем рабочую плату Arduino Uno R3 с чистым микроконтроллером по приведенной схеме. Здесь все очень просто. Внимательно смотрим на картинку, вставляем проводки, семь раз проверяем.
Принципиальная схема

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

Прошивка Arduino ISP
Arduino ISP — это программа для Arduino, которая превращает плату в программатор.
Подключаем плату Arduino UNO к компьютеру через USB.
Открываем среду Arduino IDE. Затем, открываем программу: Файл > Примеры > Arduino ISP > Arduino ISP
Загружаем её на нашу плату Arduino UNO обычным способом.
Прошивка загрузчика (bootloader)
Теперь используем наш самодельный программатор, чтобы прошить загрузчик.
Выбираем целевую плату: Инструменты > Плата > Arduino AVR Boards > Arduino Uno
Выбираем тип программатора: Инструменты > Программатор > Arduino as ISP

Наконец, записываем загрузчик: Инструменты > Записать Загрузчик
Сразу после этого, Arduino IDE начнет копирование загрузчика на чистый микроконтроллер, используя плату Arduino UNO как программатор. При это будут активно мигать светодиоды RX и TX. Как только светодиоды перестанут мигать — копирование окончено!
Теперь микроконтроллер готов к работе с Arduino IDE. Его можно смело подключать к компьютеру через USB-UART преобразователь и загружать скетчи.