Прошивка arduino uno. Прошивка Arduino: полное руководство для начинающих

Как прошить Arduino впервые. Какие программы нужны для прошивки Arduino. Как установить драйверы для Arduino. Как выбрать правильную плату и порт в Arduino IDE. Как исправить основные ошибки при прошивке Arduino.

Содержание

Что нужно для прошивки Arduino?

Для прошивки Arduino вам понадобится:

  • Сама плата Arduino
  • USB-кабель для подключения Arduino к компьютеру
  • Компьютер с операционной системой Windows, macOS или Linux
  • Программа Arduino IDE для написания и загрузки скетчей
  • Драйверы для Arduino (обычно устанавливаются автоматически)

Рассмотрим процесс прошивки Arduino пошагово.

Установка Arduino IDE

Arduino IDE — это основная программа для работы с платами Arduino. Она позволяет писать скетчи (программы), компилировать их и загружать в Arduino.

Чтобы установить Arduino IDE:

  1. Скачайте Arduino IDE с официального сайта arduino.cc
  2. Запустите установщик и следуйте инструкциям мастера установки
  3. При появлении окна о необходимости установки драйверов, нажмите «Да»
  4. После завершения установки на рабочем столе появится ярлык Arduino

Подключение Arduino к компьютеру

Подключите Arduino к компьютеру с помощью USB-кабеля. Важно использовать качественный кабель, поддерживающий передачу данных. Некоторые дешевые кабели предназначены только для зарядки и не подойдут для прошивки.

При первом подключении Windows должна автоматически найти и установить необходимые драйверы. Дождитесь завершения этого процесса.

Настройка Arduino IDE

После установки Arduino IDE и подключения платы необходимо правильно настроить среду разработки:

  1. Запустите Arduino IDE
  2. Выберите используемую плату: Инструменты > Плата > Arduino Uno/Nano/etc
  3. Выберите COM-порт, к которому подключена Arduino: Инструменты > Порт > COMx

Правильный COM-порт обычно имеет номер больше 1 (COM3, COM5 и т.д.). Если вы видите только COM1, возможно драйверы не установились корректно.

Загрузка первого скетча

Чтобы проверить, что все настроено правильно, загрузим простой тестовый скетч:

  1. Выберите пример: Файл > Примеры > 01.Basics > Blink
  2. Нажмите кнопку «Загрузка» (стрелка вправо)
  3. Дождитесь завершения компиляции и загрузки
  4. Если все прошло успешно, на плате начнет мигать светодиод

Основные ошибки при прошивке Arduino

Рассмотрим наиболее распространенные проблемы, возникающие при прошивке Arduino:

Ошибки компиляции

Возникают на этапе сборки и проверки кода. Основные причины:

  • Синтаксические ошибки в коде скетча
  • Отсутствие необходимых библиотек
  • Кириллица в пути к файлу скетча
  • Неправильно выбранная плата в настройках

Для решения внимательно изучите текст ошибки в нижней части окна Arduino IDE. Он укажет на проблемное место в коде.

Ошибки загрузки

Возникают при попытке загрузить скомпилированный скетч в Arduino. Возможные причины:

  • Неправильно выбранный COM-порт
  • Неисправный USB-кабель
  • Отсутствие или некорректная установка драйверов
  • «Зависание» платы Arduino

Как исправить:

  • Проверьте выбор правильного COM-порта
  • Попробуйте другой USB-кабель
  • Переустановите драйверы
  • Отключите и снова подключите Arduino к компьютеру

Прошивка Arduino Pro Mini

Arduino Pro Mini не имеет встроенного USB-интерфейса, поэтому для ее прошивки потребуется дополнительное оборудование:

  • USB-TTL преобразователь (например, на чипе CH340G или CP2102)
  • Провода для соединения Arduino Pro Mini с преобразователем

Процесс прошивки:

  1. Подключите USB-TTL преобразователь к компьютеру
  2. Соедините выводы преобразователя с Arduino Pro Mini:
  • RX преобразователя с TX Arduino
  • TX преобразователя с RX Arduino
  • VCC с VCC
  • GND с GND
  • DTR с DTR (если есть)
  1. В Arduino IDE выберите плату «Arduino Pro or Pro Mini»
  2. Выберите процессор ATmega328 (3.3V, 8MHz) или ATmega328 (5V, 16MHz)
  3. Выберите COM-порт, соответствующий USB-TTL преобразователю
  4. Загрузите скетч как обычно

Создание прошивки для Arduino

Прошивка Arduino — это программа (скетч), которая загружается в микроконтроллер платы. Вот основные этапы создания прошивки:

  1. Откройте Arduino IDE и создайте новый скетч: Файл > Новый
  2. Напишите код вашей программы. Минимальный скетч содержит две функции:
void setup() {
  // Код инициализации, выполняется один раз
}

void loop() {
  // Основной код, выполняется циклически
}
  1. Добавьте необходимые библиотеки: Скетч > Подключить библиотеку
  2. Проверьте код на наличие ошибок: Скетч > Проверить/Скомпилировать
  3. Загрузите скетч в Arduino, нажав кнопку «Загрузка»

Использование загрузчика для прошивки Arduino

Загрузчик (bootloader) — это небольшая программа, которая позволяет загружать скетчи в Arduino без использования программатора. Он предустановлен на большинстве плат Arduino.

Если вы используете «чистый» микроконтроллер или хотите обновить загрузчик, вот как это сделать:

  1. Подключите программатор (например, другую Arduino в режиме ArduinoISP) к целевой плате
  2. В Arduino IDE выберите: Инструменты > Программатор > Arduino as ISP
  3. Выберите нужную плату и порт
  4. Нажмите: Инструменты > Записать загрузчик

После этого вы сможете загружать скетчи обычным способом через USB.

Советы по эффективной прошивке Arduino

Чтобы процесс прошивки Arduino был максимально эффективным:

  • Регулярно обновляйте Arduino IDE до последней версии
  • Используйте качественные USB-кабели, поддерживающие передачу данных
  • Держите драйверы в актуальном состоянии
  • Перед загрузкой всегда проверяйте код на ошибки
  • Используйте понятные имена переменных и комментируйте сложные участки кода
  • Разбивайте сложные проекты на отдельные функции и модули
  • Сохраняйте резервные копии важных скетчей

Следуя этим рекомендациям, вы сможете избежать многих проблем при прошивке Arduino и сделаете процесс разработки более комфортным и продуктивным.


прошивка с помощью Arduino и Arduino IDE

Введение

Приветствую Вас, читатели нашего ресурса. Сегодня мы поговорим об одном контроллере из серии Arduino, а именно об Arduino Pro Mini. Это маленький, компактный контроллер, имеющий все преимущества Arduino, но при этом очень компактный, можно сказать самый маленький из всех существующих Arduino контроллеров на данный момент. Многих так же привлекает и цена его Китайский копий, а стоят они от одного до двух долларов за штуку (местами и того меньше), что так же заставляет задуматься об его приобретении. Но существует и одна проблема, его не так-то уж и просто прошить, особенно Китайские копии, которые оснащают процессором Atmel ATmega168P, которыми некогда не оснащали официальные контроллеры Arduino Pro Mini и как следствие Arduino IDE отказывается их прошивать, сообщая о неправильной сигнатуре процессора.

Вот об этом мы сегодня и поговорим. Как прошить, что для этого нужно, ну и как заставить Arduino IDE работать с китайскими копиями.

Что для этого нужно?

Arduino Pro Mini очень компактный, а компактность требует жертв и жертва это — USB интерфейс который полностью выкосили в данном контроллере т.е. подключить Pro Mini к компьютеру напрямую у вас не получится и как следствие для этого понадобится либо специальный переходник USB в TTL или другой контроллер Arduino.

  • Первый способ. Прошиваем через адаптер USB в TTL — нужен сам адаптер в количестве одной штуки.
  • Второй способ. Прошиваем через Arduino UNO — нужна Arduino UNO, но не простая, а в классическом исполнении, это та Arduino, в которой процессор выполнен в DIP корпусе и вставлен в черный разъем.
  • Третий способ. Прошиваем через SPI интерфейс — нужна любая Arduino: UNO, Nano, Mega, Leonardo — не важно, главное чтобы был USB разъем для подключения к ПК.
Первый способ. Прошиваем через адаптер USB в TTL

Первым и самым простым способом загрузить свой скетч в Arduino Pro Mini — это приобрести специальный адаптер USB в TTL или как его называют UART переходник. Как правило, этот переходник это и есть та часть, которую вырезали из Arduino Nano, превратив ее в Arduino Pro Mini. Стоимость подобных переходников копеечная, а выбор и того больше. Китайцы наштопали их столько, что глаза разбегаться какой из них выбрать. При этом цена сего девайса не более одного вечно зеленого. После того как вы соедините Pro Mini и UART переходник проводами или шлейфом, остаётся только воткнуть его (переходник) в ПК, установить драйвер (не для всех переходников они требуются) и на этом собственно все. Ваш ПК определит переходник как очередной COM-порт, который появляется при подключении любой Arduino к ПК. Выбираете его, плату, с которой будете работать (Arduino Pro Mini) и спокойно загружаете свой скетч.

Единственным нюансом в данных переходниках, является наличие или отсутствие контактов RST или DTR. Рекомендую покупать переходники, на которых эти контакты есть. Они значительно упрощают жизнь и делают процесс прошивки беспроблемным. Если же вы купили уже переходник, на котором подобных контактов нет, то при каждой загрузке скетча в Arduino вам придется нажимать на кнопку Reset, что не всегда получается сделать вовремя, и это вносит свои неудобства.

Подключение переходник вы можете посмотреть по таблице ниже:

Второй способ. Прошиваем через Arduino UNO

Для этого способа нам понадобиться классическая Arduino UNO. Классическая эта та, в которой корпус микросхемы выполнен в DIP корпусе и вставлен в специальный разъем. Вот эту микросхему нам надо аккуратно поддеть отверткой. Тут важно не сломать процессор, поддевайте аккуратно, не погнув ноги.

Arduino UNO. Процессор выполнен в DIP корпусе.

Аккуратно поддеваем и вытаскиваем процессор отверткой.

После того как мы вытащили процессор из Arduino UNO мы по сути получили тот самый переходник USB в TTL, осталось только соединить проводами наш новый переходник и Arduino Pro Mini по следующей схеме:

Arduino UNO (без процессора)
Arduino Pro Mini
RX
RX
TX
TX
GND
GND
5V
VCC
RST
RST

После того как вы соединили две Arduino воедино, можно приступать к прошивке Arduino Pro Mini. Подключаем Arduino UNO по USB к ПК. Выбираем в настройках Arduino IDE COM-порт, указываем, что мы теперь работаем не с Arduino UNO, а с Arduino Pro Mini и все, заливаем наши скетчи. Способ довольно интересный, если вы не боитесь испортить Arduino и рядом не оказалось переходника USB в TTL.

Третий способ. Прошиваем через SPI интерфейс

Третьим и самым неудобным способом загрузить свой скетч в Arduino Pro Mini это прошить его при помощи ICSP интерфейса. Данный интерфейс присутствует на большинстве плат Arduino. Основные контакты данного интерфейса выведены на порты с 10 по 13, а так же выведены отдельно в виде шести контактной колодки с подписью ICSP. Располагается колодка, как правило, в центральной правой части Arduino.

Прошивка Arduino Pro Mini в этом случае делиться на два этапа:

  1. Прошивка платы Arduino как ISP программатора.

Первым делом мы должны подготовить наш будущий программатор. Возьмем для примера всю туже Arduino UNO. Далее пошагово:

  1. Запускаем Arduino IDE.
  2. Файл — Примеры — 11.ArduinoISP — ArduinoISP.
  3. Инструменты — Плата — Arduino UNO.
  4. Инструменты — Порт — Выбираем COM-порт.
  5. Компилируем и заливаешь в Arduino UNO.
Arduino UNO (ISP)
Arduino Pro Mini
5V
VCC
GND
GND
10
RST
11 (MOSI)
11 (MOSI)
12 (MISO)
12 (MISO)
13 (SCK)
13 (SCK)

Теперь опять открываем Arduino IDE. Открываем в ней скетч который вы хотите залить в Pro Mini и выполняете следующие действия:

2. Инструменты — Плата — Arduino Pro Or Pro Mini
3. Инструменты — Процессор — ATmega168 (5V, 16 MHz)
4. Инструменты — Порт — Выбираете порт
5. Инструменты — Программатор — Arduino as ISP
6. Скетч — Загрузить через программатор

Как видите загружать скетч в этом режиме надо через специальное меню «Загрузить через программатор», а не через кнопку «Загрузить» на главной форме Arduino IDE. В этом и связано все неудобство. Если вы нажмете кнопку «Загрузить» как это делаете обычно, то вы зальете скетч в Arduino UNO, а не Arduino Pro Mini, что затрет там скетч программатора. Так же в этом режиме недоступен класс Serial, то есть отлаживать свой скетч обмениваясь сообщениями по COM-порту у вас так же не получится. Ну и еще одна ложка дегтя в том, что после данной перепрошивки, в большинстве случаев, перепрошить Arduino Pro Mini через переходник у вас так же больше не получиться. Исправляется это заливкой нового bootloader-а через меню «Инструменты» — «Записать Загрузчик».

Добавляем китайский Pro Mini в Arduino IDE

Как я уже говорил в данной статье, Китайские клоны порой оснащают процессорами которыми не оснащали официальные версии Arduino Pro Mini и как следствие при прошивке их вы можете увидеть следующую или подобную ошибку.

Avrdude: Expected signature for ATmega168 is 1E 94 06 Double check chip, or use -F to override this check. Найден неправильный микроконтроллер. Вы указали правильную плату в меню Инструменты -> Плата?

Исправляется это легко:

  • Для начала необходимо открыть папку в которой расположена Arduino IDE.
  • Затем переходим в следующую папку «Папка с Arduino IDE\hardware\arduino\avr\».
  • Ищем там файл «boards.txt» и открываем его в текстовом редакторе.
  • Ищем в файле следующую строку «pro.menu.cpu.16MHzatmega168.build.mcu=atmega168».
  • И заменяем ее на «pro.menu.cpu.16MHzatmega168.build.mcu=atmega168p».
  • Перезапускаем Arduino IDE и на этом все.
  • Если у вас к примеру 328 процессор то делаем все так же, только ищем строку с цифрами 328.
Заключение

В данной статье я привел аж три варианта загрузки скетчей в Arduino Pro Mini. Лично я использую второй. Мне он больше нравиться.

Что будете использовать вы — выбирать вам. Оставьте в комментарии какой вариант вы предпочитаете.

Успехов вам и удачи.

Пожалуйста, включите javascript для работы комментариев.

Здесь можно скачать прошивку для ЧПУ на Ардуино. Все прошивки написаны в IDE Arduino.

Скачать прошивку

Прошивка контроллера MKS DLC, CNC Shield для станка с ЧПУ

Здесь можно скачать прошивку для ЧПУ на MKS DLC , CNC Shield . CNC Shield — платы расширения для Ардуино UNO, Nano. Прошивка загружается через Arduino IDE, аналогично прошивке Ардуино.

Скачать прошивку

Описание и установка прошивки Ардуино для ЧПУ

Прошивка для платы Arduino написана на языке Processing в среде разработки Arduino 1.0.2 в операционной системе Windows.

Исходный код прошивки Arduino для управления 3 шаговыми двигателями через COM-порт

Для начала работы с Arduino требуется установить необходимое программное обеспечение. Для этого заходим на официальный сайт Ардуино и скачиваем дистрибутив с этой страницы . На официальном сайте Arduino можно найти множество примеров прошивок для платы, а также освоить основные принципы работы с платой. Теперь запускаем файл установщика, выбираем папку, соглашаемся с лицензионным соглашением и прочее. После установки на рабочем столе появится иконка Arduino. Теперь можно подключить нашу плату Ардуино к компьютеру, для этого используется кабель USB 2.0 соединительный USB A — USB B . Дожидаемся, когда Windows найдёт и установит новое оборудование. Далее, запускаем программу Arduino и выбираем нужный COM-порт, выбрав в главном меню Сервис->Последовательный порт.

Выбор скетча для Ардуино

В зависимости от комплектации станка с ЧПУ и задач, которые он должен выполнять выбираем скетч из списка выше. Заходим на соответвующую страницу. В кратком описании к каждому скетчу указано, для каких драйверов ШД и прочих комплектующих (шпиндель, Лазер, TTL, схема включения и т.д.) эта прошивка предназначена. Кроме того, указано для каких целей она может использоваться. Например, для лазерной резки орнаментов и лазерной художественной гравировки используются разные скетчи, хотя оппаратная часть может использоваться одна и та же.

Сборка и загрузка прошивки для Ардуино

Копируем исходный код прошивки для управления станком с ЧПУ в окно редактирования IDE Arduino. Теперь нажимаем кнопку Загрузить . Дожидаемся, пока программа Ардуино проверит, откомпилирует и установит прошивку на плату Ардуино. Попробуем проверить, работает ли прошивка. Для этого необходимо подключить двигатели и запустить Монитор порта в программе Ардуино. Монитор порта находится в пункте Сервис основного меню. На форме Монитора порта вводим команду:
1000,2000,3000;
И нажимаем кнопку Послать . Смотрим, как двигатели вращаются с разной скоростью. Когда двигатели перестанут вращаться, прошивка Ардуино передаст T по USB компьютеру, это отобразится в Мониторе порта. Раньше приходило сообщение OK .

В этой статье не будем рассказывать что такое ардуино, так как такой информации везде навалом в интернете.А перейдем к тому,как и чем ее прошить. Программа так же в этой статье.

1. Качаем и устанавливаем Arduino IDE* .

При установке Arduio IDE должны автоматически установиться драйвера, то есть при появлении окошка «согласиться ли на установку драйверов » нажать да.
* Это программа для написания скетчей и прошивки Arduino

2. Для китайской Arduino NANO скачать и установить драйвер Ch441*, ссылка ниже, см.скриншот.


* На китайских НАНАХ стоят USB контроллеры Ch440/Ch441, для правильной работы нужен специальный драйвер. Это единственное отличие китайских Ардуин от оригинальных.

    При установке Arduio IDE должны автоматически поставиться драйвера.
    Если этого не произошло, установить драйвера Arduino из папки с Arduino IDE (C:\\Program files…), см. второй скриншот.

    Подключить Arduino к компьютеру, подождать, пока Windows её распознает и запомнит (первое подключение).
    P.S. Вылезет окошечко, сообщающее, что устройство опознано и подключено к COM порту с определённым номером (2, 3, 6, 9…)

Настраиваем Arduino IDE

Запустить Arduino IDE, выбрать плату (Инструменты\плата\»ваша плата»). См. первый скриншот.

Выбрать порт: инструменты\порт\«COM отличный от COM1, например COM3, COM5…» См. второй скриншот. Какой именно порт вы могли видеть при первом подключении Ардуино к компьютеру.
Примечание: если у вас только СОМ1 — значит либо не встали драйвера, либо сдохла плата.

Как пример — библиотека для дисплея на чипе TM1637, смотрите скриншот

В папке libraries должна появиться папка TM1637, в которой есть папка examples, и два файла с расширениями.h и.cpp . Эти два файла должны быть в каждой библиотеке.

Второй способ. Папка с библиотекой кладётся в папку со скетчем. Тогда скетч, использующий библиотеку, сможет ей пользоваться. Но для остальных скетчей эта библиотека будет недоступна!

Основные ошибки при прошивке Arduino (FAQ)

Ошибка компиляции

Возникает на этапе сборки и компиляции прошивки, ошибки компиляции вызваны проблемами в коде прошивки , то есть проблема сугубо софтварная. Слева от кнопки «загрузить» есть кнопка с галочкой — проверка. Во время проверки производится компиляция прошивки и выявляются ошибки, если таковые имеются. Ардуино в этом случае может быть вообще не подключена к компьютеру .

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

    В чёрном окошке в самом низу Arduino IDE можно прочитать полный текст ошибки.

    В скачанных с интернета готовых скетчах часто возникает ошибка с описанием «название файла» no such file or directory . Это означает, что в скетче используется библиотека «название файла», и нужно положить её в Program Files/Arduino/libraries . Ко всем моим проектам всегда идёт папочка с использованными библиотеками, которые нужно установить. Также библиотеки можно поискать в гугле по «название файла».

    При использовании каких-то особых методов и функций ошибкой может стать неправильно выбранная плата в «Инструменты/плата «.

    Если прошивку пишете вы, то любые синтаксические ошибки в коде будут подсвечены, а снизу в чёрном окошке можно прочитать более детальное описание, в чём собственно косяк.

Ошибка загрузки

Возникает на этапе, когда прошивка скомпилирована, в ней критических ошибок, и производится загрузка в плату по кабелю. Ошибка может возникать как по причине неисправностей железа, так и из-за софта.

    USB кабель, которым подключается Arduino, должен быть Data кабелем . Существуют кабели, предназначенные только для зарядки , у них внутри 2 провода. Data кабель имеет 4 провода, два из которых нужны для передачи данных.

    Причиной ошибки загрузки являются неустановленные/криво установленные драйвера Ch440 , если у вас китайская NANO.

    Также будет ошибка, если не выбран COM порт , к которому подключена Arduino. Если кроме COM1 других портов нет — читай два пункта над этим, либо попробуй другой USB порт , или вообще другой компьютер .

    Большинство проблем при загрузке, вызванных «зависанием» ардуины или загрузчика, лечатся полным отключением ардуины от питания . Потом вставляется USB и прошиваем.

    Если в описании ошибки встречается слово averdude или bootloader is not responding — с вероятностью 95% сдох загрузчик, например при случайном коротком замыкании провода на плату. Оставшиеся 5% — загрузчик «слетел», и его можно прошить заново программатором или другой Ардуиной. Подробнее об этом можно почитать в гугле по «как перепрошить загрузчик на Ардуино «.

Представьте такую ситуацию. «У вас есть плата от принтера (допустим китайского), которая содержит какую-то свою прошивку. И вот настал тот день и тот час, когда вы решили, что вам нужно эту прошивку поменять, по тем или иным причинам. Но вас всё ещё держит одно «но». Вы боитесь всё испортить и хотите иметь возможность откатиться обратно. Но как назло — нормальной информации в интернете по вопросу, как забэкапить прошивку особо не нагуглишь. Примерно с такой проблемой ко мне, намедни, обратился один из участников нашего сообщества. И я решил, что раз уж так, то почему бы не поведать всем о том, как же это можно сделать.

Но прежде чем писать умные мысли — всё надо проверять, чем я и занялся. Эксперименты я проводил с Arduino Mega 2560. О ней дальше я и буду писать.
Поначалу я попытался пойти привычным способом «влоб», достал программатор китайский (на заглавной фотке), подключился по ISP, и скачал прошивку. Попытался её залить назад… Льётся, но верификацию не проходит. Битых несколько часов рыл интернет, чтобы понять, как же можно нормально скачать прошивку с Меги по ISP. Толком ничего вразумительного не нашёл, но зато понял, что прошивку можно скачать и залить обратно и без программатора. Об этом опыте я и напишу ниже. А вот о том, как скачивать прошивку не с Arduino платы, да так чтобы она потом назад заливалась я напишу как-нибудь в следующий раз, когда у меня появится плата, которую можно безбоязненно пускать и в огонь и в воду.
Ладно, к делу. Для начала нам нужна утилита Avrdude, она входит в поставку Arduino IDE и в моей версии лежала в папке «%appdata%\Arduino15\packages\arduino\tools\avrdude\6.0.1-arduino2\bin». Открываем папку, жмём на пустом месте SHIFT + правая кнопка мыши, а в меню выбираем «Открыть окно команд». Теперь приведу простую команду, которая проверяет, что контроллер читается.

avrdude.exe -p atmega2560 -c wiring -P COM5

Если всё в порядке, то вы должны увидеть примерно такой текст (см. скриншот).

Атрибуты команды:
-p atmega2560 — установка типа контроллера.
-c wiring — установка программатора. Это внутренний программатор в плате Arduino Mega 2560. Может я и не правильно выразился, но тот же атрибут использует IDE, когда заливает скомпилированный скетч.
-P COM5 — настройка порта, в который воткнут USB шнурок от Arduin»ы. Подглядеть можно из IDE.

avrdude. exe -p atmega2560 -c wiring -PCOM5 -b115200 -Uflash:r:»printer_firmware».hex:i

Если всё хорошо, ориентируемся на скриншот, прошивка сохраниться в файле «printer_firmware.hex» рядом с avrdude.exe.

Новые атрибуты команды:
-b115200 — скорость порта для программатора.

Uflash:r:»printer_firmware».hex:i — указание считать прошивку в файл «printer_firmware.hex».

Как прошить ардуино нано через ардуино уно

Про Ардуино и не только

Есть у меня пара идей для будущих публикаций, но в них будет использоваться программатор. Поэтому сегодня я расскажу о том, как превратить Ардуино в ISP программатор, для чего он нужен и как им пользоваться. А в качестве примера будет описана процедура прошивки загрузчика в Ардуино.

Что такое ISP?

ISP (In-System Programming) расшифровывается как внутрисхемное программирование. Это технология, которая позволяет программировать микроконтроллер, установленный в устройство. До появления этой технологии микроконтроллеры программировались перед установкой в устройство, а для их перепрограммирования требовалось их извлечение из устройства.

Существует 2 основных подхода внутрисхемного программирования:

  • С использованием программатора. В этом случае программатор работает напрямую с памятью микроконтроллера, самостоятельно размещая байты прошивки по нужным адресам. Микроконтроллер в этом процессе не участвует.
  • С использованием загрузчика. Загрузчик, он же бутлоадер (от английского bootloader) — это программа, записанная обычно в конце ПЗУ микроконтроллера, которая берет на себя функции программатора. При включении микроконтроллера управление сначала передается загрузчику. Он проверяет наличие определенных условий, сообщающих о необходимости перейти в режим программирования. Если условия не выполнены, то управление передается основной программе, в противном случае загрузчик принимает данные по заранее определенному интерфейсу и размещает их в ПЗУ. Таким образом микроконтроллер перепрограммирует сам себя.

Использование загрузчика существенно упрощает процесс перепрограммирования микроконтроллера, что особенно полезно при отладке. Но за удобство приходится платить. Во-первых, загрузчик занимает часть ПЗУ и для программы пользователя остается меньший объем памяти. Во-вторых, загрузчик не может изменить Fuse-биты и Lock-биты (в отличие от программаторов). Ну и, конечно, не обойтись без программатора, если вы хотите обновить бутлоадер или загрузить его в чистый МК. Таким образом существует ряд задач, которые могут быть выполнены только с использованием программатора. Если же у вас нет аппаратного программатора, то вместо него можно воспользоваться Ардуино, о чем и будет рассказано дальше.

Arduino as ISP. Прошивка загрузчика в Ардуино.

Итак, мы решили превратить Ардуино в программатор. Для примера попробуем прошить загрузчик в целевую плату Ардуино. Сначала подготовим плату, которую будем использовать в качестве программатора. Для этого загрузим в нее скетч ArduinoISP, его можно найти в стандартных примерах:

Теперь подсоединим к ней плату, в которую хотим прошить загрузчик. При прошивке используются линии SPI (Serial Peripheral Interface — последовательный периферийный интерфейс). Выводы MOSI, MISO и SCK обеих плат должны быть соединены, а вывод SS Ардуино-программатора подключается к выводу Reset целевой платы. И еще 2 провода нужны чтобы запитать целевую плату. Также может потребоваться предотвратить автоматическую перезагрузку платы-программатора, для этого между ее выводами Reset и GND нужно установить электролитический конденсатор на 10мкФ. Сначала можно попробовать без конденсатора, если же прошивка не начнется, то попробуйте добавить в схему конденсатор. По моим наблюдениям конденсатор нужен при использовании дешевых Ардуино-клонов (без контроллера ATmega8u2) в качестве программатора.

Если мы работаем с двумя платами Arduino Uno, то схема их подключения может выглядеть следующим образом:

Если используются не Uno, а другие платы Ардуино, то перед подключением программатора к целевой плате необходимо уточнить расположение на них выводов MOSI, MISO и SCK. Их расположение для различных плат приведено ниже в таблице. Как вы можете видеть, не на всех платах Ардуино линии SPI мультиплексированны с цифровыми выводами, поэтому для подключения к данному интерфейсу необходимо использовать разъем ICSP. Ниже показан пример подключения Uno в качестве программатора к плате Nano через ICSP разъем.

Плата АрдуиноMOSIMISOSCKУровень
Uno, Duemilanove11 или ICSP-412 или ICSP-113 или ICSP-3
Nano11 или ICSP-412 или ICSP-113 или ICSP-3
Pro Mini1112133.3В или 5В
Mega1280, Mega256051 или ICSP-450 или ICSP-152 или ICSP-3
LeonardoICSP-4ICSP-1ICSP-3
DueICSP-4ICSP-1ICSP-33.
ZeroICSP-4ICSP-1ICSP-33.3В
10111 или ICSP-412 или ICSP-113 или ICSP-33.3В
Подключение Uno в качестве программатора к плате Nano через ICSP

Обратите внимание на нумерацию выводов ICSP платы Nano: она начинается с правого нижнего угла. Поэтому на приведенной схеме Arduino Nano перевернута.

Теперь необходимо вернуться в Arduino IDE и изменить в ней параметры:

  1. В меню Инструменты > Плата выбираем вариант, соответствующий нашей целевой плате.
  2. В меню Инструменты > Программатор выбираем Arduino as ISP.

Резюмируя вышеописанное, выделим основные шаги для прошивки загрузчика с использованием Ардуино в качестве ISP программатора:

  • Запускаем Arduino IDE, открываем из примеров скетч ArduinoISP и загружаем его в плату Ардуино, которую будем использовать как программатор.
  • Подключаем к Ардуино-программатору целевую плату по приведенной схеме.
  • Меняем плату в Arduino IDE на целевую.
  • Выбираем в IDE программатор Arduino as ISP.
  • Записываем загрузчик в целевую плату командой из меню IDE.

Прошивка скетча с использованием Arduino as ISP

Еще один пример использования программатора — это загрузка скетча в целевую плату. Разумеется, это проще сделать привычным способом, подключив ее напрямую к компьютеру, но это может оказаться невозможным, например, при выходе из строя контроллера ATmega8u2/ATmega16u2 или преобразователя USB/UART. Если при этом основной микроконтроллер Ардуино остался рабочим, то мы можем прошить его, используя программатор. Для этого выполняем все шаги, описанные выше, но на последнем этапе вместо записи загрузчика необходимо:

Как прошить Arduino Pro Mini (от А до Я)

Приветствую Вас, читатели нашего ресурса. Сегодня мы поговорим об одном контроллере из серии Arduino, а именно об Arduino Pro Mini. Это маленький, компактный контроллер, имеющий все преимущества Arduino, но при этом очень компактный, можно сказать самый маленький из всех существующих Arduino контроллеров на данный момент. Многих так же привлекает и цена его Китайский копий, а стоят они от одного до двух долларов за штуку (местами и того меньше), что так же заставляет задуматься об его приобретении. Но существует и одна проблема, его не так-то уж и просто прошить, особенно Китайские копии, которые оснащают процессором Atmel ATmega168P, которыми некогда не оснащали официальные контроллеры Arduino Pro Mini и как следствие Arduino IDE отказывается их прошивать, сообщая о неправильной сигнатуре процессора.

Вот об этом мы сегодня и поговорим. Как прошить, что для этого нужно, ну и как заставить Arduino IDE работать с китайскими копиями.

Что для этого нужно?

Arduino Pro Mini очень компактный, а компактность требует жертв и жертва это — USB интерфейс который полностью выкосили в данном контроллере т.е. подключить Pro Mini к компьютеру напрямую у вас не получится и как следствие для этого понадобится либо специальный переходник USB в TTL или другой контроллер Arduino.

Далее мы разберем три способа как прошить Pro Mini и для всех трех способов нам что-то понадобиться:

  • Первый способ. Прошиваем через адаптер USB в TTL – нужен сам адаптер в количестве одной штуки.
  • Второй способ. Прошиваем через Arduino UNO – нужна Arduino UNO, но не простая, а в классическом исполнении, это та Arduino, в которой процессор выполнен в DIP корпусе и вставлен в черный разъем.
  • Третий способ. Прошиваем через SPI интерфейс – нужна любая Arduino: UNO, Nano, Mega, Leonardo – не важно, главное чтобы был USB разъем для подключения к ПК.
Первый способ. Прошиваем через адаптер USB в TTL

Первым и самым простым способом загрузить свой скетч в Arduino Pro Mini — это приобрести специальный адаптер USB в TTL или как его называют UART переходник. Как правило, этот переходник это и есть та часть, которую вырезали из Arduino Nano, превратив ее в Arduino Pro Mini. Стоимость подобных переходников копеечная, а выбор и того больше. Китайцы наштопали их столько, что глаза разбегаться какой из них выбрать. При этом цена сего девайса не более одного вечно зеленого. После того как вы соедините Pro Mini и UART переходник проводами или шлейфом, остаётся только воткнуть его (переходник) в ПК, установить драйвер (не для всех переходников они требуются) и на этом собственно все. Ваш ПК определит переходник как очередной COM-порт, который появляется при подключении любой Arduino к ПК. Выбираете его, плату, с которой будете работать (Arduino Pro Mini) и спокойно загружаете свой скетч.

Единственным нюансом в данных переходниках, является наличие или отсутствие контактов RST или DTR. Рекомендую покупать переходники, на которых эти контакты есть. Они значительно упрощают жизнь и делают процесс прошивки беспроблемным. Если же вы купили уже переходник, на котором подобных контактов нет, то при каждой загрузке скетча в Arduino вам придется нажимать на кнопку Reset, что не всегда получается сделать вовремя, и это вносит свои неудобства.

Подключение переходник вы можете посмотреть по таблице ниже:

USB в TTL (UART)Arduino Pro Mini
RXRX
TXTX
GNDGND
5VVCC
RST или DTR или GRNRST или DTR
Второй способ.
Прошиваем через Arduino UNO

Для этого способа нам понадобиться классическая Arduino UNO. Классическая эта та, в которой корпус микросхемы выполнен в DIP корпусе и вставлен в специальный разъем. Вот эту микросхему нам надо аккуратно поддеть отверткой. Тут важно не сломать процессор, поддевайте аккуратно, не погнув ноги.

Arduino UNO. Процессор выполнен в DIP корпусе.
Аккуратно поддеваем и вытаскиваем процессор отверткой.

После того как мы вытащили процессор из Arduino UNO мы по сути получили тот самый переходник USB в TTL, осталось только соединить проводами наш новый переходник и Arduino Pro Mini по следующей схеме:

Arduino UNO (без процессора)Arduino Pro Mini
RXRX
TXTX
GNDGND
5VVCC
RSTRST

После того как вы соединили две Arduino воедино, можно приступать к прошивке Arduino Pro Mini. Подключаем Arduino UNO по USB к ПК. Выбираем в настройках Arduino IDE COM-порт, указываем, что мы теперь работаем не с Arduino UNO, а с Arduino Pro Mini и все, заливаем наши скетчи. Способ довольно интересный, если вы не боитесь испортить Arduino и рядом не оказалось переходника USB в TTL.

Третий способ. Прошиваем через SPI интерфейс

Третьим и самым неудобным способом загрузить свой скетч в Arduino Pro Mini это прошить его при помощи ICSP интерфейса. Данный интерфейс присутствует на большинстве плат Arduino. Основные контакты данного интерфейса выведены на порты с 10 по 13, а так же выведены отдельно в виде шести контактной колодки с подписью ICSP. Располагается колодка, как правило, в центральной правой части Arduino.

Прошивка Arduino Pro Mini в этом случае делиться на два этапа:

  1. Прошивка платы Arduino как ISP программатора.
  2. Настройка Arduino IDE и загрузка скетча в Arduino Pro Mini.

Первым делом мы должны подготовить наш будущий программатор. Возьмем для примера всю туже Arduino UNO. Далее пошагово:

  1. Запускаем Arduino IDE.
  2. Файл — Примеры — 11.ArduinoISP — ArduinoISP.
  3. Инструменты — Плата — Arduino UNO.
  4. Инструменты — Порт — Выбираем COM-порт.
  5. Компилируем и заливаешь в Arduino UNO.

Далее нам необходимо соединить две Arduino проводами по следующей схеме:

Arduino UNO (ISP)Arduino Pro Mini
5VVCC
GNDGND
10RST
11 (MOSI)11 (MOSI)
12 (MISO)12 (MISO)
13 (SCK)13 (SCK)

Теперь опять открываем Arduino IDE. Открываем в ней скетч который вы хотите залить в Pro Mini и выполняете следующие действия:

2. Инструменты — Плата — Arduino Pro Or Pro Mini
3. Инструменты — Процессор — ATmega168 (5V, 16 MHz)
4. Инструменты — Порт — Выбираете порт
5. Инструменты — Программатор — Arduino as ISP
6. Скетч — Загрузить через программатор

Как видите загружать скетч в этом режиме надо через специальное меню «Загрузить через программатор», а не через кнопку «Загрузить» на главной форме Arduino IDE. В этом и связано все неудобство. Если вы нажмете кнопку «Загрузить» как это делаете обычно, то вы зальете скетч в Arduino UNO, а не Arduino Pro Mini, что затрет там скетч программатора. Так же в этом режиме недоступен класс Serial, то есть отлаживать свой скетч обмениваясь сообщениями по COM-порту у вас так же не получится. Ну и еще одна ложка дегтя в том, что после данной перепрошивки, в большинстве случаев, перепрошить Arduino Pro Mini через переходник у вас так же больше не получиться. Исправляется это заливкой нового bootloader-а через меню «Инструменты» — «Записать Загрузчик».

Добавляем китайский Pro Mini в Arduino IDE

Как я уже говорил в данной статье, Китайские клоны порой оснащают процессорами которыми не оснащали официальные версии Arduino Pro Mini и как следствие при прошивке их вы можете увидеть следующую или подобную ошибку.

Исправляется это легко:

  • Для начала необходимо открыть папку в которой расположена Arduino IDE.
  • Затем переходим в следующую папку «Папка с Arduino IDE\hardware\arduino\avr\».
  • Ищем там файл «boards.txt» и открываем его в текстовом редакторе.
  • Ищем в файле следующую строку «pro.menu.cpu.16MHzatmega168.build.mcu=atmega168».
  • И заменяем ее на «pro.menu.cpu.16MHzatmega168.build.mcu=atmega168p».
  • Перезапускаем Arduino IDE и на этом все.
  • Если у вас к примеру 328 процессор то делаем все так же, только ищем строку с цифрами 328.
Заключение

В данной статье я привел аж три варианта загрузки скетчей в Arduino Pro Mini. Лично я использую второй. Мне он больше нравиться.

Что будете использовать вы — выбирать вам. Оставьте в комментарии какой вариант вы предпочитаете.

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

Сегодня разговор будет про arduino bootloader и как его записать используя Arduino ide. Есть несколько способов прошить загрузчик в Ардуино. Я покажу самый простой с помощью другой платы Ардуино. Для того чтобы прошить загрузчик bootloader в arduino надо соединить две платы как на схеме. Сделать одну ардуино программатором а вторую подготовить для записи загрузчика bootloader. Так как у меня arduino nano old bootloader, поэтому такой загрузчик я и буду устанавливать. Если у вас bootloader arduino uno, то вы можете установить его.
Снимая видео про HEX файлы я случайно удалил bootloader (загрузчик) микроконтроллера. И Ардуино перестала прошиваться. Вот и тема для следующего видео неожиданно появилась. Рано или поздно, но такая проблема появится у каждого. Так, что лучше знать как с этим справиться. Сегодня я расскажу как можно загрузить bootloader даже если в Ардуино ничего нельзя загрузить.
Есть несколько способов. Я сегодня остановлюсь только на одном. Прошивка с помощью другой платы Ардуино. У меня в наличии имелась ещё одна Arduino Nano вот её загрузчик я и буду прошивать на убитую Ардуино. Кстати тоже Nano.
Сначала посмотрим что с моей не рабочей платой. При попытке загрузить скетч Blink вроде все проходит без ошибок. Плата вроде как прошивается. А вот при попытке загрузить что-нибудь другое, другой пример, появляется вот такая вот ошибка. Из этого следует, что проблема с загрузчиком. Пробовал при загрузке нажимать resset, говорят иногда помогает. Но мне не помогло. Так, что было принято решение перезаписать загрузчик микроконтроллера.

Заходим в Диспетчер устройств. Убеждаемся, что у нас ничего не слетело. Драйвера стоят правильно, плата определилась и com port показан. Ещё раз пробуем для полной уверенности. Если чуда не случилось, то переходим к прошивке.

Использование Arduino в качестве программатора
Берём хорошую плату Ардуино. Ту у которой рабочий загрузчик. Будем использовать её вместо программатора. Открываем Arduino IDE. Проверяем, что все установлено верно. Плата, загрузчик и порт.
Идём в примеры и выбираем ArduinoISP. Этот пример идёт по умолчанию со средой разработки. Прошиваем Arduino. И с этого момента эта плата становится полноценным программатором. Скетч довольно большой и что он делает я не изучал. Главное, что он выполняет свою роль.

Теперь надо соединить обе платы. Это совсем просто. Посмотрите на схему. Если у вас УНО или НАНО,
Подключаем так. 13 к 13, 12 к 12, 11 к 11. А вот дальше небольшое различие. 10 пин платы загрузчика соединяем с Resset платы без загрузчика. И соединяем +5 вольт и Земли на обоих платах.

Если у Вас Mega, то смотрите в документацию к Меге.
Подключаем правильную Ардуину к компьютеру USB шнуром. Ещё раз проверяем, чтобы всё было правильно установлено. Плата, загрузчик, порт. После этого в пункте меню Программатор выбираем Arduino as ISP и нажимаем Записать згрузчик. Иногда с первого раза загрузчик не устанавливается. Просто нажимаем ещё раз.

Теперь проверяем, что мы наделали. Разъединяем обе платы. Подключаем USB шнурком ту что была с битым загрузчиком. Заходим в меню Программатор и меняем вот на это значение.
Теперь загружаем какой-нибудь пример.
Например? выведем значение с аналогового порта. А для чистоты эксперимента, напишем что-нибудь своё.
Прошиваем и смотрим что там в com port.
Видим, что наша Ардуина прошилась, и выводит то что нужно.
Значит мы починили загрузчик.

Обновление прошивки программатора USBASP с помощью Arduino UNO

Обновление прошивки программатора USBASP с помощью Arduino UNO

2020-04-11 16:43:32 — Evgeniy Shumilov

  Когда-то давно я приобрёл китайскую копию программатора USBASP. При попытке перепрошивки микроконтроллеров через ISP я, как и многие другие, получал ошибку следующего вида:

avrdude: warning: cannot set sck period, please check for usbasp firmware update

  Инструкции, которые я обнаружил, были написаны с рассчётом на использование в Windows, а так же в некоторых статьях я заметил ошибки и несоответствия (например, неверно указан тип программатора для avrdude, из-за чего какое-то время пришлось побуксовать), так что решил написать для себя короткую статью, убрав всё лишнее.


  Для начала нам нужен avrdude. Благо, в отличие от windows, нам не нужно искать, качать и ставить драйвера и всё прочее. Если уже установлена среда arduino, то avrdude можно найти по следующему относительному пути:

arduino-X.X.X/hardware/tools/avr/bin/avrdude

  Где X.X.X — версия среды. Если же среды arduino на машине нет, то на debian-based системах установить avrdude можно из репозитория:

sudo apt-get install avrdude

  В этом случае конфигурационный файл будет расположен тут: /etc/avrdude.conf, но среда нам понадобится, чтобы сменить прошивку на нашей текущей ардуине, с помощью которой будет прошиваться программатор.

  Далее необходимо скачать самую «свежую» прошивку для USBASP: 

wget https://www.fischl.de/usbasp/usbasp.2011-05-28.tar.gz
tar xvzf usbasp.2011-05-28.tar.gz

  Да, самой свежей прошивке на текущий момент чуть менее девяти лет. Внутри архива нас интересует файл bin/firmware/usbasp.atmega8.2011-05-28.hex, его мы и будем прошивать.

  Далее на плате программатора нужно замкнуть джампер JP1 (на фото установлен зелёный джампер), если его нет, нужно запаять или замкнуть пинцетом на время прошивки.

  Затем соединяем проводами соответствующие пины Arduino и программатора:

  Схему честно стырил из другой статьи. Теперь открываем среду Arduino, выставляем нужную плату (в нашем случае Arduino Genuino/UNO) и порт (в нашем случае /dev/ttyUSB0). Если вы не знаете, какой алиас получил интерфейс, среда сама должна подсказать. В любом случае, подсказку можно найти тут:

$ ls /sys/bus/usb-serial/devices/
ttyUSB0

  Прошиваем скетч из примеров с названием ArduinoISP, на этом окно можно закрывать. В терминале переходим в директорию с avrdude внутри директории с ardunio и сперва проверим, что микроконтроллер нашего программатора виден через Arduino Uno по ISP:

$ ./avrdude -C ../etc/avrdude.conf -p atmega8 -c avrisp -b 19200 -P /dev/ttyUSB0 -v
avrdude: Version 6.3-20171130
         Copyright (c) 2000-2005 Brian Dean, http://www. bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch
         System wide configuration file is "../etc/avrdude.conf"
         User configuration file is "/home/corpse/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping
         Using Port                    : /dev/ttyUSB0
         Using Programmer              : avrisp
         Overriding Baud Rate          : 19200
         AVR Part                      : ATmega8
         Chip Erase delay              : 10000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom         4    20   128    0 no        512    4      0  9000  9000 0xff 0xff
           flash         33    10    64    0 yes      8192   64    128  4500  4500 0xff 0x00
           lfuse          0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
           efuse          0     0     0    0 no          0    0      0     0     0 0x00 0x00
           lock           0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
           calibration    0     0     0    0 no          4    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
         Programmer Type : STK500
         Description     : Atmel AVR ISP
         Hardware Version: 2
         Firmware Version: 1. 18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e9307 (probably m8)
avrdude: safemode: lfuse reads as EF
avrdude: safemode: hfuse reads as D9
avrdude: safemode: Fuse reading not support by programmer.
              Safemode disabled.
avrdude: safemode: lfuse reads as EF
avrdude: safemode: hfuse reads as D9
avrdude: safemode: lfuse reads as EF
avrdude: safemode: hfuse reads as D9
avrdude: safemode: Sorry, reading back fuses was unreliable. I have given up and exited programming mode
avrdude done.  Thank you.

  Если чип программатора отличается, проблема в соединении или имеются иные проблемы, мы увидим ворнинги следующего вида или им подобные:

avrdude: stk500_initialize(): (b) protocol error, expect=0x10, resp=0x01                    
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check. 
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x10    

  В этом случае нужно перепроверить всё ещё раз, особенно подключение. Далее имеет смысл сохранить текущую прошивку в файл на всякий случай (вместо /path/to/backup укажите свой путь):

$ ./avrdude -C ../etc/avrdude.conf -p atmega8 -c avrisp -b 19200 -P /dev/ttyUSB0 -U flash:r:/path/to/backup/original_firmware.bin:r         
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e9307 (probably m8)
avrdude: reading flash memory:
Reading | ################################################## | 100% 5.74s
avrdude: writing output file "original_firmware.bin"
avrdude: safemode: Sorry, reading back fuses was unreliable. I have given up and exited programming mode
avrdude done.  Thank you.  

  Прошиваем «свежую» прошивку девятилетней давности:

$ ./avrdude -C ../etc/avrdude.conf -p m8 -c avrisp -b 19200 -P /dev/ttyUSB0 -U flash:w:/path/to/firmwares/usbasp/usbasp. 2011-05-28/bin/firmware/usbasp.atmega8.2011-05-28.hex
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e9307 (probably m8)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "/path/to/firmwares/usbasp/usbasp.2011-05-28/bin/firmware/usbasp.atmega8.2011-05-28.hex"
avrdude: input file /path/to/firmwares/usbasp/usbasp.2011-05-28/bin/firmware/usbasp.atmega8.2011-05-28.hex auto detected as Intel Hex
avrdude: writing flash (4700 bytes):
Writing | ################################################## | 100% 6.78s
avrdude: 4700 bytes of flash written
avrdude: verifying flash memory against /path/to/firmwares/usbasp/usbasp.2011-05-28/bin/firmware/usbasp.atmega8.2011-05-28.hex:
avrdude: load data flash data from input file /path/to/firmwares/usbasp/usbasp. 2011-05-28/bin/firmware/usbasp.atmega8.2011-05-28.hex:
avrdude: input file /path/to/firmwares/usbasp/usbasp.2011-05-28/bin/firmware/usbasp.atmega8.2011-05-28.hex auto detected as Intel Hex
avrdude: input file /path/to/firmwares/usbasp/usbasp.2011-05-28/bin/firmware/usbasp.atmega8.2011-05-28.hex contains 4700 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 3.31s
avrdude: verifying ...
avrdude: 4700 bytes of flash verified
avrdude: safemode: Sorry, reading back fuses was unreliable. I have given up and exited programming mode
avrdude done.  Thank you.

Собственно, вот и всё.

Теги: avr

Please enable JavaScript to view the comments powered by Disqus.comments powered by Disqus

Обновление прошивки порта программирования Arduino Due 16U2 | Документация Arduino

В этом руководстве вы обновите прошивку ATmega16U2, используя Arduino UNO или Mega в качестве AVR-ISP (внутрисистемного программатора).

АВТОР: Arduino

ПОСЛЕДНЯЯ РЕДАКЦИЯ:

05.10.2022, 13:00

Введение

За портом для программирования Arduino Due находится микроконтроллер AVR (ATmega16U2), который преобразует сигналы USB, поступающие с компьютера. к первому последовательному порту SAM3X. В этом руководстве вы обновите прошивку ATmega16U2, используя Arduino UNO или Mega в качестве AVR-ISP (внутрисистемного программатора).

Инструкции

Чтобы использовать плату Arduino для записи загрузчика на AVR, вам необходимо выполнить несколько простых шагов.

1. Откройте скетч ArduinoISP Examples ) в Arduino IDE.

2. Выберите элементы в меню Tools > Board и Serial Port , которые соответствуют плате, которую вы используете в качестве программатора (не программируемой плате).

3. Загрузите скетч ArduinoISP.

4. Подключите конденсатор емкостью 10 мкФ (микрофарад) между выводами GND и RESET.

5. Connect the following pins from the Arduino UNO (or Mega) to the ATmega16U2 ICSP connector:

UNO Mega 16U2 ICSP
SCK 13 52 3
MISO 12 50 1
MOSI 11 51 4
Reset 10 10 5
GND GND GND 6
+5V 5V 5V 2

Контакты платы Due

Плата Arduino Due получает питание от платы Arduino UNO, установленной в качестве программатора AVR. Если вам нужны дополнительные сведения о соединениях между UNO/Mega и разъемом ICSP целевого устройства, ознакомьтесь с этим руководством: Arduino as AVR-ISP.

Обновите прошивку с помощью Avrdude

Чтобы обновить прошивку, вам нужно использовать инструмент командной строки под названием «avrdude», который уже включен в папку вашей IDE. Вы найдете его по следующему пути:

 /path_to_arduino/arduino.1.5.x/hardware/tools 

Прошивка для загрузки на 16U2 имеет двоичный формат с расширением .hex.

Linux и Mac

Первое, что нужно сделать, это перейти в каталог, содержащий инструменты avrdude, поставляемые с IDE. Для этого откройте окно терминала и введите:

 cd /home/USER/arduino-1.5.2/hardware/tools 

путь к каталогу Arduino зависит от того, где вы его разместили. Затем вы можете запустить инструмент avrdude, указав все параметры, необходимые для прошивки. Вот полная строка:

 

1/home/USER/arduino-1.5.2/hardware/tools$ . /avrdude -C avrdude.conf -c arduino -P /dev/ttyACM0 -b 19200 -p m16u2 -vvv -U flash:w:/home/USER/newFirmware/16u2.hex:i

Windows

Первое, что нужно сделать, это перейти в каталог, содержащий инструменты avrdude, поставляемые с IDE. Для этого откройте окно командной строки, нажав «Пуск» и набрав 9.0003

 cmd 

затем нажмите Enter.

После открытия командной строки должна отобразиться следующая строка:

 C:\Users\USER 

затем введите следующую команду для перемещения в папку Arduino (это зависит от того, где вы ее разместили):

 cd arduino- 1.5.2\оборудование\инструменты 

.

путь к каталогу Arduino зависит от того, где вы его разместили. Затем вы можете запустить инструмент avrdude, указав все параметры, необходимые для прошивки. Вот полная строка:

 

1arduino-1.5.2/hardware/tool> avrdude.exe -C avrdude. conf -c arduino -P /dev/ttyACM0 -b 19200 -p m16u2 -vvv -U flash:w:/home/USER/newFirmware /16U2.Hex:I

AVRDUDE Параметр Объяснения

. хочу запрограммировать
 -C AVRDUDE.CONF 
 -C AVRDUDE.CONF 
 -C AVRDUDE.CONF 
 -C AVRDUDE.CONF 
 -C AVRDUDE.CONF 
 -C AVRDUDE.CONF 
 -C. arduino 
укажите программатор который вы хотите использовать
 -P /DEV /TTYACM0 
Порт USB, где программист прикреплен
 -vvv 
включить подробный вывод w) файл .hex во флэш-памяти

Tutorial Toolbox

Due

Arduino IDE 1

Внесите свой вклад в Arduino

Присоединяйтесь к сообществу и предлагайте улучшения в этой статье через GitHub.
Обязательно ознакомьтесь с политикой участия, прежде чем делать запрос на включение. ПОДДЕРЖИТЕ

Что-то упустили?

Загляните в наш магазин и купите то, что вам нужно, чтобы следовать этому руководству.
ПОСЕТИТЕ НАШ МАГАЗИН

Предложите изменения

Содержимое docs.arduino.cc доступно через общедоступный репозиторий GitHub. Вы можете прочитать больше о том, как внести свой вклад в политику взносов.
РЕДАКТИРОВАТЬ ЭТУ СТРАНИЦУ

OTA Обновление прошивки на Arduino. Удаленная загрузка скетча в Arduino | by Looi Kian Seong

Удаленная загрузка эскиза в Arduino

Беспроводное (OTA) обновление прошивки не должно быть чем-то необычным в наши дни, особенно для тех, у кого есть смартфон. Например, последнюю версию программного обеспечения iOS можно установить на iPhone без подключения к компьютеру с iTunes. Все, что нужно, это просто подключение к Интернету, чтобы устройство могло загрузить и установить новое программное обеспечение.

ОТА-обновление прошивки применяется не только в индустрии смартфонов, но и во встроенных системах. Некоторые встраиваемые системы развернуты в труднодоступных местах для операторов или разработчиков, поэтому для этих систем важно обновление встроенного программного обеспечения OTA. Одним из известных примеров встроенной системы, в которой использовалось обновление прошивки OTA, является NASA Mars Curiosity Rover , который находится далеко от Земли!

Как работает обновление прошивки на Arduino Uno?

Arduino Uno поставляется с загрузчиком (известным как Optiboot ), который реализует протокол STK500 для получения скомпилированных двоичных файлов программы через UART.

Объяснение Optiboot в обновлении прошивки Arduino

  1. При сбросе:
    Перезагрузите Arduino из загрузчика и проверьте причину сброса. Если это был внутренний сброс (например, сброс по сторожевому таймеру), то он напрямую переходит к основной прикладной программе. Однако, если это был внешний сброс, он установит сторожевой таймер, который истечет через 1 секунду.
  2. Прослушивание порта UART:
    Если это был внешний сброс, загрузчик запустит бесконечный цикл для прослушивания порта UART после установки сторожевого таймера. Если в течение 1 секунды не получена действительная команда , предназначенная для протокола STK500, сторожевой таймер истечет время ожидания и вызовет внутренний сброс . Однако при получении любой действительной команды с кодом счетчик сторожевого таймера будет сброшен на , чтобы избежать ненужного сброса системы . В соответствии с указаниями по применению коммуникационного протокола STK500 формат команды следующий:
  Список допустимых и полезных кодов команд для Optiboot:  
1. STK_GET_SYNC: - 0x30
2. STK_ENTER_PROGMODE: - 0x50
3. STK_LEAVE_PROGMODE: - 0x51
4. STK_LOAD_ADDRESS: - 0x55
5. STK_PROG_PAGE: - 0x64
6. 6. 6.0020
1. STK_INSYNC: - 0x14
2. STK_OK: - 0x10

Алгоритм Optiboot при получении скомпилированных бинарных файлов:

  1. Отправка , если он синхронизирован с программатором.
    *Примечание. Прочитав исходный код Optiboot, я обнаружил, что этот шаг не является необходимым, так как для этой команды нет специальной проверки условий. Однако его можно использовать для проверки того, синхронизирована ли Arduino с программатором или нет. В качестве альтернативы, отправив также может проверить, синхронизирован он или нет.
  2. Если Arduino синхронизирована с программатором, программатор может отправить <младший байт адреса> <старший байт адреса> . Эта команда предназначена для загрузки начального адреса флэш-памяти, которая будет заполнена байтами программных двоичных кодов, которые будут отправлены позже.
    * младший байт адреса = адрес и 0xFF
    * старший байт адреса = адрес >> 8
    ** адрес начинается с 0
  3. Если получено , программатор может отправить <Младший байт длины> <Тип назначения> <байты программы указанной длины> .
    * Длина указывает количество байтов двоичных файлов программы, которые должны быть записаны во флэш-память.
    младший байт длины = длина и 0xFF
    старший байт длины = длина >> 8
    * <Тип назначения> указывает место (eeprom [‘E’] или флэш-память [по умолчанию]), в которое должны быть записаны программные коды.
  4. Проверить наличие ответа. Если получено , обновите адрес := адрес + (длина / 2) , затем продолжите цикл с шага 2, пока все двоичные файлы программы не будут отправлены и записаны во флэш-память.
    * Так как адрес указатель слова , поэтому он обновляется на половину длины (байт).
  5. После отправки всех двоичных файлов программы программист отправляет для выхода из режима программирования.

Обновление встроенного ПО на Arduino Uno через ESP8266

Рис. 1. Подключение Arduino Uno к Espresso Lite V2.0 (ESP8266).

Arduino Uno подключен к модулю Wi-Fi, чтобы включить обновление прошивки OTA. В этом проекте используется WiFi-модуль ESP8266. Разработана простая библиотека ESP8266 для удаленного взаимодействия с подключенным Arduino Uno. Эта библиотека обеспечивает функциональность обновления встроенного ПО OTA для Arduino, реализуя протокол STK500 (как описано выше) для записи скомпилированных двоичных файлов в Arduino. Кроме того, в этой библиотеке также включено ведение журнала удаленных отладочных сообщений.

На хост-компьютере также разработан графический интерфейс пользователя (GUI), помогающий процессу удаленного взаимодействия с подключенным Arduino.

Процесс удаленного взаимодействия осуществляется по протоколу MQTT. Таким образом, модуль Wi-Fi и хост-компьютер должны подключаться к брокеру MQTT для связи. Библиотека, используемая для установления соединения MQTT с модулем WiFi, — это PubSubClient от knolleary .

GitHub Ссылка на полный проект: https://github.com/JayLooi/RemoteArduino

Демонстрационное видео

Справочные материалы

  1. https://www.wired.com/2012/08/nasa-patch/
  2. «AVR061: Протокол связи STK500» получено с http://ww1.microchip.com/downloads /en/AppNotes/doc2525.pdf
  3. https://github.com/arduino/ArduinoCore-avr/tree/master/bootloaders/optiboot
  4. https://github.com/knolleary/pubsubclient

Загрузка загрузчика Arduino на новый чип микроконтроллера ATMEL

Ваша инженерная проблема — наша забота

Эта статья написана как руководство по загрузке загрузчика или микропрограммы Arduino на новую микросхему микроконтроллера ATMEL.

Когда вы впервые покупаете законный чип ATMEL ATMEGA16U2, он фактически загружается с прошивкой DFU по умолчанию. Если вы не приобрели микроконтроллер из законного источника, внутри может не быть предустановленной прошивки. В этом случае загрузить прошивку загрузчика можно только методом программатора ATMEL ICSP.

Если вы построили базовую схему USB с помощью микроконтроллера ATMEL и подключили ее к операционной системе Windows вашего компьютера (например, Win7), вы должны увидеть имя USB-устройства «ATmega16U2» в папке libusb-win32 devices в Win7. Диспетчер устройств.

Базовая схема USB для ATMEGA16U2

Нажмите, чтобы увеличить базовую схему USB ATMEGA16U2.

Используя программное обеспечение ATMEL FLIP, вы сможете загрузить прошивку или загрузчик, используя загрузчик ATMEL DFU по умолчанию. Вы можете загрузить это программное обеспечение FLIP с веб-сайта ATMEL. Или вы можете скачать здесь,

  • JRE — установщик Flip — 3.4.7.112.exe, (21 МБ, обновлено в августе 2012 г.), FLIP 3.4.7 для Windows (включая среду выполнения Java)

Загрузка последовательной прошивки Arduino USB через FLIP

  1. Подключите схему USB к компьютеру. Вы должны увидеть устройство ATmega16U2 в диспетчере устройств Win7. Это прошивка DFU по умолчанию, загруженная в микросхему микроконтроллера ATMEGA16U2. Он также известен как режим DFU.
  2. Установите и запустите программное обеспечение ATMEL FLIP.
  3. Выберите микроконтроллер. Нажмите «Устройство»> «Выбрать…» или используйте сочетание клавиш +S. Выберите микроконтроллер «ATMEGA16U2».
  4. Выберите связь. Нажмите «Настройки»> «Связь»> «USB» или используйте сочетание клавиш +U.
  5. Может появиться диалоговое окно. Затем нажмите открыть.
  6. Загрузите эту серийную прошивку USB для ATMEGA16U2. Для ATMEGA8U2 вы можете скачать серийную прошивку USB здесь.
    • Arduino-usbserial-atmega16u2-Uno-Rev3.hex (11 Кбайт, для ATMEGA16U2)
    • Arduino-usbserial-uno.hex (11 Кбайт, для ATMEGA8U2)
  7. Загрузите прошивку в программное обеспечение FLIP. Нажмите «Файл»> «Загрузить HEX-файл…»> «Arduino-usbserial-atmega16u2-Uno-Rev3.hex»
  8. Убедитесь, что флажок установлен. «Стереть», «Программировать» и «Проверить»
  9. Нажмите «Выполнить».
  10. После загрузки микропрограммы вы можете отключить USB-соединение и снова подключить его к компьютеру. В диспетчере устройств вы должны увидеть «Arduino Uno» в разделе «Порты (COM и LPT)» вместо предыдущего устройства «ATMEGA16U2».
  11. ATMEGA16U2 теперь загружен последовательной прошивкой USB, которая используется в типичной плате Arduino UNO. Ваш микроконтроллер ATMEGA16U2 теперь представляет собой преобразователь последовательного интерфейса USB (CDC) или USB в последовательный порт. Та же микросхема преобразователя, что и в плате Arduino UNO.

Загрузка загрузчика DFU в новый USB-микроконтроллер ATMEL

Для микроконтроллера ATMEL, в который не предварительно загружена прошивка DFU по умолчанию, вы можете загрузить следующий шестнадцатеричный файл DFU для соответствующего чипа микроконтроллера ATMEL.

  • Прошивка DFU *.hex для ATMEGA8U2
  • Прошивка DFU *.hex для ATMEGA16U2
  • Прошивка DFU *.hex для ATMEGA16U4
  • Прошивка DFU *.hex для ATMEGA32U4

Поскольку у микроконтроллера нет загрузчика, единственный способ загрузить этот DFU в микроконтроллер через программатор ATMEL ICSP. Инструкцию по загрузке прошивки с помощью программатора ICSP можно найти здесь.

Загрузка загрузчика Arduino в микроконтроллер ATMEGA328P

Для микроконтроллера ATMEL ATMEGA328P, используемого в Arduino UNO, загрузчик Arduino можно загрузить с помощью программатора Arduino ICSP с программным обеспечением Arduino IDE (интегрированная среда разработки).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *