Установите загрузчик на ATmega AT328P-PU и дешево получите функциональность, близкую к Arduino Uno!
Настоящая Arduino Uno – это отличная платформа для разработки множества развлекательных и полезных схем на микроконтроллерах, но использование полноценной платы Uno в каждом проекте может быть слишком дорого. Воспользовавшись инструкциями в этой статье, вы сможете уменьшить стоимость блока управления в проекте на 50 и более процентов.
Что такое Arduino? Вы серьезно?
После 2003 года сложно было не услышать что-либо об Arduino; нравятся ли они вам или нет, но эти платы вездесущи. Но что такое Arduino?
Вопреки тому, как многие думают, Arduino не является микроконтроллером, это особый бренд сборок на печатных платах, которые содержат микроконтроллеры. Эти микроконтроллеры – это чаще всего ATmega от компании Atmel (которая сейчас входит в состав Microchip), а одним из наиболее часто используемых ATmega является AT328P. Но не каждый AT328P будет работать на печатной плате Arduino или с Arduino IDE (интегрированной средой разработкой); на скриншоте ниже показано, что произойдет, когда вы попытаетесь загрузить скетч в обычный AT328P, который приобрели в магазине.
Как можете видеть, загрузка не удалась десять раз, и каждый сбой происходил по одной и той же причине. Несмотря на то, что сообщения об ошибках не указывают на это, ошибки были вызваны тем, что микроконтроллер ATmega не содержал загрузчик Arduino, небольшую часть кода, который говорит микроконтроллеру ATmega, как реагировать на инструкции Arduino IDE. К счастью, код загрузчика может быть загружен на нужные микроконтроллеры ATmega через относительно простой процесс.
Далее следуют пошаговые инструкции по загрузке кода загрузчика Arduino на AT328P-PU с помощью полноценной платы Arduino Uno. По сути, процесс разбивается на четыре части:
- сборка схемы загрузчика;
- настройка Arduino Uno как ISP (внутрисхемного программатора);
- подключение Arduino Uno к схеме загрузчика;
- прошивка кода загрузчика.
После успешной загрузки кода загрузчика на AT328P-PU схема загрузчика может быть легко преобразована в схему программирования и эксплуатации микроконтроллера, создав таким образом платформу для разработки со многими возможностями полноценной платы Arduino Uno. В этой статье будут представлены подробности этого процесса.
Сборка схемы прошивки загрузчика
Чтобы загрузить код загрузчика из Arduino Uno в пустой ATmega328P-PU, потребуется небольшая схема прошивки загрузчика. Комплектующие, необходимые для схемы загрузчика, перечислены ниже (вам может также понадобиться несколько перемычек).
Обозначение | Описание |
---|---|
R1 | Резистор 10 кОм, 0,25 Вт |
C1, C2 | Конденсатор, керамический, 22 пФ, 50 В |
C3 | Конденсатор, керамический, 0,1 мкФ, 50 В |
X1 | Кварцевый резонатор, 16 МГц, HC49, 20 пФ |
U1 | Микросхема, ATmega328P-PU, флэш 32 килобайта, DIP-28, 1,8–5,5 В |
нет | Макетная плата, беспаечная, 400 контактов |
нет | Arduino Uno R3 |
Ниже приведена очень простая принципиальная схема прошивки загрузчика AT328P-PU. Часть генератора состоит из X1, C1 и C2; обратите внимание, что кварцевый резонатор X1 должен быть на 16 МГц, а не на 20 МГц. Несмотря на то, что AT328P-PU может использовать кварц 20 МГц, для процесса прошивки загрузчика требуется работа на 16 МГц. R1 – это подтягивающий резистор для вывода Reset; а C3 – это обычный конденсатор фильтра питания.
Подписи, расположенные слева на принципиальной схеме, указывают на контакты Arduino Uno, к которым должен быть подключен каждый вывод. Эти соединения показаны на фотографии макетной платы, приведенной под схемой. Подписи цветов проводов на схеме соответствуют цветам перемычек на фотографии.
Соберите схему прошивки загрузчика, но пока не подключайте её к Arduino Uno.
Делаем ISP программатор из Arduno Uno
После двойной проверки схемы прошивки загрузчика, прежде чем подключать ее к Arduino Uno, вы должны настроить Arduino Uno для работы в качестве программатора ISP (In-circuit Serial Programmer, внутрисхемный последовательный программатор). Подключите Arduino Uno к компьютеру и запустите Arduino IDE. Затем выполните шаги, как показано на следующих скриншотах.
- Укажите, что подключена обычная плата Arduino Uno.
- Укажите назначение платы Arduino Uno как Arduino ISP.
- Откройте скетч Arduino ISP.
- Загрузите скетч Arduino ISP в Arduino Uno.
- Когда вы увидите сообщение "done uploading" (загрузка завершена), ваша плата Arduino Uno будет готова работать в качестве ISP программатора, и будет способна понимать и отвечать на инструкции от Arduino IDE.
Прошивка кода загрузчика
Теперь подключите шесть проводов от схемы прошивки загрузчика к Arduino Uno точно так, как показано на схеме и фотографии, приведенной выше в разделе «Сборка схемы прошивки загрузчика». После двойной проверки всех соединений вы готовы записать следующий код загрузчика в AT328P-PU в схеме прошивки загрузчика.
- Выберите "Burn Bootloader" (прошить загрузчик) как действие для Arduino Uno; процесс должен начаться сразу после того, как вы кликните "Burn Bootloader".
- Когда вы увидите сообщение "Done burning bootloader" (прошивка загрузчика завершена), процесс будет выполнен, и AT328P-PU сможет понимать и отвечать на инструкции от Arduino IDE.
Простейшая схема программирования (и проверки работы)
Ниже приведен список комплектующих, необходимых для преобразования схемы прошивки загрузчика в простейшую схему программирования и проверки работоспособности.
Обозначение | Описание |
---|---|
R2 | Резистор 470 Ом, 0,25 Вт |
C4 | Конденсатор, керамический, 0,1 мкФ, 50 В |
LED1 | Светодиод, T1 3/4, желтый |
нет | Конвертер USB–TTL с выводом DTR |
Преобразовать схему прошивки загрузчика AT328P-PU в простейшую схему программирования и проверки работоспособности довольно просто. Ниже приведены принципиальная схема и фотография макета.
- Удалите все шесть перемычек между Arduino Uno и схемой прошивки программатора.
- Подключите R2 и LED1 между землей и выводом 19 микроконтроллера AT328P-PU.
- Подключите выводы 1, 3, 4 и 5 от USB-TTL конвертера к AT328P-PU, как показано ниже. Вывод 2 не используется.
- Подключите вывод 6 через конденсатор C4 (0,1 мкФ) к выводу 1 AT328P-PU. (C4 обеспечивает, чтобы сигнал DTR от преобразователя USB-TTL выдавал кратковременный сигнал сброса, а не тот сигнал, который остается на низком логическом уровне в течение длительного периода времени.)
Загрузка первого скетча: разумеется, мигаем
- Чтобы подтвердить работоспособность макета простейшей схемы программирования и проверки работы, откройте скетч "Blink" из базовых примеров, включенных в Arduino IDE.
- После выбора правильного COM порта скомпилируйте и загрузите в AT328P-PU скетч "Blink". Первая попытка прошивки скетча Blink не удалась; можете увидеть, почему произошел сбой? Подсказка: посмотрите на правый нижний угол окна IDE выше, и сравните его с тем же участком окон IDE на скриншотах ниже (на которых прошивка удалась). Конечно, причина неудачи первой попытки прошивки заключается в неправильном выборе COM порта: был выбран COM3, вместо правильного COM6.
Что случилось?
Успех! Вы прошили загрузчик Arduino в AT328P-PU, а затем загрузили в AT328P-PU скетч Blink, что подтверждается мигающим желтым светодиодом на макете простейшей схемы программирования и проверки работоспособности. Теперь любой скетч для Arduino может быть загружен аналогичным образом, а компоненты, необходимые для этого скетча, могут быть подключены к микроконтроллеру AT328P-PU, и всё будет работать.
Развлекайтесь с Arduino... тратя теперь меньшие деньги!