Что можно сделать на Ардуино и зачем это нужно? Разбираемся с популярной и дружелюбной платформой, которая позволяет быстро создавать умные электронные устройства своими руками.
Arduino — это небольшая управляющая плата с собственным процессором и памятью. Помимо них на плате есть пара десятков контактов, к которым можно подключать всевозможные компоненты: светодиоды, датчики, моторы, чайники, роутеры, магнитные дверные замки и вообще всё, что работает от электричества.
В процессор Ардуино можно загрузить программу, которая будет управлять всеми этими устройствами по заданному алгоритму. Таким образом можно создать бесконечное количество уникальных классных гаджетов, сделанных своими руками и по собственной задумке.
Чтобы понять общую идею, взгляните на иллюстрацию. Она не отражает и миллионной доли всех возможностей, но всё же даёт первичное представление.
Простота и доступность
Платформа Arduino приобрела бешеную популярность благодаря простоте и дружелюбности. Даже полный ноль в программировании и схемотехнике может освоить основы работы с Ардуино за пару часов. Этому способствуют тысячи публикаций, учебников, заметок в интернете и отличная серия видеоуроков по Arduino на русском языке.
Программы для Ардуино пишутся на обычном C++, дополненным простыми и понятными функциями для управления вводом-выводом на контактах. Если вы уже знаете C++, Arduino станет дверью в новый мир, где программы не ограничены рамками компьютера, а взаимодействуют с окружающим миром и влияют на него. Если же вы новичок в программировании — не проблема, вы с лёгкостью научитесь, это просто.
Для удобной работы с платами Ардуино существует бесплатная официальная среда программирования Arduino IDE, работающая под Windows, Mac OS и Linux. С помощью неё загрузка новой программы в контроллер становится делом одного клика, только лишь подключите плату к компьютеру через USB. Хотя для более пытливых умов возможна работа и через Visual Studio, Eclipse, другие IDE или командную строку, а новичкам подойдёт визуальная среда программирования XOD IDE.
Вам не понадобится паяльник. Полноценные устройства можно собирать, используя специальную макетную доску, перемычки и провода абсолютно без пайки. Прототипирование ещё не было таким быстрым и простым, поэтому ардуинки быстро прижились в школах и кружках робототехники.
Железо (аппаратная часть)
Как собрать электронное устройство на базе МК? Нужно:
- Сделать печатную плату, ибо сам МК очень маленький и паять его неудобно.
- Обеспечить тактирование МК (те самые мегагерцы, как в обычном компьютере) – подключить тактовый генератор.
- Добавить необходимую обвязку: фильтры по питанию, кнопку перезагрузки, некоторые МК требуют подключения резисторов к определённым пинам, и так далее.
- Подключить остальные компоненты проекта: расположить их на плате или предусмотреть штекеры.
- Обеспечить стабильное питание схемы, возможно даже в широком диапазоне питающего напряжения.
- Некоторые МК нужно “настроить” при помощи программатора.
- Загрузить прошивку при помощи программатора.
Звучит сложно, именно поэтому ребята из Arduino решили объединить всё это на одной плате: уже настроенный микроконтроллер и всё необходимое для его работы, стабилизатор напряжения, и самое главное – программатор, он тоже расположен на плате и для загрузки прошивки достаточно просто подключить USB кабель! Ноги МК выведены на рейку с пинами (стандартный шаг 2.54 мм), что позволяет работать с платой на брэдборде (макетная плата) и быстро подключать к ней любые компоненты. Изначально сложную задачу упростили до электронного “конструктора”, именно поэтому Arduino стали настолько популярны.
Софт (программная часть)
Как запрограммировать МК? Нужно:
Уроки Ардуино #0 — что такое Arduino, куда подключаются датчики и как питать Ардуино
- Написать прошивку (при помощи любого текстового редактора).
- Скомпилировать прошивку (для AVR – при помощи бесплатного консольного компилятора avr-gcc).
- Загрузить прошивку в МК (для AVR – при помощи консольной утилиты avrdude).
Для этого у Arduino есть своя IDE (Integrated Development Environment) – интегрированная среда разработки Arduino IDE. Она представляет собой текстовый редактор, умеет компилировать и загружать код. А также менеджер библиотек и поддержку неофициальных плат. Таким образом весь процесс прошивки сводится к одному щелчку по кнопке загрузить: никаких настроек, никаких плясок с бубном, ничего лишнего. Подробнее об Arduino IDE мы поговорим в отдельном уроке.
Также к программной части можно отнести:
- “Язык” Arduino, который на самом деле является просто встроенной библиотекой. У всех Arduino-совместимых плат есть одинаковый набор функций, поэтому проект можно практически без изменений перенести с одной платы на другую.
- Библиотеки, которые в сотни раз упрощают работу с модулями и прочими железками. Для Arduino-среды существует около 5000 библиотек, которые охватывают все Arduino-модули и некоторые микросхемы. Также среди библиотек можно найти различные интересные алгоритмы обработки данных и прочие полезные штуки.
Простота и удобство разработки в совокупности с огромным множеством плат на разных МК и набором библиотек на все случаи жизни сделало Arduino самой простой и удобной платформой для изучения робототехники и создания прототипов электронных устройств.
Как собрать устройство
Работа с Arduino строится на основе нескольких важных процессов – сборка микроконтроллеров в единое устройство, а также программирование.
Чтобы собрать устройство своими руками, потребуется:
- Сделать печатную плату и обеспечить тактирование микроконтроллеров. Для этого подключается тактовый генератор.
- Добавить обвязку – фильтры питания, кнопки для перезагрузки, резисторы и так далее.
- Обеспечить оборудованию остальные компоненты. Их требуется разложить на плате или воспользоваться штекерами.
- Обеспечить системе стабильное питание.
- Запрограммировать устройство. Иногда для этого используется специальное устройство – программатор.
- Загрузить прошивку на оборудование через программатор.
Это инструкция может показаться сложной, но на самом деле она простая. Ардуино – это просто. Он предоставляет настроенный микроконтроллер и все, что необходимо для его работы. Сюда же входит стабилизатор напряжения и программатор. Настоящий подарок для чайников в электронике и технике!
Язык программирования
Обучение Arduino немыслимо без освоения определенного языка разработки. Начало погружения в рассматриваемый МК сложно представить без C++. Ардуино использует его упрощенную версию для полноценной работы.
При попытках программировать с Arduino IDE необходимо запомнить несколько базовых правил для чайников. Они точно такие же, как и при разработке на «обычном компьютере» на языках СИ-семейства:
- после каждой инструкции или функции ставится точка с запятой;
- тип данных нужно обязательно указывать перед объявлением функции;
- если функция ничего не возвращает, она должна быть определена как void;
- перед объявлением переменных тоже указывается тип используемых данных;
- комментарии в исходном коде допускаются – они начинаются с «//» или «/*»/.
Исходный код пишется на C++, после чего Ардуино загружает его через программатор на оборудование и заставляет работать.
Arduino для начинающих требует обязательного изучения всего нескольких функций. С их помощью уже можно программировать самое разное оборудование с нуля. Речь идет о setup() и loop().
3 Цифровые и аналоговые выводы
Не все выводы у Arduino одинаковые. Есть выводы цифровые, а есть аналоговые. Принципиальная разница между ними в том, что на цифровых выводах может быть только два значения: либо логическая «1» (TRUE, от 3 до 5 вольт), либо логический «0» (FALSE, от 0 до 1,5 вольт), а на аналоговых выводах диапазон от логической «1» до «0» поделён на множество мелких участков.
Зачем это нужно? Давайте рассмотрим такой наглядный пример. Если подключить к цифровому выводу Arduino светодиод и подать на вывод логическую «1», то светодиод загорится с максимальной яркостью; если подать «0» – светодиод погаснет. Никаких промежуточных вариантов нет. Если светодиод подключить к аналоговому выводу, то яркостью светодиода можно управлять плавно. На практике к аналоговым выводам чаще всего подключаются какие-либо аналоговые датчики.
4 Чем может управлять Arduino
В итоге такое количество «рук» у Arduino позволяет подключать к нему огромное количество различных периферийных устройств. Среди них, например:
- кнопки, герконы и джойстики,
- светодиоды и фотодиоды,
- микрофоны и динамики,
- электродвигатели и сервоприводы,
- ЖК дисплеи,
- считыватели радиометок (RFID и NFC),
- bluetooth, WiFi и Ethernet модули,
- считыватели SD карт,
- радиоприёмники и радиопередатчики,
- GPS и GSM модули…
А также десятки различных датчиков:
- освещённости,
- магнитного поля,
- ультразвуковые и лазерные дальномеры,
- гироскопы и акселерометры,
- датчики дыма и состава воздуха,
- датчики давления, температуры и влажности…
И ещё многое, многое другое
Всё это превращает Arduino в универсальное ядро системы, которое может быть сконфигурировано совершенно разнообразными способами. Хотите сделать радиоуправляемую кормушку для питомца? Пожалуйста! Хотите чтобы при начале дождя у вас на лоджии закрывалось окно? Пожалуйста! Хотите управлять яркостью освещения в комнате со смартфона? Запросто! Хотите получать уведомления на e-mail, если почва комнатных растений стала слишком сухой? И это можно!
На фотографии показана лишь крохотная часть периферийных устройств, которые можно подключить к Arduino. На самом деле их гораздо, гораздо больше.
Установка ПО
После выбора необходимой платы нужно установить бесплатную среду разработки Arduino IDE, которую можно найти на официальном сайте, а также, по необходимости, драйвер CH340.
Недавно открылась облачная платформа Arduino Create, которая покрывает большинство этапов разработки (от идеи до сборки). Вам не нужно ничего устанавливать на свой компьютер, всё необходимое платформа берёт на себя. В первую очередь — онлайн редактор кода.
В Arduino Create имеется доступ к обучающим материалам, проектам. Вы сможете общаться с профессионалами и помогать новичкам.
Среда разработки Arduino IDE
Особенности программирования на платформе Arduino
Термины
Программный код для Arduino принято называть скетчами (англ. sketches). У скетчей есть два основных метода: setup() и loop() . Первый метод автоматически вызывается после включения/сброса микроконтроллера. В нём происходит инициализация портов и различных модулей, систем. Метод loop() вызывается в бесконечном цикле на протяжении всей работы микроконтроллера.
Порты — неотъемлемая часть любого микроконтроллера. Через них происходит взаимодействие микроконтроллера с внешними устройствами. С программной стороны порты называются пинами. Любой пин может работать в режиме входа (для дальнейшего считывания напряжения с него) или в режиме выхода (для дальнейшей установки напряжения на нём).
Любой пин работает с двумя логическими состояниями: LOW и HIGH , что эквивалентно логическому нулю и единице соответственно. У некоторых портов есть встроенный АЦП, что позволяет считывать аналоговый сигнал со входа (например, значение переменного резистора). Также некоторые пины могут работать в режиме ШИМ (англ. PWM), что позволяет устанавливать аналоговое напряжение на выходе. Обычно функциональные возможности пина указываются на маркировке самой платы.
Основные функции
Для базовой работы с платой в библиотеке Arduino есть следующие функции:
- pinMode(PIN, type) — указывает назначение конкретного пина PIN (значение type INPUT — вход, OUTPUT — выход);
- digitalWrite(PIN, state) — устанавливает логическое состояние на выходе PIN ( state LOW — 0, HIGH — 1);
- digitalRead(PIN) — возвращает логическое состояние со входа PIN ( LOW — 0, HIGH — 1);
- analogWrite(PIN, state) — устанавливает аналоговое напряжение на выходе PIN ( state в пределах от 0 до 255);
- analogRead(PIN) — возвращает значение аналогового уровня сигнала со входа PIN (пределы зависят от разрядности встроенного АЦП. Обычно разрядность составляет 10 бит, следовательно, возвращаемое значение лежит в пределах от 0 до 1023);
- delay(ms) — приостанавливает исполнение скетча на заданное количество миллисекунд;
- millis() — возвращает количество миллисекунд после момента запуска микроконтроллера.
В остальном процесс программирования на Arduino такой же, как на стандартном C++.
Функция loop
Loop() – функция, которую программа реализовывает после setup. Если запрограммировать Arduino, то loop будет отвечать за зацикливание. Она выполняется снова и снова.
Пример – ATmega328. Он установлен на большинстве плат Arduino. Выполняет loop около 10 000 раз в секунду. За счет этого программистам предоставляются широкие возможности для создания софта.
Как запрограммировать микроконтроллер
Руководство пользователя по разработке и программированию МК указывает на то, что после сборки аппаратной части остается запрограммировать поведение оборудования. Краткая инструкция Ардуино для начинающих будет выглядеть в этом случае так:
- Написать прошивку. Делается это при помощи любого текстового редактора.
- Скомпилировать прошивку. Для AVR – через бесплатный консольный компилятор. Он называется avr-gcc.
- Загрузить прошивку в микроконтроллер. Для AVR используется консольная утилита avrdude.
Все эти задачи Arduino решает через встроенную IDE. Она включает в себя текстовый редактор, который умеет компилировать и загружать код. В IDE поддерживается менеджер библиотек и неофициальные платы. Весь процесс прошивки сведется к одному клику по кнопке «Загрузить». Никаких дополнительных настроек не нужно.
4 Чем может управлять Arduino
В итоге такое количество «рук» у Arduino позволяет подключать к нему огромное количество различных периферийных устройств. Среди них, например:
- кнопки, герконы и джойстики,
- светодиоды и фотодиоды,
- микрофоны и динамики,
- электродвигатели и сервоприводы,
- ЖК дисплеи,
- считыватели радиометок (RFID и NFC),
- bluetooth, WiFi и Ethernet модули,
- считыватели SD карт,
- радиоприёмники и радиопередатчики,
- GPS и GSM модули…
А также десятки различных датчиков:
- освещённости,
- магнитного поля,
- ультразвуковые и лазерные дальномеры,
- гироскопы и акселерометры,
- датчики дыма и состава воздуха,
- датчики давления, температуры и влажности…
И ещё многое, многое другое
Всё это превращает Arduino в универсальное ядро системы, которое может быть сконфигурировано совершенно разнообразными способами. Хотите сделать радиоуправляемую кормушку для питомца? Пожалуйста! Хотите чтобы при начале дождя у вас на лоджии закрывалось окно? Пожалуйста! Хотите управлять яркостью освещения в комнате со смартфона? Запросто! Хотите получать уведомления на e-mail, если почва комнатных растений стала слишком сухой? И это можно!
На фотографии показана лишь крохотная часть периферийных устройств, которые можно подключить к Arduino. На самом деле их гораздо, гораздо больше.
5 Общение с Arduino
Как же процессор узнаёт, что именно ему следует делать? Вы должны рассказать ему это. Написание сообщений для Arduino называется программирование. Существует язык для общения с микроконтроллером, упрощённый и адаптированный специально для Arduino. Освоить этот язык совсем не сложно при желании и определённой настойчивости, даже если вы никогда раньше не программировали.
И для упрощения этого процесса разработана специальная программная среда – Arduino IDE. В её состав включены десятки примеров хороших, работающих программ. Изучив их, вы очень быстро многое узнаете о языке общения с Arduino.
Arduino позволит вашим программам выйти из виртуального мира в мир реальный. Вы сможете увидеть, как написанные вами программы заставляют мигать светодиод или вращать вал двигателя, а затем делать и более сложные и полезные вещи. Arduino позволит вам узнать много нового и интересного и в электронике, и в программировании. В итоге это может послужить вам отличным хобби, увлекательным занятием с детьми, замечательным и полезным времяпровождением.
Вы можете заказать Arduino и множество разнообразных датчиков для него в китайском онлайн-магазине Али-Экспресс. Здесь цены ниже, но доставка занимает время от 3 недель до 1,5 месяцев. Можно заказать Arduino в магазине электроники Voltiq.ru. Здесь цены чуть выше, чем в китайских интернет-магазинах, но не придётся ждать целый месяц. Отличный магазин Амперка; кроме продажи, у них огромная база информации и обучение по разнообразным платформам, в т.ч. Ардуино. Ещё один хороший магазин электроники и робототехники – FastNVR.ru.
Ну и напоследок, посмотрите, какие разные и замечательные проекты можно воплотить с помощью Ардуино!