Интернет. Программы. Советы. Гаджеты. Безопасность

Установка и настройка Arduino в ОС Windows. Настройка плат Arduino при первом подключении к ПК Ардуино установка

Плата Arduino Uno – центр большой империи Arduino, самое популярное и самое доступное устройство. В ее основе лежит чип ATmega – в последней ревизии Ардуино Уно R3 – это ATmega328 (хотя на рынке можно еще встретить варианты платы UNO с ATmega168). Большинство ардуинщиков начинают именно с платы UNO. В этой статье мы рассмотрим основные особенности, характеристики и устройство платы Arduino Uno ревизии R3, требования к питанию, возможности подключения внешних устройств, отличия от других плат (Mega, Nano).

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

Характеристики Arduino Uno

Изображения плат Ардуино Уно

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

Оригинальный и официальный Arduino Uno

Многочисленные китайские варианты выглядят вот так:


Плата – клон Arduino Uno

Еще примеры плат:




Где купить Arduino Uno

Минимальные цены на платы UNO можно найти в китайских электронных магазинах. Если у вас есть несколько недель на ожидание, вы можете существенно сэкономить, купив дешево (в районе 200-300 рублей) с бесплатной доставкой. Причем можно найти как самые простые варианты, так и официальные или “почти оригинальные” платы на базе оригинального микроконтроллера. Еще одна группа товаров – необычные платы со встроенными WiFi (на базе ESP8266 или ESP32), дополнительными разъемами для более удобного подключения периферии. Вот некоторые варианты, которые можно купить у проверенных поставщиков на Алиэкспрессе:

Arduino UNO R3 (CH340G) MEGA328P. Типичный представитель плат Ардуино на Aliexpress с ценой ниже 250 рублей Качественная плата Arduino UNO R3 на CH340G. Комплект без кабеля с минимальной ценой около 220 рублей Arduino оптом – 10 плат контроллера UNO R3 с MEGA328P ATMEGA16U2 на борту
Официальный Arduino UNO R3 MEGA328P на базе ATMEGA16U2 – максимальное качество Плата MegaPower Uno на базе оригинальных ATmega328 R3, FTDI FT232RL Оригинальный Arduino UNO R3 (плата на базе оригинальных микросхем MEGA и ATMEGA16U2) с USB кабелем в картонной коробке
Два в одном! Arduino UNO со встроенным Sensor Shield (Atmega328P Atmega16U2 плюс Sensor I/O Shield) Arduino Uno и WiFi под одной крышей: R3 ATmega328P+ESP8266 (32Mb memory) Отличный вариант от KeyeStudio – UNO R3 MEGA328P ATMEGA16U2 с совмещенным Sensor Shield

Отличие от других плат

Сегодня на рынке можно встретить множество вариантов плат ардуино. Самыми популярными конкурентами Уно являются платы Nano и Mega. Первая пойдет для проектов, в которых важен размер. Вторая – для проектов, где у схема довольно сложна и требуется множество выходов.

Отличия Arduino Uno от Arduino Nano

Современные платы Arduino Uno и версии R3 имеют, как правило, на борту общий микроконтроллер: ATmega328. Ключевым отличием является размер платы и тип контактных площадок. Габариты Arduino Uno: 6,8 см x 5,3 см. Габариты Arduino Nano: 4,2 см x 1,85 см. В Arduino UNO используются коннекторы типа «мама», в Nano – «гребень» из ножек, причем у некоторых моделей контактные площадки вообще не припаяны. Естественно, больший размер UNO по сравнению с Nano в некоторых случаях является преимуществом, а в некоторых – недостатком. С платой большого размера гораздо удобнее производить монтаж, но она неудобна в реальных проектах, т.к. сильно увеличивает габариты конечного устройства.

На платах Arduino Uno традиционно используется разъем TYPE-B (широко применяется также для подключения принтеров и МФУ). В некоторых случаях можно встретить вариант с разъемом Micro USB. В платах Arduino Nano стандартом является Mini или Micro USB.

Естественно, различия есть и в разъеме питания. В плате Uno есть встроенный разъем DC, в Nano ему просто не нашлось места.

Кроме аппаратных, существуют еще небольшие отличия в процессе загрузки скетча в плату. Перед загрузкой следует убедиться, что вы выбрали верную плату в меню «Инструменты-Плата».

Отличия от Arduino Mega

В полном соответствии со своим названием является на сегодняшний день самым большим по размеру и количеству пинов контроллеров Arduino. По сравнению с ней в Uno гораздо меньше пинов и памяти. Вот список основных отличий:

  • Плата Mega использует иной микроконтроллер: ATMega 2560. Но тактовая частота его равна 16МГц, так же как и в Уно.
  • В плате Mega большее количество цифровых пинов – 54 вместо 14 у платы Uno. И аналоговых – 16 / 6.
  • У платы Mega больше контактов, поддерживающих аппаратные прерывания: 6 против 2. Больше Serial портов – 4 против 1.
  • По объему памяти Uno тоже существенно уступает Megа. Flash -память 32/256, SRAM – 2/8, EEPROM – 4/1.

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

Краткие выводы

Arduino Uno – отличный вариант платы для создания . 14 цифровых и 6 аналоговых пинов позволяют подключать разнообразные датчики, светодиоды, двигатели и другие внешние устройства. USB-разъем поможет подключиться к компьютеру без дополнительных внешних устройств. Встроенный стабилизатор позволяет использовать различные элементы питания с широким диапазоном напряжения, от 6-7 до 12-14 В. В Arduino Uno достаточно удобно реализована работа с популярными протоколами: UART, SPI, I2C. Есть даже встроенный светодиод, которым можно помигать в своем первом скетче. Чего еще желать начинающему ардуинщику?

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

Итак, вы приобрели Arduino Uno или любую другую совместимую плату, и нужно сделать следующий шаг - установить необходимое программное обеспечение.

Сначала небольшое отступление. Существует настоящая плата Arduino, сделанная в Италии. Но не стоит думать, что все остальные являются подделками. Разработчики Arduino выложили в открытый доступ все свои наработки и разрешили всем создавать свои платы по созданным схемам. Единственная просьба - не использовать само имя Arduino, поэтому можно встретить альтернативные названия, типа Freeduino, Genuino, Seeeduino, Adafruit 32UT, SparkFun Pro и прочее. Поэтому по поведению китайские платы ничем не отличаются от итальянской (хотя бывают небольшие различия).

Входить в мир Arduino можно двумя способами. Первый - вы не программист. В этом случае поначалу вы можете собирать схему по рисункам и запускать готовые примеры , которые идут в составе Arduino IDE или взятые из других источников. Если желание создавать свои проекты не исчезнет, то потихоньку можете разбираться в коде. Они совсем не сложные в учебных примерах, хотя и написаны на C++. Второй случай - вы программист, но не разбираетесь в электронике. Аналогично, по картинкам собираете схемы из различных приборов и запускаете программу. Понимая, что делает код, вы можете что-то поменять или усложнить, пробуя различные варианты. Позже вы набьёте руку и освоите необходимый объём для электронщика, чтобы рассчитать количество нужных радиодеталей, уберечь плату от короткого замыкания и прочие вещи.

Установка программы и драйверов за несколько лет упростилась. Microsoft решила подружиться с Arduino и в версиях Windows 8/10 плата опознаётся без проблем. В Windows 7 нужно немного поработать ручками (описание в нижней части страницы).

Кроме самой платы Uno (или любой другой), нам понадобится USB-кабель типа A-B (у других плат могут быть другие кабели). У меня он шёл в комплекте с набором. Это стандартный кабель, который обычно прилагается к принтерам и другим устройствам, его можно купить в компьютерных магазинах.

Далее нужно скачать среду разработки, в которой мы будем писать код. Последнюю версию Arduino IDE можно скачать с этой страницы . Вам необходимо выбрать ссылку, соответствующую вашей операционной системе (например, Windows) и скачать архив (около 180 Мб).

После того, как вы скачаете zip-файл, разархивируйте его в любой удобной папке (желательно, чтобы в названии вашей папки не встречались русские символы). При желании можно скачать готовый установщик в виде exe-файла.

После разархивации файла у вас появится отдельная папка Arduino с номером версии с множеством файлов и подпапок.

Если вы успешно преодолели данный шаг, то переходим к следующему этапу - запускаем программу Arduino (arduino.exe). У вас появится окно разработки под Arduino. Сама программа написана на Java и я видел обсуждения, что иногда программа требует установить файлы исполнения Java. У меня они были изначально, так как на этом языке пишу программы для Android.

Когда я устанавливал на Windows 8/10, то проблем с драйвером не возникло и всё установилось автоматически. При работе с некоторыми китайскими платами следует также установить драйвера, информацию о драйверах и установке ищите самостоятельно под свою плату.

Набираемся мужества и подключаем с помощью USB-кабеля плату с компьютером. На плате должна загореться зелёная светодиодная лампочка (помечена надписью ON ). Запускаем Arduino IDE и в меню Tools | Board выбираем свою плату. После этого выбираем порт Tools | Port . Обычно это COM3, COM4.

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

01.Basics: BareMinimum

Приступать к настоящей работе с платой страшновато, вдруг что-то сгорит. Поэтому пока отложим его в сторону от греха подальше и запустим Arduino IDE. Разработчики платы подготовили серию простых примеров, которые следует изучить, чтобы заложить фундамент для будущих проектов. Найти их можно в меню File | Examples . В разделе 01.Basics находятся самые простые примеры. А самый примитивный из них - скетч BareMinimum . Вам даже не понадобится плата.

На языке Arduino проекты с листингом называются скетчами (sketch) и имеют расширение INO .

Давайте изучим первый скетч: File | Examples | 01.Basics | BareMinimum . Откроется окно с следующим кодом:

Void setup() { // put your setup code here, to run once: } void loop() { // put your main code here, to run repeatedly: }

Вам сейчас необходимо запомнить, что в программе должны быть две обязательные функции: setup() и loop() . После названия функции и круглых скобок идут фигурные скобки, внутри которых будет располагаться ваш код. Говорят, что между фигурными скобками располагается блок кода для функции или тело функции.

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

Функция loop() в бесконечном цикле последовательно раз за разом исполняет команды, которые описаны в её теле. Иными словами после завершения функции снова произойдёт её вызов.

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

Запоминать код и записывать его в тетрадочку не нужно. Когда вы будете создавать собственный скетч через File | New , то появится точно такой же код. И вы можете создавать свои проекты и сохранять их.

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

Установка Android IDE под Windows 7

Для старых версий нужно установить драйвер самостоятельно. При первом подключении Windows самостоятельно попытается установить драйвер, хотя мы его и не просили. Самоуверенная Windows признается, что ей не удалось установить драйвер. Чтобы убедиться в этом, идём в Пуск→Панель управления→Система (а можно было просто нажать клавиши Win+Pause Break) и выбираем слева ссылку Диспетчер устройств . Там увидим, что напротив Arduino Uno стоит желтый предупреждающий значок.

Ничего страшного не произошло. Сейчас мы исправим ситуацию. Щёлкаем мышкой на данной записи и выбираем из контекстного меню пункт Обновить драйверы... . Далее выбираем опцию Выполнить поиск драйверов на этом компьютере , чтобы вручную указать местоположение драйверов. Сам драйвер ArduinoUNO.inf находится в подпапке Drivers той самой папки Arduino , о которой говорилось выше.

Теперь Windows сможет правильно установить драйвер и все будет тип-топ.

Данный документ разъясняет, как подключить плату 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!

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

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

Сборка сложнейших схем и соединение плат может осуществляться без паяльника, а с помощью перемычек с разъёмными соединениями «папа» и «мама». Так могут подключаться как навесные элементы, так и платы расширения, которые на лексиконе ардуинщиков зовут просто «Шилды» (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 разъём, и залить туда тот код, который вам хочется, без всяких ненужных Вам бутлоадеров.

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

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

Общего назначения (могут являться как входами, так и выходами), кварцевый генератор на 16 МГц, два разъема: силовой и USB, разъем ISCP для внутрисхемного программирования и кнопку горячей перезагрузки устройства. Для стабильной работы плату необходимо подключить к питанию либо через встроенный USB Разъем, либо подключив разъем питания к источнику от 7 до 12В. Через переходник питания плата также может работать и от батареи формата Крона.

Основное отличие платы от предыдущих – для взаимодействия по USB Arduino Uno использует отдельный микроконтроллер ATmega8U2. Прошлые версии Arduino использовали для этого микросхему программатора FTDI.

Несложно догадаться, что благодаря своему итальянскому происхождению, слова “Arduino” и “Uno” взяты именно из этого языка. Компания назвалась “Arduino” в честь короля Италии 11 века Ардуина, а Уно переводится с итальянского как “первый”.

Размеры и габариты платы

Печатная плата Arduino Uno является Open-Hardware, поэтому все ее характеристики доступны в открытом доступе.

Длина и ширина платы составляют 69 мм x 53 мм.

Силовой и USB разъемы выступают за границы печатной платы на 2 мм.

Расстояние между выводами соответствует стандарту 2.54 мм, однако расстояние между 7 и 8 контактами составляет 4 мм.

Разъемы питания

Плата Arduino Uno имеет на борту 3 способа подключения питания: через USB, через внешний разъем питания и через разъем Vin, выведенный на одну из гребенок сбоку. Платформа имеет на борту встроенный стабилизатор, позволяющий не только автоматически выбирать источник питания, но и выравнивать ток до стабильных 5 вольт, необходимых контроллеру для работы.

Внешнее питание можно подавать как напрямую от USB порта компьютера, так и от любого AC/DC блока питания через разъем питания или USB.

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

  • Vin – вход питания, используется для получения питания от внешнего источника. Через данных вывод происходит только подача питания на плату, получить оттуда питание для внешних устройств невозможно. На вход Vin рекомендуется подавать напряжение в диапазоне от 7В до 20В, во избежании перегрева и сгорания встроенного стабилизатора.
  • 5V – источник пятивольтового напряжения для питания внешних устройств. При получении питания платой из любых других источников (USB, разъем питания или Vin) на этом контакте вы всегда сможете получить стабильное напряжение 5 вольт. Его можно вывести на макетную плату или подать напрямую на необходимое устройство.
  • 3V3 – источник 3.3 вольтового напряжения для питания внешних устройств. Работает по такому-же принципу, что и контакт 5V. С данной ножки также можно вывести напряжение на макетную плату, либо подать на необходимый датчик/сенсор напрямую.
  • GND – контакт для подключения земли. Необходим для создания замкнутой цепи при подключении к контактам Vin, 5V или 3V3. Во всех случаях ножку GND необходимо выводить как минус, иначе цепь не будет замкнута и питание (что внешнее, что внутреннее) не подасться.

Характеристики памяти

Платформа Arduino Uno имеет на борту микроконтроллер ATmega328, который обладает Flash, SRAM и EEPROM памятью.

  • FLASH – 32kB, из которых 0.5kB используется для хранения загрузчика
  • SRAM (ОЗУ) – 2kB
  • EEPROM – 1kB (доступна с помощью библиотеки EEPROM)

Контакты ввода-вывода и интерфейсы

Так как Arduino Uno обладает пятивольтовой логикой, то и значение будет находиться в диапазоне от 0 до 5 вольт, однако при помощи функции можно изменять верхний предел.

Последовательный UART интерфейс: контакты 0 (RX) и 1 (TX)

Данные выводы используются для обмена данными по . Контакт RX используется для получения данных, а контакт TX – для их отправки. Эти выводы подключены к соответствующим контактам последовательной шины схемы ATmega8U2 USB-to-TTL, выступающей в данном контексте в роли программатора.

Внешнее прерывание: контакты 2 и 3

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

Вызов прерывания может быть задан по-разному:

  • на младшем значении
  • на переднем или заднем фронте
  • при изменении значения

ШИМ: контакты 3, 5, 6, 9, 10, и 11

SPI интерфейс: контакты 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK)

I2C интерфейс: контакты 4 (SDA) и 5 (SCL)

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

Встроенный светодиод: контакт 13

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

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

Дополнительные контакты: AREF и RESET

Помимо всех вышеперечисленных, на платформе Uno имеется еще 2 дополнительных контакта.

Данный контакт отвечает за определение опорного напряжения аналоговых входов платформы. Используется только с функцией .

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

Данный контакт обычно соединен с аппаратной кнопкой перезагрузки, установленной на плате.

Связь с внешним миром

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

На контактах 0 (RX) и 1 (TX) контроллер ATmega328 поддерживает UART – последовательный интерфейс передачи данных. ATmega8U2, выполняющий на плате роль программатора, транслирует этот интерфейс через USB, позволяя платформе общаться с компьютером через стандартный COM-порт. Прошивка, установленная в контроллер ATmega8U2, имеет на борту стандартные драйверы USB-COM, поэтому для подключения не потребуется никаких дополнительных драйверов.

При помощи мониторинга последовательной шины, называемого , среда Arduino IDE посылает и получает данные от Arduino. При обмене данными на плате видно мигание светодиодов RX и TX. При использовании UART-интерфейса через контакты 0 и 1, светодиоды не мигают.

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

Также, на плате предусмотрены выводы основных интерфейсов взаимодействия с периферией: SPI и I2C (TWI).

Среда программирования Arduino IDE

Платформа Arduino Uno, как и все другие Arduino-совместимые платформы, программируется в среде Для работы с ней в настройках программы необходимо выбрать нужную платформу. Это можно сделать в верхнем меню -> Tools -> Boards -> Arduino UNO.

Выбор микроконтроллера зависит от того, какой стоит именно на вашей плате. Обычно это ATmega328.

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

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

Обычно, в микроконтроллерах перед загрузкой кода предусмотрен вход платы в специальный режим загрузки, однако Arduino Uno избавлена от данного действия для упрощения загрузки в нее программ. Стандартно, перед загрузкой каждый микроконтроллер получает сигнал DTR (digital reset), но в данной плате вывод DTR подключен к микроконтроллеру ATmega8U2 через 100 нФ конденсатор и программатор сам управляет процессом загрузки новой прошивки в контроллер. Таким образом, загрузка прошивки происходит моментально после нажания кнопки Upload в среде Arduino IDE.

Эта функция имеет еще одно интересное применение. Каждый раз при подключении платформы к компьютеру с OC Windows, MacOS или Linux, происходит автоматическая перезагрузка платы и в следующие полсекунды на плате работает загрузчик. Таким образом, для избежания получения некорректных данных, во время загрузки прошивок происходит задержка первых нескольких байтов информации.

Arduino Uno поддерживает отключение автоматической перезагрузки. Для этого необходимо разорвать линию RESET-EN. Еще один способ отключения автоматической перезагрузки – подключение между линиями RESET-EN и линией питания 5V резистора номиналом 110 Ом.

Защита USB разъема от перенапряжения

Для защиты USB порта компьютера от обратных токов, короткого замыкания и сверхнагрузки, на платформе Arduino Uno встроен автоматический самовостанавливающийся предохранитель. При прохождении тока питания более 500 мА через USB порт, предохранитель автоматически срабатывает и размыкает цепь питания до тех пор, пока значения тока не вернуться к нормальным.