Arduino Uno: распиновка, схема подключения и программирование
Arduino Uno — флагманская платформа для разработки на языке программирования С++.
Uno выполнена на микроконтроллере ATmega328P с тактовой частотой 16 МГц. На плате предусмотрены 20 портов входа-выхода для подключения внешних устройств, например плат расширения или датчиков.
Видеообзор
Подключение и настройка
Шаг 1
Подключите плату к компьютеру по USB. Для коммуникации используйте кабель USB (A — B).
Шаг 2
Установите и настройте интегрированную среду разработки Arduino IDE.
Что-то пошло не так?
Пример работы
После загрузки программы встроенный светодиод L начнёт мигать раз в секунду.
Это значит, всё получилось, и можно смело переходить к другим экспериментам на Ардуино.
Элементы платы
Микроконтроллер ATmega328P
Сердцем платформы Arduino Uno является 8-битный микроконтроллер фирмы Microchip — ATmega328P на архитектуре AVR с тактовой частотой 16 МГц. Контроллер обладает тремя видами памяти:
Микроконтроллер ATmega16U2
Микроконтроллер ATmega328P не содержит USB интерфейса, поэтому для прошивки и коммуникации с ПК на плате присутствует дополнительный микроконтроллер ATmega16U2 с прошивкой USB-UART преобразователя. При подключении к ПК Arduino Uno определяется как виртуальный COM-порт.
Светодиодная индикация
Порт USB Type-B
Разъём USB Type-B предназначен для прошивки и питания платформы Arduino. Для подключения к ПК понадобится кабель USB (A — B).
Разъём питания DC
Коннектор DC Barrel Jack для подключения внешнего источника напряжения в диапазоне от 7 до 12 вольт.
Понижающий регулятор 5V
Понижающий линейный преобразователь NCP1117ST50T3G обеспечивает питание микроконтроллера и другой логики платы при подключении питания через разъём питания DC или пин Vin. Диапазон входного напряжения от 7 до 12 вольт. Выходное напряжение 5 В с максимальным выходным током 1 А.
Понижающий регулятор 3V3
Кнопка сброса
Кнопка предназначена для ручного сброса прошивки — аналог кнопки RESET обычного компьютера.
ICSP-разъём ATmega328P
ICSP-разъём выполняет две полезные функции:
ICSP-разъём ATmega16U2
ICSP-разъём предназначен для программирования микроконтроллера ATmega16U2. А подробности распиновки читайте в соответствующем разделе.
Icsp разъем что это
ICSP
Внутрисхемное программирование
PIC-контроллеров
DOC Rev 1.03
(последнее обновление 19.05.2005)
Рекомендации по ICSP:
При использовании ICSP на плате устройства следует предусмотреть возможность подключения программатора. При программировании с использованием ICSP к программатору должны быть подключены 5 сигнальных линий:
| Линия | Назначение |
| GND (VSS) | Общий провод. |
| VDD (VCC) | + напряжение питания. |
| MCLR’ (VPP) | Вход сброса микроконтроллера / вход напряжения программирования. |
| RB7 (DATA) | Двунаправленная шина данных в режиме программирования. |
| RB6 (CLOCK) | Вход синхронизации в режиме программирования. |
Остальные выводы микроконтроллера не используются в режиме внутрисхемного программирования.
Схемное решение:
Вариант подключения ICSP к микроконтроллеру PIC16F84 в корпусе DIP18:
ВНИМАНИЕ.
Рекомендуемая длина соединительного кабеля ICSP не более 50 см.
Наиболее частые ошибки:
Расположение выводов ICSP у PIC-контроллеров:
Внимание!
Материал только для общей справки. Обязательно убедитесь, что указанное расположение выводов соответствует выбранному вами микроконтроллеру. Для этого, обратитесь к Data Sheets и Programming Specifications на соответствующий микроконтроллер.
Пояснение: Вывод PGM рекомендуется «притягивать» к общему проводу (GND), через резистор, номиналом 1k.
Внутрисистемное программирование
Основное преимущество этой функции состоит в том, что она позволяет производителям электронных устройств интегрировать программирование и тестирование в один этап производства и экономить деньги, вместо того, чтобы требовать отдельного этапа программирования перед сборкой системы. Это может позволить производителям программировать микросхемы на производственной линии своей собственной системы вместо того, чтобы покупать предварительно запрограммированные микросхемы у производителя или дистрибьютора, что позволяет вносить изменения кода или конструкции в середине производственного цикла.
Микроконтроллеры обычно припаиваются непосредственно к печатной плате и обычно не имеют схемы или места для подключения большого кабеля внешнего программирования к другому компьютеру.
Содержание
История [ править ]
Микроконтроллеры, поддерживающие ISP, обычно снабжены выводами, используемыми периферийным устройством последовательной связи для взаимодействия с программатором, памятью Flash / EEPROM и схемой, используемой для подачи напряжения, необходимого для программирования микроконтроллера. Периферийное устройство связи, в свою очередь, подключается к периферийному устройству программирования, которое обеспечивает команды для работы с памятью Flash или EEPROM.
При разработке электронных плат для программирования ISP необходимо учитывать некоторые рекомендации, чтобы этап программирования был максимально надежным. Некоторые микроконтроллеры с небольшим количеством контактов разделяют линии программирования с линиями ввода-вывода. Это может стать проблемой, если необходимые меры предосторожности не будут учтены при проектировании платы; во время программирования устройство может повредить компоненты ввода / вывода. Более того, важно подключать линии ISP к высокоомным.схемы, чтобы избежать повреждения компонентов программистом и потому, что микроконтроллер часто не может обеспечить достаточный ток для управления линией. Многим микроконтроллерам требуется выделенная линия RESET для входа в режим программирования. Необходимо обратить внимание на ток, подаваемый для управления линией, и проверить наличие сторожевых таймеров, подключенных к линии RESET, которые могут вызвать нежелательный сброс и, таким образом, привести к ошибке программирования. Более того, некоторым микроконтроллерам требуется более высокое напряжение для входа в режим программирования, и, следовательно, необходимо убедиться, что это значение не ослабляется и что это напряжение не передается другим компонентам на плате.
Промышленное применение [ править ]
Процесс внутрисистемного программирования происходит на заключительном этапе производства продукта и может выполняться двумя разными способами в зависимости от объемов производства.
В первом способе к программатору вручную подключается разъем. Это решение предполагает участие человека в процессе программирования, который должен подключить программатор к электронной плате с помощью кабеля. Следовательно, это решение предназначено для небольших объемов производства.
Микрочип ICSP [ править ]
Для большинства микроконтроллеров Microchip программирование ICSP выполняется с использованием двух выводов, часов (PGC) и данных (PGD), в то время как высокое напряжение (12 В) присутствует на выводе Vpp / MCLR. Программирование низкого напряжения (5 В или 3,3 В) обходится без высокого напряжения, но оставляет за собой исключительное использование вывода ввода / вывода. Однако для более новых микроконтроллеров, в частности семейств микроконтроллеров PIC18F6XJXX / 8XJXX, переход в режимы ICSP немного отличается. [2] Для входа в режим ICSP Program / Verify необходимо выполнить следующие три шага:
Отдельное оборудование, называемое программатором, требуется для подключения к порту ввода-вывода ПК с одной стороны и к PIC с другой стороны. Список функций для каждого основного типа программирования:
Программисты ICSP имеют много преимуществ, среди которых основными особенностями являются размер, доступность компьютерного порта и источник питания. Из-за различий в схеме межсоединений и целевой цепи, окружающей микроконтроллер, нет программатора, который работал бы со всеми возможными целевыми схемами или межсоединениями. Microchip предоставляет подробное руководство по программированию ICSP [3]. Многие сайты предоставляют примеры программирования и схем.
PIC программируются с использованием пяти сигналов (шестой контакт «aux» предусмотрен, но не используется). Данные передаются по двухпроводной синхронной последовательной схеме, еще три провода обеспечивают программирование и питание микросхемы. Тактовый сигнал всегда контролируется программистом.
Arduino Nano: распиновка, схема подключения и программирование
Плата Arduino Nano — аналог флагманской Uno в миниатюрном размере. На ней предусмотрено всё необходимое для удобной работы с микроконтроллером: 14 цифровых входов/выходов (6 из них могут использоваться в качестве ШИМ-выходов), 6 аналоговых входов, кварцевый резонатор на 16 МГц, разъём Mini-USB, разъём питания, разъём для внутрисхемного программирования (ICSP) и кнопка сброса.

Видеообзор
Подключение и настройка
Для запуска платформы скачайте и установите на компьютер интегрированную среду разработки Arduino IDE.
При выборе платформы выбирайте Arduino Nano.
Если всё получилось — можете смело переходить к экспериментам.
Элементы платы

Микроконтроллер ATmega328P
Сердцем платформы Arduino Nano является 8-битный микроконтроллер семейства AVR — ATmega328P с тактовой частотой 16 МГц. Контроллер предоставляет 32 КБ Flash-памяти для хранения прошивки, 2 КБ оперативной памяти SRAM и 1 КБ энергонезависимой памяти EEPROM для хранения данных.
Микросхема FT232R
Микросхема FTDI FT232R обеспечивает связь микроконтроллера ATmega328P с USB-портом компьютера. При подключении к компьютеру Nano определяется как виртуальный COM-порт.
Светодиодная индикация
| Имя светодиода | Назначение |
|---|---|
| RX и TX | Мигают при обмене данными между Arduino Nano и ПК. |
| L | Пользовательский светодиод подключённый к 13 пину микроконтроллера. При высоком уровне светодиод включается, при низком – выключается. |
| ON | Наличие питания на Arduino Nano. |
Разъём Mini-USB
Разъём Mini-USB предназначен для прошивки платформы с помощью компьютера.
Регулятор напряжения 5 В
Линейный понижающий регулятор напряжения LM1117MPX-5.0 с выходом 5 вольт обеспечивает питание микроконтроллера ATmega328P и другой логики платформы. Максимальный выходной ток составляет 800 мА.
ICSP-разъём для ATmega328
ICSP-разъём предназначен для загрузки прошивки в микроконтроллер ATmega328 через программатор.
Также через контакты ICSP Nano общается с платами расширения по интерфейсу SPI.
ISP (ICSP) программатор из Arduino/Freeduino

Любая версия Freeduino / Arduino может выступать в роли ISP программатора, с помощью которого можно, например, изменить bootloader в другой аналогичной плате, или прошить bootloader в новую микросхему ATmega. В описании указывается Arduino, но фактически может быть использован любой клон, включая все варианты Freeduino.
Здесь рассматривается два варианта ISP программатора на основе Arduino: Mega-ISP, который может быть собран из любой версии Arduino и его клонов, и Bit-Bang программатор, для которого подойдут только те варианты Arduino, которые имеют дополнительно выведенные на специальный разъем контакты микросхемы FT232RL.
Аббревиатуры ISP и ICSP означают In System Programming и In Circuit Serial Programming соответственно. Это означает программирование чипа уже подключенного в некоторую схему, программирование в готовом устройстве по последовательному протоколу.
Принципиально важным является то, что программируемый микроконтроллер должен успешно «завестись», и только после этого он будет в состоянии принимать данные от программатора. Для нас это означает, что он должен быть подключен к питанию, и иметь соответствующий источник тактовых сигналов. Питание проще всего подавать через сам разъем ICSP, а вот с источником тактовых сигналов есть некоторые особенности.
Источник тактовых сигналов выбирается в микроконтроллерах серии ATmega с помощью так называемых fuse-битов, которые, также как и память программ, и EEPROM доступны для изменения с помощью программатора.
Производитель перед продажей выставляет fuse-биты так, что в качестве источника тактовых сигналов выбран внутренний осцилятор, и такой микроконтроллер можно просто подключить к ISP программатору с учетом расположения его выводов, и начать работу. Однако, если с помощью ISP программатора изменить значения fuse-битов так, что изменится источник тактовых сигналов, то чтобы ISP программатор опять начал работать с микроконтроллером, придется соответствующий источник к нему подключить. Таким образом, нужно быть внимательным при изменении значений fuse-битов.
Из известных проектов по созданию ISP программатора на основе Arduino наиболее интересным нам кажется Mega-ISP. Именно этот проект включен в состав ПО Arduino в раздел с примерами под именем ArduinoISP.
Во-вторых, данный ISP программатор при общении с ПК использует протокол AVRISP/STK500v1 только со скорость 19200 бит/сек, и нормально работает не со всеми вариантами ПО для ПК. Поэтому не удивляйтесь, что не удается что-либо прошить из среды Arduino. Авторы рекомендуют использовать программу avrdude из состава Win-AVR.
Сборка программатора Mega-ISP
Если Вы с помощью одной платы Arduino собираетесь прошить другую, то Вам потребуется разъем 2×3 и 6 проводков. Схема сборки:
Если нужно прошить отдельный микроконтроллер (не забываем, что его fuse-биты должны быть выставлены так, что он тактируется от внутреннего осцилятора), то нужно узнать согласно документации Atmel расположение вывовдов Gnd, Vcc, MOSI, MISO, SCK.
Не забываем подключить «землю» и питание.
Для примера приводим разводку для разъема ICSP и микроконтроллеров ATmega328 и ATtiny85.
На фото представлен один из вариантов реализации:
Работа с программатором Mega-ISP
Рассмотрим например, как прошить новый boot-loader.
Скачайте архив с проектом и подходящей версией avrdude. Распакуйте архив в какую-нибудь папку.
Откройте проект в среде Arduino и загрузите его в вашу плату. Либо загрузите в плату пример ArduinoISP из состава ПО Arduino. После этого можно отключать программный сброс согласно описания выше.
Подсоедините вторую плату (которую будем «прошивать») к первой.
В режиме командной строки перейдите в папку с avrdude. Теперь можно запускать avrdude с соответствующими ключами:
В процессе работы с программатором было замечено, что иногда процесс прошивки не начинается, и avrdude завершается с ошибкой. В таких случаях нам помогал сброс программатора кнопкой Reset и повторная прошивка.
Архив с ПО также содержит файл sample.bat, в котором кроме bootloader’а программируются fuse и lock биты.
В Сети есть страничка с разведенной платой такого программатора, включающей дополнительные отладочные светодиоды: http://drug123.org.ua/mega-isp-shield/
«Сердцем» Bit-Bang программатора является микросхема FD232RL (та самая, которая реализует COM-порт на шине USB), а собственно микроконтроллер ATmega никакого участия в процессе программирования не принимает. Это позволяет программировать микроконтроллер, установленный в «панельке» Вашей Arduino – вторая плата Arduino не потребуется.
Соответственно, для данного программатора подойдут только USB версии Arduino, да и то не все, т.к. не на всех вариантах разведен разъем X3 с дополнительными выводами FT232RL.
Сборка программатора Arduino Bit-Bang
Для сборки Вам потребуются разъемы 1×4, 2×6, штекер 1×2 (для питания) и несколько проводов. Можно использовать, например пару Audio-кабелей от CD-ROM – у них удобные разборные разъемы, и в таком случае можно обойтись даже без паяльника.
Схема соединений следующая:
Провода питания и «земли» потребуются, если Вы собираетесь программировать внешнее устройство. Для программирования микроконтроллера, находящегося в панели той же самой Arduino они не нужны.
На фотографиях представлены оба варианта соединения – программирование микроконтроллера ATmega168, находящегося в панельке Arduino (провода питания и «земли» не нужны), и программирование микроконтроллера во второй плате.

Работа с программатором Arduino Bit-Bang
Аналогично рассмотрим прошивку нового boot-loader’а.
Скачайте архив с соответствующей версией avrdude. Распакуйте архив в какую-нибудь папку.
Подсоедините программатор к USB порту.
В режиме командной строки перейдите в папку с avrdude. Теперь можно запускать avrdude с соответствующими ключами:
Архив с ПО также содержит файл sample.bat, в котором кроме bootloader’а программируются fuse и lock биты.
Более полную информацию можно найти по ссылке:
















