Общие сведения
Загрузчик (от англ. bootloader) — это программа, которая позволяет загружать код в Arduino по USB без использования программатора. Однако, в некоторых случаях загрузчик может быть поврежден, например при некорректной прошивке или в результате аппаратного сбоя.
Восстановить, а точнее записать новый загрузчик в Arduino можно с помощью другой платы Arduino в роли программатора. Для удобства приведем нейминг плат:
- Плата программатор — контроллер Arduino через который будем зашивать загрузчик в плату исполнитель. Для примера в роли программатора будем использовать Arduino Uno. Список поддерживаемых плат Arduino в роли программатора мы написали ниже.
- Плата исполнитель — контроллер Arduino в который будем зашивать загрузчик. Предположим у вас слетел загрузчик на плате Arduino Nano.
Список поддерживаемых плат в роли программатора
- Arduino Nano (USB CH340 / Без ног)
- Arduino Nano (USB CH340 / С ногами)
- Arduino Nano (USB FT232R / С ногами)
- Arduino Uno R3 (Оригинал Италия)
- Arduino Uno R3 (USB ATmega16U2)
- Arduino Uno R3 (USB CH340)
- Piranha Uno R3
- Arduino Mega 2560 R3 (USB ATmega16U2)
- Arduino Mega 2560 R3 (USB CH340)
Данная статья актуальна только для плат Arduino архитектуры AVR и их клонов. Для всех других семейств, например ARM или ESP, необходимо искать информацию в других источниках.
Что понадобится
Приведём полный список железа для записи загрузчика в Arduino.
- Плата в роли программатора — Arduino Uno
- Плата в роли исполнителя — Arduino Nano
- Кабель USB для программатора
- Соединительные провода «папа-папа»
- Соединительные провода «папа-мама»
Порядок действий
- Скачать и установить среду программирования Arduino IDE.
- Подготовить плату Arduino в роли программатора.
- Соединить плату программатор с исполняемой платой.
- Записать загрузчик.
Скачивание и установка Arduino IDE
Для старта скачайте и установите среду программирования Arduino IDE. Весь процесс описан в нашем руководстве по Arduino IDE.
Подготовка платы программатора
Для продолжения нужно преобразовать выбранную плату Arduino в программатор.
- Подключите платформу Arduino Uno к компьютеру через кабель USB. При успешном подключении должен загореться индикаторный светодиод питания.
- Откройте диспетчер устройств Windows.
- В диспетчере устройств раскройте вкладку
Порты (COM и LPT)
, идентифицируйте среди устройств плату программатор и запомните номер назначенного COM-порта. В нашем случае это Arduino Uno с COM-портом номер9
. - CH340 для OS Windows 7 или Windows 10
- FT232R для OS Windows 7 или Windows 10
- Откройте среду программирования Arduino IDE.
- В Arduino IDE выберите модель платы:
Инструменты
→Плата
→Arduino AVR Boards
→Arduino Uno
- В Arduino IDE выберите COM-порт платы:
Инструменты
→Порт
→COMx
, гдеx
— номер порта платы. - В Arduino IDE выберите тип программатора:
Инструменты
→Программатор
→AVRISP MKII
- В Arduino IDE откройте скетч для преобразования платы Arduino в программатор:
Файл
→Примеры
→11.ArduinoISP
→ArduinoISP
- Откомпилируйте и загрузите скетч в плату программатор. Нажмите на иконку
→
. Вы должны увидеть процесс компиляции скетча с последующей загрузкой в плату. - Если все шаги были пройдены правильно, на плате программаторе начнут мигать светодиоды
RX
иTX
. А при завершении процесса — в окне статуса Arduino IDE должна появиться надписьЗагрузка завершена
.
Как узнать номер COM-порта платы Arduino, мы смотрели пару шагов выше в диспетчере устройств.
Соединение платы программатора с исполняемой платой
Загрузчик прошивается через внутрисхемный разъём ICSP на шесть контактов. На каждой плате Arduino с микроконтроллером на архитектуре AVR есть разъём ICSP в виде контактных колодок PLS или отверстий под пайку. Нумерация первого контакта отмечена точкой на плате.
Рассмотрим распиновку разъёма ICSP:
Номер контакта | Имя контакта |
---|---|
1 | MISO |
2 | VCC |
3 | SCK |
4 | MOSI |
5 | RESET |
6 | GND |
Для продолжения, выполните шаги ниже:
- Подготовьте плату программатор Arduino Uno и плату исполнитель Arduino Nano.
- Соедините плату программатор Arduino Uno с платой исполнитель Arduino Nano, согласно таблице и иллюстрации. Для коммуникации понадобятся макетные провода «папа-папа» и «папа-мама».
- Подключите плату программатор к компьютеру через кабель USB. При успешном подключении должны загореться индикаторные светодиоды питания на плате программаторе и плате исполнителе.
Плата программатор | Плата исполнитель |
---|---|
ICSP пин №1 | ICSP пин №1 |
ICSP пин №2 | ICSP пин №2 |
ICSP пин №3 | ICSP пин №3 |
ICSP пин №4 | ICSP пин №4 |
Колодка Arduino пин №10 | ICSP пин №5 |
ICSP пин №6 | ICSP пин №6 |
Запись загрузчика
Плата программатор настроена, схема собрана, можно переходить к записи загрузчика.
- Откройте среду программирования Arduino IDE.
- В Arduino IDE выберите модель платы исполнителя:
Инструменты
→Плата
→Arduino AVR Boards
→Arduino Nano
- В Arduino IDE выберите COM-порт платы программатора:
Инструменты
→Порт
→COMx
, гдеx
— номер порта платы. - В Arduino IDE выберите тип программатора:
Инструменты
→Программатор
→Arduino as ISP
- Плата программатор и исполнитель настроены — можно записывать загрузчик. В Arduino IDE выберите:
Инструменты
→Записать загрузчик
- Если все шаги были пройдены правильно, на плате программаторе начнут мигать светодиоды
RX
иTX
. При завершении процесса — в окне статуса Arduino IDE должна появиться надписьЗапись загрузчика завершена
. - Отключите плату программатор от USB. А затем разберите схему между платой программатором Arduino Uno и платой исполнителем Arduino Nano. На этом этапе запись загрузчика завершена и можно использовать плату исполнитель как отдельное устройство.
В Arduino IDE выберите контроллер платы исполнителя: Инструменты
→Процессор
→ATmega328P
Как узнать номер COM-порта платы Arduino, мы рассмотрели в разделе «подготовка платы Arduino в роли программатора».
Ресурсы
Мы также рекомендуем к чтению ссылки на статьи, документации и другие вспомогательные материалы по платформе Arduino.
Обсуждение