Этот раздел wiki — сборник простых проектов. Если у вас без дела пылится Arduino Uno, по нашим рецептам вы за несколько минут соберёте законченное устройство. Для сборки проектов не понадобятся инструменты, кучи компонентов и даже рабочий стол — мы обойдёмся без пайки и проводов.
Все скетчи к проектам подробно прокомментированы. Вы можете просто скопировать код и получить готовое устройство. А можете проанализировать программы — в таком случае наверняка найдёте полезные трюки и лайфхаки.
Какие железки используем
Все представленные устройства собираются на базе контроллера Arduino Uno и платы Slot Shield. В зависимости от проекта к ним добавятся от одного до шести Тройка-модулей — сенсоров и индикаторов.
Контроллер
Железки и скетчи протестированы на оригинальной итальянской Arduino Uno третьей ревизии. Если у вас неоригинальная плата — вероятнее всего, проекты будут работать, но гарантировать это нельзя.
Troyka-модули
Мы используем готовые элементы в формате Тройка-модулей. У них на борту все необходимые для работы элементы и обвязка для быстрого подключения к управляющей плате. У нас на выбор более сотни модулей — от простейших светодиодов, до систем спутниковой навигации. Единый формат модулей избавит от проблем с совместимостью. Ко всем модулям написаны библиотеки, которые упростят процесс программирования и сделают код простым и прозрачным.
Slot Shield
Проекты собираются на Slot Shield. Эта плата расширения крепится поверх Ардуино и выводит гребёнки пинов на удобные разъёмы. На Slot Shield можно установить от одного до шести модулей в разных комбинациях. Новая комбинация — новое устройство.
Разумеется, вы можете повторить проекты и на обычной макетке или Troyka Shield — соедините указанные в схеме пины обычными проводами и всё заработает.
1. Электронные часы. Как собрать…
…простые часы
Настольные часы, которые состоят всего из одного модуля — четырёхразрядного индикатора. Текущее время синхронизируется с часами компьютера при перепрошивке устройства.
…часы c подстройкой времени
Простые часы, с четырёхкнопочной клавиатурой. Кнопками можно изменить текущее время — отдельно часы и минуты.
…автономные часы
Электронный гаджет с модулем часов реального времени. На модуле предусмотрена батарейка, часы не собьются даже при отключении питания. Время настраивается с помощью четырёхкнопочной клавиатуры.
…электронный будильник
Часы с громкой пьезопищалкой. Текущее время и время срабатывания сигнала задаются с помощью четырёхкнопочной клавиатуры. За точность хода отвечает модуль часов реального времени.
…световой будильник
Электронный будильник с функцией имитации рассвета. За пять минут до установленного времени будильник деликатно увеличивает уровень освещённости в комнате. Сначала будит спокойным зелёным цветом, затем добавляет жёлтый, после — начинает светиться красным.
2. Метеостанция. Как собрать…
…простую станцию для компьютера
Подключим цифровой метеодатчик и выведем результаты на компьютер.
…метеостанцию с дисплеем
Метеостанция, которая выводит температуру и влажность на компактный четырёхразрядный экран.
…автономную метеостанцию с барометром
Станция для метеозаисимых людей. Гаджет выводит на экран температуру, влажность и атмосферное давление.
…метеостанцию с внешним датчиком температуры
Метеостанция, которая покажет не только температуру, влажность и атмосферное давление в помещении, но и сообщит о погоде за окном.
В этой статье я решал собрать полное пошаговое руководство для начинающих Arduino. Мы разберем что такое ардуино, что нужно для начала изучения, где скачать и как установить и настроить среду программирования, как устроен и как пользоваться языком программирования и многое другое, что необходимо для создания полноценных сложных устройств на базе семейства этих микроконтроллеров.
Тут я постараюсь дать сжатый минимум для того, что бы вы понимали принципы работы с Arduino. Для более полного погружения в мир программируемых микроконтроллеров обратите внимание на другие разделы и статьи этого сайта. Я буду оставлять ссылки на другие материалы этого сайта для более подробного изучения некоторых аспектов.
Что такое Arduino и для чего оно нужно?
Arduino — это электронный конструктор, который позволяет любому человеку создавать разнообразные электро-механические устройства. Ардуино состоит из программной и аппаратной части. Программная часть включает в себя среду разработки (программа для написания и отладки прошивок), множество готовых и удобных библиотек, упрощенный язык программирования. Аппаратная часть включает в себя большую линейку микроконтроллеров и готовых модулей для них. Благодаря этому, работать с Arduino очень просто!
С помощью ардуино можно обучаться программированию, электротехнике и механике. Но это не просто обучающий конструктор. На его основе вы сможете сделать действительно полезные устройства. Начиная с простых мигалок, метеостанций, систем автоматизации и заканчивая системой умного дома, ЧПУ станками и беспилотными летательными аппаратами. Возможности не ограничиваются даже вашей фантазией, потому что есть огромное количество инструкций и идей для реализации.
проекты на Arduino
Стартовый набор Arduino
Для того что бы начать изучать Arduino необходимо обзавестись самой платой микроконтроллера и дополнительными деталями. Лучше всего приобрести стартовый набор Ардуино, но можно и самостоятельно подобрать все необходимое. Я советую выбрать набор, потому что это проще и зачастую дешевле. Вот ссылки на лучшие наборы и на отдельные детали, которые обязательно пригодятся вам для изучения:
Базовый набор ардуино для начинающих:
Купить
Большой набор для обучения и первых проектов:
Купить
Набор дополнительных датчиков и модулей:
Купить
Ардуино Уно самая базовая и удобная модель из линейки:
Купить
Беспаечная макетная плата для удобного обучения и прототипирования:
Купить
Набор проводов с удобными коннекторами:
Купить
Комплект светодиодов:
Купить
Комплект резисторов:
Купить
Кнопки:
Купить
Потенциометры:
Купить
Среда разработки Arduino IDE
Для написания, отладки и загрузки прошивок необходимо скачать и установить Arduino IDE. Это очень простая и удобная программа. На моем сайте я уже описывал процесс загрузки, установки и настройки среды разработки. Поэтому здесь я просто оставлю ссылки на последнюю версию программы и на статью с подробной инструкцией.
Версия
Windows
Mac OS X
Linux
1.8.2
Язык программирования Ардуино
Когда у вас есть на руках плата микроконтроллера и на компьютере установлена среда разработки, вы можете приступать к написанию своих первых скетчей (прошивок). Для этого необходимо ознакомиться с языком программирования.
Для программирования Arduino используется упрощенная версия языка C++ с предопределенными функциями. Как и в других Cи-подобных языках программирования есть ряд правил написания кода. Вот самые базовые из них:
Подробнее о типах данных, функциях, переменных, операторах и языковых конструкциях вы можете узнать на странице по программированию Arduino. Вам не нужно заучивать и запоминать всю эту информацию. Вы всегда можете зайти в справочник и посмотреть синтаксис той или иной функции.
Все прошивки для Arduino должны содержать минимум 2 функции. Это setup() и loop().
Функция setup
Функция setup() выполняется в самом начале и только 1 раз сразу после включения или перезагрузки вашего устройства. Обычно в этой функции декларируют режимы пинов, открывают необходимые протоколы связи, устанавливают соединения с дополнительными модулями и настраивают подключенные библиотеки. Если для вашей прошивки ничего подобного делать не нужно, то функция все равно должна быть объявлена. Вот стандартный пример функции setup():
В этом примере просто открывается последовательный порт для связи с компьютером и пины 9 и 13 назначаются входом и выходом. Ничего сложного. Но если вам что-либо не понятно, вы всегда можете задать вопрос в комментариях ниже.
Функция loop
Функция loop() выполняется после функции setup(). Loop в переводе с английского значит «петля». Это говорит о том что функция зациклена, то есть будет выполняться снова и снова. Например микроконтроллер ATmega328, который установлен в большинстве плат Arduino, будет выполнять функцию loop около 10 000 раз в секунду (если не используются задержки и сложные вычисления). Благодаря этому у нас есть большие возможности.
Макетная плата Breadbord
Вы можете создавать простые и сложные устройства. Для удобства я советую приобрести макетную плату (Breadbord) и соединительные провода. С их помощью вам не придется паять и перепаивать провода, модули, кнопки и датчики для разных проектов и отладки. С беспаечной макетной платой разработка становится более простой, удобной и быстрой. Как работать с макетной платой я рассказывал в этом уроке. Вот список беспаечных макетных плат:
Макетная плата на 800 точек с 2 шинами питания, платой подачи питания и проводами:
Купить
Большая макетная плата на 1600 точек с 4 шинами питания:
Купить
Макетная плата на 800 точек с 2 шинами питания:
Купить
Макетная плата на 400 точек с 2 шинами питания:
Купить
Макетная плата на 170 точек:
Купить
Соединительные провода 120 штук:
Купить
Первый проект на Arduino
Давайте соберем первое устройство на базе Ардуино. Мы просто подключим тактовую кнопку и светодиод к ардуинке. Схема проекта выглядит так:
Управление яркостью светодиода
Обратите внимание на дополнительные резисторы в схеме. Один из них ограничивает ток для светодиода, а второй притягивает контакт кнопки к земле. Как это работает и зачем это нужно я объяснял в этом уроке.
Для того что бы все работало, нам надо написать скетч. Давайте сделаем так, что бы светодиод загорался после нажатия на кнопку, а после следующего нажатия гас. Вот наш первый скетч:
В этом скетче я создал дополнительную функцию debounse для подавления дребезга контактов. О дребезге контактов есть целый урок на моем сайте. Обязательно ознакомьтесь с этим материалом.
ШИМ Arduino
Широтно-импульсная модуляция (ШИМ) — это процесс управления напряжением за счет скважности сигнала. То есть используя ШИМ мы можем плавно управлять нагрузкой. Например можно плавно изменять яркость светодиода, но это изменение яркости получается не за счет уменьшения напряжения, а за счет увеличения интервалов низкого сигнала. Принцип действия ШИМ показан на этой схеме:
Когда мы подаем ШИМ на светодиод, то он начинает быстро зажигаться и гаснуть. Человеческий глаз не способен увидеть это, так как частота слишком высока. Но при съемке на видео вы скорее всего увидите моменты когда светодиод не горит. Это случится при условии что частота кадров камеры не будет кратна частоте ШИМ.
В Arduino есть встроенный широтно-импульсный модулятор. Использовать ШИМ можно только на тех пинах, которые поддерживаются микроконтроллером. Например Arduino Uno и Nano имеют по 6 ШИМ выводов: это пины D3, D5, D6, D9, D10 и D11. В других платах пины могут отличаться. Вы можете найти описание интересующей вас платы в этом разделе.
Для использования ШИМ в Arduino есть функция analogWrite(). Она принимает в качестве аргументов номер пина и значение ШИМ от 0 до 255. 0 — это 0% заполнения высоким сигналом, а 255 это 100%. Давайте для примера напишем простой скетч. Сделаем так, что бы светодиод плавно загорался, ждал одну секунду и так же плавно угасал и так до бесконечности. Вот пример использования этой функции:
Аналоговые входы Arduino
Как мы уже знаем, цифровые пины могут быть как входом так и выходом и принимать/отдавать только 2 значения: HIGH и LOW. Аналоговые пины могут только принимать сигнал. И в отличии от цифровых входов аналоговые измеряют напряжение поступающего сигнала. В большинстве плат ардуино стоит 10 битный аналогово-цифровой преобразователь. Это значит что 0 считывается как 0 а 5 В считываются как значение 1023. То есть аналоговые входы измеряют, подаваемое на них напряжение, с точностью до 0,005 вольт. Благодаря этому мы можем подключать разнообразные датчики и резисторы (терморезисторы, фоторезисторы) и считывать аналоговый сигнал с них.
Для этих целей в Ардуино есть функция analogRead(). Для примера подключим фоторезистор к ардуино и напишем простейший скетч, в котором мы будем считывать показания и отправлять их в монитор порта. Вот так выглядит наше устройство:
Подключение фоторезистора к Ардуино
В схеме присутствует стягивающий резистор на 10 КОм. Он нужен для того что бы избежать наводок и помех. Теперь посмотрим на скетч:
Вот так из двух простейших элементов и четырех строк кода мы сделали датчик освещенности. На базе этого устройства мы можем сделать умный светильник или ночник. Очень простое и полезное устройство.
Вот мы и рассмотрели основы работы с Arduino. Теперь вы можете сделать простейшие проекты. Что бы продолжить обучение и освоить все тонкости, я советую прочитать книги по ардуино и пройти бесплатный обучающий курс. После этого вы сможете делать самые сложные проекты, которые только сможете придумать.
19 комментариев
дело в том, что легче написать новую прошивку, чем разбираться в прошивке, а для этого надо понимать, как работает ваше устройство! т.е. надо работать вместе программист, и пользователь! иначе никак! илли 2 способ- изучите программирование, и пишите сами что вам надо! поверьте- это не так сложно!
Хороший сайт. Спасибо.
Благодарен автору за полезное дело. Помогать учиться, это самое лучшее занятие для человека.
Что такое цифровая драм-машина или иначе бит-машина слышали наверное все. Совсем другое дело электромеханическая драм-машина, созданая норвежским композитором Koka Nikoladze. В ней звук формируется за счет механического воздействия. Машинка работает под управлением Arduino, который позволяет запрограммировать мелодию для исполнения.
Программирование Arduino-совместимой платы на Javascript
Вы слышали про Arduino и вам хочется поскорее разобраться с ней, чтобы сделать свое устройство, робота или что там еще придумали. Помигать светодиодом вы сможете уже в первый вечер, но на создание более сложного гаджета уйдет куда больше времени. Впереди долгие недели и даже месяцы изучения программирования на C, поиск совместимых библиотек и модулей, костылей и превозмогания трудностей. Как ускорить процесс? Начните с Arduino совместимой платы, которую можно программировать на JavaScript.
Компания Амперка создала Arduino совместимую плату Iskra JS, которая программируется на JavaScript прямо из-под браузера. Многие находят, что JavaScript куда более дружелюбен к новичкам нежели хардкорный C. Объектно-ориентированная природа JavaScript отлично ложится в концепцию создания не только сайтов, но и настоящих гаджетов.
Собираем кубик Рубика за 0.887с
Система Sub1 установила новый рекорд по скоростной сброрке кубика Рубика. Новый рекорд 0.887с.
Что из себя представляет система Sub1? Кубик удерживается 6-тью высокоскоростными шаговыми моторами, по одному на каждую сторону. По команде с двух камер убираются шторки и они делают по 3 снимка. Данные передаются на компьютер, где рассчитывается решение с помощью двухфазного алгоритма Коцембы. После чего отдаются команды на Arduino-совместимый микроконтроллер, управлающий моторами. К сожалению, других подробностей не известно.
Контроль влажности в подвале
Проект по контролю влажности в подвале. И дея состоит в том чтобы измерить температуру и относительную влажность в подвале и на улице, на основании температуры и относительной влажности рассчитать абсолютную влажность и принять решение о включении вытяжного вентилятора в подвале
OLED дисплей + ChipKit MAX32
Автор: Юрис Гризанс, 2014
Возникла необходимость в небольшом жидкокристаллическом дисплее. В одном Интернет магазине нашел просто изумительный вариант[1]. Во-первых, продукт в виде модуля со штыревым разъемом, что облегчает работу. Во-вторых, всего за 5 долларов. В результате купил сразу три штуки. Однако, подключив устройство, убедился в тезисе, что наличие официального описания не гарантирует приятной и легкой работы. В процессе освоения всплыли различные мелкие нюансы, без учета которых положительного результата не получить. Вот об этом я в статье и расскажу.
О производстве Arduino
Перевод интересной и наглядной статьи о производстве Arduino контроллеров появился на Хабре. Автор (Andrew Huang) посетил завод в Скарманьо, Италия и выложил много фотографии и немного видео, показывающих разные этапы производственного цикла.
Саму статью на русском можно найти здесь http://habrahabr.ru/post/149855/.
На фотографии готовые печатные платы для Leonardo
Arduino в руках художников. Простая и очень красивая инсталляция на базе Arduino
Вот такую штуку ребята собрали для выставки «ПСП: Притащи свой проектор», которую сами же организовали на минувших выходных в Москве на Красном Октябре. Сама сборка очень простая, Ардуино + MotorShield. Код можно посмотреть внизу
Оправка смс через Siemens S45 c помощью Arduino, а также Zyxel Keenetic 4G, Arduino и датчика температуры ds18b20
Автор идеи под никнеймом Rimidalw в своем блоге продемострировал простой способ посылать смс c Arduino через сотовый телефон. Схема подключения очень проста, и помимо Arduino и самого телефона Siemens S45, потребует еще два резистора и кабель, который он позаимствовал у зарядного устройства, плюс немного колдовства.
В своем примере Rimidalw отправляет команду через Serial-monitor на Arduino, который в свою очередь осуществляет отправку SMS через телефон.
Робот, балансирующий на шаре
Двухколесный балансирующий робот на Arduino
Шон Крэмтон (Shaun Crampton) продемострировал свой прототип двухколлесного балансирующего робота ArduRoller.
Анализатор спектра звука на Arduino
Интересный проект представил Paul Bishop — Arduino как анализатор звукового спектра с выводом спектрограммы на телевизор. На самом деле не телевизор, а экран DVD-плеера, но способ вывода абсолютно тот же. Для вывода была использована Arduino библиотека TVout, которая позволяет выводить сигнал на телевизор через RCA коннектор в формате PAL или NTSC. Картинка черно-белая и идет с разрешением 128х96. При таком разрешение на экран можно вывести 12 строк по 16 символов при размере шрифта 8х8.
Paul использовал контроллер Adafruit Boarduino, но подойдет любой 5 вольтовый, кроме самых старых моделей Arduino на Atmel ATmega168, так как у них просто недостаточно памяти.
Робот, управляемый по Wi-Fi, на базе роутера и Arduino
Как видно на видео и по фотографиям, эта самоделка состоит из беспроводного Wi-Fi роутера и Arduino Duemilanove. Испанские ребята сумели объединить эти два компонента и добились радиоуправелния Arduino по WLAN. Роутер, который они взяли, —AGA AGPF c USB портом. К сожалению сайт испанских самодельщиков на их родном языке, поэтому все детали сборки нам не известны. Известно то, что в роутер была залита новая прошивка, которая является облегченной сборкой Linux — mini Debian. Подключен Arduino к USB порту на роутере, откуда получает питание и команды через Serial интерфейс. Роутер в свою очередь получает команды через Wi-Fi.
Оригами лампа с емкостным сенсором
Роботизированная рука под управлением Arduino
Arduino, самодельная перчатка с 5-тью зашитыми датчиками изгиба, 5 сервоприводов HITEC HS-81 и механическая рука. Как все это работает можно посмотреть на видео. Arduino cчитывает данные с датчиков изгиба и управляет сервомоторчиками так, чтобы механическая рука повторяла движения кисти человека. Кстати, в первом видео автор использует готовый набор механики руки, который можно купить на ebay, правда без электронных компонентов и приводов. В другом проекте автор сделал подобную руку из подручных материалов.
Arduino и RGB светодиодная матрица 8х8
В этом проекте автор покажет, как можно подключить полноцветную светодиодную матрицу 8×8 к Arduino. Сама матрица имеет 32 входа: 8 анодов, 8 катодов красного цвета, 8 зеленого и 8 синего. При этом для управления матрицей будут задействованы всего 3 выхода на Arduino. Никакой магии тут нет, а есть 4 сдвиговых регистра 74HC595.
Более подробно об использовании 74HC59 с Arduino можно почитать в инструкции Использование сдвигового регистра 74HC595 для увеличения количества выходов.
Один регистр дает нам 8 выходов, так как у нашей матрицы 32 входа, в проекте использована техника каскадирования сдвиговых регистров. Нам понадобится 4 регистра 74HC59, при этом количество подключений к Arduino не изменится и будут задействованы 3 выхода на Arduino.
Пишем в воздухе светодиодами
Все, наверное, знают об эффекте возникающей надписи или рисунка при быстром перемещении планки, иногда диска с полосой светодиодов, которые загораются специально синхронизированным образом. Эффект называется персистенция. Сам эффект основан на инерции человеческого глаза. Для того чтобы возник такой эффект, светодиоды должны загораться в определенные моменты времени так, чтобы они светили в фиксированных точках пространства при перемещении влево-вправо.
В конструкции, о которой пойдет речь, автором был использован акселерометр на монтажной плате с планкой светодиодов и Arduino Diecimila для управления. Питание осуществляется по USB, но можно подключить и автономное.
Остановить мгновение. Фототриггер на Arduino
Cтрого говоря, Arduino будет управлять не затвором камеры, а фотовспышкой. К сожалению, задержка реакции камеры на сигнал — в районе 20 миллисекунд, что для человеческого глаза не заметно, но все же дольше, чем можно себе позволить при съемке лопнувшего шарика. Поэтому съемка производится в темной комнате с выдержкой 10 секунд, а вот вспышка срабатывает именно в нужный момент. Так как в комнате практически нет освещения, то всё экспонирование фотографии произойдет именно в момент работы вспышки (около 1 миллисекунды).
Управление фотовспышкой с помощью Arduino контроллера
В данном проекте мы расскажем, как управлять фотовспышкой с помощью контроллера Arduino. Для управления вспышкой понадобится «горячий башмак», через который мы будем подавать синхросигнал. В данной сборке используется башмак со стандартным разъемом под 1/8-дюймовый штекер. A вообще можно использовать любой другой башмак. Сигналом для вспышки в подавляющем большинстве служит замыкание контактов синхрокабеля. Для гальванической развязки цепи вспышки и цепи Arduino используется оптопара (характеристики). Использование оптопары позволят изолировать контроллер от возможных скачков напряжения при срабатывании вспышки, что особенно характерно для старых вспышек.