Загрузка загрузчика на Arduino Mini
Загрузчик (bootloader) — это небольшая программа, которая позволяет загружать скетчи на плату Arduino. Этот документ объясняет, как загрузить загрузчик на Arduino Mini.
Автор: Gian Pablo Vilamil
Этот документ объясняет, как загрузить загрузчик на Arduino Mini.
Если вы знаете, что такое загрузчик, зачем это нужно, и вам нужны только конкретные инструкции для Arduino Mini, то перейдите к разделу «Загрузка загрузчика на Arduino Mini».
Что такое загрузчик и что такое загрузка загрузчика?
Загрузчик — это маленькая программа, которая запускается при включении Arduino или нажатии кнопки сброса. Его основная функция — ждать, пока программное обеспечение Arduino на вашем компьютере отправит новую программу для Arduino, которую он затем записывает в память Arduino. Это важно, потому что обычно для программирования Arduino требуется специальное устройство. Загрузчик — это то, что позволяет программировать Arduino, используя только USB-кабель.
Когда мы говорим о «загрузке загрузчика» на Arduino, мы имеем в виду использование специального устройства (называемого внутрисхемным программатором или ISP) для замены программного обеспечения загрузчика.
Зачем мне нужно загружать загрузчик на Arduino?
Существует как минимум четыре причины, по которым вам может понадобиться это сделать:
На вашем Arduino нет загрузчика. Это может произойти, если вы заменили микроконтроллер новым чипом. Маловероятно, что это произойдёт с Mini, поскольку чип не является заменяемым, и на все Mini загрузчик устанавливается при отправке.
Замена существующего загрузчика другим загрузчиком. Загрузчик на платах Arduino до Diecimila вносит 10-секундную задержку после сброса, пока ожидает информацию от программного обеспечения Arduino. Эта задержка также возникает при включении питания Arduino или после программирования. Существуют альтернативные загрузчики, которые устраняют эти задержки, включая загрузчик Diecimila, загрузчик Adaboot, загрузчик LilyPad и другие. Вы также можете скачать исходный код и модифицировать загрузчик самостоятельно (подробнее и ссылка на исходный код — на этой странице). Это полезно, если вы хотите, чтобы ваш проект запускался немедленно, и особенно полезно, если он принимает последовательный ввод. Если загрузчик получает какой-либо ввод во время запуска, он будет думать, что программное обеспечение Arduino пытается с ним связаться, и задержит, возможно на неопределённое время, запуск вашей программы. Вот информация об альтернативных загрузчиках.
Не использовать загрузчик вообще. Процесс замены загрузчика на Arduino также позволяет полностью заменить его вашим собственным приложением. Преимущества этого в том, что ваше приложение будет запускаться немедленно, и вы получите дополнительные 2 КБ программной памяти. Недостаток в том, что вы больше не сможете программировать Arduino через USB — вам придётся использовать ISP (по крайней мере, пока вы не замените загрузчик).
Существующий загрузчик каким-то образом был повреждён. Это крайне маловероятно. Однако возможно, что при некоторых обстоятельствах флеш-память Arduino может быть повреждена, и вы не сможете нормально программировать Arduino. Переустановка загрузчика может исправить эти проблемы. Это что-то вроде форматирования жёсткого диска вашего компьютера.
Чем загрузка загрузчика на Arduino Mini отличается от программирования других Arduino?
Обычные полноразмерные Arduino имеют 6-контактный разъём для ISP. Arduino Mini не имеет его, поэтому вам нужно изготовить соединительный кабель. Помимо этого, процедура та же. С небольшими вариациями процесса вы можете загрузить загрузчик на множество различных конфигураций проектов на базе Atmel.
Что мне нужно?
ISP-программатор (например, AVR ISP MkII)
6 проводов
Одна планка штыревых контактов с 12 выводами
Две планки штыревых контактов по 3 вывода каждая
Программное обеспечение AVR Studio (от Atmel, бесплатная загрузка)
Как изготовить кабель?
Вам нужно подключить 6 выводов на Arduino Mini к шести выводам на ISP. Шесть выводов называются MISO, MOSI, SCK, RESET, Power и Ground. Три из них соответствуют цифровым выводам ввода/вывода с номерами 11–13. Остальные три — это выводы Reset, +5V и Ground, которые вы, вероятно, уже использовали. (Обратите внимание, что вам нужно использовать вывод +5V, а не вывод +9V. Он используется для питания ISP.)
Выводы Arduino Mini
Эти выводы на Arduino должны быть подключены к соответствующим выводам на 6-контактном разъёме, идущем от ISP, показанном ниже.
Разъём
Обратите внимание, что это вид с задней стороны разъёма. Если вы держите разъём за шлейф, красной полосой вверх, и разъём направлен от вас, именно это вы увидите.
Простой способ изготовить соединительный кабель — начать с 6 проводов, планки штыревых контактов с 12 выводами и двух планок по 6 выводов. Удалите 2-й–4-й выводы из длинной планки с помощью тонкогубцев. Также удалите 9-й–11-й выводы. Удалите все выводы из двух меньших секций штыревых контактов.
Вставьте провода, соответствующие земле (ground), сбросу (reset) и питанию (power), в указанном порядке, в отверстия, оставшиеся от 2-го–4-го выводов. Вставьте провода, соответствующие SCK, MISO и MOSI, в указанном порядке, в отверстия, оставшиеся от 9-го–11-го выводов. Затем возьмите другие концы проводов и вставьте MISO, SCK и RESET в одну планку, а Power, MOSI и Ground — в другую. (Обратите внимание, что MOSI и Reset «меняются сторонами», так сказать.) Обрежьте провода так, чтобы они были одинаковой длины. Рекомендуется использовать горячий клей, чтобы всё зафиксировать. Проще всего это сделать, вставив две секции с 3 контактами в кабель ISP (перепроверьте правильность!) и добавив каплю клея. (Не приклеивайте сам кабель ISP.) У вас должен получиться кабель, выглядящий следующим образом:
Кабель
Обратите внимание, что выводы на концах ни к чему не подключены — я сделал это, чтобы планка была точно такой же длины, как Arduino Mini, что упрощает выравнивание. Обратите внимание на порядок проводов относительно красной жилы на кабеле программатора. Когда красная жила сверху, а кабель на дальней стороне разъёма, цвета: белый (MISO), зелёный (SCK) и жёлтый (RESET). На изображении ниже, с красной жилой внизу и шлейфом на ближней стороне, кабели: чёрный (GND), синий (MOSI) и красный (+5V):
Шлейф
Установите ваш Arduino Mini на макетную плату, как показано (обратите внимание, что вам нужно будет снять светодиод на выводе 13 во время программирования):
Установленный Mini
Выровняйте планку штыревых контактов с 12 выводами вдоль стороны Arduino Mini так, чтобы она совпадала с выводами. Провода питания, сброса и земли должны совпасть. (Обратите внимание, что светодиод снят.) Это должно выглядеть следующим образом:
Вид сбоку
Вот вид сверху:
Вид сверху
Если вы используете USB-адаптер с вашим Arduino Mini, подключите его к компьютеру сейчас. Если нет, подключите любой используемый вами источник питания. Arduino должен быть запитан для работы ISP.
Подключите USB-кабель от ISP к вашему компьютеру сейчас. Вы должны увидеть два зелёных светодиода на программаторе.
Предупреждение
У вас не должно быть ничего подключённого к выводам 11–13 Arduino. Это может помешать работе программатора.
Начиная с этого момента, инструкции точно такие же, как и для загрузки загрузчика на любой микроконтроллер Atmel 168. Вы можете использовать инструкции в другом разделе на этом сайте или продолжить чтение.
Как загрузить загрузчик с помощью среды Arduino?
Теперь вы можете загрузить загрузчик на Arduino с помощью среды Arduino. Откройте Arduino на вашем компьютере, установите тип платы, которую вы используете (Arduino Mini), откройте меню Burn Bootloader и выберите ваш программатор. (В этом примере — AVRISP MkII.)
Загрузка загрузчика
В отличие от обычного программирования Arduino, вам не нужно нажимать кнопку сброса. Программатор сбрасывает Arduino за вас. Это установит (или восстановит) оригинальный загрузчик Arduino. Однако это мало полезно, если вы не пытаетесь восстановить загрузчик или ваш Mini каким-то образом поставлялся без него.
Как загрузить загрузчик с помощью AVR Studio?
Для установки альтернативного загрузчика вам понадобится программное обеспечение AVR Studio. Скачайте его отсюда.
Примечание
К сожалению, AVR Studio существует только для Windows. Однако вы можете использовать инструкции по загрузке загрузчика на Atmel168 для Mac OS/X.
Запустите AVR Studio. Нажмите Cancel, чтобы пропустить начальный экран.
AVR Studio
Нажмите кнопку Con. Это маленькая кнопка с надписью «CON», которая выглядит как маленький чип. Затем выберите тип ISP, который вы используете: в данном примере — AVR ISP Mk II.
AVR ISP Mk II
Вы увидите диалоговое окно загрузки прошивки, как показано ниже. Убедитесь, что все настройки соответствуют показанным в диалоговом окне. В поле «input HEX file» найдите файл, который хотите загрузить. Это может быть:
Новый загрузчик
Ваша собственная программа. Файл .hex будет храниться в папке applet внутри папки вашего скетча Arduino.
Нажмите кнопку «Program». Вы должны увидеть некоторую активность в окне статуса. Нажмите «Verify», если хотите подтвердить, что всё в порядке. Отключите ISP, отсоединив его USB-кабель от компьютера. Если хотите перестраховаться, отключите питание от Arduino. Отсоедините разъём ISP от макетной платы.
Ваш Arduino Mini теперь имеет загрузчик!