Электрификация

Справочник домашнего мастера

Проекты на ардуино

В этой статье вы найдете обзор инженерных проектов ардуино с кратким описанием каждого из них. Мы постарались не просто рассказать о проектах для начинающих, но и дать краткие комментарии с примерами и схемами реализации. Большинство проектов могут быть созданы с контроллерами 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-интерфейс (через браузер) или с использованием соответствующего мобильного приложения (можно написать самому или выбрать одну из готовых платформ).
  • Всевозможные системы учета: воды, тепла, электроэнергии. Начинающим доступны любительские датчики напора воды, температуры, влажности, силы тока. Можно использовать и профессиональные приборы, взаимодействуя с ними по одному из промышленных протоколов. Полученные данные можно собирать локально или отправлять в облако для последующего анализа.
  • Охранные системы и контролирование внештатных ситуаций. Здесь понадобится различные датчики присутствия, движения, звука, магнитные датчики Холла и другие. Естественно, не обойтись без коммуникаций и возможности быстрой передачи информации владельцу через интернет.

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

Проекты «Зеленой робототехники»

Юные ардуинщики, живущие в небольших городах и сельской местности, где много природы и не очень много «цивилизации», могут с успехом использовать ардуино для исследования и охраны природы, а также автоматизации сельского хозяйства. Вот некоторые из идей проектов, которые можно реализовывать своими силами на уровне прототипов и готовых решений:

  • Умная теплица
  • Полив растений
  • Умный инкубатор
  • Умный улей
  • Антигрызуны
  • Умный агроном
  • Умный ошейник для животных
  • Расширенная метеостанция
  • Робот – сеяльщик
  • Счетчик муравьев

Проекты с дронами: аэрофотосъемка, внесение удобрений.

Большинство электронщиков предпочитают строить свои проекты на основе микроконтроллера Аrduino uno, о которой и мы писали уже несколько раз. В статье далее мы рассмотрим простые конструкции электронных устройств для начинающих и самые необычные проекты, в основе которых лежит упомянутый микроконтроллер.

Особенности проектов на Ардуино уно

Для начала стоит познакомиться с функционалом микропроцессора Ардуино уно, на котором строится большинство проектов, а также рассмотреть причины выбора данного приспособления. Ниже описаны факторы, по которым начинающему изобретателю стоит остановиться на Аrduino uno:

  1. Довольно простой в использовании интерфейс. Понятно, где какой контакт, и к чему прикреплять соединительные провода.
  2. Чип на плате подключается прямо к USB-порту. Преимущество этой установки заключается в том, что последовательная связь – это очень простой протокол, который проверен временем, а USB делает соединение с современными компьютерами очень удобным.
  3. Легко найти центральную часть микроконтроллера, которая представляет собой чип ATmega328. Он имеет больше аппаратных функций, таких как таймеры, внешние и внутренние прерывания, пины PWM и несколько режимов ожидания.
  4. Устройство с открытым исходным кодом, поэтому большое количество радиолюбителей могут исправить баги и неполадки в программном обеспечении. Это облегчает отладку проектов.
  5. Тактовая частота равна 16 МГц, что достаточно быстро для большинства приложений и не ускоряет работу микроконтроллера.
  6. Очень удобно управлять мощностью внутри него, и она имеет функцию встроенного регулирования напряжения. Также микроконтроллер можно отключить от USB-порта без внешнего источника питания. Можно подключить внешний источник питания до 12 В. Причем микропроцессор сам определит нужное напряжение.
  7. Наличие 13 цифровых контактов и 6 аналоговых контактов. Эти пины позволяют подключать оборудование к плате Arduino uno со стороннего носителя. Контакты используются в качестве ключа для расширения вычислительной способности Arduino uno в реальном мире. Просто подключите свои электронные устройства и датчики к разъемам, которые соответствуют каждому из этих контактов.
  8. Имеется в наличии разъем ICSP для обхода USB-порта и сопряжения с Arduino напрямую в качестве последовательного устройства. Этот порт необходим, чтобы перезагрузить чип, если он поврежден и больше не может использоваться на вашем компьютере.
  9. Наличие 32 КБ флэш-памяти для хранения кода разработчика.
  10. Светодиод на плате подключается к цифровому контакту 13 для быстрой отладки кода и упрощения этого процесса.
  11. Наконец, у него есть кнопка для сброса программы на чипе.

Arduino был создан в 2005 году двумя итальянскими инженерами – Дэвидом Куартиллесом и Массимо Банзи с целью, чтобы ученики научились программировать микроконтроллер Arduino uno и улучшить свои навыки в области электроники и использовать их в реальном мире.

Arduino uno может воспринимать окружающую среду, получая вход от различных датчиков, и способен влиять на окружающую среду, контролируя свет, двигатели и другие исполнительные механизмы. Микроконтроллер запрограммирован с использованием языка программирования Arduino (на основе проводки) и среды разработки Arduino (на основе обработки).

Теперь переходим непосредственно к проектам на Аrduino uno.

Самый простой проект для начинающих

Рассмотрим несколько простых и интересных проектов Ардуино uno, которые под силу сделать даже новичкам в этом деле — система сигнализации.

Мы уже делали урок по этому проекту — Датчик движения с Arduino, HC-SR04 и светодиодом (LED). Вкратце о то, что делается и как.

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

Он является библиотекой Arduino, которая помогает вам контролировать и тестировать ваш датчик расстояния сонара. Хотя это не совсем целая защита дома, она предлагает идеальное решение для защиты небольших помещений, таких как спальни и ванные комнаты.

Для этого проекта вам понадобятся:

  1. Ультразвуковой датчик «пинг» – HC-SR04.
  2. Пьезо-зуммер.
  3. Светодиодная лента.
  4. Автомобильное освещение посредством ленты RGB. В этом руководстве по проекту Arduino вы узнаете, как сделать внутреннее освещение автомобиля RGB, используя плату Arduino uno.

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

Вы можете изменить цвет освещения с помощью устройства Android (телефон или планшет) с помощью приложения «Bluetooth RGB Controller» (Dev Next Prototypes), которое вы можете бесплатно загрузить с Android Play Store. Также вы можете найти схему электронной EasyEDA или заказать свою собственную схему на основе Arduino на печатной плате.

Удивительные проекты на Ардуино Уно

Большинство профессионалов в сфере разработки электронных проектов на Аrduino uno любят экспериментировать. Вследствие этого появляются интересные и удивительные устройства, которые рассмотрены ниже:

  1. Добавление ИК-пульта в акустическую систему. В бытовой электронике пульт дистанционного управления является компонентом электронного устройства, такого как телевизор, DVD-плеер или другой бытовой прибор, используемый для беспроводного управления устройством с короткого расстояния. Пульт дистанционного управления, в первую очередь, удобен для человека и позволяет работать с устройствами, которые не подходят для непосредственной работы элементов управления.
  2. Будильник. Часы реального времени используются для получения точного времени. Здесь эта система отображает дату и время на ЖК-дисплее, и мы можем установить будильник с помощью кнопок управления. Как только время сигнала тревоги наступит, система подает звуковой сигнал.
  3. Шаговый двигатель. Шаговый двигатель означает точный двигатель, который можно поворачивать на один шаг за раз. Такое устройство делают с помощью робототехники, 3D-принтеров и станков с ЧПУ.

    — Для этого проекта возьмите самый дешевый шаговый двигатель, который вы можете найти. Двигатели доступны в режиме онлайн. В этом проекте используется шагомер 28byj-48, который подходит для большинства других подобных проектов. Его легко подключить к плате Arduino.
    — Вам понадобятся 6 кабелей с разъемами типа «женщина-мужчина». Вам просто нужно подключить двигатель к плате, и все! Вы также можете добавить небольшую часть ленты на вращающуюся головку, чтобы увидеть, что она производит вращательные движения.

  4. Ультразвуковой датчик расстояния. В этом проекте используется популярный ультразвуковой датчик HC-SR04, чтобы устройство могло избежать препятствий и двигаться в разных направлениях.

Когда вы закончите работу, на экране появится результат ваших действий. Чтобы все было просто и понятно, рекомендуется использовать ЖК-дисплей с конвертером I2C, поэтому вам нужно всего лишь 4 кабеля для подключения к плате Arduino.

Arduino для начинающих


Arduino представляет собой плату с микроконтроллером, которую вы можете программировать, чтобы управлять внешними устройствами. Он взаимодействует с внешним миром через датчики, двигатели, светодиоды, динамики… и даже Интернет, что делает его гибкой платформой для разных проектов. Есть довольно много микроконтроллеров, но Arduino популярен благодаря тому, что в интернете очень активно выкладываются и обсуждаются различные проекты. Если вы поищете в google или youtube, вы найдёте миллионы идей и информации чтобы начать осваивать Arduino самостоятельно.
Даже если вы не имеете опыта программирования микроконтроллеров –с Arduino вы быстро научитесь и узнаете что-то об электронике с помощью экспериментов.
Что вам понадобится для начала?
Arduino Uno- 1шт
Usb кабель-1шт
Перемычки 1шт
Макетная плата 1шт
Красный светодиод 4 шт
Резистор 220 Ом 4шт
Резистор 10 ком 1шт
Кнопка без фиксации
Потенциометр
RGB светодиод с общим катодом
Все это можно купить в местном радиомагазине или заказать в интернете.
Для демонстрации и симуляции электрических цепей был использован онлайн симулятор 123D circuits
Этот симулятор лучше всего работает в браузере Chrome
Давайте рассмотрим Arduino по внимательней.
Arduino это не большой компьютер, к которому могут подключаться внешние цепи. В Arduino Uno используется Atmega 328P
Это самый большой чип на плате. Этот чип выполняет программы, которые хранятся в его памяти. Вы можете загрузить программу через usb с помощью Arduino IDE. Usb порт также обеспечивает питание arduino.
Есть отдельный разъём питания. На плате есть два вывода обозначенные 5v и 3.3v, которые нужны для того, чтобы запитывать различные устройства. Так же вы найдете контакты, помеченные как GND, это выводы земли (земля это 0В). Платформа Arduino, так же, имеет 14 цифровых выводов (пинов), помеченных цифрами от 0 до 13, которые подключаются к внешним узлам и имеют два состояния высокое или низкое (включено или выключено). Эти контакты могут работать как выходы или как входы, т.е. они могут либо передавать какие-то данные и управлять внешними устройствами, либо получать данные с устройств. Следующие выводы на плате обозначены А0-А5. Это аналоговые входы, которые могут принимать данные с различных датчиков. Это особенно удобно, когда вам надо измерить некий диапазон, например температуру. У аналоговых входов есть дополнительные функции, которые можно задействовать отдельно.

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

Все нижеследующие примеры собраны на макетной плате, чтобы можно было быстро вносить изменения в схему и повторно использовать детали не заморачиваясь с пайкой.
В макетной плате есть ряды отверстий, в которые вы можете вставлять детали и провода. Некоторые из этих отверстий электрически соединены друг с другом.
Два верхних и нижних ряда соединены по — рядно вдоль всей платы. Эти ряды используются, чтобы подавать питание на схему. Это может быть 5в или 3.3в, но в любом случае, первое, что вам надо сделать — это подключить 5в и GND на макетную плату, как показано на рисунке. Иногда эти соединения рядов могут прерываться посередине платы, тогда, если вам понадобится, вы можете их соединить, как показано на рисунке.



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

Для чего нужен резистор в схеме? В данном случае он ограничивает ток, который проходит через светодиод. Каждый светодиод рассчитан на определённый ток, и если этот ток будет больше, то светодиод выйдет из строя. Узнать, какого номинала должен быть резистор можно с помощью закона ома. Для тех кто не знает или забыл, закон ома говорит, что существует линейная зависимость тока от напряжения. Т.е, чем больше мы приложим напряжение к резистору, тем больше потечет через него ток.
V=I*R
Где V-напряжение на резистор
I- ток через резистор
R- сопротивление, которое надо найти.
Во-первых, мы должны узнать напряжение на резистор. Большинство светодиодов 3мм или 5мм, которые вы будете использовать, имеют рабочее напряжение 3в. Значит, на резисторе нам надо погасить 5-3=2в.
Затем мы вычислим ток, проходящий через резистор.
Большинство 3 и 5мм светодиодов светятся полной яркостью при токе 20мА. Ток больше этого может вывести их из строя, а ток меньшей силы снизит их яркость, не причинив никакого вреда.
Итак, мы хотим включить светодиод в цепь 5в,чтобы на нем был ток 20мА. Так как все детали включены в одну цепь на резистор тоже будет ток 20мА.
Мы получаем
2В = 20 мА * R
2В = 0.02A * R
R = 100 Ом
100 Ом это минимальное сопротивление, лучше использовать немного больше, потому, что светодиоды имеют некоторый разброс характеристик.
В данном примере используется резистор 220 Ом. Только потому, что у автора их очень много 😉 .
Вставьте светодиод в отверстия посередине платы таким образом, чтобы его длинный вывод был соединён с одним из выводов резистора. Второй конец резистора соедините с 5V, а второй вывод светодиода соедините с GND. Светодиод должен загореться.
Обратите внимание, что есть разница, как соединять светодиод. Ток течёт от более длинного вывода к более короткому. На схеме это можно представить, что ток течёт в ту сторону, куда направлен треугольник. Попробуйте перевернуть светодиод и вы увидите, что он не будет светиться.
А вот как вы будете соединять резистор, разницы совсем нет. Можете его перевернуть или попробовать подсоединить к другому выводу светодиода, это не повлияет на работу схемы. Он все так же будет ограничивать ток через светодиод.
Анатомия Arduino Sketch.
Программы для Arduino называют sketch. Они состоят из двух основных функций. Функция setup и функция loop
Setup () внутри этой функции вы будете задавать все основные настройки. Какие выводы будут работать на вход или выход, какие библиотеки подключать, инициализировать переменные. Функция Setup() запускается только один раз в течение скетча, когда стартует выполнение программы.
Loop() это основная функция, которая выполняется после setup(). Фактически это сама программа. Это функция будет выполняться бесконечно, пока вы не выключите питание.
Arduino мигает светодиодом
В этом примере мы соединим схему со светодиодом к одному из цифровых выводов Arduino и будем включать и выключать его с помощью программы, а так же вы узнаете несколько полезных функций.
pinMode (pinNumber, mode)- эта функция используется в setup () части программы и служит для инициализации выводов, которые вы будете использовать, как вход (INPUT) или выход (OUTPUT). Вы не сможете считать или записать данные с пина, пока не установите его соответственно в pinMode. Эта функция имеет два аргумента: pinNumber- это номер пина, который вы будете использовать.
Mode-задает, как пин будет работать. На вход (INPUT) или выход (OUTPUT). Чтобы зажечь светодиод мы должны подать сигнал ИЗ Arduino. Для этого мы настраиваем пин на выход.
digitalWrite(pinNumber,state)- эта функция служит для того, чтобы задать состояние (state) пина (pinNumber). Есть два основных состояния (вообще их 3), одно это HIGH, на пине будет 5в, другое это Low и на пине будет 0в. Значит, чтобы зажечь светодиод нам надо на пине , соединенном со светодиодом выставить высокий уровень HIGH.
delay(timeInMs)- задержка. Служит для задержки работы программы на заданный в мсек период.
Ниже приведен код, который заставляет мигать светодиод.
//LED Blink int ledPin = 7;//пин Arduino к которому подключен светодиод void setup() { pinMode(ledPin, OUTPUT);// установка пина как ВЫХОД } void loop() { digitalWrite(ledPin, HIGH);//зажечь светодиод delay(1000);// задержка 1000 мсек (1 сек) digitalWrite(ledPin, LOW);//Выключить светодиод delay(1000);//ждать 1 сек }
Небольшие пояснения по коду.
Строки, которые начинаются с «//» это комментарии Arduino их игнорирует.
Все команды заканчиваются точкой с запятой, если вы их забудете, то получите сообщение об ошибке.
ledPin- это переменная. Переменные используются в программах для хранения значений. В данном примере переменной ledPin присваивается значение 7, это номер пина Arduino. Когда Arduino в программе встретит строку с переменной ledPin , он будет использовать то значение, которое мы указали ранее.
Так запись pinMode(ledPin, OUTPUT) аналогична записи pinMode(7, OUTPUT).
Но в первом случае вам достаточно поменять переменную и она поменяется в каждой строке, где используется, а во втором случае вам, чтобы поменять переменную, придётся ручками в каждой команде вносить изменения.
INT в первой строке указывает на тип переменной. При программировании Arduino важно всегда объявлять тип переменных. Пока вам достаточно знать, что INT объявляет отрицательные и положительные числа.

Ниже представлено моделирование скетча. Нажмите старт, чтобы посмотреть работу схемы.
Как и ожидалось, светодиод гаснет и загорается через одну секунду. Попробуйте поменять задержку, чтобы посмотреть, как она работает.
Управление несколькими светодиодами.
В этом примере вы узнаете, как управлять несколькими светодиодами. Для этого установите ещё 3 светодиода на плату и соедините их с резисторами и выводами Arduino, как показано ниже.
Для того, чтобы включать и выключать светодиоды по очереди надо написать программу подобную этой:
//Multi LED Blink int led1Pin = 4; int led2Pin = 5; int led3Pin = 6; int led4Pin = 7; void setup() { //установка пинов как ВЫХОД pinMode(led1Pin, OUTPUT); pinMode(led2Pin, OUTPUT); pinMode(led3Pin, OUTPUT); pinMode(led4Pin, OUTPUT); } void loop() { digitalWrite(led1Pin, HIGH);//зажечь светодиод delay(1000);//задержка 1 сек digitalWrite(led1Pin, LOW);//потушить светодиод delay(1000);//задержка 1 сек //do the same for the other 3 LEDs digitalWrite(led2Pin, HIGH);//зажечь светодиод delay(1000);// задержка 1 сек digitalWrite(led2Pin, LOW);//потушить светодиод delay(1000);//задержка 1 сек digitalWrite(led3Pin, HIGH);//зажечь светодиод delay(1000);// задержка 1 сек digitalWrite(led3Pin, LOW);//потушить светодиод delay(1000);//задержка 1 сек digitalWrite(led4Pin, HIGH);//зажечь светодиод delay(1000);// задержка 1 сек digitalWrite(led4Pin, LOW);//потушить светодиод delay(1000);//задержка 1 сек }
Эта программа будет отлично работать, но это не самое рациональное решение. Код надо изменить. Для того, чтобы программа работала раз за разом мы применим конструкцию, которая называется цикл For.
Циклы удобны, когда надо повторить одно и тоже действие несколько раз. В коде, проведенном выше мы повторяем строки
digitalWrite (led4Pin, HIGH); delay (1000); digitalWrite (led4Pin, LOW); delay (1000);
полный код скетча во вложении for.zip (скачиваний: 1419)
Регулировка яркости светодиодов
Иногда вам надо будет менять яркость светодиодов в программе. Это можно сделать с помощью команды analogWrite(). Эта команда так быстро включает и выключает светодиод, что глаз не видит это мерцание. Если светодиод половину времени будет включён, а половину выключен, то визуально будет казаться, что он светится в половину своей яркости. Это называется широтно-импульсная модуляция (ШИМ или PWM по-английски). Шим применяется довольно часто, так как с ее помощью можно управлять «аналоговым» компонентом с помощью цифрового кода. Не все выводы Arduino подходят для этих целей. Только те выводы, около которых нарисовано такое обозначение «~». Вы увидите его рядом с выводами 3,5,6,9,10,11.
Соедините один из ваших светодиодов с одним из выводов ШИМ(у автора это вывод 9). Теперь запуститьскетч мигания светодиода, но прежде измените команду digitalWrite() на analogWrite(). analogWrite() имеет два аргумента: первый это номер вывода, а второй- значение ШИМ (0-255), применительно к светодиодам это будет их яркость свечения, а для электродвигателей скорость вращения. Ниже представлен код примера для разной яркости светодиода.
//Меняем яркость светодиода int ledPin = 9;//к этому выводу подсоединен светодиод void setup() { pinMode(ledPin, OUTPUT);// инициализация пина на вывод } void loop() { analogWrite(ledPin, 255);//полная яркость (255/255 = 1) delay(1000);// пауза 1 сек digitalWrite(ledPin, LOW);//выключить светодиод delay(1000);//пауза 1 сек analogWrite(ledPin, 191);//яркость на 3/4 (191/255 ~= 0.75) delay(1000);//пауза 1 сек digitalWrite(ledPin, LOW);//выключить светодиод delay(1000);//пауза 1 сек analogWrite(ledPin, 127);//половина яркости (127/255 ~= 0.5) delay(1000);// пауза 1 сек digitalWrite(ledPin, LOW);//выключить светодиод delay(1000);//пауза 1 сек analogWrite(ledPin, 63);//четверть яркости (63/255 ~= 0.25) delay(1000);// пауза 1 сек digitalWrite(ledPin, LOW);//выключить светодиод delay(1000);//пауза 1 сек }
Попробуйте поменять значение ШИМ в команде analogWrite (),чтобы увидеть, как это влияет на яркость.
Далее вы узнаете, как регулировать яркость плавно от полной до нулевой. Можно ,конечно, скопировать кусок кода 255 раз
analogWrite(ledPin, brightness); delay(5);//short delay brightness = brightness + 1;
Но, сами понимаете — это будет не практично. Для этого лучше всего использовать цикл FOR, который использовали ранее.
В следующем примере используются два цикла, один для уменьшения яркости от 255 до 0
for (int brightness=0;brightness=0;brightness—){ analogWrite(ledPin,brightness); delay(5); }
delay(5) используется, чтобы замедлить скорость нарастания и уменьшения яркости 5*256=1280 мсек= 1.28 сек.)
В первой строке используется «brightness-» ,для того чтобы значение яркости уменьшалось на 1, каждый раз, когда цикл повторяется. Обратите внимание, что цикл будет работать до тех пор, пока brightness >=0.Заменив знак > на знак >= мы включили 0 в диапазон яркости. Ниже смоделирован этот скетч.//плавно меняем яркость int ledPin = 9;//к этому пину подключен светодиод void setup() { pinMode(ledPin, OUTPUT);// инициализация пина на выход } void loop() { //плавно увеличиваем яркость (0 to 255) for (int brightness=0;brightness=0;brightness—){ analogWrite(ledPin,brightness); delay(5); } delay(1000);//ждем 1 сек //плавно уменьшаем яркость (255 to 0) for (int brightness=255;brightness>=0;brightness—){ analogWrite(ledPin,brightness); delay(5); } delay(1000);//ждем 1 сек } }
Это видно не очень хорошо, но идея понятна.
RGB-светодиод и Arduino
RGB-светодиод на самом деле это три светодиода разного цвета в одном корпусе.
Включая разные светодиоды с различной яркостью можно комбинировать и получать разные цвета. Для Arduino, где количество градаций яркости равно 256 вы получите 256^3=16581375 возможных цветов. Реально их, конечно, будет меньше.
Светодиод, который мы будем использоваться общим катодом. Т.е. все три светодиода конструктивно соединены катодами к одному выводу. Этот вывод мы подсоединим к выводу GND. Остальные выводы, через ограничительные резисторы, надо подсоединить к выводам ШИМ. Автор использовал выводы 9-11.Таким образом можно будет управлять каждым светодиодом отдельно. В первом скетче показано, как включить каждый светодиод отдельно.

//RGB LED — test //pin connections int red = 9; int green = 10; int blue = 11; void setup(){ pinMode(red, OUTPUT); pinMode(blue, OUTPUT); pinMode(green, OUTPUT); } void loop(){ //включение/выключение красного светодиод digitalWrite(red, HIGH); delay(500); digitalWrite(red, LOW); delay(500); //включение/выключение зеленого светодиода digitalWrite(green, HIGH); delay(500); digitalWrite(green, LOW); delay(500); //включение/выключение синего светодиода digitalWrite(blue, HIGH); delay(500); digitalWrite(blue, LOW); delay(500); }
В следующем примере используются команды analogWrite() и random(), чтобы получать различные случайные значения яркости для светодиодов. Вы увидите разные цвета, меняющиеся случайным образом.
//RGB LED — random colors //pin connections int red = 9; int green = 10; int blue = 11; void setup(){ pinMode(red, OUTPUT); pinMode(blue, OUTPUT); pinMode(green, OUTPUT); } void loop(){ //pick a random color analogWrite(red, random(256)); analogWrite(blue, random(256)); analogWrite(green, random(256)); delay(1000);//wait one second }
Random(256)-возвращает случайное число в диапазоне от 0 до 255.
В прикрепленном файле скетч, который продемонстрирует плавные переходы цветов от красного к зеленому, затем к синему, красному, зеленому и т.д. переходы.zip (скачиваний: 389)
Пример скетча работает, но есть много повторяющегося кода. Можно упростить код, написав собственную вспомогательную функцию, которая будет плавно менять один цвет на другой.
Вот как она будет выглядеть: функция.zip (скачиваний: 423)
Давайте рассмотрим определение функции по частям. Функция называется fader и имеет два аргумента. Каждый аргумент отделяется запятой и имеет тип объявленный в первой строке определения функции: void fader (int color1, int color2). Вы видите, что оба аргумента объявлены как int, и им присвоены имена color1 и color2 в качестве условных переменных для определения функции. Void означает, что функция не возвращает никаких значений, она просто выполняет команды. Если надо было бы написать функцию, которая возвращала результат умножения это выглядело бы так :
int multiplier(int number1, int number2){ int product = number1*number2; return product; }
Обратите внимание, как мы объявили Тип int в качестве типа возвращаемого значения вместо
void.
Внутри функции идут команды, которые вы уже использовали в предыдущем скетче, только номера выводов заменили на color1 и color2. Вызывается функция fader, ее аргументы вычисляются как color1 = red и color2 = green. В архиве полный скетч с использованием функций функции.zip (скачиваний: 322)
Кнопка
В следующем скетче будет использоваться кнопка с нормально разомкнутыми контактами, без фиксации.
Это значит, что пока кнопка не нажата, ток через неё не идёт, а после отпускания, кнопка возвращается в исходное положение.
В схеме, помимо кнопки используется резистор. В данном случае он не ограничивает ток, а «подтягивает» кнопку к 0в (GND). Т.е. пока кнопка не нажата на выводе Arduino, к которому она подключена, будет низкий уровень. Резистор, используемый в схеме 10 кОм.

//определяем нажатие кнопки int buttonPin = 7; void setup(){ pinMode(buttonPin, INPUT);//инициализируем пин на вход Serial.begin(9600);//инициализируем последовательный порт } void loop(){ if (digitalRead(buttonPin)==HIGH){//если кнопка нажата Serial.println(«pressed»); // выводим надпись «pressed» } else { Serial.println(«unpressed»);// иначе «unpressed» } }
В этом скетче несколько новых команд.
digitalRead(pinNumber)-эта команда принимает значение High (высокий уровень) и low (низкий уровень), того вывода, который мы проверяем. Предварительно в setup() этот вывод надо настроить на вход.
pinMode (buttonPin, INPUT); //где buttonPin это номер вывода, куда подсоединяется кнопка.
Последовательный порт позволяет отправлять Arduino сообщения на компьютер, в то время, как сам контроллер выполняет программу. Это полезно для отладки программы, отправки сообщений на другие устройства или приложения. Чтобы включить передачу данных через последовательный порт (другое название UART или USART), надо инициализировать его в setup()
Serial.begin()
Serial.begin() имеет всего один аргумент-это скорость передачи данных между Arduino и компьютером.
скетче используется команда для вывода сообщения на экран в Arduino IDE (Tools >> Serial Monitor).
If/else- конструкция позволяют контролировать ход выполнения программы, объеденив несколько проверок в одном месте.
If(если) digitalRead возвращает значение HIGH, то на мониторе выводится слово «нажата». Else(иначе) на мониторе выводится слово » отжата» . Теперь можно попробовать включать и выключать светодиод по нажатию кнопки.
//button press detection with LED output int buttonPin = 7; int ledPin = 8; void setup(){ pinMode(buttonPin, INPUT);//this time we will set button pin as INPUT pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop(){ if (digitalRead(buttonPin)==HIGH){ digitalWrite(ledPin,HIGH); Serial.println(«pressed»); } else { digitalWrite(ledPin,LOW); Serial.println(«unpressed»); } }
Аналоговый вход.
analogRead (pinNumber) analogRead позволяет считать данные с одного из аналоговых выводов Arduino и выводит значение в диапазоне от 0 (0В) до 1023 (5В). Если напряжение на аналоговом входе будет равно 2.5В, то будет напечатано 2.5 / 5 * 1023 = 512
analogRead имеет только один аргумент- Это номер аналогового входа (А0-А5). В следующем скетче приводится код считывания напряжения с потенциометра. Для этого подключите переменный резистор, крайними выводами на пины 5V и GND, а средний вывод на вход А0.
Запустите следующий код и посмотрите в serial monitor, как меняются значения в зависимости от поворота ручки резистора.
//analog input int potPin = A0;//к этому пину подсоединяется центральный вывод потенциометра void setup(){ //аналоговый пин по умолчанию включен на вход, поэтому инициализация не нужна Serial.begin(9600); } void loop(){ int potVal = analogRead(potPin);//potVal is a number between 0 and 1023 Serial.println(potVal); }
Следующий скетч объединяет скетч нажатия кнопки и скетч управления яркостью светодиода. Светодиод будет включаться от кнопки, и управлять яркостью свечения будет потенциометр.
//button press detection with LED output and variable intensity int buttonPin = 7; int ledPin = 9; int potPin = A0; void setup(){ pinMode(buttonPin, INPUT); pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop(){ if (digitalRead(buttonPin)==HIGH){//if button pressed int analogVal = analogRead(potPin); int scaledVal = map(analogVal, 0, 1023, 0, 255); analogWrite(ledPin, scaledVal);//turn on led with intensity set by pot Serial.println(«pressed»); } else { digitalWrite(ledPin, LOW);//turn off if button is not pressed Serial.println(«unpressed»); } } Доставка новых самоделок на почту

Получайте на почту подборку новых самоделок. Никакого спама, только полезные идеи!

*Заполняя форму вы соглашаетесь на обработку персональных данных

Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. .

admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Наверх