Какой программатор выбрать для arduino uno в ide
Теперь, когда вы знакомы с выводами и оборудованием Arduino Uno, пришло время погрузиться в программную часть. Мы знаем, что когда у нас есть доска, чтобы что-то с ней делать, нам нужно ее запрограммировать. Это означает, что микроконтроллер должен быть загружен некоторым кодом. В этом есть два аспекта. Во-первых, это понимание того, как программировать Arduino. Второй — больше узнать об IDE Arduino. IDE — это платформа, которая, среди прочего, занимается написанием, отладкой и загрузкой кода. В этом посте мы сосредоточимся на последнем. Давайте познакомимся с Arduino IDE и настроим нашу рабочую станцию.
Что такое Ардуино?
Повторим из нашего введения в Arduino: Arduino – это компания, выпускающая аппаратное и программное обеспечение с открытым исходным кодом. Эта компания предоставляет платы для разработки, такие как UNO, которые помогают нам экспериментировать с микроконтроллерами. Компания разрабатывает комплекты микроконтроллеров для разработки цифровых устройств.
Эти платы Arduino могут получать входные данные от различных устройств, таких как датчики. Они содержат микроконтроллеры, которые могут обрабатывать входные данные в соответствии с закодированной в них программой. С помощью этих данных он может управлять такими выходами, как мигание светодиода, активация двигателя постоянного тока и т. д.
Кроме того, доступно множество плат Arduino. Они различаются по своим характеристикам. Некоторые из плат разработки Arduino перечислены ниже:
- Ардуино-Уно
- Леонардо
- Ардуино 101
- Эсплора
- Ардуино Микро
- Ардуино Нано
- Мега 2560
- Ардуино Ноль
- Ардуино Дью
Как запрограммировать Arduino?
Плата Arduino программируется с помощью Arduino IDE. Короче говоря, первое, что вы делаете, это открываете программное обеспечение Arduino IDE на своем компьютере. Затем вы открываете новый файл скетча, нажав кнопку «Создать». Напишите код. Скомпилируйте это. Выберите доску для программирования. Затем загрузите код на доску.
Это общая процедура. Теперь давайте углубимся в детали.
На каком языке мы программируем Arduino?
Мы используем Embedded C для написания программ Arduino. Embedded C находит применение в тех случаях, когда кодирование очень близко к аппаратному обеспечению. Это означает, что язык напрямую взаимодействует с оборудованием. Это демонстрирует его сходство с C++ с добавлением некоторых методов и функций. Язык программирования Arduino имеет некоторые встроенные функции, отличные от обычных функций, используемых в обычном C++. Он может поддерживать языки C и C++.
Что такое Arduino IDE?
Интегрированная среда разработки Arduino (IDE) — это программное обеспечение с открытым исходным кодом, специально разработанное для написания и компиляции кода в плату разработки Arduino. Программировать в IDE Arduino на удивление легко, даже если у вас нет никаких предварительных знаний об Arduino. Если вы начинаете с базовых знаний программирования на C, то освоение программирования для Arduino не должно занимать более 12 часов.
Код Arduino называется эскизом. Кроме того, после компиляции этот скетч создаст шестнадцатеричный файл, который может управлять оборудованием.
Как установить Arduino IDE в Windows?
Программное обеспечение Arduino IDE легко доступно в Интернете для всех операционных систем, таких как MAC OS, Windows, Linux. Кроме того, он также может работать на платформе Java. Выполните следующие шаги, чтобы установить Arduino IDE на ваше устройство Windows.
- Загрузите правильную и последнюю версию программного обеспечения Arduino IDE с веб-сайта Arduino в соответствии со спецификациями вашего ПК. Он доступен как для 32-разрядных, так и для 64-разрядных систем.
- После загрузки программного обеспечения IDE откройте файл .exe. Затем продолжите установку и дождитесь завершения процесса установки драйвера.
- Нажмите кнопку «Принимаю» в лицензионном соглашении.
- Выберите все компоненты для установки и нажмите кнопку «Далее».
Понимание интерфейса Arduino IDE
- Раскрывающиеся меню/панель инструментов
- Экран редактора
- Окно ошибки
Раскрывающиеся меню/панель инструментов
- Файл
- Изменить
- Эскиз
- Инструменты
- Справка
Каждый из них содержит несколько опций. Давайте ознакомимся с ними.
1) Файл
2) Изменить
3) Эскиз
4) Инструменты
5) Справка
- Начало работы (справка по Galileo и Edison)
- Окружающая среда
- Устранение неполадок (справка Galileo и Edison)
- Справочник
- Найти в справочнике
- Часто задаваемые вопросы
- Посетите Arduino.cc
- О Arduino
Под раскрывающимися меню находится панель с пятью основными и важными параметрами. Они,
Что такое библиотеки?
Библиотеки — это просто набор кода, который помогает легко взаимодействовать аппаратному обеспечению с любыми периферийными устройствами, такими как датчики, модули, экраны и т. д. Вы можете использовать встроенные функции библиотек, чтобы сделать проект кодирования более удобным. Думайте об этом как о файлах, которые добавляют дополнительные возможности к вашим возможностям кодирования. Эти файлы сокращают усилия, необходимые для написания кода, предоставляя функции кода в специальном режиме. Например, если вы хотите связать ЖК-дисплей с Arduino Uno, вы можете просто использовать библиотеку, в которой определенные функции предопределены. Вы можете просто вставить эти функции как есть, и вам не нужно кодировать все с нуля. Интуитивно понятный.
Как установить библиотеку в Arduino IDE?
Есть несколько способов установить библиотеку для Arduino IDE. Вам нужно будет делать это всякий раз, когда вы используете уникальное устройство или плату из множества доступных плат Arduino.
Как установить библиотеку из менеджера библиотек в Arduino IDE?
Как импортировать библиотеку из zip-файла?
- Откройте ПО Arduino IDE.
- Перейдите в меню эскиза и выберите параметр «Включить библиотеку».
- Нажмите «Добавить параметры библиотеки .zip».
- Затем выберите нужную библиотеку ZIP, перейдя по расположению.
- Откройте файл библиотеки .zip. Теперь вы можете найти эту библиотеку в опции «Включить библиотеку».
Как установить файл библиотеки вручную?
- Загрузите файл библиотеки в формате .zip, который доступен в Интернете. Он содержит файл .cpp, файл .h, папку примера и файл .txt.
- Разверните его и сохраните в соответствующем каталоге.
- Перейдите в меню «Файл», нажмите «Настройки» и перейдите к папке с альбомом.
- Измените каталог папки вашего альбома для рисования.
- Нажмите на ZIP-архив и распакуйте его.
- Скопируйте файл библиотеки с таким же именем и вставьте его в папку вашего альбома.
- Теперь эту библиотеку можно найти в разделе «Включить библиотеку».
Как установить платы в диспетчере плат Arduino IDE?
Всякий раз, когда вы переключаетесь с Arduino Uno на Mega, Nano или любую другую плату Arduino, вам нужно будет выбрать ее в меню «Платы». На самом деле, если вы используете стороннюю плату с Arduino IDE (да, это возможно), вам необходимо установить плату в диспетчере плат, чтобы иметь возможность использовать ее должным образом. Есть несколько способов сделать это.
Как установить доски из менеджера досок?
- Откройте ПО Arduino IDE.
- Перейдите в меню «Инструменты» и выберите пункт «Доски».
- Затем нажмите на менеджер досок. Он покажет список досок.
- Выберите доску, которую нужно подключить.
- Нажмите «Установить». Теперь плата установлена в вашей Arduino IDE.
Как установить доски, используя URL?
- Откройте ПО Arduino IDE.
- Перейдите в меню «Файлы» и выберите параметр настроек.
- Вставьте URL-адрес установочного пакета платы. Вы сможете найти это на официальной странице поставщика, у которого вы приобрели плату.
- Нажмите кнопку «ОК».
- Перейдите в меню «Инструменты» и нажмите «Доски», а затем нажмите «Диспетчер досок».
- Теперь вы можете найти эту доску, выполнив поиск в строке поиска и нажав «Установить».
Как выбрать доску?
Как выбрать программистов в Arduino IDE?
- Откройте ПО Arduino IDE.
- Перейдите в меню «Инструменты» и нажмите «Программист». Он покажет список программистов.
- Выберите доску, которая подключена к устройству, нажав на нее.
Как выбрать процессор в Arduino IDE?
- Откройте ПО Arduino IDE.
- Перейдите в меню «Инструменты» и нажмите «Процессор». Он покажет список процессоров.
- Выберите нужный процессор, нажав на него.
Как выбрать последовательный порт в Arduino IDE?
Компьютер имеет несколько портов, которые он использует для подключения к интерфейсным устройствам. Обычно порты COM1 и COM2 зарезервированы. Если вы не уверены в том, к какому порту подключена ваша плата Arduino, просто наведите указатель мыши на меню и отключите плату. Исчезающий список COM — это ваша плата. Повторно подключитесь и выберите этот COM-порт, и все будет готово.
- Откройте ПО Arduino IDE.
- Перейдите в меню «Инструменты» и выберите параметр «Порт». Вы сможете увидеть все доступные порты.
- Эта опция активируется только после подключения платы.
- Выберите правильный порт, подключенный к плате, нажав на него.
Как загрузить пример кода в Arduino IDE?
- Откройте ПО Arduino IDE.
- Перейдите в меню «Файл» и нажмите «Примеры», а затем «Основы».
- Вы можете посмотреть примеры программ. Теперь выберите нужный пример программы.
- Нажмите на вариант загрузки. Теперь ваша плата должна работать в соответствии с загруженной программой.
Как скомпилировать код в Arduino IDE?
Как выполнить код в Arduino IDE?
- Откройте ПО Arduino IDE.
- Нажмите на меню «Файл» и выберите параметр «Новый эскиз».
- Напишите код, который вам нужно выполнить.
- Нажмите кнопку «Проверить», чтобы скомпилировать эскиз.
- Нажмите кнопку «Загрузить» и загрузите скетч на доску. Теперь плата начнет работать в соответствии с кодом.
Что такое серийный монитор в Arduino IDE?
Последовательный монитор — это просто экран вывода, который может отображать данные, отправленные платой Arduino/Genuino через USB. Вы можете отправить данные на доску, введя текст и нажав на опцию отправки. Кроме того, вы можете выбрать скорость передачи в соответствии со скоростью передачи, используемой в скетче. Соединение с последовательным монитором остановит вашу плату.
Что такое последовательный плоттер в Arduino IDE?
Последовательный плоттер используется для построения и навигации по графику с использованием данных, отправленных доской. Эта функция очень помогает понять изменение данных в разных условиях. Например, это поможет вам понять поведение датчиков в различных ситуациях. Кроме того, это автономный инструмент, позволяющий визуализировать данные в виде графиков. Прежде всего, это полезно при устранении неполадок кода.
- Может строить несколько графиков.
- Примечательно, что он работает в автономном режиме.
- Автоматическое изменение размера графика
- Кроме того, он может поддерживать графики отрицательных значений.
- Он может автоматически прокручиваться по оси X.
- Прежде всего, вы можете назначить разные цвета для каждой переменной.
- Сначала откройте ПО Arduino IDE.
- Перейдите в меню «Инструменты» и выберите параметр «Последовательный плоттер». Это позволит вам увидеть график данных.
Какая скорость передачи данных в Arduino IDE?
- Служебные данные протокола, такие как стартовые/стоповые биты.
- Более того, это данные для конкретного приложения.
Мы можем использовать разные скорости передачи данных: 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 или 115200.
Как обнаружить ошибки программирования и устранить их в среде Arduino
Плата Arduino не распознана
Это происходит при использовании преобразователя USB в последовательный порт CH340g вместо FTDI (FT232RL). Кроме того, драйверы для чипов USB to Serial уже поставляются с установочным файлом Arduino IDE. Таким образом, для использования чипов USB to Serial, отличных от стандартного, вам необходимо загрузить драйвер для этого чипа.
Ошибка недопустимой подписи устройства
Это происходит, когда подпись устройства на плате отличается от платы, выбранной в IDE.
Как решить эту проблему?
Это можно исправить, выбрав правильную плату.
Код не запускается при Power Reset
Это происходит, когда плата Arduino не выполняет загруженный в нее код даже после включения питания.
Как решить эту проблему?
Обычно при включении Arduino загрузчик проверяет наличие нового скетча с компьютера в первые несколько секунд. Если такого не происходит, то запустится уже существующий скетч. Если ваш код отправляет последовательные данные, время ожидания загрузчика не истечет, поэтому уже существующий код не запустится.
В этом случае дайте некоторую задержку, чтобы остановить отправку последовательных данных в первые несколько секунд. Следовательно, это позволит загрузчику запустить уже существующий скетч.
Доска не синхронизирована
Эта ошибка отображается как ; «avrdude: stk500_getsync(): не синхронизировано: resp=0x00». Чтобы вы не могли загрузить код на свою доску.
Как решить эту проблему?
- Проверьте, не подключены ли цифровые контакты 0 и 1 платы Arduino к экранам.
- Кроме того, убедитесь, что выбран правильный порт и плата
- Нажмите кнопку сброса и повторно загрузите код.
- Перезапустите среду разработки Arduino.
- Попробуйте, наконец, заменить плату Arduino и проверить.
Ошибка Launch4j
Это происходит из-за несовместимости библиотеки JAVA Run-Time Environment (JRE).
Как решить эту проблему?
Это можно исправить, отключив соединение Bluetooth или Wi-Fi на вашем ПК.
Слишком большой эскиз
Это происходит, когда размер эскиза превышает размер флэш-памяти платы. Для Arduino Uno флэш-память составляет 32 кб. Кроме того, 2Кб занимает загрузчик. Таким образом, ваш эскиз не должен превышать 32 КБ.
Как решить эту проблему?
Это исправлено путем использования целочисленного типа данных вместо числа с плавающей запятой. Таким образом, используйте квалификатор const при объявлении переменных.Кроме того, улучшите алгоритм, чтобы уменьшить сложность пространства.
Эскиз загружается успешно, но ничего не происходит
Это происходит, когда код успешно загружен. Но доска не отвечает.
Как решить эту проблему?
В частности, убедитесь, что выбрана правильная доска. Однако это может произойти из-за размера памяти скетча, когда он превышает емкость платы. Следовательно, это исправляется уменьшением размера эскиза.
Последовательный порт уже используется
Это происходит, когда вы пытаетесь загрузить скетч на плату Arduino при открытом последовательном мониторе.
Как решить эту проблему?
Это устраняется простым закрытием последовательного монитора или экрана плоттера во время загрузки кода.
Что такое ошибки компиляции?
Происходит во время компиляции скетча. Обычно он содержит синтаксические ошибки. Таким образом, он отображается на черном экране под экраном редактора.
Как найти ошибки компиляции в вашем коде?
- Отсутствует точка с запятой.
- Отсутствуют фигурные скобки
- Отсутствуют скобки
- Отсутствуют запятые
- Ошибки и неправильный ввод заглавных букв
- Отсутствует инициализация переменных
Заключение
Этого поста вполне достаточно для знакомства с Arduino IDE. Мы рассмотрели все, начиная от установки и заканчивая устранением стандартных ошибок. Если у вас есть какие-либо сомнения или вы считаете, что в этот пост необходимо включить некоторые более специфические функции IDE, сообщите нам об этом в комментариях. В любом случае любые сведения об IDE будут включены в сообщения нашего курса Arduino всякий раз, когда возникнет такая необходимость.
Навин получает степень инженера в области информационных технологий в Технологическом колледже PSG в Коимбатуре, Индия. В настоящее время он является совместным секретарем Ассоциации информационных технологий своего университета. Ему нравится работать с Arduino Uno. Кроме того, он также является начинающим ютубером на стороне.
Связанные курсы по Arduino IDE — полное руководство по настройке и началу работы
Курс по микропроцессорам 8085
Бесплатный курс по микропроцессорам. Начните с базовых концепций, связанных с работой обычных микропроцессоров, и дойдите до кодирования 8085 и 8086.
Курс «Дизайн для тестируемости»
Этот бесплатный курс по микроконтроллеру 8051 состоит из уроков по архитектуре 8051, набору инструкций, кодированию на ассемблере, кодированию на встроенном языке C и интерфейсу.
Курс цифровой электроники
Бесплатный курс по цифровой электронике и проектированию цифровой логики для инженеров. Все преподается с основ в легкой для понимания форме.
У меня есть множество разных досок разработки для разных проектов. Что меня очень смущает, так это то, какая плата нуждается в каком программаторе из меню «Инструменты»> «Программист».
Я бы хотел, чтобы выбор был частично автоматизирован для выбора доски. Но это явно не так. Часть моей проблемы заключается в том, что если вы выберете неправильный программатор, некоторые платы будут работать. Другие читают, но не записывают, или записывают в одни пробелы, но не записывают в другие. Или вы можете получить другие загадочные ошибки, которые очень похожи на неисправное оборудование. Взгляните на это сообщение для примера:

Хорошо, допустим, у меня есть случайная доска разработчиков. Как я могу узнать, какой программатор мне следует использовать? Предположим, что в документации производителя об этом ничего не упоминается.
Я голосую за то, чтобы закрыть этот вопрос как не относящийся к теме, потому что этот вопрос возникает из-за фундаментального недоразумения — как объяснено ниже, выбор программатора неприменим в обычном случае, и там, где это необходимо, он будет зависеть от приобретенного физического программатора, не целевая доска.
Я голосую за то, чтобы оставить открытым, потому что это частая причина путаницы для начинающих и очень актуальная тема для Arduino Stack Exchange.
2 ответа 2
Как правило, выбор «Инструменты» > «Программист» используется только для «Инструменты» > «Записать загрузчик и эскиз» > «Загрузить с помощью программатора» и не используется для стандартных загрузок. Таким образом, для стандартных загрузок вы можете установить любое значение по своему усмотрению, потому что это не будет иметь никакого эффекта.
Наиболее заметным исключением является Adafruit Trinket, для которого требуется выбрать «Инструменты» > «Программист» > USBTinyISP, даже если вы загружаете данные через USB-разъем на плате Trinket без отдельного программатора ISP.
Вы также найдете некоторые аппаратные пакеты сторонних производителей, которые не написаны для плат с последовательным загрузчиком в стиле Arduino, поэтому для удобства стандартная загрузка рассматривается как «Загрузка с помощью программатора». Примерами являются MicroCore и аппаратный пакет «Barebones ATmega Chips (без загрузчика)». В этом случае правильный выбор меню программатора зависит от используемой модели программатора ISP.
Что касается вопроса «Как узнать, какой программатор использовать?»: если вы выполняете стандартную загрузку, начните с предположения, что это не имеет значения. Если это не сработает, прочтите документацию!
Если вы выполняете «Инструменты» > «Записать загрузчик» или «Скетч» > «Загрузить с помощью программатора» (или, удерживая клавишу Shift, нажимаете кнопку «Загрузить»), вам следует выбрать модель используемого вами программатора ISP.
Arduino Uno программируется с использованием программного обеспечения Arduino (IDE), нашей интегрированной среды разработки, общей для всех наших плат и работающей как в режиме онлайн, так и в автономном режиме. Arduino Uno программируется с использованием программного обеспечения Arduino (IDE), нашей общей интегрированной среды разработки. на все наши доски и работает как онлайн, так и офлайн.
Какой язык программирования используется для Arduino?
Arduino запрограммирован на «диалекте» c/c++. Большинство c/c++ будут работать, но большая часть стандартных библиотек не будет работать.
Как мне получить программатор для Arduino?
Это легко сделать следующим образом: Инструменты->Доски->Ваша доска. Инструменты->Программист->Ваш программист.
Можно ли использовать Python для Arduino?
Arduino использует собственный язык программирования, похожий на C++. Однако можно использовать Arduino с Python или другим языком программирования высокого уровня. Если вы уже знакомы с основами Python, вы сможете начать работу с Arduino, используя Python для управления ею.
Можно ли использовать Java для Arduino?
Первоначальный ответ: Можно ли использовать язык Java для программирования платы Arduino? Нет. У Arduino около 2 килобайт памяти. Недостаточно запустить виртуальную машину Java.
Как записать код Arduino?
Действия Откройте Arduino IDE. Подключите плату программатора к компьютеру. Загрузите скетч ArduinoISP на плату программатора Arduino UNO. После загрузки кода. Отсоедините плату программатора от ПК. Соедините две платы следующим образом:.
Как добавить код в Arduino Uno?
Как загрузить скетч в Arduino Подключите Arduino с помощью USB-кабеля. Выберите Tools→Board→Arduino Uno, чтобы найти свою плату в меню Arduino. Выберите правильный последовательный порт для вашей платы. Нажмите кнопку «Загрузить».
Какая плата Arduino лучше?
Arduino UNO — самая популярная и продаваемая плата Arduino. Как уже упоминалось, эта плата оснащена микроконтроллером ATMEGA328. Он имеет стандартные штыревые разъемы с шагом 2,54 мм и совместим с различными экранами.
Ардуино и Raspberry Pi — это одно и то же?
Raspberry Pi и Arduino — совершенно разные платы. В то время как Arduino нацелен на быстрое программирование и создание прототипов схем, Raspberry Pi действует как инструмент обучения компьютерному программированию (но вы также можете найти Raspberry Pi — это несколько проектов «сделай сам»). Каждая доска имеет свои преимущества и недостатки.
Может ли Arduino подключиться к WiFi?
Arduino Uno WiFi — это Arduino Uno со встроенным модулем WiFi. Плата основана на ATmega328P со встроенным модулем ESP8266WiFi. Модуль ESP8266WiFi — это автономная SoC со встроенным стеком протоколов TCP/IP, которая может предоставлять доступ к вашей сети Wi-Fi (или устройство может действовать как точка доступа).
Какой код у Raspberry Pi?
Питон. Одним из наиболее широко используемых языков программирования на Raspberry Pi является не что иное, как Python. Python имеет простой, удобный для начинающих синтаксис (расположение слов, фраз в предложениях) и широко распространен в сообществе, предоставляя доступ к библиотекам, платформам и инструментам, которые помогут пользователям начать работу! 25 февраля 2020 г.
Поддерживает ли Arduino Uno Java?
Только одна программа может взаимодействовать с Arduino в любой момент времени через последовательный порт. Ваш Arduino не может одновременно обмениваться данными с приложением Java и последовательным монитором или плоттером Arduino IDE. Вы получите исключение Java, если последовательный порт уже используется.
Чем C++ отличается от Java?
КЛЮЧЕВОЕ ОТЛИЧИЕ: C++ использует только компилятор, тогда как Java использует и компилятор, и интерпретатор. C++ поддерживает как перегрузку операторов, так и перегрузку методов, тогда как Java поддерживает только перегрузку методов. C++ поддерживает структуры, тогда как Java не поддерживает структуры.
Что такое Ардулинк?
Ardulink — это комплексное решение Java с открытым исходным кодом для управления и координации плат Arduino. Он определяет протокол связи и интерфейс связи, позволяющий реализовать несколько протоколов. Он имеет готовую коллекцию компонентов java SWING, способную взаимодействовать с Arduino.
Есть ли у Arduino Uno загрузчик?
На вашем Arduino нет загрузчика. Это может произойти, если вы заменили микроконтроллер новым чипом. Маловероятно, что это относится к Mini, так как чип не подлежит замене, а на всех Mini установлен загрузчик при поставке.
Какой программатор Arduino Nano выбрать?
Arduino Nano можно запрограммировать с помощью бесплатного программного обеспечения Arduino (скачать). Выберите «Arduino Diecimila, Duemilanove или Nano с ATmega168» или «Arduino Duemilanove или Nano с ATmega328» в меню «Инструменты» > «Плата».
Как запустить Arduino без компьютера?
Как я могу использовать Arduino IDE без Arduino?
Да, можете. Если вы не используете Arduino IDE, вы не можете использовать синтаксис Arduino. Вам нужно написать свой код на C. Для этого вам нужно быть знакомым с архитектурой AVR. Другой метод — использовать Arduino IDE для компиляции кода и создания шестнадцатеричного файла, а затем записать его на устройство с помощью AVRdude.
Как подключить плату Arduino к компьютеру?
Купите Arduino UNO. Платы Arduino имеют открытый исходный код, поэтому вы можете найти платы «типа UNO» по любой цене. Подключите ардуино. Подключите Arduino к USB-порту вашего компьютера. Добавьте Arduino в свою сцену. Настройте свою доску: перейдите в «Файл» в строке меню. Скажите «ОК», чтобы загрузить готовый эскиз на доску.
Какой микроконтроллер лучше?
10 лучших микроконтроллеров на рынке 1: Groboards Giant Board. (Изображение предоставлено Grobaords) 2: Seeeduino XIAO. (Изображение предоставлено Seeed Studio) 3: BBC micro:bit V2. (Изображение предоставлено: micro:bit) 4: Adafruit Gemma M0. (Изображение предоставлено Adafruit Industries) 5: Arduino Uno Rev3. (Изображение предоставлено Ардуино).
Насколько сложно программировать Arduino?
Сложно ли научиться работать с Arduino? Программирование, электроника, крутые штуки с кодом и компонентами; это в основном то, что вы можете ожидать от использования Arduino. Как и при изучении всего нового, для использования Arduino требуется момент переориентации. Но, в конце концов, разобраться с этим несложно.
Какая самая дешевая плата Arduino?
Arduino НЕ является микроконтроллером! Все остальное на плате (причудливый блок питания, светодиоды, кнопка сброса, схема программирования, преобразователь USB-to-Serial) совершенно необязательно.
Вы просто ищете спецификации между платами Arduino?
Ознакомьтесь с нашим руководством по сравнению Arduino! Мы собрали все имеющиеся у нас платы для разработки Arduino, чтобы вы могли быстро сравнить их и найти ту, которая идеально подходит для ваших нужд.

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

Arduino — это платформа для создания прототипов электроники с открытым исходным кодом, основанная на гибком и простом в использовании аппаратном и программном обеспечении. Он предназначен для художников, дизайнеров, любителей и всех, кто интересуется созданием интерактивных объектов или сред. Или, проще говоря, вы загружаете некоторый код, и он может считывать датчики, выполнять действия на основе ввода с кнопок, управлять двигателями и принимать щиты для дальнейшего расширения своих возможностей. На самом деле, вы можете делать почти все.
Все платы Arduino имеют одну общую черту: они программируются через Arduino IDE. Это программное обеспечение, которое позволяет вам писать и загружать код. Кроме того, может быть много различий. Количество входов и выходов (сколько датчиков, светодиодов и кнопок можно использовать на одной плате), скорость, рабочее напряжение и форм-фактор — это лишь некоторые из переменных. Некоторые платы предназначены для встраивания и не имеют программного интерфейса (аппаратного обеспечения), который необходимо покупать отдельно. Некоторые могут работать напрямую от батареи 3,7 В, другим требуется не менее 5 В.
Рекомендуемый просмотр
Рекомендуемое чтение
Если вы не знаете, что такое Arduino, но нашли себя здесь, вы можете начать с нашего руководства «Что такое Arduino?».
Что такое Arduino?
Что это вообще за «Ардуино»? В этом руководстве рассказывается, что такое Arduino, а также проекты и виджеты Arduino.
Логические уровни
Вы также должны хорошо разбираться в Arduino IDE. Если вам нужна помощь в установке, посетите это руководство.
Установка Arduino IDE
Глоссарий терминов
Микроконтроллер (MCU). Микроконтроллер — это сердце (или, точнее, мозг) платы Arduino. Отладочная плата Arduino основана на микроконтроллерах AVR разных типов, каждый из которых имеет разные функции и возможности.
Входное напряжение: рекомендуемый диапазон входного напряжения для платы. Плата может быть рассчитана на несколько более высокое максимальное напряжение, но это безопасный рабочий диапазон. Важно помнить, что многие литий-полимерные аккумуляторы, которые мы носим, имеют напряжение 3,7 В, а это означает, что любая плата с входным напряжением, включая 3,7 В, может питаться напрямую от одного из наших литий-полимерных аккумуляторов.
Системное напряжение: это системное напряжение платы, то есть напряжение, при котором микроконтроллер фактически работает. Это важный фактор для совместимости с экраном, поскольку теперь логический уровень составляет 3,3 В вместо 5 В. Вы всегда хотите быть уверены, что любая внешняя система, с которой вы пытаетесь связаться, может соответствовать логическому уровню вашего контроллера.
Часовая частота: это рабочая частота микроконтроллера, связанная со скоростью, с которой он может выполнять команды. Хотя есть редкие исключения, большинство микроконтроллеров ATmega, работающих при напряжении 3 В, будут работать на частоте 8 МГц, тогда как большинство микроконтроллеров, работающих на напряжении 5 В, будут работать на частоте 16 МГц. Тактовую частоту Arduino можно разделить для экономии энергии с помощью нескольких приемов, если вы знаете, что делаете.
Цифровой ввод/вывод: это количество контактов цифрового ввода/вывода (I/O), которые разорваны на плате Arduino. Каждый из них может быть сконфигурирован либо как вход, либо как выход. Некоторые из них поддерживают ШИМ, а некоторые служат в качестве контактов последовательной связи.
Аналоговые входы: это количество аналоговых входных контактов, доступных на плате Arduino. Аналоговые контакты помечены буквой «А», за которой следует их номер, они позволяют считывать аналоговые значения с помощью аналого-цифрового преобразователя (АЦП) в микросхеме ATMega. Аналоговые входы также могут быть сконфигурированы как дополнительные цифровые входы/выходы, если вам это нужно!
ШИМ: это количество цифровых входов/выходов, способных производить широтно-импульсную модуляцию. (ШИМ) сигнал. Сигнал ШИМ подобен аналоговому выходу; это позволяет вашему Arduino «подделывать» аналоговое напряжение между нулем и напряжением системы.
UART: это количество отдельных линий последовательной связи, которое может поддерживать ваша плата Arduino. На большинстве плат Arduino цифровые контакты ввода-вывода 0 и 1 удваиваются как ваши последовательные контакты отправки и получения и используются совместно с последовательным портом программирования. Некоторые платы Arduino имеют несколько UART и могут одновременно поддерживать несколько последовательных портов. Все платы Arduino имеют по крайней мере один UART для программирования, но некоторые из них не разбиты на доступные контакты.
Пространство во флэш-памяти: это объем программной памяти, который чип может использовать для хранения вашего эскиза. Не вся эта память доступна, поскольку загрузчик занимает очень небольшую ее часть (обычно от 0,5 до 2 КБ).
Интерфейс программирования. С его помощью вы подключаете плату Arduino к компьютеру для программирования. Некоторые платы имеют встроенный USB-разъем, поэтому все, что вам нужно сделать, это подключить их к USB-кабелю. У других есть доступный разъем, так что вы можете подключить базовый прорыв FTDI или кабель FTDI. Другие платы, такие как Mini, используют последовательные контакты для программирования, но не совместимы по контактам с разъемом FTDI. Любая плата Arduino, имеющая встроенный USB-разъем, также имеет другое оборудование, позволяющее преобразовывать последовательный порт в USB. Однако для некоторых плат не требуется дополнительное оборудование, поскольку их микроконтроллеры имеют встроенную поддержку USB.
Примечание: ATmega328P — это обновленная версия микроконтроллера ATmega328, но работает очень похоже. Однако важно отметить, что 328P будет потреблять меньше энергии, чем 328, и что эти два чипа будут иметь разные сигнатуры. В целом, однако, функциональность и программирование этих двух сравнимы. В этом руководстве мы будем называть ATmega328p ATmega328.
Все платы Arduino на этой странице имеют ATmega328 в качестве основного мозга микроконтроллера. Один только микроконтроллер делает все платы на этой странице почти идентичными с точки зрения количества операций ввода-вывода и объема памяти. Их различия связаны с такими вещами, как программные интерфейсы, форм-факторы и рабочие напряжения.
Главное событие: Arduino Uno
Arduino Uno — это стандартная версия Arduino. Это то, с чем мы сравниваем любую другую Arduino-совместимую плату. Если вы только начинаете знакомиться с Arduino, начните с этой платы.
Читайте также:
- Назовите элементы панели сцены и объясните их назначение
- Обновите yandex station max, что нового
- Вместо планшета прислали бумагу
- Как редактировать в сони вегас
- Какую информацию может обрабатывать компьютер
Какой программатор выбрать для arduino uno в ide

вообще-то это даже не программатор, а преобразователь USB-RS232, точнее USB-UART, тк для RS232 нужно еще сформировать соответствующие уровни, чего этот преобразователь не делает (по крайней мере мой PL2303 так точно)
по вопросу программирования — по сути у вас же есть ардуинка, ее ведь можно использовать в качестве программатора.
ну а если хочется отдельно программатор, то нужно смотреть в сторону AVR ISP, USBasp, но тут уже нужно понимать, что работать вы будете напрямую с контроллером ATMEL AVR, нужно знать про фьюзы и тп.
У Вас есть Arduino? Значит у Вас есть программатор!

Все таки, поговорка «Век живи — век учись!» придумана неспроста! В свое время, начав интересоваться микроконтроллерами семейства AVR (и в частности, Arduino) я забеспокоился об инструменте для программирования оных. Т.е., программаторах. А ведь программатор (ну, может не в столь явном виде) у меня всегда был под рукой. Это плата Arduino.
ISP (In-system programming) — это способность микроконтроллера получать прошивку находясь уже непосредственно в собранной схеме. Программатором (устройством передающим прошивку от компьютера в контроллер) в нашем случае будет выступать Arduino.
Аргументы для сомневающихся (делать/не делать)
За:
1) этот шилд даст вторую жизнь «морально устаревшим» платам Arduino на Atmega8
2) У Вас появиться прекрасная возможность писать программы для микроконтроллеров серии Attiny в привычном Arduino IDE
3) это самый «копеечный» программатор (при условии наличия у Вас Arduino)
4) этот шилд ОЧЕНЬ прост в изготовлении, не содержит дефицитных деталей и не требует настройки
5) позволяет (в какой-то мере) сохранить порядок на Вашем рабочем месте
Против:
— я не нашел
Если готовы, то поехали.
Чтобы Arduino стала ISP программатором на нее необходимо залить специальную прошивку. Эта прошивка поставляется вместе с Arduino IDE. Напомню. Еще без какой-либо периферии Arduino подключаем к компьютеру и загружаем Arduino IDE. Выбираем [File] -> [Examples] -> [ArduinoISP]

Ну и далее, люди делают что-то примерно такое:

Кстати, я тоже так делал :). Собственно, после чего и появилась эта задумка. Вариант «клубкового» соединения, естественно, имеет право на жизнь. Но, скажем так:
-> Неудобно
-> ненадежно
-> некрасиво и все такое
Логично было бы предположить, что умные люди смекнули «что к чему» и наладили выпуск готовых ARDUINO ISP Shield-ов. Вот парочка примеров: 
Я тоже хочу такую вещь! Но, «Это не наш метод! Мы все сделаем сами. »
Итак, я вспомнил все микроконтроллеры, с которыми мне приходилось сталкиваться. Это были Atmega8 (168/328), Atmega16, Attiny2313(4313), Attiny13(45/85). Итого, (для меня, по крайне мере) ограничимся корпусами DIP8, DIP20 и DIP28. Здоровенная Atmega16 — «пока нервно курит в сторонке». Поставим дополнительно стандартный ICSP разъем на 10 контактов, для возможности подключения внешнего адаптера. И для красоты установим светодиоды, отображающие текущее состояние программатора. Распиновку берем из скетча ArduinoISP:

Схема. Хм, конечно сложно это назвать схемой, но все же:

Разводка печатной платы много времени не заняла. Я фактически расположил нужные корпуса и разъемы на плату, подписал нужные выводы и тупо их соединял Вот, что получилось:

Лут:

После запайки:

Вторая сторона:
Обращаю Ваше внимание, на наличие трех SMD перемычек (резисторы 0R).

Вот готовое изделие:

. ВАЖНЫЙ МОМЕНТ. Очень рекомендую установить панельки с цанговыми контактами!

Итак, все у нас готово для проведения «ходовых» испытаний. Подключаем наш шилд к ЗАРАНЕЕ «прошитую» Ардуино
.

Проверяем работоспособность с помощью GUI оболочки для AVRDUDE:
Для «гурманов», зеленой полоской я выделил соответствующие параметры для консольного варианта
Обращаю ваше внимание на правильный выбор типа программатора и типа соединения. Уточнить можно в IDE (выше приведен скриншот для самопальной COM-портовой платы).
Ниже картинки для варианта с CraftDuino (у меня CraftDuino общается через виртуальный COM N14. Естественно, у Вас может быть другой)


Все хорошо!! Радуемся и хлопаем в ладоши (честно говоря, получившаяся плата мне ОЧЕНЬ нравится. Я пишу эту статью и верчу ее в руках).
Пара полезных ссылок, о том, как подружить микроконтроллеры Attiny со средой программирования Arduino:
Attiny13
Attiny2313
Ну а дальше уже сами Как говорится, Google Вам в помощь!
Весь материал проекта забираем ТУТ.
Все удачи и хорошего настроения!
Загрузчик Ардуино и прошивка через Arduino IDE и программатор
Загрузка скетча или прошивка контроллера Ардуино – основная операция, с которой рано или поздно сталкивается любой ардуинщик. Именно возможность быстро и без лишних проблем загрузить в память контроллера управляющую программу и стала одной из основных причин успеха платформы Arduino. В этой статье мы узнаем, как прошиваются Arduino Uno, Nano, Mega и другие платы на основе Atmega с использованием Arduino IDE, программатора или другой платы Ардуино.
Загрузка скетча в плату Ардуино
Давайте сначала разберемся с тем, что происходит внутри ардуино, когда мы решаем изменить внутреннюю программу, управляющую им.
Что происходит, когда мы жмем кнопку «Загрузить»
Плата Ардуино – это микроконтроллер AVR (Atmega8/168/328 или Atmega1280/2560), который прошивается загрузчиком. В микроконтроллер записывается программа, называемая прошивкой, которая позволяет получать сигналы с датчиков, обрабатывать нажатия кнопок, общаться с различными устройствами через интерфейсы, управлять исполнительными процессами.
Обычно прошивка записывается в кристалл микроконтроллера при помощи специальных устройств, называемых программаторами. Для разных микроконтроллеров существуют различные программаторы – от специализированных до универсальных. Важным отличием Ардуино от других контроллеров является возможность залить прошивку через обычный USB кабель. Это достигается при помощи специальной программы – загрузчика (Bootloader). Для прошивки не требуются лишние провода, не нужно подключать дополнительные устройства или нажимать что-то на плате. Также при работе через загрузчик нельзя добраться до опасных настроек, которые выведут из строя Ардуино.
При подключении платы Ардуино к источнику питания, внутри него начинается активная деятельность микропрограмм. При запуске микроконтроллера управление получает загрузчик. Первые 2 секунды он проверяет, поступил ли новый код от пользователя. Кроме того загрузчик подает импульсы на пин, к которому подключен светодиод, и он начинает мигать. Это означает, что загрузчик установлен и работает исправно. Когда подается скетч, загрузчик записывает его во флеш-память микроконтроллера. Затем эта программа подается на выполнение. Если данные не поступили, загрузчик запускает предыдущую программу. Во время выполнения программы внутри Ардуино выполняется ряд операций по инициализации и настройке среды окружения, и только после этого начинается выполнение кода.
Вызов setup и loop при загрузке
В самом коде имеются несколько основных функций, на их примере можно рассмотреть работу микроконтроллера.
Команда void setup() – в ней записываются данные, которые микроконтроллер выполняет в момент загрузки, а после может про них забыть. В этой функции указываются номера пинов, к которым подключается устройство, подключаются и инициализируются библиотеки, устанавливается скорость работы с последовательным портом.
Функция void loop – в нее помещаются команды, которые должны выполняться, пока включена плата. Микроконтроллер начнет выполнять программы, начиная с первой, и когда дойдет до конца, сразу вернется в начало, чтобы повторить эту же последовательность бесконечное число раз.
Загрузка скетча в Arduino IDE
В Ардуино IDE компиляция скетча начинается при нажатии кнопки Verify, после этого скетч может быть загружен в память Ардуино через USB с помощью кнопки Upload. Перед загрузкой кода программы нужно установить все параметры в меню Tools. В этом меню выбираются порт, к которому подключена плата, и платформу. В окне Arduino IDE внизу будет отображен ход компиляции скетча. При успешной выгрузке скетча будет получено сообщение «Done uploading». Запуск скетча начинается сразу после окончания загрузки. Для расширения возможностей можно подключать дополнительные внешние библиотеки, разработанные командой Ардуино или сторонними авторами.
Обзор возможных вариантов загрузки скетча
Кратко весь алгоритм можно записать следующим образом: Написание кода >> компиляция >> загрузка в микроконтроллер. При загрузке скетча используется Bootloader (Загрузчик). Он представляет собой небольшую программу, которая загружается в микроконтроллер на Ардуино. С помощью этой программы можно загружать скетч, не используя дополнительные аппаратные средства. При работе загрузчика на плате будет мигать светодиод.
1. Загрузка в Arduino IDE. Самый простой и удобный вариант загрузки кода. Все, что нужно сделать – это написать или найти нужный скетч и загрузить его.
- Ускоренная загрузка скетча в Arduino IDE. С помощью этого метода можно увеличить скорость загрузки в микроконтроллер в два раза. Для этого нужно лишь зайти в Настройки и снять галочку с пункта Проверка кода. Пропуская шаг проверки, будет уменьшено количество байтов, которые передаются во время загрузки. При этом все равно некоторые из видов проверок будут осуществлены, но они не занимают долгого времени. Отключать проверку кода не рекомендуется, если Ардуино помещается в какой-либо ответственный проект (например, в спутник). Также можно провести проверку, если подключение производится через очень длинный USB кабель (порядка 10 метров).
Уменьшение времени загрузки при помощи отключения проверки работает с любой платой Ардуино, которая использует USB соединение. Все эти микроконтроллеры используют загрузчик avrdude. Платы, которые используют загрузчик Catarina, не нуждаются в отключении проверки кода, так как этот загрузчик работает быстрее.
- Загрузка скетча в Ардуино через Bluetooth. Этот способ используется, когда нужно обойтись без физического соединения Ардуино и компьютера – например, в силовых цепях или радиочастотных цепях. Для реализации загрузки потребуется Bluetooth-модуль, который оснащен платой-адаптером для Ардуино. Этот модуль нужно подключить к компьютеру через переходник USB-UART-TTL. Работа с модулем осуществляется с помощью AT-команд.
- Загрузка при помощи Андроид-устройства. Для осуществления такого типа загрузки кода понадобятся провода USB-A – USB-B и USB-Host (OTG-кабель), Ардуино и устройство на базе Андроид с поддержкой режима host. На Андроид-устройство нужно установить программу ArduinoDroid или ArduinoCommander из Google Play. Все устройства нужно соединить при помощи кабелей, после этого можно включать Ардуино и загружать на него код. Нужно запустить установленную программу. При включении начнется обновление IDE, на что понадобится некоторое время.
Сначала работа будет рассмотрена на примере программы ArduinoCommander. После ее запуска нужно нажать USB-Device. Затем нужно наддать Autodetect, чтобы Андроид-устройство выполнило поиск Ардуино и отобразило его на экране. Как только Ардуино появится на экране, нужно на него нажать. Чтобы перейти в меню, нужно щелкнуть в нижнем правом углу. В этом меню можно загрузить скетч с SD-карты.
ArduinoDroid представляет собой среду разработки, компилятор и загрузчик одновременно. Начать компиляцию скетча нужно нажав на кнопку Lightning-Button. После завершения компиляции нужно нажать на кнопку загрузки. Загрузка занимает несколько секунд. По окончании загрузки ардуино запустит на выполнение новый код.
- Программирование при помощи Raspberry Pi. Можно загружать скетчи двумя способами – при помощи Arduino IDE и при помощи пакета arduino-mk. Пакет позволяет собирать и загружать скетчи Ардуино из командной строки.
Структура памяти Ардуино, где располагается скетч и данные
На микроконтроллере Ардуино имеется 3 вида памяти – флеш-память, которая используется для хранения скетчей, ОЗУ для хранения переменных и EEPROM для хранения постоянной информации. Из этих типов памяти флеш-память и EEPROM являются энергонезависимыми, то есть информация сохраняется при выключении питания. ОЗУ используется только для хранения данных, которые имеют отношение к исполняемой программе.
Микроконтроллер ATmega168, который используется на части плат Ардуино, имеет 16 Кб флеш-памяти, 1024 байта для ОЗУ и 512 байт EEPROM. Важно обратить внимание на малый объем ОЗУ. Большие программы могут полностью ее израсходовать, что приведет к сбою в программе. По этой причине нужно следить за тем, сколько строк занимает программа, и по возможности удалять лишнее. Уменьшить объем кода можно несколькими способами:
- Можно отправить часть информации на компьютер.
- Для таблиц и других крупных массивов использовать минимальный тип данных для хранения.
- Данные, которые остаются неизменными, можно объявить константами при помощи слова const перед объявлением переменной.
- Меньше использовать рекурсию. При ее вызове в памяти, называемой стеком, выделяется фрагмент, в котором хранятся различные данные. Если часто вызывать рекурсию, стеки будут занимать большой объем памяти и могут израсходовать ее.
- Неизменяемые строки можно сохранять во флеш-памяти во время работы программы. Для этого используется функция PROGMEM.
На объем памяти не влияют размер имени переменных и комментарии. Компилятор устроен таким образом, что не включает эти данные в скомпилированный скетч.
Для измерения объема занимаемой памяти ОЗУ используется скетч из библиотеки MemoryFree. В ней имеется специальная функция freeMemory, которая возвращает объем доступной памяти. Также эта библиотека широко используется для диагностики проблем, которые связаны с нехваткой памяти.
Оптимизация флеш-памяти. Как только будет окончена процедура компиляции, в окне появится информация о занимаемой памяти кодом. Если скетч занимает большую часть памяти, нужно произвести оптимизацию использования флеш-памяти:
- Использование констант. Аналогично как и для ОЗУ задавать неизменяющиеся значения константами.
- Удалить ненужные Serial.println. Эта команда используется, когда нужно увидеть значения переменных в разных местах программы, нередко эта информация просто не нужна. При этом команды занимают место в памяти, поэтому, убедившись в корректной работе программы, некоторые строки можно удалить.
- Отказ от загрузчика – можно программировать микроконтроллер через контакты ICSP на плате с использованием аппаратных программаторов.
Флеш память является безопасным и удобным способом хранения данных, но некоторые факторы ограничивают ее использование. Для флеш-памяти характерна запись данных блоками по 64 байта. Также флеш-память гарантирует сохранность информации для 100000циклов записи, после чего информация искажается. Во флеш-памяти имеется загрузчик, который нельзя удалять или искажать. Это может привести к разрушению самой платы.
EEPROM память используется для хранения всех данных, которые потребуются после отключения питания. Для записи информации в EEPROM нужно использовать специальную библиотеку EEPROM.h, которая входит в число стандартных библиотек в Arduino IDE. Чтение и запись информации в EEPROM происходит медленно, порядка 3 мс. Также гарантируется надежность хранения данных для 100000 циклов записи, потому лучше не выполнять запись в цикле.
Варианты прошивки Ардуино
Прошивка с помощью Arduino IDE
Прошить плату при помощи среды разработки Arduino IDE можно в несколько шагов. В первую очередь нужно скачать и установить саму программу Arduino IDE. Также дополнительно нужно скачать и установить драйвер CH341. Плату Ардуино нужно подключить к компьютеру и подождать несколько минут, пока Windows ее опознает и запомнит.
После этого нужно загрузить программу Arduino IDE и выбрать нужную плату: Инструменты – Плата. Также нужно выбрать порт, к которому она подключена: Инструменты – Порт. Готовая прошивка открывается двойным кликом, чтобы ее загрузить на плату, нужно нажать кнопку «Загрузить» вверху панели инструментов.
В некоторых ситуациях может возникнуть ошибка из-за наличия кириллицы (русских букв) в пути к папке с кодами. Для этого файл со скетчами лучше создать и сохранить в корне диска с английским наименованием.
Прошивка с помощью программатора
Одни из самых простых способов прошивки платы – при помощи программатора. Заливка будет производиться в несколько этапов.
В первую очередь нужно подключить программатор к плате и к компьютеру. Если программатор не опознается компьютером, нужно скачать и установить драйверы.
После этого нужно выбрать плату, для которой нужно прошить загрузчик. Это делается в меню Сервис >> Плата.

Затем нужно выбрать программатор, к которому подключен контроллер. В данном случае используется USBasp.

Последний шаг – нажать на «записать загрузчик» в меню Сервис.

После этого начнется загрузка. Завершение произойдет примерно через 10 секунд.
Прошивка Arduino через Arduino
Для того чтобы прошить одну плату с помощью другой, нужно взять 2 Ардуино, провода и USB. В первую очередь нужно настроить плату, которая будет выступать в качестве программатора. Ее нужно подключить к компьютеру, открыть среду разработки Arduino IDE и найти в примерах специальный скетч ArduinoISP. Нужно выбрать этот пример и прошить плату.
Теперь можно подключать вторую плату, которую нужно прошить, к первой. После этого нужно зайти в меню Инструменты и выставить там прошиваемую плату и тип программатора.
Можно начать прошивать устройство. Как только прошивка будет открыта или написана, нужно перейти в меню Скетч >> загрузить через программатор. Для заливания прошивки не подходит стандартная кнопка загрузки, так как в этом случае прошивка будет загружена на первую плату, на которой уже имеется прошивка.
Заключение
В этой статье мы рассмотрели различные аспекты загрузки скетчей в Arduino Uno и Nano. Прошивка плат на базе микроконтроллеров ATmega328 и ATmega256, как правило, не сложна и может выполняться одним нажатием кнопки в Arduino IDE. За эту простоту мы должны благодарить встроенную программу-загрузчик, выполняющую за нас все основные действия на низком уровне.
Еще одним вариантом перепрошивки контроллера является использование другой платы адуино или специальных программаторов, использующих микросхемы CP2102 CH340, FTDI и другие. Этот метод требует дополнительных усилий и затрат, но позволяет гибко изменять параметры прошивки. Какой из двух вариантов выбрать – решать вам. Для новичков, безусловно, первым шагом станет использование Arduino IDE, благо, ее создатели сделали все, чтобы упростить этот процесс.
Про Ардуино и не только

Есть у меня пара идей для будущих публикаций, но в них будет использоваться программатор. Поэтому сегодня я расскажу о том, как превратить Ардуино в 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 разъем.
| Плата Ардуино | MOSI | MISO | SCK | Уровень |
|---|---|---|---|---|
| Uno, Duemilanove | 11 или ICSP-4 | 12 или ICSP-1 | 13 или ICSP-3 | 5В |
| Nano | 11 или ICSP-4 | 12 или ICSP-1 | 13 или ICSP-3 | 5В |
| Pro Mini | 11 | 12 | 13 | 3.3В или 5В |
| Mega1280, Mega2560 | 51 или ICSP-4 | 50 или ICSP-1 | 52 или ICSP-3 | 5В |
| Leonardo | ICSP-4 | ICSP-1 | ICSP-3 | 5В |
| Due | ICSP-4 | ICSP-1 | ICSP-3 | 3.3В |
| Zero | ICSP-4 | ICSP-1 | ICSP-3 | 3.3В |
| 101 | 11 или ICSP-4 | 12 или ICSP-1 | 13 или ICSP-3 | 3.3В |
![]() |
| Подключение Uno в качестве программатора к плате Nano через ICSP |
Обратите внимание на нумерацию выводов ICSP платы Nano: она начинается с правого нижнего угла. Поэтому на приведенной схеме Arduino Nano перевернута.
Теперь необходимо вернуться в Arduino IDE и изменить в ней параметры:
- В меню Инструменты > Плата выбираем вариант, соответствующий нашей целевой плате.
- В меню Инструменты > Программатор выбираем Arduino as ISP.
Резюмируя вышеописанное, выделим основные шаги для прошивки загрузчика с использованием Ардуино в качестве ISP программатора:
- Запускаем Arduino IDE, открываем из примеров скетч ArduinoISP и загружаем его в плату Ардуино, которую будем использовать как программатор.
- Подключаем к Ардуино-программатору целевую плату по приведенной схеме.
- Меняем плату в Arduino IDE на целевую.
- Выбираем в IDE программатор Arduino as ISP.
- Записываем загрузчик в целевую плату командой из меню IDE.
Прошивка скетча с использованием Arduino as ISP
Еще один пример использования программатора — это загрузка скетча в целевую плату. Разумеется, это проще сделать привычным способом, подключив ее напрямую к компьютеру, но это может оказаться невозможным, например, при выходе из строя контроллера ATmega8u2/ATmega16u2 или преобразователя USB/UART. Если при этом основной микроконтроллер Ардуино остался рабочим, то мы можем прошить его, используя программатор. Для этого выполняем все шаги, описанные выше, но на последнем этапе вместо записи загрузчика необходимо:
Похожие публикации:
- Как добавить комментарий в css
- Как добавить фото в html css
- Как убрать фиолетовый цвет ссылок в css
- Как увеличить размер ссылки css
Программатор на Ардуино Нано и Уно: прошивка через USB

На плате Arduino два микроконтроллера: ATMEGA328P (328P) и ATMEGA16U2 (16U2). Вы можете обновить прошивку 16U2, чтобы стать программистом AVRISP MKII, а затем использовать Atmel Studio для прошивки 328P.
Я пробовал разные варианты, но столкнулся с разными проблемами. Многие из рекомендаций в моем случае не сработали, особенно с точки зрения прошивки загрузчика через программное обеспечение Arduino.
Перед запуском прошивки Arduino вам понадобится программное обеспечение Atmel FLIP (Microchip) для обновления прошивки внутри 16U2.
Загрузите Flip с веб-сайта Microchip — отсюда. Установить. Проблем возникнуть не должно, просто следуйте инструкциям мастера установки.
Берем плату Arduino, отключаем питание и USB. Короткое замыкание контактов 5-6 на ICSP1 (при сбросе 16U2 будет низкий уровень).
Распиновка ICSP1
Это будет выглядеть так:
Затем подключите Arduino к USB. Отсоедините контакты ICSP1 (5-6). В этот момент 16U2 переходит в режим DFU. Новое устройство USB должно быть распознано.
Если драйвер не устанавливается автоматически, установите его из: C: Program Files AtmelFlip3.4.7usb»
Перейдите в диспетчер устройств: Win + Pause -> Оборудование -> Диспетчер устройств. Проверьте, правильно ли установлен драйвер. Его можно найти в Atmel USB -> ATmega16U2.
Особенности установки драйверов
При установке драйверов для Arduino Nano в ОС Windows система автоматически обнаружит необходимое программное обеспечение, если вы использовали установочный файл с официального сайта Arduino.
Если драйверы не были обнаружены и установлены системой, вам необходимо:
- Откройте панель управления.
- Зайдите в раздел «Система и безопасность».
- Переходим во вкладку «Система».
- Откройте диспетчер устройств.
- Откройте вкладку с портами COM и LPT.
- Если на плате нет порта USB UART FT232R или секции с разъемами COM и LPT, перейдите на вкладку «Другие устройства» и перейдите в раздел «Неизвестное устройство».
- Щелкните правой кнопкой мыши FT232R USB UART.
- Выберите «Обновить драйвер».
- Нажмите «Искать драйверы на моем компьютере».
- Выберите драйвер USB FTDI в папке с драйверами Arduino.
Если все сделано правильно, система сама завершит установку программного обеспечения AN.
Схема электрическая
Наиболее важными элементами платы Arduino Nano являются программатор (разъем ISCP) и микроконтроллер (ATmega328P). Каждый, кто будет работать с этой платой, должен знать их конструктивные, принципиальные схемы и назначение контактов.
Схема ISCP «Ардуино Нано»
Разъем ISCP (или SPI) — это программатор, через который скетч (код микроконтроллера платы) загружается в ATmega328P. Имеет 6 контактов. Проем первого из них выполнен в форме квадрата для удобства пользования.
- MISO: главный вход, подчиненный выход во время передачи данных.
- + VCC: напряжение питания.
- SCK: последовательный тактовый сигнал.
- MOSI: главный выход, подчиненный вход во время передачи данных.
- Восстановить: восстановить.
- GND: общий провод.
Принципиальная схема контроллера платы
Контроллер карты — ATmega328P. Ядром микросхемы является центральный процессор, к которому подключены 2 шины (шина данных и шина ввода / вывода), элементы управления (например, вывод сброса, отвечающий за сброс микроконтроллера) и память.
Типы памяти в контроллере:
- SRAM;
- Стремительный;
- EEPROM.
На шину данных поступают следующие элементы:
- Сторожевой таймер.
- АЦП.
- Внешнее прерывание.
- Первый и второй счетчики таймера.
- USART и I2C (Atmel называет этот интерфейс TWI).
Подключено к шине данных ввода / вывода:
- Порты ввода / вывода.
- Счетчик нулевого часа.
- Интерфейс SPI.
Контроллер может быть реализован как в пакетах MLF, так и в пакетах PDIP. Arduino Nano имеет версию микроконтроллера MLF.
SinaProg
SinaProg — это уже более профессиональная и универсальная программа, разработанная неизвестными иранскими программистами. Однако сразу скажу, что эта программа является не чем иным, как графической оболочкой для утилиты AVRDude, о которой мы поговорим дальше.
Универсальная оболочка для AVRDude
- Выбираем файл прошивки
- Конфигурация программатора: выбираем…
- Ардуино,
- Приносит
- Скорость передачи
Последняя версия — 2.1.1
Запуск Arduino Nano
Чтобы начать работу с картой, необходимо подключить ее по USB к ПК. Сигнал питания будет поступать через тот же порт. Как только он будет подключен к плате, загорится синий сигнальный светодиод (в модели v.2.x он расположен в нижней части платы, в модели v.3.x — вверху).
Настройка Arduino
Чтобы настроить карту для работы с написанным кодом, в среде программирования необходимо:
- перейдите в Инструменты;
- пойти в Совет;
- выберите пункт Arduino Duemilanove или Nano w / * модель микроконтроллера * (для v.2.x — ATmega168, для v.3.x — ATmega328);
- перейдите в Инструменты;
- перейти к последовательному порту;
- нажмите Загрузить.
После нажатия кнопки «Загрузить» микроконтроллер будет сброшен и новый скетч будет загружен.
При возникновении проблем с прошивкой необходимо перейти в раздел «Устранение неполадок» и узнать, как их исправить.
Avrdude
Чаще всего загрузчики используют одну и ту же утилиту: AVRDude (AVR Downloader-Uploader), которая уже давно включена во многие среды разработки для Arduino, например, включена в Arduino IDE.
Это самая мощная утилита для работы с микросхемами AVR, но все же это утилита командной строки, что для многих неудобно.
Загрузка HEX прошивки на Arduino
Последняя версия — 6.3.
Прошивка и память Arduino v3 0 CH340G
Стандартная версия платы Arduino Nano, работающая на микросхеме ATmega328P, может быть прошита только через программатор с интерфейсом SPI.
Кроме того, выпускается модель AN, на которой также установлена микросхема CH340G. Преимущество этой сборки в том, что плату можно прошить без подключения программатора SPI через порт USB. Это делается с помощью встроенного загрузчика и преобразователя USB-COM.
При необходимости такую модель Nano также можно прошить через интерфейс SPI.
Для загрузки прошивки через mini-USB вам потребуются:
- Подключите карту к ПК через USB. Система определит устройство как USB 2.0 SERIAL.
- Загрузите и установите драйвер CH340G.
Как только драйвер будет установлен, система правильно определит карту и может быть перепрошита программистом. Светодиод ON на плате загорится, а светодиод будет мигать.
Виды памяти
ATmega328P поддерживает 3 типа памяти:
- Стремительный. Он работает как постоянное запоминающее устройство.
- БАРАН.
- EEPROM. Эта память также предназначена только для чтения, но ее можно перепрограммировать.
Микроконтроллер Atmel имеет 32 КБ флэш-памяти (30 КБ свободно, так как 2 КБ занято загрузчиком), 2 КБ ОЗУ и 1 КБ EEPROM.
Связь с устройствами
Связь с устройствами в Arduino Nano осуществляется через:
- Интерфейс SPI;
- Интерфейс UART;
- Интерфейс TWI (аналог Atmel I2C с линиями SCL и SDA).
Кроме того, контакты микроконтроллера подведены к краям платы, поэтому удобно подключать устройства с помощью кабелей или штыревых разъемов.
Arduino IDE, AVRDude
Давайте посмотрим, как загрузить прошивку только с помощью Arduino IDE на компьютер с Windows.
Напоминаю, что вместе с Arduino IDE устанавливается также AVRDude, с которой мы будем скачивать прошивку.
Установка программного обеспечения
- Установите Arduino IDE, если он не установлен
- В некоторых случаях вам потребуется установить дополнительный драйвер для вашей карты (если карта является китайским клоном). Драйвер нужен только в том случае, если вы не видите свою плату в среде Arduino IDE.
Подготовка
- Подключаем карту к компьютеру
- Запустите Arduino IDE
- Определите, к какому порту подключен Arduino, через меню, как показано ниже:
Выбор COM-порта Arduino
- Определите, в какой папке установлена Arduino IDE
Обычно — «C: Program files (x86) Arduino»
Загрузка прошивки ардуино
- Откройте командную строку и введите следующую команду, предварительно адаптировав ее к вашим условиям:
«C: Program Files (x86) Arduinohardwaretoolsavr / bin / avrdude» — «C: Program Files (x86) Arduinohardwaretoolsavr / etc / avrdude.conf» -v -patmega328p -carduino -PCOM3 -b115200 -D -Uflash: w: Шестнадцатеричная прошивка : Я
Обрати внимание на:
- Путь к IDE Arduino (желтый),
- Номер порта (синий),
- Скорость передачи данных (зеленый)
- Имя (путь) файла прошивки (фиолетовый)
поэтому ваша карта не может работать на 115200, и вам нужно установить скорость 57600.
Нажмите CTRL + C, чтобы остановить процесс.
Получение помощи
Если у вас что-то пошло не так, и вы являетесь нашим клиентом, перейдите на страницу поддержки.
Часто задаваемые вопросы о прошивке
Какой COM-порт выбирать?
Этот вопрос обычно возникает, когда программа не может автоматически выбрать COM-порт, к которому подключен Arduino.
Прежде всего, для обнаружения ардуино на вашем компьютере должны быть установлены его драйверы. Они поставляются с IDE Arduino. Для более дешевых китайских колонок может потребоваться установка драйвера CH340.
Итак, драйверы установлены, теперь выберем правильный порт.
Дверь можно посмотреть в Arduino IDE…
Выбор COM-порта в Arduino IDE
. или, если вы работаете в Windows, в диспетчере устройств:

Определение COM-порта, к которому подключен Arduino, через Диспетчер устройств Windows.
Определенно не COM1. Следовательно, в моем случае это будет COM3.
Способы программирования
плата может быть запрограммирована с использованием рукописного или графического кода.
Метод графического программирования заключается в использовании плагина ArduBlock (поддерживает русский язык), который интегрирован в Arduino IDE. Программа изначально отформатирована как блок-схема, а затем автоматически конвертируется в код Arduino IDE (подходит для начинающих программистов).
Чтобы установить подключаемый модуль Arduino IDE:
- Установите Arduino IDE (доступно на официальном сайте Arduino).
- Загрузите плагин ArduBlock с сайта разработчика.
- Переименуйте загруженный файл в ardublock-all.
- Создайте папки Arduino, затем инструменты, ArduBlock и инструмент в разделе «Документы.
- Переместите загруженный и переименованный файл в папку инструментов.
Для работы с этим плагином вам необходимо:
- Запустите среду программирования.
- Перейдите на вкладку «Инструменты».
- Щелкните раздел ArduBlock.
Под программированием карты мы также подразумеваем, как загрузить прошивку в микроконтроллер. Самый популярный метод — это внутрисхемное программирование (ISP), при котором ATmega прошивается через программатор, подключенный через интерфейс SPI к плате и через USB-кабель к ПК. Этим же методом можно перепрошить AN.
Карты, использующие чип CH340, можно прошивать через USB.
Вы можете проверить производительность кода в таких программах, как:
- Протей;
- AutoCAD 123D;
- Tinkercad.
Все утилиты имеют удобный графический интерфейс и большой набор компонентов. В Proteus и AutoCAD вы можете проектировать печатные платы. Для работы с Tinkercad вам нужен только браузер и стабильное интернет-соединение, так как это программное обеспечение работает онлайн.
Варианты прошивки Ардуино
Прошивка с помощью Arduino IDE
Вы можете прошить плату с помощью Arduino IDE всего за несколько шагов. Прежде всего, вам необходимо скачать и установить саму программу Arduino IDE. Вам также необходимо скачать и установить драйвер CH341. Плату Arduino необходимо подключить к компьютеру и подождать несколько минут, чтобы Windows распознала и запомнила ее.
Далее необходимо скачать программу Arduino IDE и выбрать нужную плату: Инструменты — Плата. Вам также необходимо выбрать порт, к которому он подключен: Инструменты — Порт. Готовая прошивка открывается двойным щелчком; чтобы загрузить его на карту, необходимо нажать кнопку «Загрузить» вверху панели инструментов.
В некоторых ситуациях может возникать ошибка из-за наличия кириллических символов (русских букв) в пути к папке с кодами. Для этого лучше всего создать и сохранить файл с наброском в корне диска с английским именем.
Прошивка с помощью программатора
Один из самых простых способов прошить карту — использовать программатор. Заливка будет проходить в несколько этапов.
Прежде всего необходимо подключить программатор к плате и к компьютеру. Если программатор не распознается компьютером, вам необходимо скачать и установить драйверы.
Далее нужно выбрать карту, для которой вы хотите прошить загрузчик. Это делается в меню Сервис >> Карта.

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

Последний шаг — нажать «записать загрузчик» в меню «Инструменты.

После этого начнется загрузка. Завершение займет около 10 секунд.
Прошивка AVRISP MKII в Arduino ATmega16U2
Мы готовы обновить прошивку до 16U2.
Загрузите шестнадцатеричный файл AVRISP MKII отсюда. Отключите Arduino от USB-кабеля и источника питания. Короткий контакт 5-6 ICSP1. Подключите Arduino к USB. Откройте контакты 5-6 ICSP1.
Запустите программное обеспечение FLIP: Пуск -> Все программы -> Flip. Зайдите в: Настройки -> Связь -> USB. Щелкните Открыть».
Перейдите в: Файл -> Загрузить файл HEX. Затем выберите LUFA-BOTH-AVRISP-MKII.hex и нажмите «Выполнить».
ATMEGA16U2 теперь называется AVRISP MKII и работает в режиме Atmel Studio. Arduino AVRISP MKII может работать в двух режимах: Atmel Studio или Avrdude. Ниже я расскажу только о режиме Atmel Studio, так как с режимом Avrdude у меня было много проблем.
Установка Atmel Studio
Загрузите и установите Atmel Studio (включая драйверы) отсюда. После установки подключите Arduino к USB-кабелю. Оба светодиода (RX и TX) должны мигнуть дважды (это означает, что 16U2 находится в режиме Atmel Studio). Новое устройство будет распознано.
Установите драйверы. Если они не распознаются автоматически, вы найдете их в USB-драйверах: C: Program Files Atmel.
Зайдите в Диспетчер устройств, нажмите: Win + Pause -> Оборудование -> Диспетчер устройств. Проверьте, правильно ли установлен драйвер. Он должен быть в Jungo Connectivity -> AVRISP MKII.
Теперь мы готовы прошить Arduino ATMEGA328P. Переходим к следующему шагу.
Перепрошивка загрузчика Arduino в ATMEGA328P через ATMEGA16U2
Довольно сложная часть нашего мероприятия по прошивке Arduino. Вам нужно будет припаять несколько проводов. По сути, нам нужно подключиться так:
ICSP1 MISO2.Pin.1 -> ICSP MISO.Pin.1
ICSP1 SCK2.Pin.3 -> ICSP SCK.Pin.3
ICSP1 MOSI2.Pin.4 -> ICSP MOSI.Pin.4
JP2 PB4.Pin.1 -> ICSP RESET.Pin.5
Подключите плату Arduino к USB-кабелю. Светодиоды RX и TX должны мигнуть дважды. Драйверы должны быть правильно распознаны (Jungo Connectivity -> AVRISP mkII). Запустите Atmel Studio. Перейдите в: Пуск -> Все программы -> Atmel -> Atmel Studio.
Перейдите в: Инструменты -> Программирование устройства. Выбирать:
Инструмент -> AVRISP mkII
Устройство -> ATmega328P
Интерфейс -> ISP
Нажмите кнопку «Применить».
Установите частоту интернет-провайдера на 16,1 кГц. Нажмите кнопку «Установить».
Программатор не будет работать, если вы установите очень низкую тактовую частоту ISP. Вы получите сообщение об ошибке: «ispProgramMem: статус ошибки получен: 0x81 получено, ожидается 0x00 (истек срок извлечения вывода RDY / nBSY)». По-английски это будет звучать так: «ispProgramMem: статус ошибки получен: получено 0x81, ожидается 0x00 (срок действия выборки вывода RDY / nBSY истек)». Однако максимальная скорость интернет-провайдера также ограничена и не может превышать 1/4 частоты устройства.
Перейдите в раздел «Подпись устройства» и нажмите кнопку «Читать». Вы должны увидеть правильную «подпись устройства»: 0x1E950F. Нажмите «Воспоминания» и найдите шестнадцатеричный файл загрузчика Arduino. Он внутри:
C: Program Files Arduino hardware arduinobootloaders optiboot optiboot_atmega328.hex
Нажмите кнопку «Программа». Если вы используете новый, незапрограммированный ATMEGA328P, также необходимо запрограммировать ПРЕДОХРАНИТЕЛИ. Перейдите в раздел «Предохранители» и используйте следующие значения: low_fuses = 0xff; high_fuses = 0xDE; расширенный_fuses = 0x05.
Вы успешно прошили 328P с помощью загрузчика Arduino. На следующем этапе мы вернем оригинальную прошивку 16U2.
Элементы платы
Arduino Nano состоит из множества элементов, в том числе:
- микросхемы;
- пассивные элементы (резисторы, конденсаторы, диоды);
- разъемы;
- регуляторы.
Микросхема платы FT232R
Микросхема допускает подключение платы по USB. Чип, установленный в AN, не может работать напрямую с интерфейсом USB, поэтому FT232R преобразует его в интерфейс UART.

Сердце платформы — микроконтроллер ATmega328P
ATmega328P — контроллер основной платы. В него загружается набросок, написанный программистом, и контроллер отправляет команды различным элементам платы. Например, микроконтроллер мигает диодами, реле переключается, а пьезоэлемент издает звуки.
Светодиодная индикация
На плате есть 4 встроенных светодиода, каждый из которых имеет свое назначение:
- Светодиоды RX и TX мигают во время передачи данных по UART.
- Диод L загорается при подаче на него высокого сигнала и гаснет при низком уровне.
- Светодиод ON горит, когда на плату подано питание.
Кроме того, практически любой вывод микроконтроллера можно подключить к другим светодиодам, 7-сегментным индикаторам или даже дисплеям.
Разъем mini-USB
Через разъем mini-USB карту можно подключить к персональному компьютеру. AN также может получать питание от внешних источников через этот интерфейс.
Линейный понижающий регулятор напряжения 5 В
В качестве регулятора используется микросхема LM1117MPX-5.0. Преобразует сигнал питания AN в сигнал питания микроконтроллера ATmega и других логических вентилей, которые не поддерживают напряжение более 5 В. Например, транзисторные логические элементы (TTL) получают питание от сигнала такой величины.
ICSP-разъем для ATmega328
Этот интерфейс позволяет стандартным образом загружать прошивку на микроконтроллер. Специальная петля подключена с одной стороны к программатору, подключенному к ПК, а с другой — к разъему ICSP.

Ошибка компиляции
Возникает на этапе сборки и компиляции прошивки, ошибки компиляции вызваны проблемами в коде прошивки, то есть проблема чисто программная. Слева от кнопки «скачать» находится кнопка с галочкой: проверить. Во время проверки компилируется прошивка и выявляются любые ошибки. Ардуино в этом случае может вообще не подключаться к компьютеру.
- В некоторых случаях ошибка возникает при наличии кириллицы (русских букв) в пути к папке со скетчем. Решение: Добавить отдельную папу для скетчей в корень диска с английским названием.
- В черном окне в нижней части IDE Arduino вы можете прочитать полный текст ошибки.
- В готовых скетчах, скачанных из Интернета, часто возникает ошибка с описанием «имя файла» без такого файла или каталога. Это означает, что в скетче используется библиотека «имя файла», и вы должны поместить ее в Program Files / Arduino / libraries. Во всех моих проектах всегда есть папка с используемыми библиотеками, которые нужно установить. Кроме того, библиотеки можно искать в Google по «имени файла».
- При использовании некоторых специальных методов и функций неправильная вкладка в «Инструменты / Вкладка» может стать ошибкой«.
- Если вы напишете прошивку, любые синтаксические ошибки в коде будут выделены и внизу черного окошка можно будет прочитать более подробное описание в чем косяк.
Примеры проектов с Arduino Nano
реализовывать проекты в AN удобно за счет наличия библиотек, упрощающих написание кода.
Подключение светодиодов к Arduino Nano
запитать светодиодный диод можно, например, с помощью вывода 13 через ограничительный резистор 220 Ом. Чтобы этот диод вспыхнул, вам нужно написать следующий код:
Для создания пиксельного изображения, где пиксель равен 1 диоду, используется адресная лента WS2812.
Структура памяти Ардуино, где располагается скетч и данные
- Микроконтроллер Arduino имеет 3 типа памяти: флэш-память, которая используется для хранения эскизов, RAM для хранения переменных и EEPROM для хранения постоянной информации. Из этих типов памяти флэш-память и EEPROM являются энергонезависимыми, что означает, что информация сохраняется при отключении питания. ОЗУ используется только для хранения данных, относящихся к исполняемой программе.Микроконтроллер ATmega168, используемый на некоторых платах Arduino, имеет 16 КБ флэш-памяти, 1024 байта ОЗУ и 512 байтов EEPROM. Важно обратить внимание на небольшой объем оперативной памяти. Большие программы могут использовать его полностью, что приводит к сбою программы. По этой причине необходимо следить за тем, сколько строк занимает программа, и по возможности удалять ненужные. Есть несколько способов уменьшить объем кода:
- Вы можете отправить некоторую информацию на свой компьютер.
- Для таблиц и других больших массивов используйте наименьший тип данных для хранения.
- Данные, которые остаются неизменными, можно объявить константой, используя слово const перед объявлением переменной.
- Меньше использования рекурсии. Когда вы его вызываете, в памяти выделяется фрагмент, называемый стеком, в котором хранятся различные данные. Если рекурсия вызывается часто, стеки будут занимать большой объем памяти и могут ее использовать.
- Нередактируемые строки могут храниться во флэш-памяти во время работы программы. Для этого используется функция ПРОГРАММА.
На размер памяти не влияет размер имен переменных и комментариев. Компилятор устроен таким образом, что он не включает эти данные в скомпилированный скетч.
Для измерения объема используемой оперативной памяти используется скетч из библиотеки MemoryFree. В нем есть специальная функция freeMemory, которая возвращает объем доступной памяти. Кроме того, эта библиотека широко используется для диагностики проблем, связанных с нехваткой памяти.
Оптимизация флеш-памяти. Как только процедура компиляции будет завершена, в окне отобразится информация о памяти, занятой кодом. Если скетч занимает большую часть памяти, необходимо оптимизировать использование флеш-памяти:
- Использование констант. Как и RAM, он устанавливает неизменные значения через константы.
- Удалите ненужный Serial.println. Эта команда используется, когда вам нужно увидеть значения переменных в разных местах программы, часто эта информация просто не нужна. В этом случае команды занимают место в памяти, поэтому, убедившись, что программа работает правильно, некоторые строки можно удалить.
- Отказ от загрузчика — вы можете запрограммировать микроконтроллер через контакты ICSP на плате с помощью аппаратных программаторов.
Флэш-память — это безопасный и удобный способ хранения данных, но некоторые факторы ограничивают ее использование. Флэш-память характеризуется записью данных блоками по 64 байта. Кроме того, флеш-память гарантирует защиту информации на 100 000 циклов записи, после которых информация искажается. Флэш-память содержит загрузчик, который нельзя удалить или подделать. Это может разрушить саму доску.
Память EEPROM используется для хранения всех необходимых данных после выключения питания. Для записи информации о EEPROM необходимо использовать специальную библиотеку EEPROM.h, которая является одной из стандартных библиотек в Arduino IDE. Чтение и запись информации в EEPROM происходит медленно, около 3 мс. Надежность хранения данных гарантируется даже при 100 000 циклов записи, поэтому циклами записи лучше не писать.
Технические характеристики платы
Питание 5 дюймов Входной сигнал 7-12 В (постоянный ток) Количество DP 14 (6 для ШИМ) Количество точек доступа восемь Максимальный ток DP 40 мА Флэш-память формата 16/32 Кб Баран 1/2 Кб Память в формате EEPROM 512 байт / 1 КБ Тактовая частота микроконтроллера 16 МГц Размеры (править Ширина — 19 мм, длина — 42 мм Масса 7 г Подробный обзор возможностей карты представлен в даташите — технической документации. Также указаны подробные характеристики и описание НА.

Порты ввода/вывода и питание
Порты ввода / вывода включают:
- цифровые разъемы;
- аналоговые разъемы;
- разъемы, излучающие сигнал ШИМ;
- разъемы для работы с ADC, I2C (TWI), SPI, UART.
Для работы с каждым интерфейсом на языке C для Arduino существует отдельная библиотека, что упрощает написание кода программистом.
Блок питания может быть подключен к плате модели «Nano» 3 способами:
- Через разъем mini-USB. Этот способ удобен тем, что разработчику не нужно подавать на плату дополнительное питание. Этот источник питания поддерживает системы, позволяющие регулировать входной ток.
- Через нерегулируемые источники 6-20 В.
- Через регулируемый источник питания 5 В.
Плата Arduino Nano запрограммирована таким образом, что если источник питания подключен ко всем доступным контактам, микроконтроллер выберет сигнал с самым высоким значением напряжения и заблокирует остальные контакты питания.
Питание от внешнего источника
Питание от нерегулируемых источников 6-20 В обеспечивается подключением блока источника сигнала к контакту 30 и общему проводу соответственно.
Наибольшей популярностью у разработчиков пользуется способ подключения блока питания через регулируемый блок питания на 5В. Для его использования в схему также должен быть включен преобразователь с выходным напряжением 5 В, а преобразование энергии всегда приводит к дальнейшим потерям и ухудшению качества сигнала. Подключение этого источника осуществляется через вывод 27 и общий провод.
Какой программатор выбрать для arduino uno в ide
Про Arduino IDE, загрузчики (bootloader), программаторы (avrdude.exe), фьюзы, HEX-файлы. В одном флаконе. Не претендуя на оригинальность.
Автор: 123ksn
Опубликовано 12.03.2018
Создано при помощи КотоРед.Про Arduino IDE, загрузчики (bootloader), программаторы (avrdude.exe), фьюзы, HEX-файлы. В одном флаконе. Не претендуя на оригинальность.
Для предметности разговора начну с картинки

Нет худа без добра (с).
Пока использовал заводские платы «Arduino UNO» и «Arduino MiniPRO», я не задумывался о том, как работает система в целом. Я просто писал код, нажимал кнопку «Вгрузить» и всё заливалось в микроконтроллер, далее МК, установленный на плате (ATmega328). В этом и заключается прелесть экосистемы «Arduino».
Сподвигла написать данный опус проблема. Никак мне удавалось залить исходную программу, далее СКЕТЧ, из Arduino IDE в нестандартный для неё МК «ATmega8L» с кварцем 8МГц стандартным способом, т.е. через USB-порт (на самом деле через преобразователь USB- UART). Это кратко. Теперь начну рассказывать, какую важную информацию я «наковырял» и как решил свою проблему.Немного общей теории.
Для того, что бы залить (прошить, загрузить, UPLOAD) скетч в ATmega8L из Arduino IDE через USB-порт, нужен преобразователь, который преобразует информацию, передаваемую по USB-интерфейсу(каналу, дороге, линиям) в сигналы последовательного канала UART. Т.е. должны получиться определенные уровни сигналов – интерфейс (RS232, RS485) и определенные длительности сигналов (протокол).
Что бы принять информацию, поступающую в ATmega8L по UART (физически через выводы Rx, Tx) в МК должна быть ПРЕДВАРИТЕЛЬНО загружена программа, которая настраивает определенные выводы МК как Rx и Tx, и умеет обрабатывать полученную через них информацию. Эта программа называется ЗАГРУЗЧИК или по англицки BOOTLOADER.
(Отступление. ЗАГРУЗЧИКи бывают для разных интерфейсов и, соответственно, протоколов. Программа-программатор, заливающая информацию, должна соответствовать имеющемуся ЗАГРУЗЧИКу. И наоборот — прошитый ЗАГРУЗЧИК должен соответствовать управляющей программе-программатору. Грубо говоря — это «папа» и «мама» одного разъема. Очень часто для МК фирмы ATMEL «папой» является программа avrdude.exe).
Итак, посредством USBasp-платы и avrdude.exe я залил ЗАГРУЗЧИК в ATmega8L. Залитый ЗАГРУЗЧИК должен учитывать определенные физические характеристики МК. В моем случае это то, что МК работает с внешним кварцем на частоте 8МГц (в рамках данной статьи этой характеристики достаточно). Заливка ЗАГРУЗЧИКа происходит просто и жестко – как указал разработчик МК. Не залить HEX-файл (FIRMWARE) ЗАГРУЗЧИКа при минимальном количестве извилин, прямых руках, исправных деталях и правильном соединении просто невозможно.А почему же тогда возникает проблема залить скетч? Ответ есть выше. Предварительно прошитый ЗАГРУЗЧИК должен соответствовать настройкам «программы-заливатору» (от слова «программатор») и, конечно же, преобразователю интерфейса (плате-программатору). Если идиот подключит два проводка от Rx и Tx ATmega8 к двум выводам разъема USB, то ничего не прошьется. Поэтому на платах-преобразователях останавливаться не буду. Единственно напомню, что ISP-программаторы — это программаторы «железа», которые работают на самом низком уровне и позволяют настраивать МК почти как угодно в пределах возможного.
Вот и нарисовался главный вопрос: Как определить, что имеющийся в МК ЗАГРУЗЧИК соответствует программе-программатору (в рамках данной статьи – Arduino IDE)? Если кратко – то никак. И не поможет вам ни осциллограф, ни анализатор. С помощью анализатора можно увидеть длительности каких-то сигналов и максимум, что можно определить – используемую ЗАГРУЗЧИКом скорость, если он будет что-нибудь выдавать по линии Tx. Но даже если скорость будет согласованная, а считанная информация читабельна, это не скажет нам ровным счетом ничего. Единственный способ подружить ЗАГРУЗЧИК в МК и «программу-заливатор» – это читать и следовать информации разработчика ЗАГРУЗЧИКа.
И вот здесь мы подходим к главному плюсу и недостатку одновременно Arduino IDE – дружелюбному интерфейсу для начинающего пользователя. Читай: скрытие всех системных настроек программы от пользователя.
Продолжаю. Итак, мы прочитали информацию от разработчика ЗАГРУЗЧИКа как прошивать его ЗАГРУЗЧИК и как потом загружать HEX-файлы в МК. НО СТОП! В Arduino IDE нет понятия «ЗАГРУЗЧИК», «HEX-файл». Здесь я вынужден прервать рассказ, вернуться к первой картинке и рассказать «с высоты птичьего полета» как устроена Arduino IDE.1) Грубо говоря, программная платформа «Arduino IDE» предоставляет нам только убогий (для профи) и замечательный для экосистемы «Arduino» интерфейс для написания скетчев и легкой настройки (плата, порт, программатор). При нажатии кнопки «Проверить»(скетч) в дело вступает «наемный профессионал» — компилятор avr-gcc.exe, который преобразует нашу гениальную программу в вид, принимаемый программой-программатором – HEX-файл. Если скетч преобразовался (скомпилировался) и получился HEX-файл, то можно приступить ко второму шагу(смотри картинку1).
2) Запустить программу-программатор с определенными параметрами, что бы HEX-файл «скормить», например, через преобразователь USB-UART, ЗАГРУЗЧИКу МК. Из данной схемы видно, что если автор ЗАГРУЗЧИКа использует в качестве программы-программатора, например, классическую «дудку» (avrdude.exe), то нам вовсе необязательно мучится с настройками платформы «Arduino IDE», спрятанными в фиг знает каких файлах и фиг знает в каком формате. Мы можем просто написать свой bat(cmd, скрипт)-файл и запускать его как для компиляции проекта (avr-gcc.exe), так и для заливки HEX-файла в МК (avrdude.exe). А дальше процесс происходит практически на уровне железа.
3) Драйверы операционной системы преобразуют информацию так, что бы она была понятной подключенным USB-устройствам. В представленной схеме я показал два варианта:
4) 1-й вариант с USB-UART -преобразователем и МК с обязательным (5.1) ЗАГРУЗЧИКом. 2-й вариант с аппаратным USBasp-программатором и (5.2)МК (ЗАГРУЗЧИК не нужен, хотя может иметься).Какие можно сделать выводы, глядя на представленную картинку?
1. НЕ НАДО устраивать танцы с бубном, если не происходит в Arduino IDE компиляция проекта. Заходим на сайт разработчика компилятора для требуемого МК (ATmega, ESP8266 и т.п.) и читаем, какая среда требуется для компиляции проекта, и с какими опциями надо запустить компиляцию. Часто это будет быстрее и проще, чем пытаться подружить Arduino IDE с нужным МК. Да, для этого надо обладать определенным уровнем знаний не на уровне электрика.
2. Тоже самое можно сказать и о случае, если не происходит заливка HEX-файла в МК через ЗАГРУЗЧИК. Вводим в командной строке рекомендуемую для данного ЗАГРУЗЧИКа команду и получаем результат. Если результат отрицательный, то почти сразу знаем куда «копать». Либо проблема с драйверами ОС, либо дохлая ножка Rx, либо косяк разработчика и на худой конец – проблема в ДНК пользователя.
Вроде всё, о чем я рассказал, есть в интернете, но часто для начинающего ардуинщика непонятно, нужна ли ему некая информация и как ею воспользоваться. Это как на первом курсе универа нас пичкают производными, интегралами, матрицами и у студента растет естественное чувство «А нафига нам это надо?». А потом какой-нибудь практик возьмет и покажет, как использовать для решения реальных задач эту «вышку». И наступает «дзен». Вдруг резко всё, что валялось в голове в виде ненужного хлама, раскладывается по полочкам и ты понимаешь, что стал ИНЖЕНЕРОМ.К сожалению это не всё, что надо бы знать начинающему ардуинщику. Кое-что расскажу о ЗАГРУЗЧИКЕ (bootloader) подробней.
Что же надо знать о ЗАГРУЗЧИКе, что бы осознанно им пользоваться?
1)Размер загрузчика.
2)Область памяти, в которую он загружается.
3)Фьюзы, которые должны быть использованы с загрузчиком.
4)Скорость для UART.
5)Частоту МК, под которую рассчитан ЗАГРУЗЧИК.
6)Ну и конечно же, под какой МК рассчитан ЗАГРУЗЧИК.
7)Внешнее проявление работающего ЗАГРУЗЧИКа.
8)Критерий для запуска ЗАГРУЗЧИКА.1) Загрузчик имеет некий размер. Есть МК, у которых мало памяти, и разместить ЗАГРУЗЧИК просто нет места. Или место есть, но не останется места для программы пользователя. Загрузчик – это все таки только программа-посредник для нашего удобства.
2) В МК ATmega Загрузчик может заливаться (условно говоря) в одну из 4х верхних областей Flash-памяти.
3) Соответственно фьюзами задаем область памяти МК, в которой находится ЗАГРУЗЧИК, что бы МК знал, с какого адреса запускать программу в МК после «Reset» или другого события.
4) В экосистеме «Arduino» используется ЗАГРУЗЧИК по UART. А для этого протокола важна скорость. Если Загрузчик настроен на одну скорость обмена информацией, а программа-программатор(avrdude.exe) на другую, то загрузки HEX-файла в память МК не произойдет.
5) МК может работать с разными тактовыми частотами. Чем ниже частота – тем меньше потребляемая мощность. Если залить ЗАГРУЗЧИК, не рассчитанный на используемую МК тактовую частоту, то как минимум будет проблема в несогласованной скорости UART. Т.е. скетч вряд ли загрузится в МК, а если ЗАГРУЗЧИК без контроля ошибок, то может загрузиться черт знает что.
6) Типов МК очень много. ЗАГРУЗЧИК для МК AVR не подходит для МК PIC. Проблемы могут возникнуть даже для одинаковых МК, но в разных корпусах.
7) Очень не мешает знать, как ведет себя загрузчик в МК без пользовательской программы. Вот получили вы посылку из Китая с Arduino ProMini и как узнать есть в ней загрузчик или нет? А если есть описание, то можно прочитать, что при подаче питания или сбросе должен 5 раз мигнуть желтый светодиод. Не мигает? Значит нет загрузчика или у вас проблемы с платой.
8) Вообще-то ЗАГРУЗЧИК может активизироваться (начать свою работу, прервав работу основной программы) не только по сигналу сброса, но любым другим способом, который реализовал разработчик, например, замыканием выв. 5 МК на землю.А теперь переведем полученную информацию в практическую плоскость.
1) Как узнать размер ЗАГРУЗЧИКА, находящегося в МК?
Если речь о загрузчике, залитом в плату ардуино (читай в МК ATmega8/168/328), то можно прочитать с помощью программы-программатора, например, AVRDUDESS и платы-программатора USBasp, Flash-память и фьюзы BOOTSZ0 и BOOTSZ1. Открыв сохраненный HEX-файл текстовым редактором, можно увидеть в младших адресах код пользовательской программы, потом незанятую память (FF) и в самых верхних адресах памяти (см строку 225) код загрузчика с адреса 1C00 и до признака конца 01FF. Таким образом можно узнать длину загрузчика в байтах, а потом перевести в длину в словах.
2)Как узнать размер ЗАГРУЗЧИКА, который мы хотим разместить в МК?
Открываем в текстовом редакторе HEX-файл, в котором хранится интересующий нас загрузчик. Видим приблизительно такую куртинку
Здесь пояснения как понимать полученные цифры

3)Что будет, если залить загрузчик и неправильно выставить фьюзы BOOTSZ0 и BOOTSZ1?
Надо иметь ввиду, что не любой загрузчик способен перезаписать сам себя. Почему так? Этот вопрос выходит за рамки данной статьи. Более того, вопрос поставлен не «как перезаписать загрузчик в МК средствами платформы Arduino IDE?», а о первичной записи в новый МК загрузчика и установке конкретных фьюзов BOOTSZ0 и BOOTSZ1, предполагая, что остальные фьюзы установлены гарантированно правильно.
Итак, первый раз загрузчик всегда прошивается аппаратным программатором (ISP), поэтому выставим ли сначала фьюзы BOOTSZ0 и BOOTSZ1, а потом зальем ЗАГРУЗЧИК или наоборот, значения не имеет, так как ISP-программатор будет загружать данные по адресам, указанным в HEX-файле. Но вот потом, после Reset, ATmega8 начнет выполнение программы с адреса 000, если фьюз BOOTRST=1, независимо от BOOTSZ0 и BOOTSZ1
Из таблицы видно, что если Загрузчик разместим не с нужного адреса или неправильно установим фьюзы, то Загрузчик не запустится должным образом. Под должным образом я подразумеваю запуск нештатным способом за счет других ошибок, которые «исправляют» начальные ошибки. Например, залили в ATmega8 ЗАГРУЗЧИК длиной 510 слов с адреса E02, т.е. как фьюзы BOOTSZ1 и BOOTSZ0 не выставляй, а при сбросе ЗАГРУЗЧИК не запустится (не получит управление МК). Или прошили ЗАГРУЗЧИК размером в 1000 слов с адреса C00, но фьюзы BOOTSZ1 и BOOTSZ0 выставили в 0 и 1. Тогда при сбросе счетчик команд будет установлен в E00 и какой-то участок кода ЗАГРУЗЧИКа запустится, но такой запуск может привести к непредсказуемым результатам.
4)Что будет, если ЗАГРУЗЧИК от ATmega8 залить в ATmega328?
С одной стороны ATmega8 и ATmega328 выводно совместимы, с другой – у них разный объем памяти, а ЗАГРУЗЧИК всегда размещается в конце памяти (в старших адресах). Поэтому, если мы перекомпилируем исходник загрузчика для ATmega8 под ATmega328, то нельзя говорить о том, что мы пытаемся залить ЗАГРУЗЧИК от ATmega8 в ATmega328. Другое дело, если мы попытаемся HEX-файл с ЗАГРУЗЧИКом от ATmega8 залить в ATmega328. Здесь ответ однозначный – данные зальются вовсе не в конец памяти ATmega328, где должен располагаться ЗАГРУЗЧИК, а в область пользовательской программы и никогда штатным образом ЗАГРУЗЧИК не получит управление (не запустится).
И о результате осознания и конечном итоге.
Теперь я знаю, что ЗАГРУЗЧИК optiboot_flash_atmega8_UART0_57600_8000000L.hex из проекта MiniCore, который я хочу залить в свою ATmega8L зальется с адреса 1E00, т.е. займет сектор памяти 1FFF-1E00=1FF (512байт или 256 слов). Соответственно я должен установить (в ноль) три фьюза следующим образом: BOOTRST=0, BOOTSZ1=0 и BOOTSZ0=1 (см таблицу выше)
Залил с помощью программы AVRDUDESS и USBasp-программатора
Как я говорил выше, ЗАГРУЗЧИК и Программа-программатор – это мама и папа одного разъема. И коль я прошил ЗАГРУЗЧИК (маму), то теперь надо настроить «папу»-ArduinoIDE, которой я должен «рассказать» 1) скорость UART, 2)марку МК, 3)Частоту тактирования процессора МК (требуется для правильной компиляции, а не для загрузки), 4)Место, где лежит HEX-файл прошитого ЗАГРУЗЧИКА. Зачем? Не знаю.
Отредактируем файл boards.txt. В разных версиях ArduinoIDE он имеет разный формат.
1)Название платы для меню в ArduinoIDE задаётся в строке с «.name=», например: 328.name=ATmega328 или atmegang.name=Arduino NG or older2)За выбор названия МК для меню отвечает строка вида «.menu.cpu.atmega8=», например: atmegang.menu.cpu.atmega8=ATmega8 или 8.build.mcu=atmega8
К сожалению, все параметры для всех версий ArduinoIDE описать невозможно. Поэтому я показал соответствующие разделы файла boards.txt двух версий. Думаю по образцу и подобию Вы сможете доработать свою версию ArduinoIDE под свои ЗАГРУЗЧИКИ.
Проверим теорию на практике, для чего:
1)Зальем посредством USBasp в ATmega8 (на беспаечной плате) с кварцем 16МГц штатный загрузчик из состава ArduinoIDE «ATmegaBOOT-prod-firmware-2009-11-07.hex» (размер файла 2,8кБ), загрузка с адреса 1C00. Разъемы от плат-программаторов USBasp и USB-UART от беспаечной платы отключать не буду, что бы не перепутать при подключении. Проще отсоединить/присоединить к программаторам, которые надо обязательно отсоединять. Устанавливаю фьюзы L=FF, H=C0. Отключаю USBasp, смотрю на светодиод, подаю питание. Несколько раз быстро мигнул и более не светится. Значит загрузчик работает. Теперь зальем скетч BLINK штатным способом. Подключаюсь USB-UART и светодиод начинает вести себя совсем по другому- раз в 8 сек светится. Запускаю ArduinoIDE 1.6.6.0, устанавливаю Arduino NG…, ATmega8, порт, программатор AVRISP mkII. AVRDUDE 6.0.1 выдает кучу всякой информации (у меня так настроено), скорость 19200. Скетч прошивается и сразу начинает выполняться. Т.е. провода, фьюзы, настройки выполнены правильно.
2)По такой же методике выполним заливку загрузчика optiboot_flash_atmega8_UART0_115200_16000000L.hex, переименовав в «01.hex» и положив в каталог optiboot (размер файла 1,34кБ), загрузка с адреса 1E00. Поэтому фьюзы L=FF, H=C2. После заливки загрузчика светодиод начинает мигать несколько раз в секунду. Без программаторов (только питание) не светится, т.е. загрузчик не выдает своего присутствия. Добавляю секцию в файл boards.txt
##############################################################
#поместите HEX-файл в каталог optiboota8_16MHz_E.name=atmega8 (16 MHz_ExtOsc_115k)
a8_16MHz_E.upload.tool=avrdude
a8_16MHz_E.upload.protocol=arduino
a8_16MHz_E.menu.cpu.atmega8.upload.maximum_size=7680
a8_16MHz_E.menu.cpu.atmega8.upload.maximum_data_size=512
a8_16MHz_E.upload.speed=115200
a8_16MHz_E.bootloader.unlock_bits=0x3F
a8_16MHz_E.bootloader.lock_bits=0x0F
a8_16MHz_E.menu.cpu.atmega8.bootloader.low_fuses=0xff
a8_16MHz_E.menu.cpu.atmega8.bootloader.high_fuses=0xc2
a8_16MHz_E.bootloader.tool=avrdude
a8_16MHz_E.bootloader.path=optiboot
a8_16MHz_E.bootloader.file=01.hex
a8_16MHz_E.build.mcu=atmega8
a8_16MHz_E.build.f_cpu=16000000L
a8_16MHz_E.build.core=arduino
a8_16MHz_E.build.variant=standard
a8_16MHz_E.build.board=AVR_NGПрошиваю штатным способом. Светодиод при наличии USB-UART не светится. При отключении преобразователя и подаче питания начинает мигать, т.е. скетч запустился.
3)Когда попытался повторить вышеописанное для загрузчика optiboot_flash_atmega8_UART0_115200_8000000L.hex потерпел неудачу. Штатным способом скетч не заливался. После долгих танцев с бубном, на основании которых и появился данный трактат, пришел к выводу, что косяк разработчика, так как те же действия для optiboot_flash_atmega8_UART0_38400_8000000L.hex привели к загрузке скетча штатным способом. Кроме того, посмотрев файл boards.txt, нашел в нем ошибки, например:
###################
#### ATmega8/A ####
###################8.name=ATmega8
8.upload.tool=avrdude
8.upload.protocol=arduino
8.upload.maximum_size=7680
8.upload.maximum_data_size=1024. Ошибка
8.menu.clock.16MHz_external.bootloader.high_fuses=0xc4. ошибка
И нет для 8МГц скорости 115200, а нерабочий HEX-файл есть. Вот и верь разработчикам.Извините, что не могу привести отличия форматов файла boards.txt в разных версиях ArduinoIDE, так как этим вопросом не занимался. Попробовал сделать под имеющуюся версию по образцу и подобию – получилось. Глубже не «копал».
Спасибо за внимание. Буду рад, если кому-то мои исследования оказались полезными.
У Вас есть Arduino? Значит у Вас есть программатор!

Все таки, поговорка «Век живи — век учись!» придумана неспроста! В свое время, начав интересоваться микроконтроллерами семейства AVR (и в частности, Arduino) я забеспокоился об инструменте для программирования оных. Т.е., программаторах. А ведь программатор (ну, может не в столь явном виде) у меня всегда был под рукой. Это плата Arduino.
ISP (In-system programming) — это способность микроконтроллера получать прошивку находясь уже непосредственно в собранной схеме. Программатором (устройством передающим прошивку от компьютера в контроллер) в нашем случае будет выступать Arduino.
Аргументы для сомневающихся (делать/не делать)
За:
1) этот шилд даст вторую жизнь «морально устаревшим» платам Arduino на Atmega8
2) У Вас появиться прекрасная возможность писать программы для микроконтроллеров серии Attiny в привычном Arduino IDE
3) это самый «копеечный» программатор (при условии наличия у Вас Arduino)
4) этот шилд ОЧЕНЬ прост в изготовлении, не содержит дефицитных деталей и не требует настройки
5) позволяет (в какой-то мере) сохранить порядок на Вашем рабочем месте
Против:
— я не нашелЕсли готовы, то поехали.
Чтобы Arduino стала ISP программатором на нее необходимо залить специальную прошивку. Эта прошивка поставляется вместе с Arduino IDE. Напомню. Еще без какой-либо периферии Arduino подключаем к компьютеру и загружаем Arduino IDE. Выбираем [File] -> [Examples] -> [ArduinoISP]

Ну и далее, люди делают что-то примерно такое:

Кстати, я тоже так делал :). Собственно, после чего и появилась эта задумка. Вариант «клубкового» соединения, естественно, имеет право на жизнь. Но, скажем так:
-> Неудобно
-> ненадежно
-> некрасиво и все такое
Логично было бы предположить, что умные люди смекнули «что к чему» и наладили выпуск готовых ARDUINO ISP Shield-ов. Вот парочка примеров:
Я тоже хочу такую вещь! Но, «Это не наш метод! Мы все сделаем сами. »
Итак, я вспомнил все микроконтроллеры, с которыми мне приходилось сталкиваться. Это были Atmega8 (168/328), Atmega16, Attiny2313(4313), Attiny13(45/85). Итого, (для меня, по крайне мере) ограничимся корпусами DIP8, DIP20 и DIP28. Здоровенная Atmega16 — «пока нервно курит в сторонке». Поставим дополнительно стандартный ICSP разъем на 10 контактов, для возможности подключения внешнего адаптера. И для красоты установим светодиоды, отображающие текущее состояние программатора. Распиновку берем из скетча ArduinoISP:
Схема. Хм, конечно сложно это назвать схемой, но все же:

Разводка печатной платы много времени не заняла. Я фактически расположил нужные корпуса и разъемы на плату, подписал нужные выводы и тупо их соединял Вот, что получилось:

Лут:

После запайки:

Вторая сторона:
Обращаю Ваше внимание, на наличие трех SMD перемычек (резисторы 0R).

Вот готовое изделие:

. ВАЖНЫЙ МОМЕНТ. Очень рекомендую установить панельки с цанговыми контактами!

Итак, все у нас готово для проведения «ходовых» испытаний. Подключаем наш шилд к ЗАРАНЕЕ «прошитую» Ардуино
.
Проверяем работоспособность с помощью GUI оболочки для AVRDUDE:
Для «гурманов», зеленой полоской я выделил соответствующие параметры для консольного варианта
Обращаю ваше внимание на правильный выбор типа программатора и типа соединения. Уточнить можно в IDE (выше приведен скриншот для самопальной COM-портовой платы).
Ниже картинки для варианта с CraftDuino (у меня CraftDuino общается через виртуальный COM N14. Естественно, у Вас может быть другой)


Все хорошо!! Радуемся и хлопаем в ладоши (честно говоря, получившаяся плата мне ОЧЕНЬ нравится. Я пишу эту статью и верчу ее в руках).
Пара полезных ссылок, о том, как подружить микроконтроллеры Attiny со средой программирования Arduino:
Attiny13
Attiny2313
Ну а дальше уже сами Как говорится, Google Вам в помощь!Весь материал проекта забираем ТУТ.
Все удачи и хорошего настроения!Какой программатор выбрать для arduino?

вообще-то это даже не программатор, а преобразователь USB-RS232, точнее USB-UART, тк для RS232 нужно еще сформировать соответствующие уровни, чего этот преобразователь не делает (по крайней мере мой PL2303 так точно)
по вопросу программирования — по сути у вас же есть ардуинка, ее ведь можно использовать в качестве программатора.
ну а если хочется отдельно программатор, то нужно смотреть в сторону AVR ISP, USBasp, но тут уже нужно понимать, что работать вы будете напрямую с контроллером ATMEL AVR, нужно знать про фьюзы и тп.Arduino IDE: разбираемся с меню Tools и некоторыми другими функциями.
Итальянцы молодцы. Запустили в мир DIY настоящего монстра. С появлением экосистемы Arduino весь рынок цифрового DIY получил мощнейший толчок. Тысячи, сотни тысяч, миллионы пользователей принялись покупать оригинальные и совместимые платы для их последующего программирования и использования в своих поделках. Причина такой популярности в первую очередь связывают с низким порогом для входа в эту среду. Вам не нужно тратить много денег на приобретение плат: открытый стандарт дал дорогу на рынок множеству последователей и копировщиков. Вам так же не стоит сильно заморачиваться над программированием: поставляемая «в комплекте» Arduino IDE упрощена настолько, насколько это возможно. Пользователь просто пишет код и не задумывается о настройках компилятора, о том, что программировать при помощи Arduino IDE можно разными программаторами, а иногда и вообще голые микросхемы.
И вот, наступает момент, когда стандартная Arduino IDE становится тесновата, а ее неудобство начинает просто выбешивать, особенно, если пользователь знаком с более продвинутыми средами разработки по другим платформам и языкам программирования. Кто-то начинает мигрировать на что-то более интересное, например, на Atom или VS.Code в смеси с PlatformIO, а кто-то старается выжать из Arduino IDE все, что только можно.
Сегодня я выступлю как раз в роли подобного «особо интересующегося персонажа» и попробую вместе с читателем разобраться чуть-чуть побольше в тонкостях Arduino IDE. Все ниженаписанное более-менее соответствует версии 1.8.9 Arduino IDE.
Темная тема для Arduino IDE
Очень многих раздражает простенькое оформление Arduino IDE в корпоративных цветах Arduino. Все такое белое и «слепое». Долго работать в таком цветовом решении не всегда комфортно, особенно если это ночь, вокруг темно и все спят.

Вариант темной темы под Mac. Скриншот с GitHub.
Для такого случая сторонний разработчик разработал так называемую темную тему, тему которая позволяет вернуть знакомый с детства вариант черного фона и светлого текста на нем. Тема не идеальна, так как не позволяет полностью настроить все нюансы, но ограничение это связано не с самой темой, а с ограничениями Arduino IDE. Тему, при желании, можно подредактировать самостоятельно.
Меню Sketch
Я, как и большинство других пользователей Arduino IDE, загружаю свои скетчи в платы при помощи панели инструментов. Щелкнул на кнопку загрузки и скетч начал заливать в плату. Удобно. Но, как оказывается, меню Sketch (здесь и далее я буду использовать английский вариант интерфейса Arduino) содержит не мало интересных и полезных новшеств. Итак, кратенько пробежимся по ним.

Меню Sketch Arduino IDE
Пункты меню Very/Compile и Upload стандартны и знакомы всем. Именно они используются для проверки правильности кода и последующей нормальной загрузки. А вот пункт Upload using programmer для меня до недавнего времени оставался Terra incognita. Как оказалась, данный пункт необходимо применять при загрузки скетча без использования загрузчика (bootloader), но с использованием полноценного программатора. О загрузчиках и программаторах поговорим немного позже, пока же просто запомним этот пункт.
В этом же меню присутствует весьма полезный пункт Export compiled Binary. Применяется он в том же направлении, что и Upload using programmer. По умолчанию Arduino IDE компилирует исходный код в файл, который сохраняется во временную директорию и после завершения загрузки она должна очищаться. Временная директория находится в каких-то дебрях файловой системы, а искать там скомпилированный файл с непонятным наименованием — то еще удовольствие. Так вот функция Export compiled Binary как раз и применяется для того, чтобы сохранить уже откомпилированный скетч в виде бинарных-файлов в папке самого скетча. В дальнейшем скомпилированные скетчи могут быть прошиты при помощи внешнего программатора или же USB-TTL преобразователя.
Кстати, просмотреть папку скетча можно все через тоже самое меню Sketch при помощи пункта Show Sketch Folder. Кстати, при вызове Export compiled Binary компилируется сразу два файла: с и без загрузчика. Для чего это нужно, опять же немного ниже. При компилировании при помощи Export compiled Binary следует учитывать, что примеры из поставки Arduino так откомпилировать не выйдет. Папки, в которых хранятся эти скетчи имеют режим только для чтения, а IDE необходимо куда-то записать скомпилированные файлы (обычно в таком случае возникает ошибка «Export canceled, changes must first be saved.»). Поэтому тренируемся на своих собственных скетчах или же пересохраняем скетч в новую папку.
Меню Tools
Меню Tools в Arduino IDE дает куда больше интересного и полезного, нежели Sketch. Более того, сам вид меню зависит от того, какую платформу вы выбрали в качестве целевой.

Меню Tools Arduino IDE с выбранным микроконтроллером семейства AVR.
Начнем с общего и тех пунктов, которые есть в оригинальных платах, построенных на микроконтроллерах Atmel (ее все же купила Microchip).
Пункт Auto Format позволяет отформатировать ваш исходный текст по общепринятому в Arduino IDE стандарту. Отформатированный текст позволяет легче находить ошибки, да и сама программа выглядит опрятно. Так же, зачастую, при форматировании при помощи автоформата получается найти такие ошибки, как отсутствующие скобки, что при большом количестве вложений несколько затруднительно. Оная же функция вызывается и в самом редакторе в контекстном меню доступном по правой кнопке мышки.
Archive Sketch позволяет упростить навигацию по папке в которой хранятся все ваши скетчи. Напомню, что каждый скетч хранится в отдельной папке, куда складывается все, что к нему относится. Если скетчей у вас много, особенно если плодить версии в новых папках, то разобраться во всем этом нагромождении становится очень сложно. Для этого и можно применить функцию архивирования. Папка со скетчем будет сжата в архив ZIP, а затем стерта из каталога. Останется только архив.
Serial Plotter противовес Serial Monitor предназначен для вывода графика из данных выдаваемых в последовательный порт. Все, что от вас требуется для построения графика — выплевывать в порт цифры при помощи Serial.println(). Неплохой пример использования плоттера приведен на страницах проекта wikihandbk.
Приведенные выше пункты стандартны. Их использование, вкупе с Library Manager должны быть известны даже неопытным пользователям. А дальше попробуем погрузиться в чащобы Arduino IDE и мир программирования микроконтроллеров.
WiFi101 / WiFiNINA Firmware Updater
Сетевое взаимодействие для оригинальных плат Arduino всегда было ахиллесовой пятой. Их просто нет в стандартной поставке, а все решения в виде внешних плат настолько ди́ки, что просто пропадает всякое желание их использовать. По этой причине многие используют платы на основе ESP8266, которые дешевле, мощнее и сразу с WiFi на борту. Но итальянцы, да и ардуинщики вообще, ребята упорные, поэтому вместо того, чтобы переходить на нормальные платы, продолжают изобретать очередные ужасы, к которым и относятся WiFi101 и WiFiNINA.

WiFi 101 Shield. Взято откуда-то с просторов сети.
Собственно этот пункт меню предназначен для обновления прошивки и сертификатов соответствующих плат.

Arduino Uno с платой WiFi под библиотеку WiFiNINO
Дичь полнейшая и подобные платы лучше не использовать, так как они до жути непопулярны, стоят дорого, потребляют уйму энергии. В общем, гораздо проще и элегантнее все решается на базе плат семейства ESP. В целом на Arduino присутствует подробный туториал, где разжевано как и что обновляется при помощи данной функции.
ESP Exception Decoder
Плагин для Arduino IDE под непонятным названием ESP Exception Decoder предназначен для более легкой отладки программ под платформу ESP8266. Exception или «исключение» обозначает возникновение ошибочной ситуации которая не была корректно обработана кодом. Например, деление на 0 однозначно вызовет исключение, и работа программы будет прервана. В языке, на котором программируют в Arduino IDE нет возможности использовать блоки try <> catch <>, соответственно работа с исключениями невозможна (точнее по синтаксису он есть, но компилятор его отвергнет, по крайней мере для плат на основе AVR). Программист обязан предусматривать и проверять данные и предупреждать возникновение подобных ситуаций. Иначе результат может быть непредсказуемым.
На первоначальной экосистеме Arduino, построенной на Atmel AVR (об этом опять же дальше) нет места исключениям. И даже несмотря на то, что язык, применяемый для программирования в Arduino IDE есть ни что иное как диалект C++, в нем так же нет исключений и они не поддерживаются компилятором, ибо в AVR нет исключений, слишком там мало места для еще и исключений. Сильно жизнь это не осложняет, просто программы пишутся куда более аккуратно. А вот в экосистеме ESP, в том числе и под Arduino, исключения присутствуют.
И в этом возникает проблема. При возникновении исключительной ситуации, того же деления на 0, микроконтроллер, например, esp8266 выдаст в последовательный порт информацию о возникновении исключения, стек вызовов функций, где оно возникло, сохранит некоторые сведения во внутренней памяти (к ним можно будет обратиться после перезагрузки).
Вот такую вот информацию сохраняет esp8266 после перезагрузки. В этом случае произошла перезагрузка по питанию.
Система в чипах ESP более замороченная, чем в AVR и при возникновении нештатной ситуации выплевывает в последовательный порт некий стек адресов, по которым можно добраться до истинной причины возникновения ошибки. Но выдаются адреса в совсем нечитаемом человеком виде. Чтобы сопоставить строчку в исходном коде с конкретным адресом, выданным в стеке, и был придумал ESP Exception Decoder.

Намеренный вызов исключения на WeMos Mini
После возникновения ошибки необходимо перенести стек в декодировщик и он выдаст «путь» по которому можно дойти до строки в годе где и возникла исключительная ситуация. В некоторых случаях функция исключительно удобная. Ознакомиться с подробной инструкцией по применению декодировщика можно на страничке проекта ESP Arduino Core.
Get Board Info
Пожалуй, самая бесполезная функция, которое позволяет, в некоторых случаях, понять, какая плата подключена к компьютеру для прошивки. В большинстве случаев вы это и так знаете. А если не знаете, то функция отобразит, опять же, в большинстве случаев информацию только об оригинальных платах.
Burn Bootloader
Наконец-то мы начинаем подбираться к действительно интересным пунктам меню. Начнем с пункта загрузки загрузчика (Burn Bootloader). Но для начала попытаемся понять, что такое bootloader и для чего он нужен. В старые далекие ламповые времена тоже существовали программируемые микросхемы. Но программировались они весьма жестким способом. Использовался специальный программатор, в который вставлялась микросхема, происходило таинство, и микросхему можно было использовать в оборудовании.
Сей способ с одной стороны достаточно прост, но с другой он очень неудобен. Ведь чтобы сменить прошивку на уже прошитой микросхеме, если это вообще возможно, ее необходимо вытащить из устройства, установить в программатор и повторить процедуру. Что далеко не всегда возможно, так как микросхема может быть впаянной в плату и без специализированного оборудования достать ее оттуда нельзя или же само устройство летает на спутнике. Именно для этих целей была придумана методика ISP (In-System Programming), что в переводе означает ни что иное как «внутрисхемное программирование». ISP не стоит путать с SPI (Serial Peripheral Interface). ISP это именно внутрисхемная прошивка, а SPI это стандарт взаимодействия между устройствами. И пусть даже вас не вводят в заблуждения сильно похожие разъемы и наименования контактов. ISP и SPI это разные вещи.
В общем случае ISP позволяет программировать микроконтроллер через любой его интерфейс и даже программироваться самостоятельно с изменением своего кода посредством своего собственного же кода. Но для осуществления подобных фокусов требуется некая программа, которая будет сидеть в микроконтроллере и управлять этим программированием. Именно она и называется загрузчиком (bootloader). И именно благодаря ей есть возможность прошивать микроконтроллеры просто подключив их к USB-порту, или же применив простейший программатор на параллельном порту компьютера (у кого они еще остались), а в некоторых случаях обновление прошивки можно загружать вообще по воздуху применяя прием OTA (Over The Air).
Вообще микроконтроллер можно прошить и без загрузчика. Именно для этих целей и предназначен соответствующий пункт в меню Sketch. В этом случае места под ваш скетч в памяти микроконтроллера будет больше. Однако, в последствии уже нельзя будет загрузить обновление прошивки обыкновенным путем. Придется при помощи программатора либо прошить загрузчик, либо далее прошивать прошивку без загрузчиков.
Для Arduino существует несколько вариантов загрузчиков. Стандартный, который прошивается еще при изготовлении платы Arduino, многие не любят. Дескать он притормаживает при загрузке устройства в ожидании передачи данных для прошивки и только спустя десять секунд запускает ваш прошитый скетч. Дело в том, что некоторые платы Arduino, в которых не реализован механизм DTR (Data Terminal Ready) / RTS (Ready To Send) действительно нужно прошивать очень быстро иначе bootloader просто передаст управление той микропрограмме, что уже находится в микропроцессоре. Вот и начали все, кому не лень, модифицировать штатный загрузчик или же писать свой собственный.

Стандартные загрузчики для плат Arduino
Где брать загрузчики? Вообще стандартный загрузчик можно загрузить прямо из Arduino. Для этих целей и предназначен пункт меню Burn Bootloader. А сами загрузчики из стандартной поставки можно найти в папке с установленным Arduino в поддиректории hardware. Если же вы используете платы отличные от Arduino AVR, например, ESP3288, то все дополнительные загрузчики и прочие инструменты можно найти в личном профиле пользователя (AppData\Local).

Загрузчик для плат семейства ESP
Но если вы скачиваете дополнительные загрузчики и хотите установить их в Arduino IDE, то можно использовать папку hardware в вашем каталоге для скетчей. После перезагрузки IDE загрузчики из этой папки так же будут доступны, однако не следует забывать про файл boards.txt который должен присутствовать в подпапках папки hardware. Если у вас вдруг нет текстового редактора или же вы испытываете трудности с редактированием boards.txt то есть решение. Один энтузиаст создал специальную программу Arduino BOARDS.TXT Editor, которая позволяет с легкостью вносить изменения в указанный файл.
Так, где же брать эти самые альтернативные загрузчики? Искать в сети. Поисковики выдают просто немыслимое количество разнообразных вариантов. Для начала можно остановиться на OptiBoot, попробовать калькулятор «формирующий» загрузчик под конкретную плату или начать просматривать ссылки с официальной страницы загрузчиков Arduino.
И подводя промежуточный итог, если нам нужно загрузить прошивку без загрузчика (так для нее останется больше места) в микроконтроллер, то подключаем его к программатору и загружаем прошивку через Sketch – Upload Using Programmer. Если же хотим вернуться к обычной и удобной загрузке скетчей через среду Arduino по USB и без прочих танцев африканских народов, то прошиваем загрузчик обратно (или же мы купили микроконтроллер без загрузчика) уже посредством Tools – Burn Bootloader. В обоих случаях незабываем про корректный выбор платы, программатора и прочих настроек.
И еще раз, если в плате установлен загрузчик, то после перезагрузки платы он первым получит управление, послушает немного выделенные порты в надежде если вдруг там кто-то хочет залить прошивку. Если признаков заливания прошивки нет, то он со спокойной душой передает управление основной программе. А если в плате нет загрузчика, то тогда управление после перезагрузки сразу передается основной программе. Все просто, по крайней мере на пальцах.
AVR и прочие
Для лучшего понимания дальнейшей информации я хочу привести некоторые сведения о самих микроконтроллерах с которых пошло-поехало Arduino. Мы уже знаем, что оригинальные Arduino построены на микроконтроллерах (больших интегральных схемах, которые можно программировать и которые могут работать и сами по себе без внешней обвязки, подавай только напряжение) от компании Atmel (нынче Microchip).
У компании Atmel наработано несколько линеек микроконтроллеров, но нас в первую очередь интересует линейка AVR (кстати, аббревиатура AVR официально никак не расшифровывается), так как именно на ней и построены оригинальные Arduino. Линейка появилась аж в 1996 году и, пожалуй, была одна из первых на рынке предложившей решение, где микроконтроллер и память (ОЗУ и ПЗУ) расположены в рамках одного единственного кристалла. Повторюсь, чтобы система работала достаточно только одной микросхемы AVR на которую подается питание. Все остальное у нее уже есть внутри.
AVR линейка делится на несколько основных групп:
- tinyAVR – с уменьшенным количеством линий ввода-вывода, уменьшенным количеством памяти всех типов, обозначается как ATtinyxxx.
- megaAVR – увеличенное количество памяти всех типов, увеличенное количество линий ввода-вывода, расширенный набор для периферии и тому подобное. Обозначается как ATmegaxxx.
- XMEGA – ко всему увеличенному у megaAVR тут еще увеличили памяти и добавили встроенный контроллер для быстрой работы с памятью. Обозначается как ATxmegaxxx.
Именно микросхемы AVR обеспечивают поддержку таких функций как АЦП, ШИМ, SPI, I2C и прочих. Arduino же просто их использует (хотя с появлением более мощных микроконтроллеров, тех же esp8266, появилась возможность эмуляции вышеназванных функций программным способом).
И вопреки возможности прошивки AVR методом ISP посредством стандарта SPI через установленный загрузчик, для программирования микроконтроллеров применяется великое множество программаторов. Как простых и собираемых на коленке, так и сложных с внешним питанием и обилием всевозможных функций. Но прежде, чем мы перейдем к рассмотрению программаторов следует пояснить еще один момент. При программировании микроконтроллера с использованием внешнего программатора (без использования загрузчика) необходимо четко понимать, что такое fuses или не трогать настройки, связанные с ними, если такого понимания нет. Fuse/фьюзы/предохранительные биты — это настройки внутри микроконтроллера, в частности AVR. Они прошиваются точно так же, при помощи внешнего программатора (без применения ISP). И обычно применяются для настройки самого микроконтроллера, например, можно включить или отключить возможность самопрошивки контроллера, включение или отключение внешнего сброса устройства (и соответственно возможности его прошивки через bootloader), включение и отключение очистки памяти при перепрограммировании чипа и тому подобное. Подробнее ознакомиться с фьюзами можно (и нужно) в документации к конкретному контроллеру. К чипу ATmega328, одному из самых популярных чипов на Arduino, документация доступна на официальном сайте производителя.
Programmer:
Пожалуй, что пункт меню Tools под кодовым названием Programmer является самым таинственным местом всего Arduino IDE. Информации по данному пункту очень мало, и она настолько скудна что может привести к разочарованию даже самого стойкого прагматика. Очевидно, что данный пункт содержит выбор программаторов для программирования плат. И кажется, что одну и ту же плату можно запрограммировать кучей разных способов и программаторов. Но, а что же нам на этот счет говорит документация к Arduino IDE? А она нам вещает о том, что данный пункт меню Tools имеет смысл только при прошивке загрузчика . Во всех остальных случаях используемый «прошивальщик» зашит в тот самый boards.txt, что обсуждался немного ранее. Причем для микроконтроллеров AVR это всегда avrdude, а для ESP это всегда esptool. Кроме того, для плат AVR может применяться, в штатной поставке, целых два различных протокола «закачки» прошивки в микроконтроллер: avr109 и arduino. Разные протоколы, как не сложно догадаться, применяются для разных загрузчиков, установленных в конкретные микроконтроллеры.
В штатной поставке Arduino IDE с подключенной инфраструктурой ESP для прошивки загрузчика можно применить несколько типов программаторов. Кратко пройдемся по ним всем. По факту все AVR в Arduino IDE прошиваются посредством приблуды AVRDUDE (бывший AVRProg) и различия между «программаторами» только в используемом протоколе и настройках AVRDUDE. На текущий момент AVRDUDE поддерживает 39 программаторов, но в Arduino IDE используется только 14. Ознакомиться с настройками каждого из них можно в файле programmers.txt в той самой директории hardware, где складируется файлик boards.txt. Информация по настройкам для каждого из программатора доступна в файле avrdude.conf (располагается обычно в Arduino\hardware\tools\avr\etc) и в куцей документации к самому AVRDUDE.
AVR ISP
AVRISP есть ни что иное как фирменный программатор от Atmel. Он позволят программировать AVR. И похоже, что на этом все. Мне ну далось найти хоть сколько-нибудь достоверной информации про данный программатор, кажется, что он сошел со сцены и осел где-то в дебрях плат у аксакалов еще до появления Интернет.

Отладочная плата Atmel STK500. Фото производителя.
Единственное, что хоть как-то проливает свет на данный программатор, так это то, что он по факту является частью STK500 (такая отладочная плата для AVR от Atmel) версии 1, которая подкачается к компьютеру посредством последовательно порта.
AVRISP mkII
А вот AVRISP mkii является актуальным программатором, подключаемым к USB. По крайней мере о нем есть информация на сайте производителя и большинство безродных программаторов, которые продаются бесчисленными компаниями как раз и являются клонами именно этого программатора.

Фирменный программатор AVRISP mkII. Фото производителя.
Тем не менее, он так же является частью отладочной платы STK500, но уже версии 2, которая подключается к компьютеру уже по интерфейсу USB. Хотя, по отзывам очевидцев и версия 1 может использовать с USB посредством конвертера COM-USB.
USBtinyISP
Это один из программаторов, который можно собрать своими руками, он прост и дешев, а в качестве «сердца» у него используется чип tinyAVR. Вот только возникает вопрос – как же его прошивать, если он сам и предназначен для прошивки AVR?
Тем не менее, программатор поддерживается Arduino IDE и весьма популярен. Программатор был разработан в Нидерландах, но в настоящее время поддерживается AdaFruit.
ArduinoISP и ArduinoISP.org
Что подразумевали под этими двумя программаторами разработчики Arduino IDE остается только гадать, да угадывать. Сайт ArudinoISP.org дает перенаправление на туториал на сайте Arduino.cc по использованию Arduino as ISP. Единственное отличие этих двух от Arduino as ISP только лишь используемый протокол. Вероятно, что они были когда-то собраны в качестве поддержки особого загрузчика, а с течением времени исчезли с лица истории. По крайней мере в документации AVRDUDE никакого упоминания ни про arduinoisp ни про arduinoisporg просто нет.
USBasp
Еще один простой программатор, который можно собрать дома на коленке. И он тоже построен на чипе от Atmel. Проект был развернут немецкий программистом, а затем подхвачен всем миром. Как и с USBtinyISP чип от Atmel для программатора необходимо запрограммировать.
Parallel Programmer
Данный тип программатора считается одним из самый простых, если не самым простым. По сути «параллельный программатор» — распиновка параллельного порта компьютера и соответствующее программное обеспечение.
Для сборки данного программатора требуется компьютер с параллельным интерфейсом (раньше по нему было модно подключать принтеры) и всего три резистора двух номиналов. Подробная схема (от руки) и описание по сборке (с фотографиями) доступна на официальном сайте Arduino.
Arduino as ISP
Поскольку платы Arduino сами по себе являются микроконтроллерами, да еще и с навороченными входами/выходами, то их вполне можно использовать в качестве программаторов.
Для этого в плату Arduino закачивается скетч из примеров под именем ArduinoISP, соединяются проводки (между платой, в которую залит скетч и платой, которую нужно прошить), и прошивается загрузчик (не забываем выбрать программатор Arduino as ISP). Подробная инструкция доступна опять же на странице официального сайта Arduino.
Arduino Gemma
Если подходить формально, то Gemma это не программатор. Это микроскопическая плата от AdaFruit предназначенная для вшивания/встраивания в одежду/обувь. Она лишь частично совместима с Arduino, так как содержит очень мало вводов/выводов. Чтобы подключить ее к USB разработчику пришлось выдумать отдельный загрузчик, и отдельный PID для USB устройства. По этой причине прошивается Gemma как отдельный программатор (в реальности там встроенный USBtiny), имеет отдельный конфиг для AVRDUDE с жестко прописанным bootloader. Другими словами, прошить этой платой ничего нельзя, но зато ее можно прошить саму загрузчиком.
BusPirate as ISP
BusPirate это не только программатор, скорее это не совсем и вовсе не программатор, а одноплатный компьютер специализированный для изучения и программирования новых и неизвестных микропроцессоров. Его конструкция такова, что на одной плате собраны все мыслимые и не очень интерфейсы для исследования того, что же попало к вам в руки. Штука интересная и если вы уж работаете с таким, то должны знать, что с AVRDUDE у компьютера могут быть определенные проблемы, связанные с прошивкой самого BusPirate. Обходятся они, естественно, настройками AVRDUDE и некоторым шаманством с железом.
Atmel STK500 development board
Та самая отладочная плата, что упоминается в AVR ISP и AVR ISP mkII. В Arduino IDE не делается различия между версиями и предполагается, что AVRDUDE самостоятельно определит версию протокола обмена и осуществит самонастройку. Если же этого не происходит, то в programmers.txt нужно четко прописать stk500v1 или stk500v2 в качестве применяемого протокола.
Atmel JTAGICE3 (ISP mode) и Atmel JTAGICE3 (JTAG mode)
JTAGICE3 — современное решение для отладки чипов семейств AVR, SAM и Cortex. Разумеется, только тех чипов, что поддерживают внутричиповую отладку. Попутно эта коробочка еще и программирует их всех.

Atmel JTAGICE3 отладчик/программатор.
Продукт актуальный, у производителя имеется документация. Разница между программаторами только в применяемых протоколах. В ISP режиме применяется протокол JTAG3ISP, а в JTAG просто JTAG3.
Atmel-ICE (AVR)
Так же активный продукт Atmel и его можно купить. Как и JTAGICE3 он позволяет не только производить отладку у чипов, поддерживающих такую функцию, так и программировать их. Для прошивки используется протокол atmelice_isp. В общем использовать программаторы на подобие JTAGICE3 или Atmel-ICE только для прошивки 8-битных микроконтроллеров это как стрелять из пушки по клопам. Слишком уж мощные и дорогие решения для задачи, которая решается куда проще.
Обширное семейство ESP
Выше мы рассмотрели специфику прошивки контроллеров семейства AVR. Но при этом обойти не менее многочисленное и популярное семейство контроллеров ESP было бы просто некрасиво. Тем более, что при выборе одного из семейства, меню Tools значительно увеличивается в объеме. Пройдемся по меню и попробуем понять, что каждый из пунктов увеличенного меню означает. Здесь и далее я рассматриваю SDK ESP версии 2.5.0.

Меню Tools в Arduino IDE при выборе одной из плат семейства ESP.
Часть меню все же остается тем же самым, что и прежде, поэтому излишне повторяться не будем.
Upload speed
Позволяет выбрать скорость, с которой будет происходить загрузка прошивки и других частей в микроконтроллер. Платы семейства ESP могут комплектоваться мегабайтами памяти (в то время как AVR речь идет в лучшем случае о сотнях килобайт) и загрузка на скорости 9600 может занять непростительно долгий отрезок времени.
Поддерживаемые скорости прописываются для каждой из плат индивидуально.
CPU Frequency
Многие платы семейства ESP могут из коробки работать сразу на нескольких частотах. В Arduino регулировать частоту процессора можно при прошивке микроконтроллера. Опять же, доступные варианты указываются для каждой из плат отдельно.
Flash Size
Здесь указывается каким образом разделять всю доступную ПЗУ для хранения кода программы и для файлов. Микроконтроллеры ESP поддерживают память SPIFFS (Serial Peripheral Interface Flash File System). По сути, SPIFFS это файловая система для последовательного доступа. И у программиста есть возможность определить, сколько памяти отводить для файловой системы (туда можно записать, например, HTML-файлы или картинки) и сколько для своего скетча. Но тут есть некоторая тонкость. На текущий момент, насколько мне известно, как минимум платы EPS8266 не могут закачать скетч размерностью более 1 мегабайта. Есть обходные пути, но ведь еще нужно умудриться написать скетч, который в компилированном виде будет занимать более 1 мегабайта. Поэтому рекомендуется использовать как можно больший SPIFF, дабы уменьшить время загрузки скетча.
В тоже самое время есть сведения от потерпевших, что платы ESP32 могут испытывать проблемы связанные с «не хватает места для скетча». Но проблемы эти всего лишь из-за еще сырой поддержки плат EPS32 в инфраструктуре ESP для Arduino.
Debug port
Пункт может принимать значения Disabled, Serial и Serial1. Данная настройка предназначена для вывода отладочной информации в последовательный порт (хотя включить ее можно и программно, например, через Serial.setDebugOutput(true)). Если в скетче инициализируется соответствующий порт (Serial или Serial1), то в него могут выводиться отладочные сообщения, которые не мешают выводу в этот же порт другой информации.
При инициализации и включении вывода отладочной информации рекомендуется устанавливать максимальную скорость работы порта. В противном случае, при большом объеме вывода могут наблюдаться фризы исполнения программы или же сброс буфера вывода. Подробнее о выдаче отладочных сообщений можно прочитать в статье на сайте проекта ESP8266 Core.
У ESP обычно присутствует два последовательных порта. Первый, Serial использует UART0 и GPIO1 (TX) с GPIO3(RX). Второй, Serial1 использует UART1 и только GPIO2 (TX). Соответственно Serial1 не может быть использован на прием. Тем не менее, в обоих случаях есть возможность программного переназначения пинов, как и скорости, четности и прочих характеристик.
Debug Level
Настройка позволяет выделить те отладочные сообщения, которые важны пользователю. Выбор комбинаций оставляют огромное пространство для маневра, но при этом обязательно должна быть включена предыдущая функция.
lwIP Variant
Настройка предназначена для выбора варианта реализации сетевого стека IP. Прошу обратить внимание, тут именно lwIP (lightweight IP), первая буква L, а не i.

Вариант выбора IwIP
По умолчанию используется самый верхний вариант, уменьшающий использование памяти. Но если ваш микроконтроллер активно работает с сетью, то можно пожертвовать памятью и получить наивысшую скорость. Аналогично можно включить поддержку IPv6 или вернуться на стек версии 1.4, где такой поддержки не было вообще. Под features тут понимается всякого рода ICMP, IGMP и прочие навороты, без которых можно обойтись. Основная документация по версии ветки 2.х доступна на сайте разработчика. Постоянно растущий Wiki по теме lwIP доступен на страницах проекта FanDom.
VTables
Под VTables в IDE подразумевается механизм виртуальной таблицы для позднего связывания объектов. Не буду вдаваться в подробности, о них можно задумчиво почитать в Википедии. Остановлюсь лишь на самих доступных опциях, а их всего три:
- Flash – постоянное запоминающее устройство, таблицы хранятся в файловой системе. Метод по умолчанию в репозитарии GitHub.
- Heap – куча, оперативная память предназначенная для динамического выделения памяти.
- IRAM – внутренняя память микроконтроллера.
Понятно, что самый быстрый способ хранения и обработки виртуальных таблиц это IRAM, а самый медленный Flash. Но тут следует так же смотреть на то, как активно работает программа с объектами, есть ли множественное наследование и как часто объекты создаются и уничтожаются. В обычных применениях такая таблица и вовсе может быть статической и отлично проживать на Flash, с другой стороны, она может быть весьма крупной и просто не влезать в IRAM (область ОЗУ для хранения кода программы).
Exceptions
Пункт меню позволяет включить или отключить использование исключительных ситуаций. О них мы уже рассуждали выше, в том числе и в разделе об ESP Exception Decoder. При включении исключений программист в коде уже может использовать структуры try <> catch <>, что увеличивает потребление памяти, но позволяет легче программировать сложные алгоритмы. Напомню, что try-catch будет работать только для плат семейства ESP. Отрадно замечать, что программисты работающие над библиотеками для семейства ESP для Arduino уже начали использовать механизм try <> catch <> в своем коде на GitHub.
Erase Flash
Пункт предлагает стирать внутреннюю память микроконтроллера в следующих пропорциях:
- Only Sketch – стирает только пространство отведенное под скетч. Остальное остается нетронутым.
- Sketch + WiFi Settings – пространство для скетча и настройки WiFi. Дело в том, что при подключении к точке доступа микроконтроллер запоминает параметры подключения и в следующий раз подключается к той же точке быстрее.
- All Flash Contents – стирается все, включая файловую систему.
Прочее по ESP
В заключение статьи хотелось бы добавить, что при прошивке загрузчика в ESP всегда используется прошивальщик esptool. И всегда применяется один и тот же загрузчик eboot. Чтобы пользователь там не выставил в Programmer.
Статья получилась весьма увесистая, но я полагаю, что она даст ответы на некоторые животрепещущие вопросы. Подавляющее большинство информации приходилось искать по крупицам в Сети. Похоже, что с течением времени возрастает сложность даже такого простого инструмента как Arduino IDE и в скором времени может случиться так, что начинающий быстрее плюнет, чем начнет разбираться с мегатоннами документации, техник, приемов и способов, тем более что большинство из них поддерживается энтузиастами, что ведет к повышенному почкованию указанных техник, методик, документаций.
Однако, хочу надеться, что авторы Arduino IDE все же смогут удержать свое творение в приличных рамках и оставить его все таким же легким в освоении инструментом. Заодно хочу им напомнить, что документировать свое творение стоит постоянно иначе получается «не только лишь все, сегодня могут в завтра».
Update: разбираясь глубже с тем как настраивать свои собственные платы или же добавлять новые платы к Arduino IDE, наткнулся на исчерпывающую документацию по этому поводу.
Arduino IDE: разбираемся с меню Tools и некоторыми другими функциями. : 7 комментариев
Даа. столько труда автор положил в написание статьи, но спасибо не скажу. Напротив, возникает желание оскорбить человека за его недальновидность.
Он пишет:
«. Щелкнул на кнопку загрузки и скетч начал заливать в плату. Удобно. Но, как оказывается, меню Sketch (здесь и далее я буду использовать английский вариант интерфейса Arduino) содержит не мало интересных и полезных новшеств. Итак, кратенько пробежимся по ним. »
Так вот — ОЧЕНЬ НЕ УДОБНО использовать англоязычный интерфейс, а тем более его описание. Если уж решил выёжываться знанием английского языка, то и пиши свои обзоры на английском.Увы и ах, всё программное обеспечение разрабатывается исключительно на английском языке, так уж повелось (более того, первыми выходят версии именно англоязычной версии, а затем уже локализованные). Вас же не напрягают операторы языка: if then while? А если напрягают, то есть такие языки 1С или Яр, но они находятся за пределами настоящей стати.
так и должно быть, на русский гуманитарии переводят, читать их бред (вариант перевода) тошнит
Похожие публикации:
- Что является организационным элементом любой формы бухгалтерского учета
- Алименты отправили судебным приставам как вернуть
- Кто 011 цена
- Что такое ведомственный коэффициент

