ESP8266 и Arduino, подключение, распиновка. Установка и настройка Arduino в ОС Windows Установка arduino uno

Изучение микроконтроллеров кажется чем-то сложным и непонятным? До появления Арудино - это было действительно не легко и требовало определенный набор программаторов и прочего оборудования.

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

Сборка сложнейших схем и соединение плат может осуществляться без паяльника, а с помощью перемычек с разъёмными соединениями «папа» и «мама». Так могут подключаться как навесные элементы, так и платы расширения, которые на лексиконе ардуинщиков зовут просто «Шилды» (shield).

Какую первую плату Arduino купить новичку?

Базовой и самой популярной платой считается . Эта плата размером напоминает кредитную карту. Довольно крупная. Большинство шилдов которые есть в продаже идеально подходят к ней. На плате для подключения внешних устройств расположены гнезда.

В отечественных магазинах на 2017 год её цена порядка 4-5 долларов. На современных моделях её сердцем является Atmega328.

Изображение платы ардуино и расшифровка функций каждого вывода, Arduino UNO pinout

Микроконтроллер на данной плате это длинна микросхема в корпусе DIP28, что говорит о том, что у него 28 ножек.

Следующая по популярности плата, стоит почти в двое дешевле предыдущей - 2-3 доллара. Это плата . Актуальные платы построены том же Atmega328, функционально они аналогичны с UNO, различия в размерах и решении согласования с USB, об этом позже подробнее. Еще одним отличием является то, что для подключения к плате устройств предусмотрены штекера, в виде иголок.

Количество пинов (ножек) этой платы совпадает, но вы можете наблюдать что микроконтроллер выполнен в более компактном корпусе TQFP32, в корпусе добавлены ADC6 и ADC7, другие две «лишних» ножки дублируют шину питания. Её размеры довольно компактные - примерно, как большой палец вашей руки.

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

Это самая маленькая плата из всех рассмотренных, в остальном она аналогична предыдущим двум, а её сердцем является по-прежнему Atmega328. Другие платы рассматривать не будем, так как это статья для начинающих, да и сравнение плат - это тема отдельной статьи.

В верхней части схема подключения USB-UART, пин «GRN» - разведен на цепь сброса микроконтроллера, может называться по иному, для чего это нужно вы узнаете далее.

Если UNO удобна для макетирования, то Nano и Pro Mini удобны для финальных версий вашего проекта, потому что занимают мало места.

Как подключить Arduino к компьютеру?

Arduino Uno и Nano подключаются к компьютеру по USB. При этом нет аппаратной поддержки USB порта, здесь применено схемное решение преобразования уровней, обычно называемое USB-to-Serial или USB-UART (rs-232). При этом в микроконтроллер прошит специальный Arduino загрузчик, который позволяет прошиваться по этим шинам.

В Arduino Uno реализована эта вязь на микроконтроллере с поддержкой USB - ATmega16U2 (AT16U2). Получается такая ситуация, что дополнительный микроконтроллер на плате нужен для прошивки основного микроконтроллера.

В Arduino Nano это реализовано микросхемой FT232R, или её аналогом CH340. Это не микроконтроллер — это преобразователь уровней, этот факт облегчает сборку Arduino Nano с нуля своими руками.

Обычно драйвера устанавливаются автоматически при подключении платы Arduino. Однако, когда я купил китайскую копию Arduino Nano, устройство было опознано, но оно не работало, на преобразователе была наклеена круглая наклейка с данными о дате выпуска, не знаю нарочно ли это было сделано, но отклеив её я увидел маркировку CH340.

До этого я не сталкивался с таким и думал, что все USB-UART преобразователи собраны на FT232, пришлось скачать драйвера, их очень легко найти по запросу «Arduino ch340 драйвера». После простой установки - всё заработало!

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

Что делать если на моей плате нет USB?

Плата Arduino Pro Mini имеет меньшие габариты. Это достигли тем что убрали USB разъём для прошивки и тот самый USB-UART преобразователь. Поэтому его нужно докупить отдельно. Простейший преобразователь на CH340 (самый дешевый), CPL2102 и FT232R, продаётся стоит от 1 доллара.

При покупке обратите внимание на какое напряжение рассчитан этот переходник. Pro mini бывает в версиях 3.3 и 5 В, на преобразователях часто расположен джампер для переключения напряжения питания.

При прошивке Pro Mini, непосредственно перед её началом необходимо нажимать на RESET, однако в преобразователях с DTR это делать не нужно, схема подключения на рисунке ниже.

Стыкуются они специальными клеммами «Мама-Мама» (female-female).

Собственно, все соединения можно сделать с помощью таких клемм (Dupont), они бывают как с двух сторон с гнездами, так и со штекерами, так и с одной стороны гнездо, а с другой штекер.

Как писать программы для Arduino?

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

Так выглядит интерфейс программы. Писать программы можно на специально разработанном для ардуино упрощенном языке C AVR, по сути это набор библиотек, который называют Wiring, а также на чистом C AVR. Использование которого облегчает код и ускоряет его работу.

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

В нижней части окна - область для вывода информации о проекте, о состоянии кода, прошивки и наличии ошибок.

Основы программирования в Arduino IDE

В начале кода нужно объявить переменные и подключить дополнительные библиотеки, если они имеются, делается это следующим образом:

#include biblioteka.h; // подключаем библиотеку с названием “Biblioteka.h”

#define peremennaya 1234; // Объявляем переменную со значением 1234

Команда Define дают компилятору самому выбрать тип переменной, но вы можете его задать вручную, например, целочисленный int, или с плавающей точкой float.

int led = 13; // создали переменную “led” и присвоили ей значение «13»

Программа может определять состояние пина, как 1 или 0. 1 -это логическая единица, если пин 13 равен 1, то напряжение на его физической ножке будет равняться напряжению питания микроконтроллера (для ардуино UNO и Nano - 5 В)

Запись цифрового сигнала осуществляется командой digitalWrite (пин, значение), например:

digitalWrite(led, high); //запись единицы в пин 13(мы его объявили выше) лог. Единицы.

Как вы могли понять обращение к портам идёт по нумерации на плате, соответствующей цифрой. Вот пример аналогичного предыдущему коду:

digitalWrite (13, high); // устанавливаем вывод 13 в едиицу

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

delayMicroseconds() Delay (1000); //микроконтроллер будет ждать 1000 мс (1 секунду)

Настройки портов на вход и выход задаются в функции void setup{}, командой:

pinMode(NOMERPORTA, OUTPUT/INPUT); // аргументы - название переменной или номер порта, вход или выход на выбор

Понимаем первую программу «Blink»

В качестве своеобразного «Hello, world» для микроконтроллеров является программа мигания светодиодом, давайте разберем её код:

В начале командой pinMode мы сказали микроконтроллеру назначить порт со светодиодом на выход. Вы уже заметили, что в коде нет объявления переменной “LED_BUILTIN”, дело в том, что в платах Uno, Nano и других с завода к 13 выводу подключен встроенный светодиод и он распаян на плате. Он может быть использован вами для индикации в ваших проектах или для простейшей проверки ваших программ-мигалок.

Далее мы установили вывод к которому подпаян светодиод в единицу (5 В), следующая строка заставляет МК подождать 1 секунду, а затем устанавливает пин LED_BUILTIN в значение нуля, ждет секунду и программа повторяется по кругу, таким образом, когда LED_BUILTIN равен 1 - светодиод(да и любая другая нагрузка подключенная к порту) включен, когда в 0 - выключен.

Читаем значение с аналогового порта и используем прочитанные данные

Микроконтроллер AVR Atmega328 имеет встроенный 10 битный аналогово цифровой преобразователь. 10 битный АЦП позволяет считывать значение напряжение от 0 до 5 вольт, с шагом в 1/1024 от всего размаха амплитуды сигнала (5 В).

Чтобы было понятнее рассмотрим ситуацию, допустим значение напряжения на аналоговом входе 2.5 В, значит микроконтроллер прочитает значение с пина «512», если напряжение равно 0 - «0», а если 5 В - (1023). 1023 - потому что счёт идёт с 0, т.е. 0, 1, 2, 3 и т.д. до 1023 - всего 1024 значения.

Вот как это выглядит в коде, на примере стандартного скетча «analogInput»

int sensorPin = A0;

int ledPin = 13;

int sensorValue = 0;

pinMode(ledPin, OUTPUT);

sensorValue = analogRead(sensorPin);

digitalWrite(ledPin, HIGH);

delay(sensorValue);

digitalWrite(ledPin, LOW);

delay(sensorValue);

Объявляем переменные:

    Ledpin - самостоятельно назначаем пин со встроенным светодиодом на выход и даём индивидуальное имя;

    sensorPin - аналоговый вход, задаётся соответственно маркировке на плате: A0, A1, A2 и т.д.;

    sensorValue - переменная для хранения целочисленного прочитанного значения и дальнейшей работы с ним.

Код работает так: sensorValue сохраняем прочитанное с sensorPin аналоговое значение (команда analogRead). - здесь работа с аналоговым сигналом заканчивается, дальше всё как в предыдущем примере.

Записываем единицу в ledPin, светодиод включается и ждем время равное значению sensorValue, т.е. от 0 до 1023 миллисекунд. Выключаем светодиод и снова ждем этот период времени, после чего код повторяется.

Таким образом положением потенциометра мы задаем частоту миганий светодиода.

Функция map для Арудино

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

Теперь о синтаксисе: map (значение которое мы переводим, минимальная величина входного, максимальная величина входного, минимальная выходного, максимальная выходного значения).

В коде это выглядит так:

(map(analogRead(pot), 0, 1023, 0, 180));

Мы считываем значение с потенциометра (analogRead(pot))от 0 до 1023, а на выходе получаем числа от 0 до 180

Значения карты величин:

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

И схема подключения.

Выводы Ардуино - очень удобное средство для обучения работы с микроконтроллерами. А если использовать чистый C AVR, или как его иногда называют «Pure C» - вы значительно уменьшите вес кода, и его больше поместиться в память микроконтроллера, в результате вы получите отличную отладочную плату заводского исполнения с возможностью прошивки по USB.

Мне нравится ардуино. Жаль, что её многие опытные программисты микроконтроллеров безосновательно ругают, что она слишком упрощена. Упрощен, в принципе, только язык, но никто не заставляет пользоваться именно им, плюс вы можете прошить микроконтроллер через ICSP разъём, и залить туда тот код, который вам хочется, без всяких ненужных Вам бутлоадеров.

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

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

Я приобрел свой первый Ардуин и хотел бы рассказать с чего начать чтобы он заработал. Откуда скачать программу схему подключения и тп. И что с ардуином вообще можно сделать.

О том, что такой Ардуин и с чем его «едят» я не буду рассказывать вы можете что такое Arduino почитать здесь. Arduin грубо говоря программная плата с возможностью подключения разных приемников и устройств вывода. Микроконтроллер. Обладая соответствующими знаниями его можно пустить в разные русла.

Что можно сделать с Arduino?

  • Машинка на ардуино
  • радиоуправляемый самолет и квадрокоптер
  • Умный дом
  • Автозапуск для авто
  • Управление авто некоторыми частями
  • Сигнализацию
  • 3D принтер
  • и многое другое что можно сделать с микроконтроллерами

Заказал через интернет - Arduino с DX
Нужна была плата именно с надписями arduino и никак иначе, поэтому пришлось заплатить 28$, хотя XDruino (XDruino) или Zdruino (Zdruino) стоят дешевле.

Вот плата Arduino, сейчас будем подключать к компьютеру. Подключаем её в USB порт. Windows пытается обнаружить драйвер, но она этого сделать не сможет, поэтому переходим в диспетчер устройств (Мой компьютер -> Свойства -> Оборудование -> Диспетчер устройств). Видим, что у нас есть новое неизвестное устройство.

Для того чтобы windows обноружил устройство как устройство Arduino MEGA 2560 нам необходимо скачать драйвера. Драйвера можно скачать с официального сайта, http://www.arduino.cc/. Заходим на вкладочку «скачать» (обозначено «1») и выбираем Arduino 1.0.5» (обозначено «2»), здесь есть и версия Arduino 1.5 » (обозначено «3») но она BETA версия, поэтому мы не будем её качать, мы скачаем версию 1.0.5. Это текущий релиз. Скачаем ZIP файл. Он весит 92.9 MByte.

Скачиваем и распаковываем файл, в которой есть папка с драйверами. Открываем её, и находим в ней файл Arduino.inf который нужно скопировать поближе к корню диска, я его положу прямо на диск С. Теперь мне нужно указать в диспетчере устройств, вот этот *.inf файл. Я нажимаю что я хочу обновить драйвер, выбираю что я покажу где этот драйвер находится на моём компьютере. Выбираю папочку, я положил *.inf файл на диск С, и выбираю диск С. Именно поэтому я его положил ближе к корню, чтобы не лазить по всему компьютеру и убираю галочку «Включить подпапки». Нажимаю «Next».

Windows обнаружила этот *.inf файл и предлагает его установить. Тут какие-то проблемы с Windows, он этот драйвер не хочет принимать как безопасный, но мы всё равно его установим.

Вот и всё. У нас установилось это неизвестное устройство, на него уже стали дрова и оно видится как Arduino MEGA2560. Она сейчас висит на 3-ем COM порту.

Теперь с локального диска С мы удаляем этот *.inf файл потому что он нам уже не нужен, и закрываем окно.
В распакованной папке есть ярлык Arduino, который запускает среду программирования Arduino. Данную программу не нужно устанавливать, её просто нужно куда-то скопировать и можно запускать Arduino IDE из любого места. Запускаем её, и вот как она выглядит. Очень простая и удобная программа.


Теперь нужно указать последовательный порт на котором определилась плата


Выбираем плату, у нас Mega 2560, если у вас другая, вы выбираете другую.


И теперь можно залить сюда какой-то проект Arduino. Выберем проект Arduino, примеры, и выберем что-то с коммуникацией по последовательному порту, чтобы мы видели что мигают светодиоды. Ну допустим, MultiSerialMega.


Открывается исходный код примера, мы его можем проверить на ошибки (откомпилировать), нажав кнопку помеченной цифрой «1», либо можно сразу загрузить на микроконтроллер программу, нажав кнопку помеченной цифрой «2» . При этом компилятор сначала откомпилирует исходный текст, и только потом зальёт полученный файл на микроконтроллер. Обратите внимание, сейчас должны загореться какие-то светодиоды.


Давайте выберем другой пример. Мне хочется попробовать пример который бы постоянно что-то отправлял. Вот, например AnalogOutSerial. Перед каждым примером есть описание, что да как. Сразу зальём его на микроконтроллер (запрограммируем Arduino), для этого сразу жмём «загрузить», компилятор сразу выполнит компиляцию и потом всё загрузит. Вот всё загружено, и сейчас что-то передаётся, так как постоянно горит светодиод на передачу. Узнать что именно передаётся можно с помощью любого монитора COM порта. Мне очень нравится программа Terminal, но можно воспользоваться и средствами встроенными Arduino IDE. Arduino IDE имеет на своём борту «недомонитор COM порта», которым можно пользоваться когда нет ничего другого. Откроем мониторинг COM порта, и видит, что именно постоянно сюда передаётся.


Для чего вообще эти примеры? Я показал как программировать Arduino, можно убедиться что устройство работает, и нормально программируется.
Теперь нужно найти документацию на плату Arduino. Документацию на плату мы также находим на этом сайте. Переходим в раздел «Produkt» (http://arduino.cc/en/Main/Products), выбираем наш продукт, у меня Arduino Mega2560. Спускаемся немного ниже и видим интересные ссылки.


Первое это EAGLE файлы («1»), то есть разводка печатных плат сделана в орле. Также можно найти схему Arduino в формате *.pdf («2») и карту пинов («3»). То есть вся документация на Arduino есть, и лежит в открытом виде. Есть схема и разобраться что куда идёт и что за что отвечает, не оставит ни каких сложностей.

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

1. Плата Arduino Uno - распиновка устройства

Слово Uno переводится с итальянского языка, как «один». Устройство названо в связи с началом выпуска Arduino 1.0. Другими словами, Uno является эталонной моделью для всей платформы типа Arduino. Это последнее устройство в серии плат USB, доказавшее свою эффективность и проверенное временем.

Arduino Uno создано на микроконтроллере типа ATmega 328 (datasheet).

Его состав следующий:

  • количество цифровых входов и выходов составляет 14 (а шесть из них имеется возможность использовать как выходы ШИМ);
  • число аналоговых входов составляет шесть;
  • 16 МГц – кварцевый резонатор;
  • имеется разъём для питания;
  • есть разъём, предназначенный для ICSP-программирования внутри самой схемы;
  • присутствует кнопка для сброса.

Крайне важно отметить, что отличительной особенностью всех новых плат arduino является использование для интерфейсов USB–UART микроконтроллера типа ATmega 16U2 (или ATmega 8U2 в версиях R1, R2) вместо устаревшей микросхемы типа FTDI.

Плата Uno по версии R2 снабжается дополнительным подтягивающим к земле резистором на линии HWB применяемого микроконтроллера.

Распиновка выглядит следующим образом:

  1. Последовательный интерфейс использует шины №0 (RX – получение данных), №1 (TX – передача данных).
  2. Для внешнего прерывания используются выводы №2, №3.
  3. Для ШИМ используются выводы за номерами 3,5, 6, 9, 10, 11. Функция analog Write обеспечивает разрешение в 8 бит.
  4. Связь посредством SPI: контакты №10 (SS), №11 (MOSI), №12 (MISO), №13 (SCK).
  5. Вывод №13 запитывает светодиод, который загорается при высоком потенциале.
  6. Uno оснащена 6 аналоговыми входами (A0 – A5), которые имеют разрешение в 10 бит.
  7. Для изменения верхнего предела напряжения используется вывод AREF (функция analog Reference).
  8. Связь I2C (TWI, библиотека Wire) осуществляется через выводы №4 (SDA), №5 (SCL).

Устройство построено на микроконтроллере АTmega16U2 и имеет повышенный уровень помехоустойчивости по цепи сброса.

Устройство отличается от предыдущей версии лишь тем, что в этом случае не используется интерфейс USB-UART FTDI при подключении к компьютеру. Эту задачу выполняет выполняет сам микроконтроллер ATmega 16U2.

Изменения распиновки платы выглядят следующим образом:

  1. Возле вывода AREF добавлены два пина: SDA, SCL.
  2. Возле пина RESET также добавлены два вывода: IOREF, позволяющий подключать платы расширения с подстройкой под необходимое напряжение; второй вывод не используется и находится в резерве.

Является одной из самых простых и удобных устройств Arduino.

Используется микроконтроллер ATmega 168 с рабочим напряжением на 5 вольт с частотой в 16 МГц. Максимальное напряжение питания в моделях составляет 9 вольт. Значение максимального тока на выводах составляет 40 mA.

Плата содержит:

  • 14 цифровых выводов (из них 6 могут быть использованы в качестве ШИМ-выходов), могут применяться в качестве как входа, так и выхода;
  • 8 аналоговых входов (4 из них оснащены выводами);
  • 16 МГц – кварцевый генератор.

Пины устройства Arduino Mini имеют следующее предназначение:

  1. Два вывода, посредством которых осуществляется питание платы «плюс»: RAW, VCC.
  2. Вывод контакта «минус» – пин GND.
  3. Выводы под номерами 3, 5, 6, 9, 10, 11 используются для ШИМ при применении функции analog Write.
  4. К выводам №0, №1 можно подключать другие устройства.
  5. Аналоговые входы №0 – №3 с выводами.
  6. Аналоговые входы №4 – №7 не имеют выводов и требуют пайки при необходимости.
  7. Вывод AREF, который предназначен для изменения верхнего напряжения.

Расположение выводов в различных версиях arduino mini могут различаться.

Устройство Arduino Mega 2560 собрано на микроконтроллере ATmega 2560 (datasheet), является обновлённой версией Arduino Mega.

Для осуществления преобразования USB–UART-интерфейсов используется новый микроконтроллер ATmega 16U2 (либо ATmega 8U2 для версий плат R1 или R2).

Состав платы следующий:

  • количество цифровых входов/выходов составляет 54 (15 из них можно использовать в роли выходов-ШИМ);
  • число аналоговых входов – 16;
  • реализация последовательных интерфейсов производится посредством 4 аппаратных приёмопередатчиков UART;
  • 16 МГц – кварцевый резонатор;
  • USB-разъём;
  • питающий разъём;
  • внутрисхемное программирование осуществляется через ICSP-разъём;
  • кнопка для сброса.

В устройстве Mega 2560 R2-версии добавлен специальный резистор, подтягивающий HWB-линию 8U2 к земле, что позволяет значительно упростить переход Arduino в DFU-режим, а также обновление прошивки. Версия R3 незначительно отличается от предыдущих. Изменения в устройстве следующие:

  • добавлены четыре вывода – SCL, SDA, IOREF (для осуществления совместимости по напряжению различных расширительных плат) и ещё один резервный вывод, пока не используемый;
  • повышена помехоустойчивость по цепи сброса;
  • увеличен объём памяти;
  • ATmega8U2 заменён на микроконтроллер ATmega16U2.

Выводы предназначаются для следующего:

  1. Имеющиеся цифровые пины могут служить входом-выходом. Напряжение на них – 5 вольт. Каждый пин обладает подтягивающим резистором.
  2. Аналоговые входы не оснащены подтягивающими резисторами. Работа основана на применении функции analog Read.
  3. Количество выводов ШИМ составляет 15. Это цифровые выводы №2 – №13, №44 – №46. Использование ШИМ производится через функцию analog Write.
  4. Последовательный интерфейс: выводы Serial: №0 (rx), №1 (tx); выводы Serial1: №19 (rx), №18 (tx); выводы Serial2: №17 (rx), №16 (tx); выводы Serial3: №15 (rx), №14 (tx).
  5. Интерфейс SPI оборудован выводами №53 (SS), №51 (MOSI), №50 (MISO), №52 (SCK).
  6. Вывод №13 – встроенный светодиод.
  7. Пины для осуществления связи с подключаемыми устройствами: №20 (SDA), №21 (SCL).
  8. Для внешних прерываний (низкий уровень сигнала, другие изменения сигнала) используются выводы №2 , №3, №18, №19, №20, №21.
  9. Вывод AREF задействуется командой analog Reference и предназначается для регулирования опорного напряжения аналоговых входных пинов.
  10. Вывод Reset. Предназначен для формирования незначительного уровня (LOW), что приводит к перезагрузке устройства (кнопка сброса).

Arduino Micro представляет собой устройство, основа которого построена на микроконтроллере ATmega 32u4, имеющем встроенный USB-контроллер. Это решение упрощает подключение платы к компьютеру, так как в системе устройство будет определяться как обычная клавиатура, мышь либо COM-порт. Состав устройства следующий:

  • количество входов/выходов – 20 (имеется возможность 7 из них использовать как ШИМ-выходы, а 12 – в роли входов аналогового типа); резонатор кварцевый, настроенный на 16 МГц;
  • micro-USB-разъём;
  • ICSP-разъём, предназначенный для проведения внутреннего программирования;
  • кнопка для сброса.

Все цифровые выводы изделия могут работать в качестве как входов, так и выходов благодаря наличию функций digital Read, pin Mode, digital Write. Напряжение на выводах составляет 5 вольт. Максимальная величина потребляемого или отдаваемого тока с одного вывода составляет 40 мА. Выводы сопрягаются с внутренними резисторами, которые по умолчанию находятся в отключенном состоянии. Они имеют номиналы в 20 кОм – 50 кОм. Отдельные выводы arduino micro, кроме основных, способны выполнять и ряд дополнительных функций:

  1. В последовательном интерфейсе выводы №0 (RX), №1 (TX) применяются для приёма (RX), а также передачи (TX) необходимых данных через встроенный аппаратный приёмопередатчик. Функция актуальна для arduino micro класса Serial. В других случаях связь осуществляется через соединение USB (CDC).
  2. Интерфейс TWI включает выводы микроконтроллера №2 (SDA) и №3 (SCL). Позволяют использовать данные библиотеки Wire.
  3. Выводы под номерами 0, 1, 2, 3 могут быть использованы в роли источников возникающих прерываний. К таковым относятся низкий уровень сигнала; прерывания по фронту, по спаду, при изменении уровня сигнала.
  4. Выводы под номерами 3, 5, 6, 9, 10, 11,13 при использовании функции analog Write способны выводить аналоговый ШИМ-сигнал в 8 бит.
  5. К SPI-интерфейсу относятся выводы на разъёме ICSP. Они не соединяются с цифровыми выводами на плате.
  6. Дополнительный вывод RX LED/SS, который соединён со светодиодом. Последний индицирует процесс по передаче данных с использованием USB. Этот вывод может быть использован при работе с интерфейсом SPI для вывода SS.
  7. Вывод №13 – светодиод, который включается при отправке данных HIGH и выключается при значениях LOW.
  8. Выводы A0 – A5 (отмечены на плате) и A6 – A11 (соответствуют цифровым выводам за номерами 4, 6, 8, 9, 10,12) являются аналоговыми.
  9. Вывод AREF позволяет изменять верхнее значение аналогового напряжения на вышеуказанных выводах. При этом используется функция analog Reference.
  10. С помощью вывода Reset формируется низкий уровень (LOW) и происходит перезагрузка микроконтроллера (кнопка сброса).

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

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

Что такое Arduino и для чего оно нужно?

Arduino — это электронный конструктор, который позволяет любому человеку создавать разнообразные электро-механические устройства. Ардуино состоит из программной и аппаратной части. Программная часть включает в себя среду разработки (программа для написания и отладки прошивок), множество готовых и удобных библиотек, упрощенный язык программирования. Аппаратная часть включает в себя большую линейку микроконтроллеров и готовых модулей для них. Благодаря этому, работать с Arduino очень просто!

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

Стартовый набор Arduino

Для того что бы начать изучать Arduino необходимо обзавестись самой платой микроконтроллера и дополнительными деталями. Лучше всего приобрести стартовый набор Ардуино, но можно и самостоятельно подобрать все необходимое. Я советую выбрать набор, потому что это проще и зачастую дешевле. Вот ссылки на лучшие наборы и на отдельные детали, которые обязательно пригодятся вам для изучения:

Базовый набор ардуино для начинающих: Купить
Большой набор для обучения и первых проектов: Купить
Набор дополнительных датчиков и модулей: Купить
Ардуино Уно самая базовая и удобная модель из линейки: Купить
Беспаечная макетная плата для удобного обучения и прототипирования: Купить
Набор проводов с удобными коннекторами: Купить
Комплект светодиодов: Купить
Комплект резисторов: Купить
Кнопки: Купить
Потенциометры: Купить

Среда разработки Arduino IDE

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

Версия Windows Mac OS X Linux
1.8.2

Язык программирования Ардуино

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

Для программирования Arduino используется упрощенная версия языка C++ с предопределенными функциями. Как и в других Cи-подобных языках программирования есть ряд правил написания кода. Вот самые базовые из них:

  • После каждой инструкции необходимо ставить знак точки с запятой (;)
  • Перед объявлением функции необходимо указать тип данных, возвращаемый функцией или void если функция не возвращает значение.
  • Так же необходимо указывать тип данных перед объявлением переменной.
  • Комментарии обозначаются: // Строчный и /* блочный */

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

Все прошивки для Arduino должны содержать минимум 2 функции. Это setup() и loop().

Функция setup

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

// переменные с пинами подключенных устройств int switchPin = 8; int ledPin = 11; // переменные для хранения состояния кнопки и светодиода boolean lastButton = LOW; boolean currentButton = LOW; boolean ledOn = false; void setup() { pinMode(switchPin, INPUT); pinMode(ledPin, OUTPUT); } // функция для подавления дребезга boolean debounse(boolean last) { boolean current = digitalRead(switchPin); if(last != current) { delay(5); current = digitalRead(switchPin); } return current; } void loop() { currentButton = debounse(lastButton); if(lastButton == LOW && currentButton == HIGH) { ledOn = !ledOn; } lastButton = currentButton; digitalWrite(ledPin, ledOn); }

// переменные с пинами подключенных устройств

int switchPin = 8 ;

int ledPin = 11 ;

// переменные для хранения состояния кнопки и светодиода

boolean lastButton = LOW ;

boolean currentButton = LOW ;

boolean ledOn = false ;

void setup () {

pinMode (switchPin , INPUT ) ;

pinMode (ledPin , OUTPUT ) ;

// функция для подавления дребезга

boolean debounse (boolean last ) {

boolean current = digitalRead (switchPin ) ;

if (last != current ) {

delay (5 ) ;

current = digitalRead (switchPin ) ;

return current ;

void loop () {

currentButton = debounse (lastButton ) ;

if (lastButton == LOW && currentButton == HIGH ) {

ledOn = ! ledOn ;

lastButton = currentButton ;

digitalWrite (ledPin , ledOn ) ;

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

ШИМ Arduino

Широтно-импульсная модуляция (ШИМ) — это процесс управления напряжением за счет скважности сигнала. То есть используя ШИМ мы можем плавно управлять нагрузкой. Например можно плавно изменять яркость светодиода, но это изменение яркости получается не за счет уменьшения напряжения, а за счет увеличения интервалов низкого сигнала. Принцип действия ШИМ показан на этой схеме:

Когда мы подаем ШИМ на светодиод, то он начинает быстро зажигаться и гаснуть. Человеческий глаз не способен увидеть это, так как частота слишком высока. Но при съемке на видео вы скорее всего увидите моменты когда светодиод не горит. Это случится при условии что частота кадров камеры не будет кратна частоте ШИМ.

В Arduino есть встроенный широтно-импульсный модулятор. Использовать ШИМ можно только на тех пинах, которые поддерживаются микроконтроллером. Например Arduino Uno и Nano имеют по 6 ШИМ выводов: это пины D3, D5, D6, D9, D10 и D11. В других платах пины могут отличаться. Вы можете найти описание интересующей вас платы в

Для использования ШИМ в Arduino есть функция Она принимает в качестве аргументов номер пина и значение ШИМ от 0 до 255. 0 — это 0% заполнения высоким сигналом, а 255 это 100%. Давайте для примера напишем простой скетч. Сделаем так, что бы светодиод плавно загорался, ждал одну секунду и так же плавно угасал и так до бесконечности. Вот пример использования этой функции:

// Светодиод подключен к 11 пину int ledPin = 11; void setup() { pinMode(ledPin, OUTPUT); } void loop() { for (int i = 0; i < 255; i++) { analogWrite(ledPin, i); delay(5); } delay(1000); for (int i = 255; i > 0; i--) { analogWrite(ledPin, i); delay(5); } }

// Светодиод подключен к 11 пину

int ledPin = 11 ;

void setup () {

pinMode (ledPin , OUTPUT ) ;

void loop () {

for (int i = 0 ; i < 255 ; i ++ ) {

analogWrite (ledPin , i ) ;

delay (5 ) ;

delay (1000 ) ;

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

Необходимое железо — Arduino и USB-кабель

В этом руководстве предполагается, что вы используете Arduino Uno, Arduino Duemilanove, Nano или Diecimila.

Вам потребуется также кабель стандарта USB (с разъемами типа USB-A и USB-B): такой, каким, к примеру, подключается USB-принтер. (Для Arduino Nano вам потребуется вместо этого кабель с разъемами А и мини-В).

Программа - среда разработки для Arduino

Найдите последнюю версию на странице скачивания .

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

Подсоедините плату

Arduino Uno, Mega, Duemilanove и Arduino Nano получают питание автоматически от любого USB-подключения к компьютеру или другому источнику питания. При использовании Arduino Diecimila убедитесь, что плата сконфигурирована для получения питания через USB-подключение. Источник питания выбирается с помощью маленького пластикового джампера, надетого на два из трех штырьков между разъемами USB и питания. Проверьте, чтобы он был установлен на два штырька, ближайших к разъему USB.

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

Установите драйвера

Установка драйверов для на Windows7, Vista или XP:

  • Подключите вашу плату и подождите, пока Windows начнет процесс установки драйвера. Через некоторое время, несмотря на все её попытки, процесс закончится безрезультатно.
  • Нажмите на кнопку ПУСК и откройте Панель управления.
  • В панели управления перейдите на вкладку Система и безопасность (System and Security). Затем выберите Система. Когда откроется окно Система, выберите Диспетчер устройств (Device Manager).
  • Обратите внимание на порты (COM и LPT). Вы увидите открытый порт под названием «Arduino UNO (COMxx)».
  • Щелкните на названии «Arduino UNO (COMxx)» правой кнопкой мышки и выберите опцию «Обновить драйвер» (Update Driver Software).
  • Кликните "Browse my computer for Driver software".
  • Для завершения найдите и выберите файл драйвера для Uno - «ArduinoUNO.inf», расположенный в папке Drivers программного обеспечения для Arduino (не в подкаталоге «FTDI USB Drivers»).
  • На этом Windows закончит установку драйвера.
Выберите ваш последовательный порт

Выберите устройство последовательной передачи платы Arduino из меню Tools | Serial Port. Вероятно, это будет COM3 или выше (COM1 и COM2 обычно резервируются для аппаратных COM-портов). Чтобы найти нужный порт, вы можете отсоединить плату Arduino и повторно открыть меню; пункт, который исчез, и будет портом платы Arduino. Вновь подсоедините плату и выберите последовательный порт.

Загрузите скетч в Arduino

Теперь просто нажмите кнопку «Upload» в программе - среде разработки. Подождите несколько секунд - вы увидите мигание светодиодов RX и TX на плате. В случае успешной загрузки в строке состояния появится сообщение «Done uploading (Загрузка выполнена)».
(Замечание. Если у вас Arduino Mini, NG или другая плата, вам необходимо физически кнопкой подать команду reset непосредственно перед нажатием кнопки «Upload»).

Несколько секунд спустя после окончания загрузки вы увидите как светодиод вывода 13 (L) на плате начнет мигать оранжевым цветом. Поздравляю, если это так! Вы получили готовый к работе Arduino!