Уроки Arduino. О платформе | AlexGyver Technologies
О платформе
Что же такое Arduino? Формально это – торговая марка, под которой выпускаются официальные платы и софт. Название Ардуино идёт от одноименного названия рюмочной в Италии, где создатели платформы любили пропустить по рюмочке. Предлагаемая Arduino платформа включает в себя железо (сами платы) и софт (среда разработки).
Семейство Ардуино – несколько моделей так называемых отладочных плат. Отладочная плата представляет собой как ни странно печатную плату, в сердце которой стоит микроконтроллер – та самая штука, которую мы будем программировать. Микроконтроллер это микросхема, содержащая в себе микропроцессор, интерфейсы ввода-вывода, память (оперативную и постоянную), таймеры и другие штуки. Да, микропроцессор – это другое, микропроцессор по сути может только выполнять вычисления (как процессор в компьютере), а микроконтроллер – это практически полноценный компьютер, размещенный в одном кристалле микросхемы. В большинстве плат Arduino используются микроконтроллеры серии ATmega от производителя AVR.
Запомнили сразу важную мысль – Ардуино – не микроконтроллер, не процессор, Ардуино – платформа. Плата ардуино это отладочная плата с микроконтроллером.
Железо
Помимо микроконтроллера на отладочной плате стоит обвязка, необходимая для его работы: это кварцевый генератор, задающий частоту работы процессора, и “рассыпуха” – конденсаторы и резисторы, выполняющие фильтрующие и подтягивающие функции.
Arduino “на минималках”: кварц, конденсаторы и прочееДавайте так: что нужно сделать для того, чтобы собрать устройство на микроконтроллере? Нужно подключить к выходам микроконтроллера необходимые устройства (далее – “железо”), загрузить на микроконтроллер прошивку, которая будет управлять этим железом, и обеспечить всё это дело стабильным питанием. Цель разработчиков ардуино была совместить вышеуказанное с простотой и удобством работы и модульностью, тем самым превратив разработку электронных устройств в мощный универсальный конструктор. Эта цель была достигнута так: на плате, вместе с микроконтроллером, разместили “программатор” для загрузки прошивки, usb порт и стабилизатор питания, позволяющий питать плату от широкого диапазона постоянных напряжений: 5-19 вольт. Микроконтроллеру нужно 5 вольт, что стабилизатор ему и обеспечивает.
Загрузка прошивки
USBasp – ISP программатор для AVR (в том числе Arduino)
Что касается так называемого программатора: изначально способом загрузки прошивки в микроконтроллер является загрузка посредством ISP (in-system programming) программатора, который загружает прошивку напрямую в память микроконтроллера. Это способ хорош и надёжен, но он дороже и не такой универсальный как тот, который используется в Ардуино. Работает это так: вместо ISP программатора на плате стоит USB-TTL преобразователь
- Загрузчик сидит во Flash памяти и занимает место (около 6%, что довольно-таки много)
- При подаче питания на МК прошивка стартует не сразу, каждый раз загрузчик ждёт команду от компьютера в течение какого-то времени (пару секунд), прежде чем передать управление имеющейся в памяти программе.
Оба этих минуса решаются частично или полностью:
- Можно прошить неофициальный загрузчик, который занимает меньше места в памяти и быстрее стартует
- Можно загружать скетчи напрямую через ISP, в этом случае вообще не будет потери места и задержек при запуске, так как загрузчика вообще не будет в памяти
Возвращаясь к 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 |
I2C интерфейс | Нет | Да | Да | Да |
Прерывания | 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. Именно из него примерно на 80% состоит базовый набор инструментов (функций) Ардуино. В связи с этим сами разработчики Ардуино называют язык “упрощённым c++”, и даже дали ему отдельное название – Arduino Wiring.
Если вы научитесь свободно прогать на ардуино, и вдруг перейдете к разработке программ на том же C++ в более взрослых средах разработки, вы будете неприятно удивлены тем количеством дополнительного кода, который придется писать руками. И наоборот, если умеющий в плюсы (си-плюс-плюсы) человек посмотрит на типичный ардуино-код, он скажет “да как это вообще работает то?”. Действительно, как это работает? При компиляции кода создаётся отдельный файл, в котором содержится ваш код, дополненный необходимыми настройками и с некоторыми подключенными библиотеками. Во взрослом мире без ардуино-плюшек, если вы, например, хотите использовать вывод в порт, используете в коде работу со строками и математические операции – вам нужно вручную подключать соответствующие модули. Среда Arduino делает это автоматически, мы даже об этом не знаем. Также компиляция кода проходит в несколько этапов, что позволяет например использовать функцию до её объявления. Но об этом поговорим позже.
Сейчас вернёмся к такому понятию, как библиотека. Жизнь рядового ардуинщика неразрывно связана с библиотеками, потому что огромное комьюнити за годы своего существования сделало огромное количество этих самых библиотек на все случаи жизни и для всех продающихся датчиков и модулей. Библиотека это набор файлов, в которых содержится дополнительный код, которым мы можем пользоваться просто ознакомившись с документацией или посмотрев примеры. Такой подход называется “черным ящиком”, мы можем даже не догадываться, какой ужас и кошмар (в плане сложности кода) содержится в библиотеке, но с лёгкостью пользоваться возможностями, который этот код даёт. Купили модуль – нашли библиотеку – открыли пример – всё, результат достигнут…
Холивар
Личинка программиста
В мире серьезных программистов и разработчиков очень не любят ардуино. Почему?
В среде Ардуино работа с микроконтроллером упрощена настолько, что ардуинщику вообще ничего не нужно знать о его архитектуре и о том, как он вообще программируется и настраивается. Все сделано в виде готовых и понятных функций. Это всё конечно хорошо, но скрытый за ширмой дружелюбного “Ардуино Вайринга” код прошивки ужасает: за безобидными на первый взгляд функциями кроются полотна кода, который что-то проверят, перепроверяет, перенастраивает уже настроенное и делает многие другие на первый взгляд ненужные вещи. Зачем это? Упростить начинающему программисту работу, простить все его ошибки и заставить его код просто работать. Стандартные функции очень медленные и не раскрывают всех возможностей микроконтроллера, вы даже не представляете, сколько всего там можно настроить и покрутить.
Второй повод для ненависти, это качество кода. Из-за простых, но понятных стандартных примеров аудитория ардуинщиков выросла очень быстро и буквально завалила интернет своими проектами, завлекая тем самым в это хобби других новичков. 99% учебных примеров, примеров работы с библиотеками и модулями написаны простенько и ужасно не оптимально: int переменные для всего подряд, вездесущий delay, блокирующие циклы и прочее, помимо уже описанных ардуино-функций. Люди берут эти примеры как основу основ и так сами и продолжают дальше писать. Но эти люди стоят на пороге очень большой двери под названием робототехника. Перешагнув через этот порог, отбросив все кривые примеры и научившись грамотно выстраивать структуру кода, они попадают в мир безграничных возможностей для творчества и исследования, мир бесконечно интересных и разнообразных проектов на Arduino.
Видео версия
Важные страницы
- Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
- Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
- Полная документация по языку Ардуино, все встроенные функции и макро, все доступные типы данных
- Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
- Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
Проекты ардуино на Arduino Uno, Mega, Nano для начинающих
В этой статье вы найдете обзор инженерных проектов ардуино с кратким описанием каждого из них. Мы постарались не просто рассказать о проектах для начинающих, но и дать краткие комментарии с примерами и схемами реализации. Большинство проектов могут быть созданы с контроллерами Arduino Uno R3, Nano или Mega. Надеемся, что ваше знакомство с платформой продолжится, и вы сможете не только повторить уже существующие идеи, но и придумать свои решения, вдохновленные примерами.
Проекты Arduino для начинающих
Если посмотреть на все проекты ардуино, информация о которых доступна в интернете, то можно их разделить на несколько основных групп:
- Начальные учебные проекты, не претендующие на какое-то важное практическое использование, но помогающие разобраться в разных аспектах платформы.
- Мигающие светодиоды – маячок, мигалка, светофор и другие.
- Проекты с датчиками: от простейших аналоговых до цифровых, использующих разнообразные протоколы для обмена данными.
- Устройства регистрации и отображения информации.
- Машины и устройства с сервоприводами и шаговыми двигателями.
- Устройства с использованием различных беспроводных видов связи и GPS.
- Проекты для автоматизации жилья – умные дома на Arduino, а также отдельные элементы управления домашней инфраструктурой.
- Разнообразные автономные машины и роботы.
- Проекты для исследования природы и автоматизации сельского хозяйства
- Необычные и креативные – как правило, развлекательные проекты.
По каждой из этих групп можно найти множество самых разнообразных материалов в книгах и на сайтах. В этой статье мы начнем знакомство с описанием наиболее простых проектов, с которых рекомендуется стартовать начинающим.
Как создавать проект на ардуино
Проект Ардуино – это всегда сочетание электронной схемы, некоторых связанных друг с другом аппаратных и механических устройств, системы питания и программного обеспечения, управляющего всем этим хаосом. Поэтому приступая к работе, вы должны твердо понимать, что создавая устройство в одиночестве, вы должны будете стать и программистом, и электронщиком, и конструктором.
Если речь идет не об учебном проекте, то вы обязательно столкнетесь со следующими этапами реализации с такими вот задачами:
- Придумать что-то, что будет полезно и (или) интересно для окружающих. Даже самый простой проект несет какую-то пользу – как минимум, он помогает изучать новые технологии.
- Собрать схему, подключить модули друг к другу и к контроллеру.
- Написать скетч (программу) в специальной среде и загрузить ее в контроллер.
- Проверить, как все работает вместе, и исправить ошибки.
- После тестирования – готовиться к созданию готового устройства. Это означает, нужно собрать устройство в каком-то пригодном для эксплуатации корпусе, предусмотреть систему питания, связи с окружающей средой.
- Если вы собираетесь распространять созданные вами устройства, то придется также заняться дизайном, системой транспортировки, задуматься о безопасности использования необученными пользователями и обучением этих самых пользователей.
- Если ваше устройство работает, оно протестировано и обладает какими-то преимуществами перед другими решениями, то можно попытаться сделать из вашего инженерного уже бизнес-проект, попробовать привлечь инвестиции.
Каждый из этих этапов создания проекта достоин отдельной статьи. Но мы уделим главное внимание этапам сборки электронных схем (основы электроники) и программирования контроллера.
Электронные схемы
Электронные схемы обычно собираются с применением макетных плат, скрепляющих элементы друг с другом без пайки и скрутки. О том, как работают модули и схемы подключения можно узнать на нашем сайте. Обычно в описании проекта указаны способы монтажа деталей. Но для большинства популярных модулей есть уже десятки готовых схем и примеров в интернете.
Программирование
Создание и прошивка скетчей производится в специальной программе – среде программирования. Наиболее популярной версией такой среды является Arduino IDE. На нашем сайте вы сможете найти информацию о том, как скачать, установить и настроить эту программу.
Где купить все необходимое
Мы собрали ссылки Aliexpress на стартовые наборы Arduino Starter Kit, в которых есть все самое необходимое для создания своих первых проектов.
Простые проекты Ардуино
Давайте начнем наш обзор с традиционно самых простых, но очень важных проектов, включающих в себя минимальное количество элементов: светодиоды, резисторы и, конечно же, плату ардуино. Все примеры рассчитаны на использование Arduino Uno, но с минимальными изменениями будут работать на любой плате: от Nano и Mega до Pro, Leonardo и даже LilyPad.
Проект с мигающим светодиодом – маячок
Все без исключения учебники и пособия для начинающих по ардуино стартуют с примера мигания светодиодом. Этому есть две причины: такие проекты требуют минимального программирования и их можно запустить даже без сборки электронной схемы – уж что-что, а светодиод есть на любой плате ардуино. Поэтому и мы не станем исключением – давайте начнем с маячка.
Нам понадобится:
- Плата Ардуино Uno, Nano или Mega со встроенным светодиодом, подключенным к 13 пину.
- И все.
Что должно получиться в итоге:
Светодиод мигает – включается и выключается через равные промежутки времени (по умолчанию – 1 сек). Скорость включения и выключения можно настраивать.
Схема проекта
Схема проекта довольно проста: нам нужен только контроллер ардуино со встроенным светодиодом, подсоединенным к пину 13. Именно этим светодиодом мы и будем мигать. Подойдут любые популярные платы: Uno, Nano, Mega и другие.
Подсоединяем Arduino к компьютеру, убеждаемся, что плата ожила и замигала загрузочными огоньками. Во многих платах «мигающий» скетч уже записан в микроконтроллер, поэтому светодиод может начать мигать сразу после включения.
С помощью такого простого проекта маячка вы можете быстро проверить работоспособность платы: подключите ее к компьютеру, залейте скетч и по миганию светодиода сразу станет понятно – работает плата или нет.
Программирование в проекте Ардуино
Если в вашей плате нет загруженного скетча маячка – не беда. Можно легко загрузить уже готовый пример, доступный в среде программирования Ардуино.
Открываем программу Arduino IDE, убеждаемся, что выбран нужный порт.
Проверка порта Ардуино – выбираем порт с максимальным номеромЗатем открываем уже готовый скетч Blink – он находится в списке встроенных примеров. Откройте меню Файл, найдите подпункт с примерами, затем Basics и выберите файл Blink.
Открываем пример Blink в Ардуино IDEВ открытом окне отобразится исходный код программы (скетча), который вам нужно будет загрузить в контроллер. Для этого просто нажимаем на кнопку со стрелочкой.
Кнопки компиляции и загрузки скетчаИнформация в Arduino IDE – Загрузка завершенаЖдем немного (внизу можно отследить процесс загрузки) – и все. Плата опять подмигнет несколькими светодиодами, а затем один из светодиодов начнет свой размеренный цикл включений и выключений. Можно вас поздравить с первым загруженным проектом!
Проект маячка со светодиодом и макетной платой
В этом проекте мы создадим мигающий светодиод – подключим его с помощью проводов, резистора и макетной платы к ардуино. Сам скетч и логика работы останутся таким же – светодиод включается и выключается.
Графическое изображение схемы подключения доступно на следующем рисунке:
Другие идеи проектов со светодиодами:
- Мигалка (мигаем двумя свтодиодами разных цветов)
- Светофор
- Светомузыка
- Сонный маячок
- Маячок – сигнализация
- Азбука Морзе
Подробное описание схемы подключения и логики работы программы можно найти в отдельной статье, посвященной проектам со светодиодами.
Проекты Ардуино в Интернете
В интернете можно найти огромное количество примеров самых разных проектов с Arduino. Мы сделали небольшую подборку самых необычных проектов.
Сегодня без труда можно найти сотни проектов, созданных руками инженеров-энтузиастов по всему миру. Невозможно сделать качественный обзор всех их. В данной подборке мы просто сделали небольшой обзор
Управление телевизором силой мысли и Ардуино.
Управление телевизором силой мысли и АрдуиноЭтот оригинальный проект кажется невероятным, ведь для переключения канала нужен не пульт, а мысль о его смене. Для создания потребуется Ардуино Уно, игра Star Wars Force Trainer, инфракрасные приемник и передатчик.
Проект был реализован Дэниэлом Дэвисом в домашних условиях. За основу он взял игру 2009 года Star Wars Force Trainer и разобрал ее. Сама игра содержит гарнитуру, которая может обнаружить электрические поля разума (аналогично ЭЭГ). Внутри был обнаружен чип NeuroSky ЭЭГ, который Дэниэл подключил к плате Ардуино. Данные ЭЭГ собираются и преобразовываются на компьютере.
С помощью serial монитора можно посмотреть сигналы, которые передает пульт на ИК приемник при переключении каналов. Далее записывается код кнопки и пишется небольшая программа.
После завершения программной части на человека надевают шлем, и он может переключать канаты телевизора и выключать его путем сосредоточения мыслей.
Механическая рука, которая записывает время на доске.
Механическая рука, которая записывает время на доскеPlotclock является простейшим роботом, который состоит из руки с маркером, которая пишет на доске текущее время. Когда время изменяется, рука стирает ранее записанное число и пишет новые значения. Проект постоянно развивается, описанная технология является простейшей.
Для реализации проекта нужны 3D принтер, Ардуино Уно, 3 сервомотора, болты и гайки, маркер для стираемой доски, белая поверхность.
Механическая составляющая робота выполняется из пластиковых элементов и соединенных между собой механизмов. Управляется рука с помощью платы Ардуино и трех серводвигателей.
Окей Google, Сезам, открой дверь
Окей Google, Сезам, открой дверьВ проекте реализуется открытие двери с помощью определенной голосовой команды. Чтобы войти в помещение, достаточно назвать фразу «Сезам, откройся».
Для создания потребуются Ардуино Уно, серводвигатель, Bluetooth модуль.
Для разблокирования двери используются команды Google Now. Для смартфонов и планшетов есть приложение с названием «Сезам», которое и отправляет команду дверному замку при произношении слов «О’кей Google, Сезам, откройся».
Сервопривод подключается к дверному замку. Модуль Bluetooth ожидает команду, и при ее получении подает сигнал Ардуино через serial порт. Arduino Uno отдает команду сервоприводу и дверь открывается.
Светодиодный куб 4х4х4.
Светодиодный куб 4х4х4Куб из светодиодов на базе Ардуино – это развлекательное осветительное устройство. Он может быть разного размера с различными режимами подсветки. Куб оснащен кнопкой переключения режимов.
Для создания понадобится 64 светодиода, 4 резистора 100 Ом, проводники, макетная плата, коннекторы, коробка, источник питания на 9 В и плата Ардуино Уно.
На коробке рисуется или распечатывается эскиз квадрата 4х4. Проделываются отверстия, в которые помещаются светодиоды. Аноды нужно соединить между собой, затем коробку требуется повернуть и вытащить диоды. Аналогично формируются еще 3 слоя. Все слои нужно соединить с помощью оставшихся катодов. На макетную плату ставится получившийся куб и подключается к плате.
Робот пылесос
Робот пылесосНа базе Ардуино можно создать полезную вещь для дома – робота-уборщика. Самостоятельно сделанная модель не будет уступать по своим характеристикам магазинному экземпляру.
Для сборки потребуется:
- Arduino;
- драйвер L298N для управления двигателем;
- миниатюрные двигатели с редуктором и колесами;
- 6 инфракрасных датчиков;
- двигатель для турбины;
- турбина;
- двигатели для щеток;
- датчики столкновения;
- 4 аккумулятора;
- повышающий и понижающий преобразователи тока;
- контроллер для батареи.
Пылесос оборудован ИК датчиками. Они реагируют, когда пылесос приближается к препятствию, и дают ему команду остановиться и развернуться. При столкновении со стеной или другим препятствием срабатывает один из выключателей, соединяющий бампер и корпус робота.
Система распознавания лиц и слежения за ними на Ардуино.
Система распознавания лиц и слежения за ними на АрдуиноВеб-камера закрепляется на поворотном механизме и подключается к ПК, на котором установлено программное обеспечение OpenCV. Когда программа обнаруживает лицо, начинается вычисление его центральной точки. Полученные координаты передаются на микроконтроллер Ардуино, который управляет сервомоторами и следит за лицом.
Для реализации потребуются:
- программное обеспечение Arduino IDE, OpenCV;
- плата Ардуино Уно;
- 2 сервомотора;
- веб-камера.
Автоматизированная система для аквариума
Автоматизированная система для аквариумаАвтоматизация задач для аквариума помогает облегчить жизнь пользователя. Проект должен отвечать за следующие действия:
- подача подсветки того или иного цвета в зависимости от условий;
- отображение времени;
- регулирование компрессора;
- включение и выключение фильтров;
- отображение данных о температуре, влажности.
Чтобы собрать устройство, потребуются плата Ардуино Уно, пьезо сигналка, RGB лента, белая диодная лента, датчик температуры и влажности, LCD экран, часы, 2 реле, ик-приемник, транзисторы.
Схем реализации прибора существует множество. Пример одной из них приведен ниже.
Требуется также прописать код для включения того или иного цвета в зависимости от условий и настроить работу ЖК экрана.
Теплица для растений
Теплица для растенийВ умной теплице для цветов происходит мониторинг и регулировка температуры и освещения и полив почвы. Особенно это актуально для теплолюбивых тропических растений, в которых необходимо постоянно поддерживать высокую температуру. Управлять можно автоматически или удаленно с планшета или смартфона.
Чтобы собрать проект, нужны следующие компоненты:
- Ардуино Уно;
- USB кабель;
- плата прототипирования;
- провода;
- фоторезистор;
- резистор на 10 кОм;
- температурный датчик;
- модуль температуры и влажности окружающей среды;
- модуль влажности почвы.
Фоторезистор отвечает за измерение освещенности. Температурный сенсор получает температуру воздуха. Модуль влажности почвы помещается в землю и измеряет уровень воды в ней.
Отслеживание потребляемого электричества в реальном времени при помощи Ардуино и LabVIEW.
Отслеживание потребляемого электричества в реальном времени при помощи Ардуино и LabVIEWПрибор может использоваться в умном доме в качестве измерителя потребляемой электроэнергии на современных счетчиках. Считывание информации происходит через светодиод счетчика – просчитывается длительность между миганиями.
Принцип работы следующие. Ардуино считывает частоту миганий и подает информацию через беспроводной модуль. Модуль, установленный на компьютер, получает эти данные и передает их в программу LabVIEW, в которой отображаются данные потребления мощности в режиме реального времени.
Мигание светодиода детектирует фоторезистор. Аналоговые данные считываются с помощью делителя напряжения.
Для работы потребуются:
- Ардуино;
- фоторезистор;
- светодиод;
- модуль Xbee;
- программное обеспечение Arduino IDE, LabView;
- простые и подстроечные резисторы;
- провода.
В программе будет отображаться график потребления за последние 5 минут и в реальном времени.
Аудиоплеер
АудиоплеерСвоими руками на базе Ардуино можно создать аудиопроигрыватель. Его конструкция проста – он состоит из динамика, транзистора, micro-sd карты с записанными на нее треками. В качестве платы используется Ардуино, также можно взять контроллер Seeeduino 2.21 или Garagino на ATmega328.
Для сборки нужны:
- контроллер;
- карт-ридер;
- динамик;
- печатная плата;
- карта памяти с записанными аудиотреками;
- транзистор;
- резистор;
- провода.
Работает плеер следующим образом. Ардуино загружает файлы с расширением .wav карты памяти. Происходит генерирование сигнала, который выводится через динамики, подсоединенные к пину 9 на плате.
Предварительно песню нужно преобразовать в формат .wav. Сделать это можно с помощью самого простого онлайн-конвертера. Музыкальные файлы имеют ограничения при воспроизведении мелодии. Транзистор не сможет прочитать сложные .wav-файлы, поэтому советуется преобразовать треки к следующему виду: 16 кГц в секунду, моно канал, бит на сэмпл – 8.
Музыка записывается на заранее отформатированную карту памяти и сохраняется с простыми наименованиями.После сбора схемы требуется прописать код, включить питание, после чего начнется воспроизведение музыки.
Рекомендации по работе с проектами Ардуино в Интернете
Найдя в интернете интересующий вас проект, попробуйте сначала понять его принцип действия. Посмотрите, как связаны между собой элементы, какие функции они выполняют, каковы ограничения. Попробуйте сперва создать прототип устройств (электронная схема с прошивкой) и только затем пытайтесь полностью повторить то, что видите в описании.
Другие идеи проектов
Проекты умного дома на Ардуино
Проекты умного дома являются одним из примеров того, как перейти от «игрушек» и тренажеров к реальным системам, помогающими и облегчающим жизнь. Как правило, с помощью ардуино невозможно создать полноценные автономные решения, но отдельные компоненты сделать вполне реально.
При этом нужно понимать, что сталкиваясь с реальными инфраструктурными объектами, мы должны соблюдать особую предусмотрительность при работе с электричеством, отоплением, водопроводом под давлением, канализацией. Любые эксперименты здесь нужно проводить обязательно под контролем профессионала.
Что может являться прототипом умного дома на ардуино:
- Системы освещения с автоматическим включением и отключением в зависимости от показателей датчиков. Наиболее популярнее варианты – использовать датчик освещенности, PIR датчик движения или датчик звука.
- Дистанционно управляемые электрические приборы. Например, включение или выключение системы отопления в зависимости от температуры или умное управление освещением в помещениях. Здесь вам понадобятся различные виды реле и один из механизмов обеспечения беспроводной связи: WiFi, GPRS, Bluetooth или радиоканал. Управлять устройствами можно через Web-интерфейс (через браузер) или с использованием соответствующего мобильного приложения (можно написать самому или выбрать одну из готовых платформ).
- Всевозможные системы учета: воды, тепла, электроэнергии. Начинающим доступны любительские датчики напора воды, температуры, влажности, силы тока. Можно использовать и профессиональные приборы, взаимодействуя с ними по одному из промышленных протоколов. Полученные данные можно собирать локально или отправлять в облако для последующего анализа.
- Охранные системы и контролирование внештатных ситуаций. Здесь понадобится различные датчики присутствия, движения, звука, магнитные датчики Холла и другие. Естественно, не обойтись без коммуникаций и возможности быстрой передачи информации владельцу через интернет.
Каждое из этих направлений может содержать в себе десятки разных проектов. Вы можете без труда найти себе подходящий вариант в интернете или в одной из наших статей.
Проекты «Зеленой робототехники»
Юные ардуинщики, живущие в небольших городах и сельской местности, где много природы и не очень много «цивилизации», могут с успехом использовать ардуино для исследования и охраны природы, а также автоматизации сельского хозяйства. Вот некоторые из идей проектов, которые можно реализовывать своими силами на уровне прототипов и готовых решений:
- Умная теплица
- Полив растений
- Умный инкубатор
- Умный улей
- Антигрызуны
- Умный агроном
- Умный ошейник для животных
- Расширенная метеостанция
- Робот – сеяльщик
- Счетчик муравьев
Проекты с дронами: аэрофотосъемка, внесение удобрений.
Что такое Arduino? Платформа Ардуино пользуется огромной популярностью во всем мире благодаря удобству и простоте языка программирования, а также открытой архитектуре и программному коду. Плата Arduino состоит из микроконтроллера Atmel AVR и элементов обвязки для программирования и интеграции с другими схемами. Подробнее … |
|
Первое включение. Установка Arduino IDE Разработка собственных приложений на базе плат, совместимых с архитектурой Arduino, осуществляется в официальной бесплатной среде программирования Arduino IDE. Среда предназначена для написания, компиляции и загрузки собственных программ в память микроконтроллера. Подробнее … |
|
Умный дом и интернет вещей. Элементы, решения, системы управления, проекты Самый главный компонент любой «умной» системы – его контроллер. Контроллер предназначен для получения информации и управления «умным» домом. В нашем наборе два контроллера! Это плата Arduino MEGA и модуль NodeMCU v3 Lua WI-FI ESP8266 Ch440. Вы можете выбрать любой из них. Подробнее … |
|
Arduino проект 34: Организация подключения к сети Интернет с помощью модуля Ai-Thinker A6 В предыдущих главе мы рассмотрели мы сделали большие шаги построения «умного дома» – оснастили его датчиками и исполнительными устройствами и создали и обеспечили определенную степень автоматизации для создания комфорта и безопасности. Теперь пришло время сделать наш «умный дом» устройством IoT (Интернета вещей), чтобы получить доступ к нему для мониторинга и управления из любой точки мира по сети интернет. Организуем доступ контроллеров нашего дома к сети интернет. Подробнее … |
|
Arduino проект 33: Модуль GPS. Принцип работы, подключение, примеры В этом эксперименте рассмотрим работу модуля GPS-приемника, позволяющего определять наше местоположение с помощью глобальной системы GPS, и подключение данного приемника к плате Arduino. GPS (Global Positioning System) – это система, позволяющая с точностью не хуже 100 м определить местоположение объекта. Подробнее … |
|
Arduino проект 32: Беспроводная связь. Модуль GSM/GPRS SIM900 В этом эксперименте рассмотрим работу модуля GSM/GPRS Shield – платы расширения, позволяющей Arduino работать в сетях сотовой связи по технологиям GSM/GPRS для приёма и передачи данных, SMS и голосовой связи. GSM/GPRS Shield на базе модуля SIMCom SIM900 выпускают несколько производителей, и платы имеют незначительные отличия. Также на некоторых платах расположены: слот для SIM-карты, стандартные 3,5 мм джек для аудиовхода и выхода и разъём для внешней антенны. На плате GSM/GPRS shild имеется несколько перемычек, позволяющих выбрать тип serial-соединения. Подробнее … |
|
Arduino проект 31: Беспроводная связь. Модуль Bluetooth HC-05 В этом эксперименте рассмотрим работу модуля Bluetooth HC-05, позволяющего плате Arduino установить беспроводную связь и обмениваться данными с другими устройствами по протоколу Bluetooth. Bluetooth позволяет объединять в локальные сети любую технику: от мобильного телефона и компьютера до холодильника. При этом одним из немаловажных параметров новой технологии являются низкая стоимость устройства связи (в пределах 20 долларов), его небольшие размеры. Подробнее … |
|
Arduino проект 30: Беспроводная связь. Модуль Wi-Fi ESP8266 В этом эксперименте мы познакомимся с модулем ESP8266, с помощью которого можно подключить плату Arduini к сетям Wi-Fi, и напишем скетч для передачи данных датчика температуры на веб-сервис Народный мониторинг. Платы на ESP8266 – это не просто модули для связи по Wi-Fi. Чип, по сути, является микроконтроллером со своими интерфейсами SPI, UART, а также портами GPIO, а это значит, что модуль можно использовать автономно без Arduino и других плат с микроконтроллерами. Подробнее … |
|
Arduino проект 29: Работа с Интернетом на примере Arduino Ethernet Shield W5100 В этом эксперименте мы покажем, как нашей плате Arduino получить доступ к сети Интернет с помощью модуля Ethernet shield W5100. Ethernet Shield позволяет легко подключить вашу плату Arduino к локальной сети или сети Интернет. Он предоставляет возможность Arduino отправлять и принимать данные из любой точки мира с помощью интернет-соединения. Подробнее … |
|
Arduino проект 28: Считыватель RFID на примере RC522. Принцип работы, подключение В этом эксперименте мы покажем, как плата Arduino получает доступ к данным RFID-карт и брелоков Mifare с помощью RFID-считывателя RC522C. Идентификация объектов производится по уникальному цифровому коду, который считывается из памяти электронной метки, прикрепляемой к объекту идентификации. Считыватель содержит в своем составе передатчик и антенну, посредством которых излучается электромагнитное поле определенной частоты. Подробнее … |
|
Arduino проект 27: SD-карта. Чтение и запись данных В этом эксперименте мы покажем, как к плате Arduino подключить SD-карту. Если вашим Аrduino-проектам не хватает памяти, а объем энергонезависимой памяти EEPROM в платах Arduino совсем небольшой, можно использовать внешние носители. Один из самых простых по подключению к платам Arduino – это SD-карта. Можно подсоединиться к SD-карте напрямую, а можно использовать модули. Подробнее … |
|
Arduino проект 26: Часы реального времени. Принцип работы, подключение, примеры В этом эксперименте мы рассмотрим модуль часов реального времени на микросхеме DS1307. Микросхема Dallas DS1307 представляет собой часы реального времени с календарем и дополнительной памятью NW SRAM (56 байт). Микросхема подключается к микроконтроллеру при помощи шины I2C. Количество дней в месяце рассчитывается с учетом високосных лет до 2100 г. В микросхеме DS1307 имеется встроенная схема, определяющая аварийное отключение питания Подробнее … |
|
Arduino проект 25: ИК-фотоприемник и ИК-пульт. Обрабатываем команды от пульта В этом эксперименте мы организуем беспроводную ИК-связь, которая нам позволит отправлять на плату Arduino команды с помощью любого ИК-пульта. В качестве приемника будем использовать микросхему TSOP31236. В одном корпусе она объединяет фотодиод, предусилитель и формирователь. На выходе формируется обычный ТТЛ-сигнал без заполнения, пригодный для дальнейшей обработки микроконтроллером. Подробнее … |
|
Arduino проект 24: 3-осевой гироскоп + акселерометр на примере GY-521 В этом эксперименте мы познакомимся с акселерометром и гироскопом и будем с помощью Arduino получать показания с этих датчиков. Модуль GY-521 на микросхеме MPU6050 содержит гироскоп, акселерометр и температурный сенсор. На плате модуля GY-521 расположена необходимая обвязка MPU6050, в том числе подтягивающие резисторы, стабилизатор напряжения на 3,3 В с малым падением напряжения с фильтрующими конденсаторами. Обмен с микроконтроллером осуществляется по шине I2C. Подробнее … |
|
Arduino проект 23: Ультразвуковой датчик расстояния HC-SR04. Принцип работы, подключение, пример В этом эксперименте мы рассмотрим ультразвуковой датчик для измерения расстояния и создадим проект вывода показаний датчика на экран ЖКИ Wh2602. Ультразвуковой дальномер HC-SR04 – это помещенные на одну плату приемник и передатчик ультразвукового сигнала. Излучатель генерирует сигнал, который, отразившись от препятствия, попадает на приемник. Измерив время, за которое сигнал проходит до объекта и обратно, можно оценить расстояние. Подробнее … |
|
Arduino проект 22: Датчики газов. Принцип работы, пример работы В этом эксперименте мы рассмотрим ультразвуковой датчик для измерения расстояния и создадим проект вывода показаний датчика на экран ЖКИ Wh2602. Серия MQ-сенсоров для Ардуино, построены на базе мини-нагревателя внутри и используют электрохимический сенсор. Они чувствительны для определенных диапазонов газов и используются в помещениях при комнатной температуре. Подробнее … |
|
Arduino проект 21: Датчик влажности и температуры DHT11 В этом эксперименте мы рассмотрим датчик для измерения относительной влажности воздуха и температуры DHT11 и создадим проект вывода показаний датчика на экран ЖКИ Wh2602. Датчик DHT11 состоит из емкостного датчика влажности и термистора. Кроме того, датчик содержит в себе простенький АЦП для преобразования аналоговых значений влажности и температуры. Подробнее … |
|
Arduino проект 20: Датчик температуры DS18B20 В этом эксперименте мы рассмотрим популярный цифровой датчик температуры DS18B20, работающий по протоколу 1-Wire, и создадим проект вывода показаний датчика на экран ЖКИ Wh2602. DS18B20 – цифровой термометр с программируемым разрешением от 9 до 12 битов, которое может сохраняться в EEPROM-памяти прибора. DS18B20 обменивается данными по шине 1-Wire и при этом может быть как единственным устройством на линии, так и работать в группе. Все процессы на шине управляются центральным микропроцессором. Подробнее … |
|
Arduino проект 19: Шаговый двигатель 4-фазный, с управлением на ULN2003 (L293) В этом эксперименте мы рассмотрим подключение к Arduino шагового двигателя. Шаговые двигатели представляют собой электромеханические устройства, задачей которых является преобразование электрических импульсов в перемещение вала двигателя на определенный угол. ШД нашли широкое применение в области, где требуется высокая точность перемещений или скорости. Подробнее … |
|
Arduino проект 18: Обрабатываем данные от джойстика. Управление Pan/Tilt Bracket с помощью джойстика В этом эксперименте мы рассмотрим подключение к Arduino двухосевого аналогового джойстика. Для плат Arduino существуют модули аналогового джойстика, имеющие ось X, Y (потенциометры 10 кОм) и дополнительную кнопку – ось Z. Джойстик позволяет плавно и точно отслеживать степень отклонения от нулевой точки. Сам джойстик подпружиненный, поэтому он будет возвращаться в центральное состояние после его отпускания из определенной позиции. Подробнее … |
|
Arduino проект 17: Сервопривод. Крутим потенциометр, меняем положение Сервопривод управляется с помощью импульсов переменной длительности. Угол поворота определяется длительностью импульса, который подается по сигнальному проводу. Это называется широтно-импульсной модуляцией. Сервопривод ожидает импульса каждые 20 мс. Длительность импульса определяет, насколько далеко должен поворачиваться мотор. Подробнее … |
|
Arduino проект 16: Графический индикатор. Подключение дисплея Nokia 5110 В этом эксперименте мы рассмотрим графический дисплей Nokia 5110, который можно использовать в проектах Arduino для вывода графической информации. Жидкокристаллический дисплей Nokia 5110 – монохромный дисплей с разрешением 84×48 на контроллере PCD8544, предназначен для вывода графической и текстовой информации. Питание дисплея должно лежать в пределах 2.7–3.3 В (максимум 3.3 В, при подаче 5 В на вывод VCC дисплей может выйти из строя). Но выводы контроллера толерантны к +5 В, поэтому их можно напрямую подключать к входам Arduino. Немаловажный момент – низкое потребление, что позволяет питать дисплей от платы Arduino без внешнего источника питания. Подробнее … |
|
Arduino проект 15: Индикатор LCD1602. Принцип подключения, вывод информации на него В этом эксперименте мы познакомимся с жидкокристаллическими индикаторами Winstar для вывода символьной информации. Научимся в Arduino-проектах применять библиотеки и создадим проект вывода показаний датчика температуры LM335 на экран дисплея. Жидкокристаллические индикаторы (ЖКИ, англ. LCD) являются удобным и недорогим средством для отображения данных ваших проектов. Символьный индикатор Wh2602 позволяет выводить на экран 2 строки по 16 символов (размером 5×7 или 5×10 и дополнительная строка под курсор). Управляет работой дисплея контроллер. Подробнее … |
|
Arduino проект 14: Датчик температуры аналоговый LM335. Принцип работы, пример работы В этом эксперименте мы познакомимся с аналоговым датчиком для измерения температуры LM335. LM335 – это недорогой температурный чувствительный элемент с диапазоном от –40 °C до +100 °C и точностью в 1 °C. По принципу действия датчик LM335 представляет собой стабилитрон, у которого напряжение стабилизации зависит от температуры. Подробнее … |
|
Arduino проект 13: Фоторезистор. Обрабатываем освещённость, зажигая или гася светодиоды В этом эксперименте мы познакомимся с аналоговым датчиком для измерения освещенности – фоторезистором. Распространённое использование фоторезистора – измерение освещённости. В темноте его сопротивление довольно велико. Когда на фоторезистор попадает свет, сопротивление падает пропорционально освещенности. Подробнее … |
|
Arduino проект 12: Управляем реле через транзистор В этом эксперименте мы познакомимся с реле, с помощью которого с Arduino можно управлять мощной нагрузкой не только постоянного, но и переменного тока. При подключении реле к Arduino контакт микроконтроллера не может обеспечить мощность, необходимую для нормальной работы катушки. Поэтому следует усилить ток – поставить транзистор. Для усиления удобнее применять n-p-n-транзистор. Подробнее … |
|
Arduino проект 11: Транзистор MOSFET. Показываем усилительные качества транзистора. На примере электродвигателя изменяем обороты В этом эксперименте мы познакомимся с транзистором MOSFET и с помощью него будем управлять мощной нагрузкой – электродвигателем. Выводы Arduino, сконфигурированные как OUTPUT, находятся в низкоимпедансном состоянии и могут отдавать 40 мА в нагрузку и не в состоянии обеспечить питание мощной нагрузки и большого напряжения. Одним из способов управления мощной нагрузкой является использование полевых MOSFET-транзисторов. Подробнее … |
|
Arduino проект 10: Управляем пьезоизлучателем: меняем тон, длительность, играем музыку В этом эксперименте мы произведем генерацию звуков на Arduino c помощью пьзоизлучателя. Пьезоизлучатели бывают двух типов – со встроенным генератором и без. Пьезоизлучатели со встроенным генератором излучают фиксированный тональный сигнал сразу после подачи на них номинального напряжения. Они не могут воспроизводить произвольного сигнала. Подробнее … |
|
Arduino проект 9: Матрица светодиодная 8×8 В этом эксперименте мы рассмотрим каскадное подключение нескольких микросхем 74HC595, что позволит, используя 3 вывода Arduino, управлять множеством контактов, что будет продемонстрировано в примере вывода фигур на экран светодиодной матрицы 8×8. В эксперименте будем использовать двухцветную светодиодную матрицу FYM-23881BUG-11. Подробнее … |
|
Arduino проект 8: Микросхема сдвигового регистра 74НС595. Управляем матрицей из 4 разрядов, экономим выходы Arduino В этом эксперименте мы рассмотрим работу Arduino с микросхемой 74HC595 – расширителем выходов, позволяющей уменьшить количество выводов Arduino для управления 4-разрядной семисегментной матрицей. Цифровых выводов Arduino Nano и UNO, а иногда даже и Arduino Mega может не хватить, если требуется управлять большим количеством выводов. В этом случае можно использовать микросхему 74HC595. Подробнее … |
|
Arduino проект 7: Матрица 4-разрядная из 7-сегментных индикаторов. Делаем динамическую индикацию В этом эксперименте мы рассмотрим работу Arduino с 4-разрядной семисегментной матрицей. Получим представление о динамической индикации, позволяющей использовать одни выводы Arduino при выводе информации на несколько семисегментных индикаторов. Предназначена для одновременного вывода на матрицу 4 цифр, также есть возможность вывода десятичной точки. Подробнее … |
|
Arduino проект 6: Семисегментный индикатор одноразрядный. Выводим цифры В этом эксперименте мы рассмотрим работу с семисегментным светодиодным индикатором, которая позволяет Arduino визуализировать цифры. Светодиодный семисегментный индикатор представляет собой группу светодиодов, расположенных в определенном порядке и объединенных конструктивно. Светодиодные контакты промаркированы метками от a до g (и дополнительно dp – для отображения десятичной точки), и один общий вывод, который определяет тип подключения индикатора (схема с общим анодом ОА, или общим катодом ОК). Подробнее … |
|
Arduino проект 5: RGB-светодиод. Широтно-импульсная модуляция. Переливаемся цветами радуги В этом эксперименте мы рассмотрим широтно-импульсную модуляцию, которая позволяет Arduino выводить аналоговые данные на цифровые выводы, и применим эти знания для создания прозвольных цветов свечения с помощью RGB-светодиода. Подробнее … |
|
Arduino проект 4: Светодиодная шкала 10 сегментов. Вращением потенциометра меняем количество светящихся светодиодов В этом эксперименте мы рассмотрим работу аналоговых входов Arduino, работу потенциометра в качестве аналогового датчика и будем демонстрировать показания аналогового датчика с помощью светодиодной шкалы. ля получения аналоговых данных Arduino имеет аналоговые входы, оснащенные 10-разрядным аналого-цифровым преобразователем для аналоговых преобразований. Подробнее … |
|
Arduino проект 3: Потенциометр. Показываем закон Ома на примере яркости светодиода В этом эксперименте мы познакомимся с потенциометром и будем управлять яркостью светодиода и изменением сопротивления потенциометра. Сейчас мы рассмотрим, как подобрать ограничительный резистор и как будет влиять номинал резистора на яркость светодиода. Подробнее … |
|
Arduino проект 2: Обрабатываем нажатие кнопки на примере зажигания светодиода. Боремся с дребезгом контактов Это эксперимент по работе с кнопкой. Мы будем включать светодиод по нажатии кнопки и выключать по отпускании кнопки. Рассмотрим понятие дребезга и программные методы его устранения. При использовании Arduino в качестве входов используют pull-up- и pulldown-резисторы, чтобы вход Arduino не находился в «подвешенном» состоянии (в этом состоянии он будет собирать внешние наводки и принимать произвольные значения), а имел заранее известное состояние (0 или 1). Подробнее … |
|
Arduino проект 1: Мигаем светодиодом В этом эксперименте мы научимся управлять светодиодом. Заставим его мигать. Светодиод – это полупроводниковый прибор, преобразующий электрический ток непосредственно в световое излучение. По-английски светодиод называется light emitting diode, или LED. Подробнее … |
История создания | Arduino-технология
Как пять друзей-инженеров с помощью маленькой электронной платы взяли штурмом мир DIY (от англ. Do It Youself — рус. «Сделай это сам»)
Основная команда Arduino (слева направо): David Mellis (США), David Cuartielles (Испания), Gianluca Martino (Италия), Massimo Banzi (Италия), Tom Igoe (США).
Живописный город Иврея, который расположился на берегу реки Дора Бальтеа в северной Италии, прославился несчастливым королем по имени Ардуин. В 1002 году король Ардуин стал правителем страны, только чтобы быть свергнутым королем Генрихом II из Германии, два года спустя. Сегодня, Бар di Re Arduino (Король Ардуино), паб на мощеной улице в городе, чтит его память там, где родился и вряд ли родится еще новый король. Название бара для Массимо Банзи — соучредителя нового электронного проекта, стало определяющим при выборе имени. Он назвал проект Arduino. Ардуино — недорогая плата с микроконтроллером, что позволяет даже новичку делать действительно удивительные вещи. Вы можете подключить к Ардуино все виды датчиков, ламп, двигателей и других устройств, а также использовать простое в освоении программное обеспечение для программирования. Можно создать интерактивный дисплей или мобильного робота, а потом поделиться разработкой со всем миром, разместив в сети.
Выпущенный в 2005 году как скромный инструмент для студентов от Банзи при взаимодействии проектного института Иврея (IDII — Interaction Design Institute Ivrea), Ардуино породил международную революцию в электронике. Вы можете купить плату Ардуино всего за около $30 или построить свою собственную с нуля: все аппаратные схемы и исходный код доступны бесплатно в рамках открытых лицензий. В результате, Ардуино стал самым выдающимся достижением своего времени в области открытого аппаратного обеспечения.
Маленькая плата теперь стала доступной для мастеров, любителей, студентов и тех, кто просто мечтает создать что-то свое. Более 250 000 плат Ардуино были проданы по всему миру, и это не включает в себя множество клонов. «Он сделал возможным для людей, создать то, что они не могли создать ранее,» говорит Дэвид Меллис, который был студентом в IDII до того, как продолжил заниматься дипломом на MIT Media Lab (междисциплинарная исследовательская лаборатория в Массачусетском Технологическом Институте) и сегодня является ведущим разработчиком программного обеспечения Ардуино.
На основе Ардуино созданы алкотестеры, светодиодные кубики, системы домашней автоматизации, различные дисплеи и даже комплексы анализа ДНК. Есть Ардуино партии и клубы. Google недавно выпустила основанный на Ардуино — платформе комплект разработки Андроид — смартфона. Дейл Доэрти, редактор и издатель журнала Make, который является библией для DIY строителей, определяет Ардуино: «Мозги для создаваемых проектов.»
Ардуино — это не просто проект с открытым исходным кодом, который стремится сделать технологии более доступными. Это также старт-ап компании, возглавляемой Банзи и группой его друзей.
Ардуино возник в связи с задачей: как научить студентов создавать электронные проекты быстро. Это был 2002 год, и Банзи, бородатый и добродушный архитектор программного обеспечения, был вызван IDII доцентом для поиска решения проблемы. Но, в связи с сокращением бюджета и ограниченного времени на использование помещений, его возможностей было мало. Как и многие его коллеги, Банзи опирался на BASIC Stamp, микроконтроллер, созданный в Калифорнии компанией Parallax, инженеры которой использовали его около десяти лет. Stamp был аккуратно расположен на маленькой плате, на ней также располагались блок питания, память, и порты ввода/вывода для подключения оборудования. Но у BASIC Stamp было две проблемы, Банзи обнаружил, что он не имеет достаточной вычислительной мощности для некоторых проектов его учеников, а также он был слишком дорогим, доска плюс основные части могли достигать стоимости около $100. Он также подыскивал что-то, что может работать на компьютерах Macintosh, которые были повсеместно среди дизайнеров IDII. Он решил, что может создать плату сам, которая подходила бы под его потребности.
У Банзи был коллега из Массачусетского технологического института, который разработал язык программирования, названный Processing. Processing стремительно набирал популярность, потому что это позволило даже неопытным программистам создавать сложные и красивые визуализации. Одна из причин его успеха была очень простая в использовании интегрированная среда разработки, другими словами IDE. Банзи поинтересовался, могут ли они создать подобные программные средства для программирования микроконтроллеров вместо графики на экране. Студент Эрнандо Барраган, сделал первые шаги в этом направлении. Он разработал прототип платформу под названием Wiring(проводка), которая включала как IDE так и плату, готовую к использованию. Это был многообещающий проект, который продолжается и по сей день, но Банзи уже думает дальше: он хотел сделать платформу, которая была еще проще, дешевле и удобней в использовании.
Первая плата — прототип, сделанный в 2005 году, имела простой дизайн, и она еще не называлась Ардуино. Массимо Банзи придумал имя год спустя.
Банзи и его сотрудники были сторонниками открытого кода в программном обеспечении. Поскольку цель в том, чтобы создать быструю и легкодоступную платформу, они чувствовали, что было бы лучше сделать проект открытым, насколько это возможно, а не держать его закрытым. Другим фактором, который способствовал этому решению, было то, что после работы в течение пяти лет, IDII ушел из фондов и собирался закрыть свои двери. Преподаватели боялись, что их проекты не выживут или будут присвоены. «Таким образом», — вспоминает Банзи, — «мы сказали: Давайте сделаем проект с открытым исходным кодом».
Модель с открытым исходным кодом уже давно используется для стимулирования инноваций в программном обеспечении, но не аппаратного обеспечения. Чтобы она работала, они должны были найти соответствующее решение лицензирования, которое можно применить к их плате. После некоторого исследования, они поняли, что можно по-разному смотреть на проект. Они могли бы использовать лицензию Creative Commons, некоммерческой группы, чьи соглашения, как правило, используются для произведений культуры, таких как музыка и текст. «Можно подумать, что устройство — это часть культуры, которой мы хотим поделиться с другими людьми,» говорит Банзи.
Плата должна иметь определенную, доступную для студентов цену, ориентировочно — $30. «Цена должна быть соизмерима с ужином в пиццерии,» говорит Банзи. Они также хотели выделяться. Если другие платы часто делают зелеными, они сделали синей; в то время, как некоторые производители экономят на входных/выходных контактах, они, наоборот, сделали их много на плате. В качестве финального штриха, они добавили маленькую карту Италии на задней стороне платы. «Многие элементы дизайна странные для настоящего инженера,» говорит Банзи со смехом, «но я не настоящий инженер, так что я сделал эту глупость!»
Для одного из «реальных» инженеров в команде, Джанлука Мартино, нетрадиционный подход к дизайну печатной платы был в новинку. Мартино описывает его как «новое мышление в электронике. Не в инженерии, где нужно рассчитывать токи и напряжения, а в DIY подходе.»
Команда создала продукт, состоящий из дешевых деталей, которые могут быть легко найдены, если люди захотели бы построить свои собственные платы. Микроконтроллер они взяли ATmega328. Но главной целью было убедиться, что он будет, по сути, «включи и работай», что можно просто взять из коробки, подключить к компьютеру и сразу использовать. Такие платы, как BASIC Stamp требуют, чтобы разработчики раскошеливались на полдюжины других деталей, которые добавляются к общей стоимости. Но для них, пользователь должен просто подключить кабель USB от платы к компьютеру — программирующему устройству.
«Философия Ардуино — если вы хотите изучать электронику, вы должны изучать именно ее с первого дня, вместо того чтобы начинать с изучения алгебры,» говорит другой член команды, инженер электросвязи Дэвид Квартиллес
Команда скоро проверила свою философию в тесте. Они вручили 300 пустых печатных плат студентам IDII с простым заданием: посмотрите инструкции по сборке онлайн, постройте свою собственную плату, и используйте ее для какой-либо своей цели. Один из первых проектов был самодельный будильник, который висел под потолком на кабеле. Всякий раз, когда вы нажимаете кнопку отключения звонка, часы поднимаются выше до тех пор, пока вы не сможете до нее дотянуться. Приходиться вставать.
Вскоре другие люди услышали о платах. И они хотели получить ее. Первым клиентом был друг Банзи, который получил одну плату. Проект начал набирать обороты, но не хватало главного — имени изобретения. Однажды ночью, отдыхая в местном пабе, оно пришло к ним: Arduino, имя царя.
Слово Arduino быстро распространилось в Интернете, без маркетинга и рекламы. Оно привлекло внимание Тома Иго, профессора физических вычислений в программе Интерактивные Телекоммуникации Нью-Йоркского университета, который сегодня является членом основной команды Ардуино. Иго преподавал на курсах для студентов нетехнических специальностей, применяя BASIC Stamp, но был впечатлен особенностями Ардуино. «Если вы, не зная электроники и программирования, хотите, чтобы настройка всего устройства заключалась просто в программировании чипа — просто возьмите плату, нажмите загрузку, и она работает,» говорит он. «Я был также впечатлен ценой в $30, которая сделала ее доступной. Это был один из ключевых факторов для меня.»
В этой связи, успех Ардуино многим обязан существованию языка программирования Processing и платформы Wiring. Эти проекты дали Ардуино один из его существенных преимуществ: очень удачную среду программирования. До Ардуино программирование микроконтроллера несло определенные трудности в процессе обучения. С Ардуино, даже те, кто не имел опыта в электронике, получили доступ к ранее непонятному миру электроники. Теперь, новички не должны много изучать, прежде чем они смогут построить рабочий прототип электронного устройства. Это большое продвижение, в то время, когда многие из самых популярных гаджетов работают по принципу «черных ящиков», которые закрыты и защищены патентами.
Для Банзи, пожалуй, самый важный эффект Ардуино: демократизация техники. «Пятьдесят лет назад, чтобы написать программное обеспечение, вам были необходимы люди в белых халатах, которые знали все о вакуумных трубках. Теперь, даже моя мама может программировать,» говорит Банзи. «Мы позволили многим людям создавать продукты самим.»
Но не всем инженерам нравится Ардуино. Большинство из таких придерживаются мнения, что рынок электронных устройств наводнят блеклые, низкосортные товары, созданные людьми без таланта. Однако, Меллис не думает, что инновации обесценивают роль инженера вообще. «Предоставляя платформу для мастеров или дизайнеров, последние получают способ создания своего шедевра. Этот путь легче для них, чем работать с инженерами и говорить: «Это то, что я хочу сделать, а это — не то!», говорит он. «Я не думаю, что это замена инженера. Это просто облегчение их сотрудничества.»
Для большего привлечения внимания к Ардуино, команда изучает, как интегрировать его более глубоко в систему образования, от начальных школ до колледжей. Несколько университетов, в том числе Carnegie Mellon (Карнеги-Меллон) и Stanford (Стэнфорд), уже используют Ардуино. Меллис изучал, как студенты и обычные люди изучают электронику в серии семинаров в MIT Media Lab. Меллис приглашал 8 — 10 человек в лабораторию, где им давали задание завершить проект в течение одного дня. Проекты представляли собой создание Ipod спикеров, FM радио и компьютерную мышь, используя те же компоненты, которые использует Ардуино.
Но распространение технологии Ардуино только часть проблемы. Команда также должна идти в ногу со спросом на платы. Платформа Ардуино больше не состоит из одного типа платы, теперь существует целое семейство плат. В дополнение к оригинальному проекту, названному Arduino Uno (Ардуино Уно), новые модели включают более мощную плату, названую Arduino Mega (Ардуино Мега), компактную плату, названую Arduino Nano (Ардуино Нано), водонепроницаемую плату LilyPad Arduino , и недавно выпустила плату для подключения к сети, названую Arduino Ethernet.
Для Ардуино создали свое производство DIY электроники. Существует более чем 200 дистрибьюторов продукции Ардуино по всему миру, от крупных компаний, таких как SparkFun Electronics в Боулдере, штат Колорадо, До семейных производств, обеспечивающих местные нужды. Банзи недавно услышал о человеке в Португалии, который бросил свою работу в телефонной компании, чтобы продавать продукцию Ардуино из своего дома. Член команды Ардуино Джанлука Мартино, который курирует производство и распространение, говорит, что они работают сверхурочно, чтобы обеспечить новые рынки, такие как Китай, Индия и Южная Америка. В настоящий момент, говорит он, около 80 процентов пользователей Ардуино разделены между Соединенными Штатами и Европой, остальные разбросаны по всему миру.
Команда не может позволить себе запастись сотней тысяч плат, вместо этого они производят где-то от 100 до 3000 в день на производственном объекте вблизи Иврея. Команда создала систему пользователей для тестирования контактов на каждой плате, число которых для Uno включает 14 цифровых входов/выходов, 6 контактов аналогового ввода, и еще 6 контактов для питания, что гарантирует высокое качество. На платформе Ардуино плата достаточно недорогая, но команда обещает заменить любую плату, которая не работает. Мартино говорит отказы составляют менее 1 процента.
Команда Ардуино сегодня зарабатывать достаточно, чтобы поддерживать двух своих членов, как штатных сотрудников и строит планы по привлечению еще большего внимания людей к плате. В сентябре на Maker Faire, собрании в Нью-Йорке под эгидой журнала Make, команда запустила свою первую плату с 32-битным процессором ARM. 8-битные чипы уходят в прошлое. Это увеличит спрос на более мощные и надежные периферийные устройства. Например, MakerBot построила 3-D принтер на Ардуино, но могло бы извлечь выгоду, применив более быстрый процессор для такой сложной задачи.
Ардуино получил дополнительный импульс, когда Google выпустила плату Ардуино для своей системы Android. Android от Google ADK — это платформа, которая позволяет андроид телефону взаимодействовать с двигателями, датчиками и другими устройствами. Вы можете построить Android приложение, которое использует камеру телефона, датчики движения, сенсорный экран, и подключение к Интернету, чтобы контролировать дисплей или робота. Энтузиасты говорят, что добавленые в Android возможности открывают еще больше возможностей для проектов Ардуино.
Однако команда осторожно относится к усложнению Ардуино. «Задача состоит в поиске способа объединить различные устройства, которые люди хотят создать на платформе» говорит Меллис, «не делая его слишком сложным, особенно для начинающих.»
В то же время, они наслаждаются славой. Фанаты приезжают издалека только для того, чтобы выпить в баре в Иврея, где проект получил свое название. «Люди идут в бар и говорят:» Мы здесь из-за платы Ардуино, «говорит Банзи. Там только одна проблема, добавляет он со смехом: Бармены не знают, что такое плата Ардуино.
Статья переведена с сайта http://spectrum.ieee.org
Разбираемся с Arduino IDE | AlexGyver Technologies
Работа с Arduino IDE
Рассмотрим основную программу, с которой будем работать – Arduino IDE. IDE расшифровывается как интегрированная среда разработки, и в нашем случае представляет собой блокнот, в котором мы пишем код, препроцессор и компилятор, которые проверяют и компилируют код, и инструменты для загрузки, которые загружают код выбранным способом. IDE написана на java, поэтому не удивляйтесь её долгому запуску, большому объему занимаемой оперативки и медленной работе. Несмотря на огромный опыт работы с ардуино я до сих пор продолжаю писать код в Arduino IDE, потому что я к ней привык. Помимо перечисленных проблем стандартная IDE выделяется на фоне “взрослых” сред разработки отсутствием дерева/файловой структуры проекта (что не нужно для простых проектов), отсутствием рефакторинга, отсутствием автоматического дополнения кода (хотя его обещают вот-вот добавить и уже есть beta) и очень медленной компиляцией кода. Этих недостатков лишены аналоги Arduino IDE, о них поговорим в конце урока. Помимо отсутствия озвученных недостатков там есть некоторые полезные фишки, например все define-ы файла с кодом отображаются в отдельном блоке и с ними очень удобно работать.
Интерфейс
Сначала рассмотрим общий вид программы, т.е. как она выглядит после запуска. В самом центре – блокнот, то самое место, где пишется код. По умолчанию уже написаны два стандартных блока, setup и loop. К ним вернёмся в разделе уроков программирования. Всё остальное можно увидеть на скриншоте ниже.
- Проверить – компиляция (сборка, проверка на ошибки…) кода без его загрузки в плату. То есть код можно написать и проверить на ошибки даже не подключая плату к компьютеру
- Загрузить – компиляция и загрузка прошивки в плату
- Создать/открыть/сохранить – тут всё понятно
- Монитор порта – кнопка открывает монитор последовательного пора для общения с платой
- Меню вкладок – работа с вкладками, о них поговорим ниже
- Текущее состояние – тут выводится краткая информация о последнем действии: загрузка завершена, ошибка загрузки, автоформатирование завершено и т.д.
- Лог работы – тут выводится лог компиляции и вообще все системные сообщения, отчёты об ошибках и размере скомпилированного кода
- Конфигурация оборудования – выводится название выбранной платы, версии микроконтроллера и номер выбранного COM порта
Пробежимся по пунктам меню, которые я считаю первостепенно важными, с остальными можно познакомиться самостоятельно по ходу работы с программой. Версия моей IDE – 1.8.8, в новых что-то может отличаться
Вкладка “Файл”
- Новый
- Открыть
- Открыть недавние
- Папка со скетчами – список скетчей, которые сохранены туда, куда программа предлагает их сохранять по умолчанию (Документы/Arduino)
- Примеры – список установленных библиотек с подсписком примеров к каждой. Весьма полезная штука
- Закрыть
- Сохранить
- Сохранить как…
- Настройки страницы (для печати)
- Печать
- Настройки
- Выход
Далее сразу рассмотрим окно настроек:
Окно настроек
Настройки Arduino IDE
Куча интересных настроек на свой вкус. Из них отмечу
- Размещение папки скетчей – куда по умолчанию сохраняются скетчи
- Показать подробный вывод – показывает подробный лог при компиляции и загрузке, нужно при поиске багов и непонятных глюков/ошибок
- Использовать внешний редактор – запрещает редактирование кода из Arduino IDE, чтобы редактировать его в других редакторах, например Notepad++. Редактируем там, а загружаем через IDE. Зачем это? Писать код в том же Notepad++ гораздо удобнее и приятнее, чем в Arduino IDE. К сожалению.
- Дополнительные ссылки для менеджера плат – сюда вставляются ссылки на пакеты для работы с другими платами, например такими основанными на ESP8266 или ATtiny85.
Вкладка “Правка”
Во вкладке Правка ничего такого особенного нет, всё как в других программах
Вкладка “Скетч”
Вкладка “Скетч”
- Проверить/компилировать – то же, что кнопка галочка
- Загрузка – то же, что кнопка загрузка
- Загрузить через программатор – загрузить скетч напрямую в МК, минуя загрузчик
- Экспорт бинарного файла – сохраняет скомпилированный файл, который и загружается в МК. Бинарный файл хорош тем, что содержащийся в нём код практически невозможно не то что отредактировать, но даже прочитать как вменяемый код. Именно в таком виде обычно поставляются прошивки для цифровой техники, чтобы никто не видел исходник =)
- Показать папку скетча
- Подключить библиотеку – подключает в код библиотеку, с директивой include, всё как нужно
- Управлять библиотеками… – открывает менеджер библиотек, из которого можно установить библиотеки из официального списка
- Добавить .zip библиотеку – не рекомендую так делать, потом не найдёте, куда она установилась
- Добавить файл… – подключает в код внешний файл
Вкладка “Инструменты”
Вкладка “Инструменты”
- АвтоФорматирование – выравнивает код по табуляции. Крайне важная фишка, используйте её и комбинацию Ctrl+T как можно чаще
- Архивировать скетч – сохраняет скетч как .zip архив
- Исправить кодировку и перезагрузить – полезная штука, когда скачал чей-то код из интернета, а там поехала кодировка
- Управлять библиотеками… – открывает менеджер библиотек, из которого можно установить библиотеки из официального списка
- Монитор порта
- Плоттер по последовательному соединению – встроенный построитель графиков по идущим в порт данным
- Плата – выбор платы, куда хотим загрузить прошивку
- Процессор – выбор процессора, который стоит на плате. Обычно он один на выбор, но иногда есть варианты
- Порт – COM порт, к которому подключена плата. Это всегда порт, отличный от COM1 (системный порт)
- Программатор – выбор программатора для загрузки кода через программатор
- Записать загрузчик – прошивает загрузчик, соответствующий выбранной плате и процессору в микроконтроллер при помощи программатора (который ISP)
Меню вкладок
Меню вкладок
Система вкладок в Arduino IDE работает крайне необычным образом и очень отличается от понятия вкладок в других программах:
- Вкладки относятся к одному и тому же проекту, к файлам, находящимся с ним в одной папке
- Вкладки просто разбивают общий код на части, то есть в одной вкладке фигурная скобка { может открыться, а в следующей – закрыться }. При компиляции все вкладки просто объединяются в один текст по порядку слева направо (с левой вкладки до правой). Также это означает, что вкладки должны содержать код, относящийся только к этому проекту, и сделать в одной вкладке void loop() и в другой – нельзя, так как loop() может быть только один
- Вкладки автоматически располагаются в алфавитном порядке, поэтому создаваемая вкладка может оказаться между другими уже существующими. Это означает, что разбивать блоки кода по разным вкладкам (как во втором пункте, { на одной вкладке, } на другой вкладке) – крайне не рекомендуется.
- Также не забываем, что переменная должна быть объявлена до своего вызова, то есть вкладка с объявлением переменной должна быть левее вкладки, где переменная вызывается. Создавая новую вкладку нужно сразу думать, где она появится с таким именем и не будет ли из за этого проблем. Также название вкладок можно начинать с цифр и таким образом точно контролировать их порядок. Во избежание проблем с переменными, все глобальные переменные лучше объявлять в самой первой вкладке.
- Вкладки сохраняются в папке с проектом и имеют расширение .ino, при запуске любой вкладки откроется весь проект со всеми вкладками.
- Помимо “родных” .ino файлов Arduino IDE автоматически подцепляет файлы с расширениями .h (заголовочный файл), .cpp (файл реализации) и .pde (старый формат файлов Arduino IDE). Эти файлы точно так же появляются в виде вкладок, но например заголовочный файл .h не участвует в компиляци до тех пор, пока не будет вручную подключен к проекту при помощи команды include. То есть он висит как вкладка, его можно редактировать, но без подключения он так и останется просто отдельным текстом. В таких файлах обычно содержатся классы или просто отдельные массивы данных.
Аналоги Arduino IDE
Всем нетерпимо относящимся к кривой официальной IDE могу посоветовать следующие аналоги, работа в которых чем-то лучше, а чем-то хуже официальной IDE:
- Notepad++ + Arduino IDE – вполне работоспособная связка – прогерский блокнот “на максималках”, в котором ОЧЕНЬ удобно писать код, и Arduino IDE, в которой удобно выбирать железо и загружать прошивку
- PlatformIO – очень мощная взрослая среда разработки, подробнее можно почитать даже в статье у меня на сайте. Автор – не я. Лично мне платформио не понравилась. Да, есть автодополнение кода и всякие удобные фишки, но конфигурировать проект приходится вручную (в 2019 году не сделать пару кнопок для того же выбора порта – разработчики – АУ!!!), также есть проблемы с библиотеками.
- Programino IDE – вот эта среда мне довольно таки понравилась, есть автодополнение и другие удобные фичи. Единственный минус – она платная, но на всё платное можно нагуглить кряк =) Подробнее на официальном сайте
- MariaMole – интересная среда, которая вроде как больше не развивается. Количество “плюшек” примерно равно количеству “багов” и недоделок, по крайней мере так было в 2017 году. Подробнее
- B4R – среда, позволяющая программировать Арудино на языке Basic. Кому интересно – вот официальный сайт
- Visual Studio Micro – очень мощный и взрослый инструмент, являющийся плагином к Microsoft Visual Studio. Подробнее читать здесь
- XOD – очень интересная среда разработки, в которой программа составляется из нод (node) – блоков. Полностью другая концепция программирования, посмотрите обязательно. Официальный сайт
- Atmel Studio – официальная среда для программирования микроконтроллеров AVR. Никаких детских ардуиновских функций – только работа напрямую с МК, только хардкор! Подробнее можно почитать на сайте амперки
Важные страницы
- Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
- Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
- Полная документация по языку Ардуино, все встроенные функции и макро, все доступные типы данных
- Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
- Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете