Как прошить плату Arduino с помощью другой Arduino (ArduinoISP)
Как прошить плату Arduino Uno с помощью другой Arduino?
Теория
КОМПОНЕНТЫ
ARDUINO
- Что такое Arduino?
- Среда разработки Arduino IDE
- Сравнение плат Arduino. Какую выбрать?
- Как прошить плату Arduino с помощью другой Arduino (ArduinoISP)
- Онлайн-сервис TinkerCAD – эмулятор Arduino
- Визуальная среда разработки Mixly для Arduino
- Настройка поддержки чипа STM32F103C8T6 средой Arduino IDE
RASPBERRY
ИНТЕРФЕЙСЫ ПЕРЕДАЧИ ДАННЫХ
Почти любая плата Arduino может стать ISP-программатором, для этого нужно просто загрузить в неё скетч ArduinoISP:
- Например, если необходимо с помощью платы Arduino Uno прошить другую плату Uno, соберите следующую схему:

- Открыть и загрузить в плату-загрузчик скетч Файл >Примеры >11. ArduinoISP >ArduinoISP

- Всё! Ваша Arduino теперь стала ISP программатором. Выбираем Arduino as ISP в Инструменты >Программатор и нажимаем Записать загрузчик.

Нюансы
Для прошивки микроконтроллера, тактирующегося низкой частотой (менее 1 МГц внутренний клок):
Arduino ISP: нужно изменить частоту загрузки прошивки в скетче Arduino ISP и снова прошить его в ардуино-программатор (см. строку в скетче 45 и ниже).
На платах семейства MKR вместо D10 используйте D6 для сброса (см. строку в скетче 73).
Как перепрошить китайский Ардуино для работы с софтом Ардуино. CH340
Вы когда-нибудь думали о том, что дешевый китайский клон Ардуино действительно может работать?
Вы платите всего пару долларов, и получаете такой же продукт. Звучит слишком хорошо, чтобы быть правдой, не так ли?
Правда заключается в том, что некоторые из них работают, а некоторые – нет.
Читайте статью до конца, и вы узнаете, как сделать любой китайский клон рабочим за пару минут.
Я использую Arduino Uno для этого примера, но для других моделей процесс тот же самый.
Здесь у нас оригинальный Ардуино Уно и его китайская копия (Магазин на Aliexpress, Banggood).

Давайте проведем тесты.
Мой софт от Ардуино установлен на компьютер и работает нормально. Сначала я подключаю оригинальный Ардуино и все работает как надо.
Теперь я подключаю мою дешевую китайскую копию Ардуино, и компьютер не может определить устройство.
Проблема в том, что китайский клон не использует стандартный Serial to USB чип, хотя чип называется CH340. Ваш компьютер не распознает эти CH340 чипы, если вы их подключите.
Исправить это просто.
Скачайте софт от китайского производителя и установите себе на компьютер. Этот софт будет работать на всех версиях Windows.
Windows: http://www.wch.cn/download/CH341SER_EXE.html
Теперь подключите свой китайский клон и попробуйте снова. Все должно работать. Китайский клон должен появиться в софте Ардуино и быть готов к использованию. Я загружаю программу мигания, и все работает нормально.
Но в некоторых случаях китайская плата все еще может не работать. Это потому, что bootloader не был установлен на контроллер Atmel.
Чтобы решить эту проблему, нам нужен работающий Ардуино и клон Ардуино, который мы хотим прошить.
Сначала мы подключаем работающий Ардуино к компьютеру и открываем софт Ардуино.
Мы идем File -> Examples и выбираем ArduinoISP. Загружаем это на плату. После загрузки отсоедините Ардуино.
Теперь клон Ардуино мы подсоединяем проводами к работающему Ардуино по этой схеме:

- Разъем 10 подключается к Reset,
- Разъем 11 подключается к разъему 11,
- Разъем 12 – к 12,
- Разъем 13 – к 13,
- 5 Вольт – к 5 Вольт,
- Земля – к Земле.
Следующий шаг – подключаем работающий Ардуино к компьютеру.
- Идем Tools -> Board и выбираем китайскую плату, которая не работает. В моем случае это Ардуино Уно.
- Теперь снова идем в Tools -> Programmer и выбираем “Arduino as ISP”
- Еще раз идем в Tools и выбираем “Burn Bootloader”.
- Снова Tools -> Programmer и устанавливаем “ArduinoISP”.
Ваша китайская копия теперь должна работать нормально.
Ардуино – прекрасный софт и полностью бесплатен для использования. Если вы покупаете китайские копии контроллеров Ардуино, подумайте о пожертвовании для поддержки разработчиков.
Надеюсь, статья была полезна. Оставляйте комментарии.
комментариев 5
К-ов.ш
Все бы хорошо , но что-то в программе пошло не так с языком. Как настроить язык?
Сделай сам
Здесь изначально английский и программа для Ардуино тоже на английском. Возможно, русская локализация как-то не подходит.
Я пользуюсь английской версией, затрудняюсь ответить на ваш вопрос.
79788405905
Сколько времени займет доставка в Крым и как с вами связаться по телефону?
Сделай сам
Почтовая норма — до 30 дней, но обычно доходит за 10-15 дней.
Илья
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
Неисправимый ошибочек… клятые пираты
Мёртвая Arduino, или Как спасти плату
Недавно возникла у меня такая ситуация: купил я Arduino Leonardo, пользовался ей в течение года. И вдруг она перестала работать. Стал усиленно гуглить, пытаясь понять, как же спасти плату. И понял, что гайдов, описывающих способы спасения, не так уж много, вот я и решил написать свой.
Итак, нам дана плата Arduino (неважно, какая), в которую не вгружается скетч. Что же с ней делать?
- Проверить настройки IDE. Да-да, часто проблема кроется именно в неправильных настройках. Поэтому первым делом нужно проверить, выбран ли правильный порт, правильная ли выбрана плата, программатор, загрузчик и др. Подробные инструкции по настройке IDE для практически любой платы можно нагуглить, не буду перечислять здесь их все.
- Драйверы. Иногда проблема кроется в отсутствии драйверов для работы с платой. Если на плате есть микросхема CH340, то для неё нужно установить драйвер, и тогда всё скорее всего заработает. Найти его можно, например, здесь
- Serial Если Ваша плата общается с другими программами на компьютере (Putty, монитор порта и др.), то отключите от неё все программы, с вероятностью 90% все заработает.
- Периферия Если в Вашем проекте к пинам RX и TX (имеются в виду 0-ой и 1-ый пины), то отключите от них всё, иначе прошивка не будет загружаться
Если всё вышеперечисленное не помогло, то проблема кроется в микроконтроллере. Для решения этой проблемы есть несколько способов:
- Прошивка через программатор Если у Вас есть программатор, поддерживаемый Arduino IDE, то подключите к нему свою плату и попробуйте записать загрузчик. Если не помогает, то переходите к пункту 2. Если же у Вас нет программатора, то можно сделать его из другой платы Arduino, загрузив в неё стандартный пример ArduinoISP, и собрав всё по схеме. Конденсатор ставим обязательно, без него может не работать. Потом выбираем тип платы, которую будем прошивать, и выбираем программатор «Arduino as ISP». Потом заливаем прошивку.
Если же Вам не помогла и прошивка через программатор, то с вероятностью 99,9% ваша плата умерла.
Однако, у меня был похожий случай с платой Arduino Leonardo, и мне чудом удалось её спасти. Проблема была такова: При подключении платы к компьютеру он замечал её только минуты через 2. При загрузке прошивки компиляция проводилась успешно, но перед началом загрузки прошивки плата, как обычно сбрасывалась (это происходит всегда и для всех плат), и компьютер переставал её видеть вообще, даже после 10 минут ожидания. Решением стала установка такого же конденсатора между пином RESET и GND. Он предотвращает сброс платы.
Прошивка плат Arduino через Arduino nano и другие

Эта инструкция объясняет, как использовать будь какую плату Arduino в качестве ISP (внутрисистемного программатора). Что позволит вам использовать любую плату как UART переходник для загрузки скетча в контроллеры AVR, такие как ATmega168 или ATmega328, устанавливаемые на Arduino. Способ, описанный в этом примере, основан на программном обеспечении mega-isp от Randall Bohn.
Инструкция
Чтобы использовать свою Arduino плату в качестве загрузчика в AVR контроллер другой платы, вам нужно следовать нескольким простым пунктам.
Подготовка в программном обеспечении Arduino IDE.
- Откройте программную утилиту Arduino ISP, что находится в Файл > Примеры (Образцы).
- Заметьте, для Arduino IDE версии 1.0 нужно сделать небольшое изменение в коде Arduino ISP. Найти строчку в функции heartbeat(), в которой есть запись «delay(40);» и заменить её на «delay(20);».
- Во вкладке Инструмены > Плата и Серийный порт, выберите соответствующую плату, которую вы используете в качестве программатора (не ту плату, которую нужно перепрошить).
Загрузка скетча через Arduino ISP.
- Соедините Arduino платы, как показано на схеме подключенийвнизу.
Примечание:для платы-программатораArduinoтипаUno, и других, нужно добавлять конденсатор на 10 мкФ между сбросомResetи землейGND, чтобы не возникало никаких ошибок «notinsync». - Во вкладке Инструмены > Платы, теперь уже выберите соответствующую плату, в которую вы будете загружать прошивку (не ту плату, которую используете как программатор). Почитайте о работе с программным обеспечением Arduino Software IDE, чтобы узнать больше.
- Во вкладке Инструмены > Программатор укажите тип программатора Arduino as ISP (Arduino как внутрисистемный программатор).
- Выбрав скетч прошивки, воспользуйтесь командой Файл > Загрузить с помощью программатора. Кнопку на плате нажимать не нужно.
Схема подключений
Arduino Uno, Duemilanove или Diecimila
Примечание: приведенная схема подключений работает с платами, у которых снимается сигнал RST с указанных пинов. Что касается плат, для которых это невыполнимо (платы с контроллером ATmega32U4, такие как Leonardo или YUN), то сигнал сброса RST должен быть взят с разъема ICSP (внутрисхемного программирования) согласно распиновке, приведенной внизу.


Замкнув на ICSP разъеме пины RST и GND, можно любую плату Arduino сделать программатором вне зависимости от зашитого в ней кода.
Одна плата Arduino служит программатором IPS для ATmega на другой плате.
Не забудьте для Arduino Uno, Duemilanove, Diecimila или любой другой подсоединить конденсатор на 10 мкФ между сбросом Reset и землей GND, после того, как сделаете эту плату программатором (после загрузки скетча Arduino ISP).
Схема подключений
Arduino NG или более старой платы

На платах Arduino NG или более старых выход Reset разъема не активен, поэтому вам понадобиться найти его на микроконтроллере.
На Arduino NG или более старой прошиваемой плате нужно подключиться проводом Reset к 1 пину ATmega, как показано на схеме.
Схемы подключений
на макетной плате к контроллерам AVR
Использование платы Arduino для программирования ATmega без кварцевого резонатора.

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

Сглаживающие конденсаторы следует выбрать по 18 или 22 пФ.
Если всё было собранно верно и не забыли поставить фильтрующий конденсатор на 10 мкФ, то выбранный ATmega прошьется с первого раза.
Автор: Виталий Петрович. Украина, Лисичанск.
