Ардуино техника что это
Знакомство с Arduino
Введение
Торжественно открываю новый блог на Хабре, посвящённый Arduino! Блог об универсальном opensource-микроконтроллере Arduino, который будет интересен всем любителям микроэлектроники, самодельных гаджетов и всем, кто не боится взять в руки паяльник.
Arduino представляет собой линейку электронных блоков-плат, которые можно подключать к компьютеру по USB, а в качестве периферии — любые устройства от светодиодов до механизмов радиуоправляемых моделей и роботов. Программы для него пишутся на простом и интуитивно понятном си-подобном языке Wiring (c возможностью подключения сторонних библиотек на C/C++, например, для управления LCD-дисплеями или двигателями), компилируются и загружаются в устройство одной кнопкой, после чего вы тут же получаете работающий автономный гаджет. Никакого ассемблера, никаких лишних проводов и дорогущих деталей и программаторов — чистое творчество, включай и работай!
Применение
После короткого рассказа друзьям и знакомым про Arduino («это типа электронного конструктора, микро-ЭВМ, в который можно загрузить любую программу и получить любое другое устройство») самый часто задаваемый вопрос «А зачем это всё?» или «Какая мне от этого выгода?» Скучные люди, не правда ли? Неужели среди ваших знакомых нет ни одного радиолюбителя, а может вы и сами радиолюбитель?
Применение Arduino очень простое — не забавы ради, а развития мозга для. Интересно же линуксоидам ковыряться в коде ядра? Какая от этого польза? Почему бы вам не заняться «железным» (в противовес «софтовому») творчеством? Вот прямо сейчас рядом со мной сидит коллега-дизайнер и разбирается… с нейронными сетями. В общем что говорить, забыт дух технического творчества, забыты радиокружки и авиамодельные клубы. Все только сидят у своих компьютеров и сделать ничего путного в железе, кроме как воткнуть вилку в розетку, не могут 🙂 Соберите свой веб-сервер, цветомузыкальную установку или прикольного робота!
Сообщество любителей Arduino уже знает об успешных примерах: GPS-трекер с записью на SD-карту, простой аудиоплеер, Twitter-дисплей, электронные игры с дисплеем и тачскрином… Попробуйте купить радиодеталей и сделать что-то своё! Есть даже готовый набор для создания четырёхъядерного Arduino-кластера.
Технические характеристики
Arduino Diecimila представляет собой небольшую электронную плату (далее просто плата) ядром которой является микроконтроллер ATmega168. На плате есть: 14 цифровых входов/выходов, 6 из которых могут работать в режиме ШИМ (PWM) (а следовательно управлять аналоговыми устройствами вроде двигателей и передавать двоичные данные), 6 аналоговых входов (исходной информацией служат не логические 0/1, а значение напряжения), тактовый генератор на 16 МГц, разъёмы питания и USB, ICSP-порт (что-то вроде последовательного интерфейса для цифровых устройств), несколько контрольных светодиодов и кнопка сброса.
Этого вполне достаточно, чтобы подключить плату к USB-порту компьютера, установить нужный софт и начать программировать.
Питание
Питание платы осуществляется двумя способами: по кабелю USB (при этом никаких других ухищрений делать не нужно, используется в процессе отладки), либо по специальному разъёму вроде того, что у ноутбуков. В радиомагазине можно купить такой разъём и присоединить к нему аккумулятор или 9-тивольтовую батарейку типа «Крона». Источники питания можно менять перемычкой на плате.
Преимущества и недостатки
О платформе
Что же такое Arduino? Формально это – торговая марка, под которой выпускаются официальные платы и софт. Название Ардуино идёт от одноименного названия рюмочной в Италии, где создатели платформы любили пропустить по рюмочке. Предлагаемая Arduino платформа включает в себя железо (сами платы) и софт (среда разработки).
Семейство Ардуино – несколько моделей так называемых отладочных плат. Отладочная плата представляет собой как ни странно печатную плату, в сердце которой стоит микроконтроллер – та самая штука, которую мы будем программировать. Микроконтроллер это микросхема, содержащая в себе микропроцессор, интерфейсы ввода-вывода, память (оперативную и постоянную), таймеры и другие штуки. Да, микропроцессор – это другое, микропроцессор по сути может только выполнять вычисления (как процессор в компьютере), а микроконтроллер – это практически полноценный компьютер, размещенный в одном кристалле микросхемы. В большинстве плат Arduino используются микроконтроллеры серии ATmega от производителя AVR.
Железо
Помимо микроконтроллера на отладочной плате стоит обвязка, необходимая для его работы: это кварцевый генератор, задающий частоту работы процессора, и “рассыпуха” – конденсаторы и резисторы, выполняющие фильтрующие и подтягивающие функции.
Давайте так: что нужно сделать для того, чтобы собрать устройство на микроконтроллере? Нужно подключить к выходам микроконтроллера необходимые устройства (далее – “железо”), загрузить на микроконтроллер прошивку, которая будет управлять этим железом, и обеспечить всё это дело стабильным питанием. Цель разработчиков ардуино была совместить вышеуказанное с простотой и удобством работы и модульностью, тем самым превратив разработку электронных устройств в мощный универсальный конструктор. Эта цель была достигнута так: на плате, вместе с микроконтроллером, разместили “программатор” для загрузки прошивки, usb порт и стабилизатор питания, позволяющий питать плату от широкого диапазона постоянных напряжений: 5-19 вольт. Микроконтроллеру нужно 5 вольт, что стабилизатор ему и обеспечивает.
Загрузка прошивки
Что касается так называемого программатора: изначально способом загрузки прошивки в микроконтроллер является загрузка посредством ISP (in-system programming) программатора, который загружает прошивку напрямую в память микроконтроллера. Это способ хорош и надёжен, но он дороже и не такой универсальный как тот, который используется в Ардуино. Работает это так: вместо ISP программатора на плате стоит USB-TTL преобразователь, который позволяет Ардуино (на её стороне TTL – транзистор-транзистор логика) буквально общаться с компьютером (на его стороне – USB) и обмениваться данными. Но просто общаясь с компьютером загрузить прошивку не получится, поэтому в памяти микроконтроллера “живёт” загрузчик (он же bootloader), который умеет ловить данные, идущие с компьютера и загружать их во Flash память микроконтроллера. При каждом запуске микроконтроллера загрузчик ждёт команду от компьютера, мол желает ли тот загрузить новую прошивку. Если никто ему не отвечает какое-то время, он запускает уже имеющуюся в памяти МК прошивку. Отсюда вытекает несколько минусов:
Оба этих минуса решаются частично или полностью:
Возвращаясь к USB-TTL преобразователю: почему именно такой способ загрузки прошивки выбрали разработчики Arduino? Да всё очень просто: микросхема USB-TTL преобразователя стоит дешевле микросхем, могущих в ISP (роль оных обычно выполняют микроконтроллеры), что прилично удешевляет платформу. Но самое главное – использование USB-TTL преобразователя добавляет нам возможность общаться с платой при помощи компьютера (смартфона, планшета) без использования дополнительного железа, т.е. мы можем как управлять какими-то устройствами (если это заложено в коде прошивки), так и получать от Ардуино данные, например показания с датчиков. Но самое-самое главное – это позволяет отлаживать код, вручную, но все таки отлаживать.
Что касается программной части, предоставленной Arduino, то это Arduino IDE (Integrated Development Environment – интегрированная среда разработки), включающая в себя редактор кода, компилятор и всё остальное необходимое для загрузки прошивки в плату. Подробнее о ней поговорим в отдельном уроке
Модели Ардуино
Вот мы и добрались до самих плат Ардуино, которых на данный момент появилось великое множество благодаря открытости платформы: все схемы и исходные коды находятся в открытом доступе, и вы можете сделать свою версию платы и продавать её, чем активно занимаются китайцы. Единственный пункт: слово Arduino – зарегистрированная торговая марка, и свою плату вам придется назвать как-то по-другому, отсюда и появились всякие Искры, Бузины и прочие так называемые Arduino совместимые платы.
Разновидностей плат очень много, но используют они одни и те же модели микроконтроллеров. От модели микроконтроллера зависит объем памяти и количество ног, ну и есть некоторые специальные фишки. На большинстве моделей Arduino стоят 8-битные МК от AVR с кварцевым генератором на 16 МГц (либо ниже), то есть по производительности платы на ATmega не отличаются, отличаются только объемом памяти, количеством ног и интерфейсов/таймеров. Модели Ардуино с МК от производителя ARM, например Arduino DUE, в разы мощнее своих собратьев за счёт 32-битного процессора, но это совсем другая история.
Параметр | ATtiny85 | ATmega328 | ATmega32u4 | ATmega2560 |
Кол-во ног | 8 | 32 | 44 | 100 |
Из них доступны | 5 | 23 | 24 | 86 |
Flash память | 8 Kb | 32 Kb | 32 Kb | 256 Kb |
EEPROM память | 512 bytes | 1 Kb | 1 Kb | 4 Kb |
SRAM память | 512 bytes | 2 Kb | 2.5 kB | 8 Kb |
Каналов АЦП | 3 (4 с rst) | 6 (8 в SMD корпусе) | 12 | 16 |
Каналов PWM | 3 | 6 | 7 | 15 |
Таймеры | 2х 8bit | 2х 8bit | 2х 8bit | 2х 8bit |
1х 16bit | 2х 16bit | 4х 16bit | ||
Аппаратный Serial | Нет | х1 | х1 | х4 |
Внешние прерывания | 1 (+6 PCINT) | 2 (+23 PCINT) | 5 (+44 PCINT) | 8 (+32 PCINT) |
Платы на его основе | Digispark, LilyTiny | Uno, Nano, Pro Mini, Lilypad, Strong | Leonardo, Micro, Pro Micro, BS Micro | Mega, Mega Pro |
Таким образом вы должны сразу понять, что, например, Ардуино Уно=Нано=Про Мини=Лилипад по своим возможностям и взаимозаменяемости. Или Леонардо=Про Микро. Ссылки на недорогие китайские Ардуины вы можете найти у меня на сайте. Точно там же вы найдёте ссылки на кучу датчиков, модулей и другого железа, которое можно подключить к Arduino. О возможностях ардуино по работе с другими железками поговорим в одном из следующих уроках.
Программирование
Ардуино программируется на языке программирования C/C++ с соответствующим ему синтаксисом. Встроенный сборщик, препроцессор и компилятор (avr-gcc или Win-AVR) прощают большое количество ошибок и делает многое за пользователя автоматически, мы даже об этом не знаем и не задумываемся. Базовые функции для управления выводами и интерфейсами микроконтроллера, математика и некоторые другие функции/макросы взяты из открытого фреймворка для работы с микроконтроллерами под названием Wiring. Именно из него состоит базовый набор инструментов Ардуино. В связи с этим сами разработчики Ардуино называют язык “упрощённым c++”, и даже дали ему отдельное название – Arduino Wiring.
Тут следует отделить мух от котлет: “из коробки” в Arduino IDE нам доступна огромная куча различных функций и инструментов:
Если вы научитесь свободно прогать на Ардуино и вдруг перейдете к разработке программ на том же C++ в более взрослых средах разработки, вы будете неприятно удивлены большим количеством дополнительного кода, который придется писать руками. И наоборот, если умеющий в плюсы (си-плюс-плюсы) человек посмотрит на типичный ардуино-код, он скажет “да как это вообще работает то?”. Компилятор в Arduino IDE настроен на максимальную всеядность и прощение ошибок, потому что это обучающая платформа.
Сейчас вернёмся к такому понятию, как библиотека. Жизнь рядового ардуинщика неразрывно связана с библиотеками, потому что огромное комьюнити за годы своего существования сделало огромное количество этих самых библиотек на все случаи жизни и для всех продающихся датчиков и модулей. Библиотека это набор файлов, в которых содержится дополнительный код, которым мы можем пользоваться просто ознакомившись с документацией или посмотрев примеры. Такой подход называется “черным ящиком”, мы можем даже не догадываться, какой ужас и кошмар (в плане сложности кода) содержится в библиотеке, но с лёгкостью пользоваться возможностями, который этот код даёт. Купили модуль – нашли библиотеку – открыли пример – всё, результат достигнут…
Писать без библиотек?
Очень многие считают, что эффективный код нужно писать без библиотек, чистым полотном. Это полнейшая чушь, потому что:
Возможности
Зачем учиться работать с ардуино и электроникой в целом?
Хейтеры платформы
В мире серьезных программистов и разработчиков очень не любят Ардуино. Почему? Рассмотрим несколько популярных негативных комментариев о платформе.
Что ещё хочется сказать по поводу негатива от “профессионалов” – в большинстве случаев они просто завидуют: в “их время” для создания даже простенького проекта на базе микроконтроллера нужно было потратить огромное количество времени на изучение документации на английском языке на конкретную модель МК, на все остальные железки и микросхемы в проекте, научиться работать в недружелюбной среде разработки, развести и спаять плату, купить дорогой программатор и прочее прочее. А в наше время можно купить плату за 150р, воткнуть её в USB, запустить программу уровня “блокнот с кнопкой Загрузить” и начать кодить с использованием огромного количества готовых библиотек и примеров для практически любых железок на рынке, а на любой вопрос найти ответ в гугле. Реально, у ребят просто пригорает =)
Видео версия
Что такое Arduino?
Содержание
Содержание
На сегодняшний день про платформу Arduino слышали многие, но что это и зачем? Arduino — это самая динамично развивающаяся и доступная платформа с низким порогом вхождения, которая доступна как для начинающих и делающих первые шаги в программировании, так и для профессионалов. А как она работает и почему так популярна — разбираемся.
Возможности
Платформа Arduino представляет собой комбинацию среды быстрой разработки Arduino IDE и модулей для прототипирования на базе микроконтроллеров. Фактически, Arduino это — простейший электронный конструктор для создания готовых устройств из отдельных модулей. Arduino пользуется огромной популярностью во всем мире из-за контроллеров, модулей и шилдов.
Arduino — это не просто универсальный микроконтроллер, который можно адаптировать под любой проект за минимальное время. Это простейшая и доступная для изучения среда разработки Arduino IDE, которая служит для вовлечения в программирование и робототехнику, а также для быстрой разработки проектов. На основе Arduino можно собрать 3D-принтер или станок с ЧПУ. Все это происходит благодаря тому, что у платформы Arduino одно из самых больших сообществ, а также доступно огромное количество примеров, руководств и готовых библиотек для разработки.
Модули Arduino
Модули базовых контроллеров Arduino получили широкое распространение благодаря своей универсальности. Популярные платы Arduino Uno и Leonardo имеют достаточный набор периферии, а платы Mega и Due — расширенный. Даже компактные модули типа Pro, Micro и Nano подойдут для собственного проекта. В последнее время появились модули Mega сразу с установленным SoC ESP8266 и беспроводной связью Wi-Fi на борту.
Модули Arduino представляют собой платы со встроенным процессором, памятью и периферией, которая позволяет реализовать базовый функционал посредством одной всего платы. Для расширения возможностей служат дополнительные модули-шилды, которые работают с двигателями и сенсорами различных типов, а также способны читать и писать на карты памяти и накопители, поддерживают USB Host, умеют работать с Ethernet, Bluetooth и Wi-Fi. Модули расширения уровня Industrial имеют гальваническую развязку, а модули для умного дома подойдут с целью прототипирования устройств IoT ( «интернета вещей»). Вы даже можете сделать свой собственный web-сервер на основе Arduino.
На сегодняшний день существует множество оригинальных разновидностей и популярных клонов, а также огромное количество совместимых модулей-шилдов. Обратите внимание на приведенную Arduino Nano — это компактный модуль с 8-битным контроллером, на борту которого размещается приличный набор периферии (аналого-цифровые преобразователи, ШИМ-генераторы и таймеры, последовательные интерфейсы и так далее).
Для прототипирования и обучения доступен огромный арсенал периферии. Это разнообразные сенсоры, большинство типов датчиков и исполнительных механизмов, различные дисплеи, буферные и усилительные модули, драйверы двигателей, модули для беспроводной связи и управления. Модули комбинируются с основной платой-контроллером и затем конфигурируются в среде Arduino IDE.
Для создания проектов не требуется специальных навыков, так как для создания скетчей-программ (прошивок) для микроконтроллеров Arduino, а также для подключения, загрузки кода и мониторинга обмена данными служит специальная программная оболочка Arduino IDE, которая постоянно обновляется сообществом. На сегодняшний день Arduino IDE имеет качественные дополнения и расширения, в том числе позволяющие программировать 32-битные микроконтроллеры. Для работы с платами Arduino не требуется специальный загрузчик-отладчик или программатор, вся основная работа осуществляется средствами платформы Arduino.
Робототехнические наборы электронного конструктора Arduino дают начальные представления о принципах работы и управления, обратной связи и об обработке сигналов с сенсоров — это идеальный вариант для первых шагов в робототехнике и обучению программированию простейших алгоритмов.
Базовый механизм можно создать, имея всего две серво-машинки и два аналоговых источника сигнала для управления. Для прототипа даже не понадобятся паяльные принадлежности — весь проект собирается на монтажных беспаечных платах Arduino.
Таким образом, Arduino может стать доступной платформой для первых шагов с целью изучения программирования: для детей и взрослых существует множество интересных наборов модулей и базовых проектов.
Что может быть лучше и интереснее, чем собрать за вечер управляемого робота или автомобиль? Одновременно, возможности среды Arduino позволяют профессионалам разрабатывать прикладные проекты для промышленной автоматики и для умного дома. Arduino — это открытая платформа, и вы тоже можете стать разработчиков, создать собственный проект и присоединиться к сообществу Arduino.
Arduino
Arduino — это комбинация аппаратной и программной частей для простой разработки электроники. Аппаратная часть включает в себя большое количество видов плат Arduino со встроенными программируемыми микроконтроллерами, а так же дополнительные модули. Программная часть состоит из среды разработки (программы для написания скетчей и прошивки микроконтроллеров Ардуино), упрощенного языка программирования, огромного множества готовых функций и библиотек.
Ардуино создавалось преподавателями для большего вовлечения студентов в электротехнику. Идея имела огромный успех и Arduino пошло гораздо дальше. Благодаря открытой архитектуре производить данные микроконтроллеры, дополнять модельный ряд, писать программы может кто угодно. Все схемы и исходный код программ есть в открытом доступе.
После того, как Arduino получило более широкое распространение, многие производители электроники начали выпускать собственные платы на базе микроконтроллеров ардуино. Когда к производству подключились китайские производители, Ардуино стало гораздо доступнее и получило еще большую аудиторию. Платы микроконтроллеров Ардуино в китайских интернет магазинах стоят от 70 рублей.
Официальный сайт Ардуино
Изначально команда преподавателей, разработавших ардуино, открыли сайт arduino.cc. Но из-за разногласий, в коллективе произошел раскол в 2008 году. Отделившаяся часть создала другой сайт arduino.org. Это повлекло путаницу, из-за одинаковых названий для разных Ардуинок, программ и прошивок.
Только в 2017 году конфликт разрешился полностью. Так остался только один официальный сайт arduino.cc.
Официальный сайт Arduino на русском
Arduino — полностью открытая платформа. Разработчиком и производителем может стать абсолютно любой человек. А значит официальных сайтов существует не мало.
Для чего нужно Arduino
Ардуино создавалось для обучения студентов и школьников электротехнике, программированию, радиоэлектронике, системам автоматизации. С помощью микроконтроллеров можно делать не только учебные проекты, но и действительно полезные устройства. На Arduino создаются проекты автоматизации, устройства умного дома, портативные метеостанции, роботизированные манипуляторы и множество других полезных устройств.
Первоначальная цель Ардуино — это обучение. Детям гораздо интереснее учиться, если они могут сразу применять новые знания на практике, да еще и увидеть и потрогать плоды своих трудов. Гораздо интереснее обучаться экспериментируя, а не слушая сухую теорию.
Что умеет Ардуино
С технической точки зрения, Ардуино умеет принимать и отправлять сигналы в соответствии с инструкциями в прошивке. Звучит весьма скромно, но на практике это позволяет получать и обрабатывать информацию с сенсоров и передавать команды исполнительным механизмам или другим устройствам. Например: микроконтроллер может получать данные с датчиков температуры, давления, влажности и выводить сводную информацию на дисплей.
Этих возможностей хватает для реализации сложных устройств, таких как беспилотные летательные аппараты, 3D-принтеры, роботизированные манипуляторы, радиоуправляемые машинки, лодки, вездеходы и т. д. Возможности Ардуино ограничены только воображением. Если вам будет не хватать возможностей Ардуино, то существуют более мощные микроконтроллеры такие как Ардуино Мега, NodeMCU, STM32, Wemos, Raspberry Pi, Orange Pi.
Начало работы с Ардуино
Для того, что бы начать использовать Arduino необходимо приобрести плату Arduino или стартовый набор Arduino. Я советую выбрать стартовый комплект ардуино, так как он включает в себя не только микроконтроллер ардуино, но и беспаечную макетную плату, соединительные провода, кнопки, светодиоды и дополнительные детали. С таким набором вы сможет выполнить примеры из уроков по Arduino для начинающих. Это позволит вам быстро разобраться с принципами работы с Arduino.
После прохождения уроков вы будите знать как программировать Arduino, как обмениваться сигналами с другими модулями и устройствами. Вы сможете проектировать, а так же создавать ваши собственные устройства.
Arduino IDE
Для начала работы с Ардуино вам понадобится специальное программное обеспечение. Это среда для разработки прошивок Arduino IDE. В этой программе легко и удобно писать скетчи и загружать их на ваш микроконтроллер Ардуино. В среде разработки уже предустановленно большое количество примеров и дополнительных библиотек.
Ссылки на скачивание, инструкции по установке и настройке среды разработки есть на странице Arduino IDE.
Микроконтроллеры, модули и сенсоры
Микроконтроллеров Arduino существует несколько вариантов. Большинство плат ардуино мы собрали на этой странице. Там есть вся необходимая информация о конкретных моделях плат Arduino. Еще вы найдете требования к питанию, характеристики, назначения контактов конкретной платы ардуино. Самая распространенная ардуино — микроконтроллер Arduino Uno.
Arduino Uno
Подробное описание характеристик этого микроконтроллера вы сможете найти здесь. Эта плата прекрасно подходит для большинства задач, в том числе для обучения. Именно для этой платы создано большинство плат расширения (Shield). Они помогают с легкостью расширить функционал платы микроконтроллера ардуино. Характеристик самой Arduino Uno достаточно для большинства проектов. Для создания законченных устройств лучше подходят более маленькие представители семейства Ардуино. Это такие платы как Arduino Nano или Arduino Pro Mini.
Проекты Ардуино
Проектов на Ардуино огромное множество. Их можно разделить на категории:
Для Ардуино есть огромное количество инструкций и готовых скетчей. Вы легко сможете повторить любой проект, доработать его или адаптировать под свои нужны. Все необходимое есть в открытом доступе. С помощью Ардуино можно создать собственные аналоги устройств и сэкономить на этом. Системы умного дома стоят не малых денег, но с помощью ардуино вы легко сможете сделать такую же систему в разы дешевле.