Как прошить ардуино нано через usb
Перейти к содержимому

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

  • автор:

Первая прошивка, ошибки, FAQ

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

1. Плата подключается к компьютеру по USB, на ней должны замигать светодиоды. Если этого не произошло:

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

2. Компьютер издаст характерный сигнал подключения нового оборудования, а при первом подключении появится окошко “Установка нового оборудования”. Если этого не произошло:

  • См. предыдущий список неисправностей.
  • Кабель должен быть data-кабелем, а не “зарядным”.
  • Кабель желательно втыкать напрямую в компьютер, а не через USB-хаб.
  • Не установлены драйверы для Arduino.

3. В списке портов (Arduino IDE/Инструменты/Порт) появится новый порт, отличный от COM1. Если этого не произошло:

  • См. предыдущий список неисправностей.
  • Некорректно установлен драйвер CH341.
  • Если список портов вообще неактивен – драйвер Arduino установлен некорректно, вернитесь к установке
  • Возникла системная ошибка, обратитесь к знакомому компьютерщику

4. Выбираем свою плату. Если это Arduino Nano, выбираем в Инструменты\Плата\Arduino Nano. Если другая – выбираем другую. Нажимаем стрелочку в левом верхнем углу (загрузить прошивку). Да, загружаем пустую прошивку.

  • [Для Arduino Nano] В микроконтроллер китайских нанок зашит “старый” загрузчик, поэтому выбираем Инструменты\Процессор\ATmega328p (Old Bootloader). Некоторые китайцы зашивают в свои платы новый загрузчик, поэтому если прошивка не загрузилась (загрузка идёт минуту и вылетает ошибка avrdude: stk500_getsync()) – попробуйте сменить пункт Процессор на ATmega328p.

Если появилась надпись “Загрузка завершена” – значит всё в порядке и можно прошивать другие скетчи. В любом случае на вашем пути встретятся другие два варианта событий, происходящих после нажатия на кнопку “Загрузка” – это ошибка компиляции и ошибка загрузки. Вот их давайте рассмотрим более подробно.

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

Возникает на этапе компиляции прошивки. Ошибки компиляции вызваны проблемами в коде прошивки.

  • В некоторых случаях ошибка возникает при наличии кириллицы (русских букв) в пути к папке со скетчем. Решение: завести для скетчей отдельную папочку в корне диска с английским названием.
  • В чёрном окошке в самом низу Arduino IDE можно прочитать полный текстошибки и понять, куда копать.
  • В скачанных с интернета готовых скетчах часто возникает ошибка с описанием название_файла.h no such file or directory. Это означает, что в скетче используется библиотека , и нужно положить её в Program Files/Arduino/libraries/. Ко всем моим проектам всегда идёт папочка с использованными библиотеками, которые нужно установить. Также библиотеки всегда можно поискать в гугле по название файла.
  • При использовании каких-то особых библиотек, методов или функций, ошибкой может стать неправильно выбранная плата в “Инструменты/плата“. Пример: прошивки с библиотекой Mouse.h или Keyboard.h компилируются только для Leonardo и Micro.
  • Если прошивку пишете вы, то любые синтаксические ошибки в коде будут подсвечены, а снизу в чёрном окошке можно прочитать более детальное описание, в чём собственно косяк. Обычно указывается строка, в которой сделана ошибка, также эта строка подсвечивается красным.
  • Иногда причиной ошибки бывает слишком старая, или слишком новая версия Arduino IDE. Читайте комментарии разработчика скетча
  • Ошибка недостаточно свободного места возникает по вполне понятным причинам. Возможно поможет урок по оптимизации кода.

Частые ошибки в коде, приводящие к ошибке компиляции

  • expected ‘,’ or ‘;’ – пропущена запятая или точка запятой на предыдущей строке
  • stray ‘\320’ in program – русские символы в коде
  • expected unqualified-id before numeric constant – имя переменной не может начинаться с цифры
  • … was not declared in this scope – переменная или функция используется, но не объявлена. Компилятор не может её найти
  • redefinition of … – повторное объявление функции или переменной
  • storage size of … isn’t known – массив задан без указания размера

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

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

  • USB кабель, которым подключается Arduino, должен быть Data-кабелем, а не кабелем только для зарядки. Нужным нам кабелем подключаются к компьютеру плееры и смартфоны.
  • Причиной ошибки загрузки являются не установленные/криво установленные драйвера CH340, если у вас китайская NANO.
  • Также будет ошибка avrdude: ser_open(): can’t open device, если не выбран COM порт, к которому подключена Arduino. Если кроме COM1 других портов нет – читай два пункта выше, либо попробуй другой USB порт, или вообще другой компьютер.
  • Большинство проблем при загрузке, вызванных “зависанием” ардуины или загрузчика, лечатся полным отключением ардуины от питания. Потом вставляем USB и по новой прошиваем.
  • Причиной ошибки загрузки может быть неправильно выбранная плата в “Инструменты/Плата”, а также неправильно выбранный процессор в “Инструменты/Процессор”. Также в свежих версиях IDE нужно выбирать ATmega328P (Old Bootloader) для китайских плат NANO.
  • Если у вас открыт монитор COM порта в другом окне Arduino IDE или плата общается через СОМ порт с другой программой (Ambibox, HWmonitor, SerialPortPlotter и т.д.), то вы получите ошибку загрузки, потому что порт занят. Отключитесь от порта или закройте другие окна и программы.
  • Если у вас задействованы пины RX или TX – отключите от них всё! По этим пинам Arduino общается с компьютером, в том числе для загрузки прошивки.
  • Если в описании ошибки встречается bootloader is not responding и not in sync, а все предыдущие пункты этого списка проверены – с вероятностью 95% сдох загрузчик. Второй неприятный исход – загрузчик “слетел”, и его можно прошить заново.

Предупреждения

Помимо ошибок, по причине которых проект вообще не загрузится в плату и не будет работать, есть ещё предупреждения, которые выводятся оранжевым текстом в чёрной области лога ошибок. Предупреждения могут появиться даже тогда, когда выше лога ошибок появилась надпись “Загрузка завершена“. Это означает, что в прошивке нет критических ошибок, она скомпилировалась и загрузилась в плату. Что же тогда означают предупреждения? Чаще всего можно увидеть такие:

  • # Pragma message… – это просто сообщения, оставленные разработчиком проекта или библиотеки. Чаще всего номер версии и прочая информация.
  • Недостаточно памяти, программа может работать нестабильно – Чуть выше этого предупреждения обычно идёт информация о задействованной памяти. Память устройства можно добивать до 99%, ничего страшного не случится. Это флэш память и во время работы она не изменяется. А вот динамическую память желательно забивать не более 85-90%, иначе реально могут быть непонятные глюки в работе, так как память постоянно “бурлит” во время работы. НО. Это зависит от скетча и в первую очередь от количества локальных переменных. Можно написать такой код, который будет стабильно работать при 99% занятой SRAM памяти. Так что ещё раз: это всего лишь предупреждение, а не ошибка.

FAQ

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

  • Ардуину можно прошить только один раз? Нет, несколько десятков тысяч раз, всё упирается в ресурс Flash памяти. А он довольно большой.
  • Как стереть/нужно ли стирать старую прошивку при загрузке новой? Память автоматически очищается при прошивке, старая прошивка автоматически удаляется.
  • Можно ли записать две прошивки, чтобы они работали вместе? Нет, при прошивке удаляются абсолютно все старые данные. Из двух прошивок нужно сделать одну, причём так, чтобы не было конфликтов. Подробнее в этом уроке.
  • Можно ли “вытащить” прошивку с уже прошитой Ардуины? Теоретически можно, но только в виде нечитаемого машинного кода, в который преобразуется прошивка на С++ при компиляции, т.е. вам это НИКАК не поможет, если вы не имеете диплом по низкоуровневому программированию. Подробнее в этом уроке.
    • Зачем это нужно? Например есть у нас прошитый девайс, и мы хотим его “клонировать”. В этом случае да, есть вариант сделать дамп прошивки и загрузить его в другую плату на таком же микроконтроллере.
    • Если есть желание почитать код – увы, прошивка считывается в виде бинарного машинного кода, превратить который обратно в читаемый Си-подобный код обычному человеку не под силу.
    • Вытащить прошивку, выражаясь более научно – сделать дамп прошивки, можно при помощи ISP программатора, об этом можно почитать здесь.
    • Снять дамп прошивки можно только в том случае, если разработчик не ограничил такую возможность, например записав лок-биты, запрещающие считывание Flash памяти, или вообще отключив SPI шину. Если же разработчик – вы, и есть желание максимально защитить своё устройство от копирования – гуглите про лок-биты и отключение SPI

    Видео

    Полезные страницы

    • Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
    • Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
    • Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
    • Полная документация по языку Ардуино, все встроенные функции и макросы, все доступные типы данных
    • Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
    • Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
    • Поддержать автора за работу над уроками
    • Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])

    Прошивка Arduino через USBasp

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

    Пройдемся немного по терминологии. Прошивка контроллера – это своего рода запись программного кода в память устройства. Применяется в тех случаях, когда была произведена замена микрочипа либо отдельные его компоненты начали окисляться (попросту вышли из строя).

    В глобальной сети Интернет можно отыскать много статей по этой тематике, но некоторые из них запутанны и не совсем понятны. Мы решили обобщить всю информацию и собрали для вас подробный мануал. Итак, приступим.

    Прошивка Ардуино через USBasp

    Для работы нам понадобятся два устройства: плата расширения Arduino Uno (Nano, Mega) и сам ASP-программатор. Подключаем платформу к компьютеру, запускаем среду IDE. Выбираем сначала в разделе «Инструменты» название платформы (например, Уно), тип программатора, а потом загружаем стандартный скетч ArduinoISP:

    Переходим в меню «Скетч» — команда «Загрузить через программатор». Проверили – индикатор мигает зеленым, значит, функционирует. Пока можно отключить, ведь теперь у нас другая задача – задействовать и провести программирование по ISP-технологии. Следуйте подсказкам скриншота:

    Обратите внимание на соответствие сигналов подключения:

    Для дальнейшей прошивки USBasp следует инсталлировать джампер JP2:

    1. Скачиваем последнюю версию ПО: https://www.fischl.de/usbasp/
    2. В архиве ищем файлы согласно типу своего микроконтроллера. Распаковываем, открываем.
    3. Запускаем Проводник Windows, переходим в каталог Arduino_dir\hardware\tools\avr\bin\, где Arduino_dir — это путь к IDE Arduino. Сюда переносим файл, о котором писали выше. Тут же вводим команду cmd, кликаем Enter.
    4. В командную строку следует внести: avrdude -C ..\etc\avrdude.conf -p m8 -c arduino -P com18 -b 19200 -U flash:w:usbasp.atmega8.2011-05-28.hex, где первая часть – путь к файлу (например, на диске С), p m8 – тип чипа, com – номер порта и U flash – ваше действие.
    5. Снова подключаем Ардуино к ПК, щелкаем Enter в интерпретаторе командной строки. Отображается процесс заливки данных, должно появиться системное сообщение: avrdude done.

    С программированием всегда непросто работать, но надеемся наши подсказки и скриншоты вам помогли справиться с поставленной целью. На этом пока все! До новых встреч!

    Как загрузить прошивку в Arduino nano

    Для того что бы загрузить прошивку в пату Arduino nano понадобиться шнур с разъемом USB mini (или же другим разъемом если таковой установлен на плате).

    Ардуино нано и кабель USB micro Шнур USB micro

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

    Скачиваем пакет JAVA Скачиваем Arduino IDE

    Устанавливаем скачанный пакет JAVA и распаковываем архив Arduino IDE.

    Распаковываем Arduino IDE Устанавливаем скачанный пакет JAVA

    Далее необходимо установить драйвера. Для этого открываем распакованный архив Arduino IDE, заходим в папку drivers и запускаем файл dpinst-amd 64 если у Вас 64 битная операционная система или dpinst-x86 если у Вас 32 битная операционная система (посмотреть это можно открыв мой компьютер, далее нажать правой кнопкой мыши на пустой области, выбрать свойства и глянуть в графу Тип системы).

    Заходим в папку driversЗапускаем dpinst-amd 64 или dpinst-x86 Драйвера установлены

    После этого нужно скачать тестовую прошивку и драйвера для китайского USB преобразователя CH341 (драйвера понадобятся Вам в том случае если вы покупали ардуинку на Алиэкспресс).

    Скачиваем тестовую прошивку Скачиваем драйвера

    Разархивируем и устанавливаем драйвера CH341.

    Разархивируем драйвераУстанавливаем драйвераНажимаем INSTALL Готово

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

    Переносим программу Arduino IDE и прошивку в папку с названием на английском.

    Подключаем плату ардуино к компьютеру и ждем пока ПК ее инициализирует. При первом подключении должен высветиться номер порта который нужно будет запомнить, ну а если он не высветился или вы его проворонили его можно посмотреть зайдя в ПУСК — Устройства и принтеры и в самом низу увидите значок подключенной ардуинки с номер порта (в данном случае №4).

    Подключаем плату ардуино к компьютеруЗаходим в пуск, выбираем устройства и принтеры В самом низу смотрим номер порта

    Запускаем Arduino IDE и устанавливаем настройки как на скриншотах. Т.е. выбираем плату (nano или ту что у Вас), процессор (попробуйте ATmega 328P или ATmega 328P (Old BootLoader) определяется методом тыка, и порт).

    Настройки Программы Arduino IDEНастройки Программы Arduino IDE Настройки Программы Arduino IDE

    Открываем тестовую прошивку и загружаем в плату просто нажав кнопку со стрелочкой.

    Открываем прошивкуОткрываем прошивкуЗагружаем прошивку нажав кнопку со стрелочкой Прошивка загружена

    Проверить корректность загрузки можно просмотрев на плату, красный светодиод должен начать моргать с определенной периодичностью (смотри видео в конце статьи).

    Прошивка заставит красный светодиод моргать с определенной периодичностью

    Как установить библиотеки Ардуино

    Бывают случаи когда прошивки требуют дополнительные библиотеки для корректной загрузки. Для этого просто скачиваем недостающие библиотеки из интернета, открываем папку с программой Arduino IDE и закидываем папку с библиотекой в папку libraries. После чего заново загружаем прошивку, все должно получиться!

    Ошибка в которой говорится что отсутствует библиотека microLEDЗакидываем библиотеку в папку libraries Папка libraries изнутри

    Похожие статьи:

    • Как сделать автоматический наливатор на ардуино
    • Проблемы при сборке наливатора

    Как прошить Arduino Pro Mini

    Загрузить прошивку на этот микроконтроллер можно несколькими способами:

    • Через другую плату ардуино, у которой есть встроенный USB-UART
    • С помощью специального программатора
    • Используя USBasp-программатор

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

    Прошивка ардуино про мини с помощью Arduino Uno или Nano

    Для того что бы прошить одну ардуинку через другую, нам понадобятся 2 платы Arduino, соединительные провода, USB кабель и компьютер. Я покажу как прошить Arduino Pro Mini с помощью Arduino Nano, но по этой же инструкции можно использовать и другие платы Arduino, такие как Uno, Mega и тд.

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

    Выбор программатора

    Выбираем этот скетч и прошиваем. Теперь мы готовы подключать Arduino Pro Mini. Подключаем следующим образом:

    Arduino Nano -> Arduino Pro Mini

    • +5v -> Vcc
    • GND -> GND
    • D10 -> RST
    • D11 -> D11
    • D12 -> D12
    • D13 -> D13

    У меня это выглядит так:

    Arduino Pro Mini через Arduino Nano

    Далее нам нужно выставить в меню «Инструменты» нашу прошиваемую плату и тип программатора «Arduino as ISP»:

    Теперь мы можем прошить нашу Arduino Pro Mini. Откройте или напишите нужную вам прошивку. Будьте внимательны! Стандартная кнопка загрузки скетча нам не подходит. По умолчанию она заливает прошивку без использования программатора. Таким образом мы прошьем микроконтроллер, который должен выступать в качестве программатора. Чтобы этого не произошло нужно перейти в меню Скетч >> Загрузить через программатор.

    Прошивка Arduino Pro Mini с помощью специального программатора

    Купить специальный программатор можно здесь. Стоит он меньше одного доллара. Если вы часто используете ардуино про мини, то этот программатор сильно упростит и ускорит прошивку.

    Для преобразования USB-to-Serial используется микросхема CH340. Что бы она определялась компьютером правильно необходимо установить специальный драйвер. Скачать и установить драйвер CH340

    Прошить ардуино с помощью программатора очень просто. Нужно подключить программатор к Arduino Pro Mini следующим образом:

    • Vcc Vcc
    • GND GND
    • RX1 TXD
    • TX0 RXD

    Подключаем программатор к компьютеру и проверяем, что он не требует драйверов. Если же он определяется как «неопознанное устройство» скачайте и установите драйвер. Его легко найти, набрав в поисковике «*модель вашего программатора* драйвер». Например «CP2102 драйвер». Далее запускаем Arduino IDE. Выбираете модель вашей платы. Потом переходим в меню Инструменты -> Программатор и выбираете ваш программатор. Далее открываете нужный вам скетч и загружаете его с помощью пункта в меню Скетч -> Загрузить через программатор.

    Если ваш программатор не поддерживает программный сброс, то вам придется вручную нажать кнопку перезагрузки на вашей Arduino Pro Mini в момент компиляции скетча. Это нужно сделать сразу как только в Arduino IDE появится строка, что скетч скомпилирован.

    Вот и все. Мы успешно прошили Arduino Pro Mini с помощью программатора.

    3 комментариев
    1. МАТ 2020-08-07 08:04:33

    в меню Инструменты -> Программатор и выбираете ваш программатор Как узнать какой ваш программатор? Например если просто преобразователь ch340 или тот же ср2102, что выбирать там вариантов всего два, остальные все специфичные

    программатор Arduino as ISP

    Некоторые Pro Mini 328 при описанном подключении не будут прошиваться и реагировать на ресет.
    А при таком будут
    Pro Mini 328
    DTR
    TXD
    RXI
    VCC
    GND -НЕ ПОДКЛЮЧАТЬ
    GND Если и при этом не прошивается и не реагирует на ресет то зажисаете ресет и держите до появления в ардуино коричневых надписей и потом отпускаете.

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

    Для отправки комментария вам необходимо авторизоваться.

    Железо

    Стартовый набор с Arduino Mega и RFID

    Стартовый набор с Arduino Mega и RFID Это расширенный стартовый набор. В комплект входит Arduino Mega R3, макетные платы, множество датчиков, управляемые механизмы и необходимые радиоэлектронные компоненты. Полный список.

    Плата Arduino Uno R3

    Плата Arduino Uno R3 Arduino Uno — плата на базе микроконтроллера ATmega328P с частотой 16 МГц. На плате есть все необходимое для удобной и быстрой работы.

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

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