Начало работы
Как только необходимое оборудование подготовлено, а проект разработан, можно приступать к выполнению поставленной задачи.
Этапы
При организации системы «Умный дом» на базе Ардуино, стоит действовать по следующему алгоритму:
- Инсталляция программного кода;
- Конфигурация приложения под применяемое устройство;
- Переадресация портов (для роутера);
- Проведение тестов;
- Внесение правок и так далее.
В Сети имеется весь необходимый софт на применяемое оборудование — его достаточно скачать с официального сайта и установить (ссылку смотрите выше).
Приложение позволяет увидеть информацию о датчиках. Если это требуется, настройки IP-адрес могут быть изменены.
Последовательность действий при подключении к компьютеру
Чтобы начать работать с Ардуино в Windows, сделайте следующие шаги:
- Подготовьте необходимое оборудование — USB-кабель и Arduino.
- Скачайте программу на странице arduino.cc/en/Main/Software.
- Подсоедините плату с помощью USB-кабеля. Проследите, чтобы загорелся светодиод PWR.
- Поставьте необходимый набор драйверов для работы с Ардуино. На этом этапе стоит запустить установку драйвера и дождаться завершения процесса. После жмите на кнопку «Пуск» и перейдите в панель управления. Там откройте вкладку «Система и безопасность» и выберите раздел «Система». После открытия окна выберите «Диспетчер устройств», жмите на название Ардуино и с помощью правой кнопки мышки задайте команду обновления драйвера. Найдите строчку «Browse my computer for Driver software!», кликните по ней и выберите соответствующий драйвер для вашего типа платы — ArduinoUNO.inf (находится в папке с драйверами). Это может быть UNO, Mega 2560 или другая.
- Запустите среду разработки Ардуино, для чего дважды кликните на значок с приложением.
- Откройте готовый пример (File — Examples — 1.Basics — Blink).
- Выберите плату. Для этого перейдите в секцию Tools, а дальше в Board Menu.
- Установите последовательный порт (его можно найти путем отключения и подключения кабеля).
- Скачайте скетч в Ардуино. Кликните на «Upload» и дождитесь мигания светодиодов TX и RX на плате. В завершение система показывает, что загрузка прошла успешно. Через несколько секунд после завершения работы должен загореться светодиод 13 L (он будет мигать оранжевым). Если это так, система готова к выполнению задач.
Работа с роутером
Для полноценной работы «Умного дома» важно правильно обращаться с роутером. Здесь требуется выполнить следующие действия — открыть конфигурацию, указать адрес Arduino IP, к примеру, 192.168.10.101 и открыть 80-й порт. После требуется присвоить адресу доменное имя и перейти к процессу тестирования проекта
Учтите, что для такой системы запрещено применение открытого IP-адреса, ведь в этом случае высок риск взлома через Сеть
После требуется присвоить адресу доменное имя и перейти к процессу тестирования проекта. Учтите, что для такой системы запрещено применение открытого IP-адреса, ведь в этом случае высок риск взлома через Сеть.
Этапы создания
Следует сказать, что этапы создания системы «умного дома» с привлечением специалистов или же своими руками будут одинаковыми. Правда, в последнем случае готовый вариант в целом обойдется существенно дешевле, чем если привлекать специалистов, которых на рынке и так не хватает. По этой причине зарплаты у них будут соответствующими, а значит, если вы не хотите тратить лишние средства, то можно обойтись собственными силами. Итак, начнем с комплектующих для этой системы, если вы решили все-таки создавать ее самостоятельно.
Комплектация
Если говорить о комплектации системы, то технология будет включать в себя следующий набор компонентов:
- датчик движения;
- датчик температуры и влажности;
- датчик освещенности;
- пара температурных датчиков с маркировкой DS18B20;
- Ethernet-модуль марки ENC28J60;
- микрофон;
- переключатель язычкового типа;
- реле;
- кабель типа «витая пара»;
- кабель категории Ethernet;
- резистор, имеющий сопротивление 4,7 килоома;
- микропроцессорная плата Arduino.
Алгоритм подключения
Следует сказать, что умный дом должен быть оснащен исключительно светодиодными лампочками, так как обычные варианты просто могут не выдержать большого напряжения. Когда проект будет готов, а все нужные запчасти уже приобретены, следует начать подключение датчиков и контроллеров. Делать это необходимо исключительно по схеме, созданной ранее. Контакты необходимо полностью заизолировать.
Если говорить кратко, то поэтапно алгоритм подключения будет выглядеть таким образом:
- установка кода;
- настройка приложения для ПК или мобильного;
- портовая переадресация;
- осуществление тестирования ПО и датчиков;
- устранение неисправностей, если они были выявлены при тестировании.
Итак, начнем с установки кода.
Сначала пользователю следует написать ПО в Arduino IDE. В нем представлены:
- текстовый редактор;
- создатель проектов;
- программа для компиляции;
- препроцессор;
- инструмент для загрузки ПО в мини-процессор Arduino.
Следует сказать, что существуют версии ПО для основных компьютерных ОС – Windows, Linux, Mac OS X. Если говорить об используемом языке программирования, то речь идет о C++ с рядом упрощений. Программы, написанные пользователями для Arduino, обычно называют скетчами. Ряд функций система создает автоматически и пользователю не нужно разбираться в их написании, прописывая список обычных действий. Также нет необходимости вносить файлы заголовочного типа обычных библиотек. Но пользовательские вставлять необходимо.
Добавлять библиотеки в проектный IDE-менеджер можно различными методами. В виде исходников, прописанных на С++, идет добавление в отдельную директорию на рабочей директории IDE-оболочки. Теперь имена необходимых библиотек появляются в определенном IDE-меню. Те, что вы отметите, войдут в компиляционный список. В IDE существует малое количество настроек, а задавать тонкости компилятора вообще нет возможности. Это сделано для того, чтобы несведущий человек не натворил каких-либо ошибок.
Если вы скачали библиотеку, то ее необходимо распаковать и просто вставить в IDE. В программном тексте есть комментарии, которые поясняют принцип ее работы. Следует отметить, что все приложения на Arduino работают по одной технологии: пользователь шлет запрос на процессор, а он, в свою очередь, осуществляет загрузку нужного кода на экран устройства. Когда человек нажимает клавишу Refresh, то микроконтроллер отсылает информацию. С каждой из страниц с определенным обозначением идет программный код, что будет отображаться на экране.
Следующий комплекс действий заключается в установке клиента на персональный компьютер или смартфон. Скачать его можно в интернете, в Google Play Market или из другого источника. Для того чтобы сделать это, необходимо открыть файл на телефоне, который вы скачали, после чего щелкнуть по нему и в появившемся окне нажать на клавишу «Установить». При этом следует знать, что для этого должна быть активирована опция, позволяющая осуществлять установку программ не из сервиса Google Play. Чтобы включить эту опцию, необходимо войти в раздел настроек и выбрать там пункт «Безопасность». Именно так и необходимо активировать соответствующую опцию. Когда установка завершится, то можно будет осуществить активацию приложения и настроить его.
Функции, реализованные в проекте
- Комплексное управление городской квартирой
- Управление системой из веб-интерфейса
- Адаптивный дизайн для использования на планшетах и смартфонах
- Отсылка тревожных и информационных SMS сообщений
- Сохранение настроек в энергонезависимой памяти системы
Режимы присутствия людей в доме
- Режимы «присутствие» и «отсутствие» людей в доме
- Смена режима в веб-интерфейсе
- Возможность отложенной смены режима с регулируемой задержкой срабатывания
Отопление
- Управление отоплением 5-и помещений и зон в квартире
- Управление работой тёплых полов в 5-и помещениях
- Автоматическое поддержание заданной температуры
- Установка параметров отопления в веб-интерфейсе
- Регулировка температуры в зависимости от режима присутствия людей
- Дополнительное разбиение режимов на 2 поддиапазона «высокий» и «низкий»
- Задание матрицы целевых температур в веб-интерфейсе
- Задание матрицы «высоких» и «низких» режимов для каждого времени суток
- Регулировка температуры с учётом матрицы высоких и низких подрежимов
- Контроль текущей и целевой температуры в реальном времени на веб-странице
- Задание допустимых лимитов отклонения температуры в веб-интерфейсе
- Индикация текущих нарушений температурных лимитов на веб-странице
- Отсылка тревожных SMS при нарушении лимитов отклонения температур
nRF24 сеть
- Поддержка работы nRF24 сети
- Использование нативного AMS nRF24 беспроводного стека и протокола
- Использование беспроводных батарейных AMS nRF24 датчиков
- Удалённый контроль «здоровья» беспроводных датчиков
- Отслеживание активности и ошибок беспроводных датчиков
- Использование беспроводных AMS nRF24 контроллеров
Управление двумя санузлами
- Защита от протечек
- Автоматическое перекрытие клапана при протечках воды
- SMS оповещение при аварийных ситуациях с протечками воды
- Управление вентиляцией санузлов
- Автоматический и ручной режимы вентиляции
- Задание задержки отключения вентиляции в веб-интерфейсе
- Задание критической влажности для включения вентиляции в веб-интерфейсе
- Управление освещением санузлов
- Автоматический и ручной режимы работы освещения
- Задание задержки отключения освещения в веб-интерфейсе
Управление зимним садом на балконе
- Определение температуры и влажности на улице
- Поддержание заданной температуры на балконе
- Алгоритм обогрева, учитывающий множество параметров
Работа со временем
- Получение и синхронизация времени через интернет
- Отслеживание временных интервалов
- Отслеживание времени суток
- Отслеживание времени восхода и захода солнца
- Задание часов и минут наступления каждого времени суток в веб-интерфейсе
СМС сообщения и команды
- Интеграция с AMS СМС сервером
- Отсылка информационных и тревожных СМС на мобильный телефон
- Приём управляющих команд от СМС сервера
Сетевая работа
- Интеграция с другими контроллерами сети
- Приём управляющих команд по сети от других контроллеров
- Отсылка управляющих команд другим контроллерам сети
Индикация
Индикация состояния всех объектов системы в реальном времени
Заказать проект
Для того, чтобы заказать проект, просто пришлите письмо с описанием задачи на адрес info@hi-lab.ru и возможно уже через несколько дней вы получите готовый проект вашей мечты
Компания Arduino

Предлагаемое П. О. Arduino отличается простотой использования, что позволяет самим домовладельцам компилировать программы и настраивать работу всего подключенного к микропроцессору. Программное обеспечение от этого итальянского производителя распространяется бесплатно, поэтому каких-либо сложностей с поиском таких управляющих программ у вас гарантированно не возникнет.
https://youtube.com/watch?v=kBt51h3Wf0s
В первую очередь вам необходимо будет спланировать весь функционал такой системы, правильно подобрать используемые датчики и контроллеры. Чтобы разработать грамотную схему системы на Arduino, вы должны четко представлять, какой функционал платформы вам необходим. Кому-то будет достаточно просто включения света при открытии двери, а кто-то хочет получить максимально разветвленную систему, которая будет поддерживать оптимальные показатели температуры, влажности в доме, проветривать окна, включать по расписанию отопление, выполнять другие различные работы и максимально точно контролировать все инженерные коммуникации в доме.
Этот итальянский производитель предлагает стандартную модель автоматизации, которая состоит из микроконтроллера и нескольких плат расширения. Такие платы расширения принято называть «шильды». В последующем имеется возможность подключения к ним и к процессорной плате различных дополнительных компонентов. Такая собранная система на Arduino может работать автономно по установленной пользователем программе или подключаться к компьютеру через беспроводной и проводной интерфейс.
Преимущества использования
Если говорить о преимуществах использования такого программно-аппаратного комплекса Arduino для налаживания автоматизации, то можно выделить следующие:
- Максимально широкие возможности по настройке проекта Arduino для дома.
- Работать такой программно-аппаратный комплекс может автономно.
- Простота загрузки программы в контроллер.
- Доступная стоимость компонентов.
- Существенно упрощено расширение функционала работающей в доме системы.
Управление системами
В настоящее время этот итальянский производитель предлагает различные уже готовые решения, позволяющее управлять следующими инженерными системами в доме:
- Температурой и влажностью.
- Освещенностью.
- Аварийными системами безопасности.
- Различными бытовыми приборами.
Если вам необходима простейшая система автоматизации, то можем порекомендовать базовый набор Arduino Starter Kit Uno, который включает все необходимые датчики и микроконтроллеры для управления инженерными коммуникациями в доме.
Дополнительные устройства
Впоследствии можно с легкостью расширить функционал данной системы, используя следующие исполнительные устройства:
- Доводчики дверей.
- Диммеры для освещения.
- Переключатели и различные реле.
- Электромоторы.
Сборка «умного дома»: пошаговая инструкция
Вот в какой последовательности необходимо действовать.
Подключение исполнительных и сенсорных устройств
Подключаем все компоненты согласно схеме.

Разработка программного кода
Пользователь пишет всю программу целиком в оболочке Arduino IDE, для чего последняя оснащена текстовым редактором, менеджером проектов, компилятором, препроцессором и средствами для заливки программного кода в микропроцессор платы Arduino. Разработаны версии IDE для операционных систем Mac OS X, Windows и Linux. Язык программирования — С++ с некоторыми упрощениями. Пользовательские программы для Arduino принято называть скетчами (sketch) или набросками, программа IDE сохраняет их в файлы с расширением «.ino».
Функцию main(), которая в С++ является обязательной, оболочка IDE создаёт автоматически, прописывая в ней ряд стандартных действий. Пользователь должен написать функции setup() (выполняется единоразово во время старта) и loop() (выполняется в бесконечном цикле). Обе эти функции для Arduino являются обязательными.
Заголовочные файлы стандартных библиотек вставлять в программу не нужно — IDE делает это автоматически. К пользовательским библиотекам это не относится — они должны быть указаны.
В IDE предусмотрен минимум настроек, а возможность настройки компилятора отсутствует вовсе. Таким образом, начинающий программист застрахован от ошибок.
Вот пример самой простой программы, заставляющей каждые 2 секунды мигать подключённый к 13-му выводу платы светодиод:
Однако в настоящий момент перед пользователем далеко не всегда встаёт необходимость лично писать программу: в сети выложено множество готовых библиотек и скетчей (загляните сюда: http://arduino.ru/Reference). Имеется готовая программа и для системы, рассматриваемой в этом примере. Её нужно загрузить, распаковать и импортировать в IDE. Текст программы снабжён комментариями, поясняющими принцип её работы.

Когда пользователь нажимает в браузере или установленном на смартфоне приложении кнопку «Refresh» (Обновление), микроконтроллер Arduino осуществляет отсылку данных этому клиенту. С каждой из страниц, обозначенных как «/tempin», «/tempout», «/rain», «/window», «/alarm», поступает программный код, который и отображается на экране.
Установка клиентского приложения на смартфон (для ОС Android)
Для получения данных от системы «умный дом» в сети можно скачать готовое приложение.
Вот что необходимо сделать владельцу гаджета:
- Скачайте файл SmartHome.apk.
- Отправьте его на телефон.
- Открыв «Менеджер файлов», разместите этот файл.
- Щёлкните на нём и выберите «Установить» (должна быть отмечена «галочка», позволяющая осуществлять установку программ вне сервиса Google Play).
- Когда установка будет завершена, активируйте приложение.
- Выполните его настройку.
С помощью этого приложения можно не только получать информацию от системы «умный дом», но и управлять ею — включать и отключать сигнализацию. Если она включена, то при срабатывании датчика движения приложению будет отправлено уведомление. Опрос системы Arduino на предмет срабатывания датчика движения приложение выполняет с периодичностью раз в минуту.
Активировав иконку «Настройки», можно отредактировать свой IP-адрес.
Настройка браузера на работу с «умным домом»
В адресной строке браузера следует ввести XXX.XXX.XXX.XXX/all, где «XXX.XXX.XXX.XXX» — ваш IP-адрес. После этого появится возможность получать данные от системы и осуществлять управление ею.
Представленный здесь программный код позволяет через браузер включать и выключать свет, тогда как в приложении для Android-смартфона такая функция не реализована.
Работа с роутером
Далее на маршрутизаторе необходимо открыть порт:
- открываем настройки маршрутизатора;
- прописываем адрес Arduino IP;
- открываем порт 80.
Настройка учётной записи на noip.com
Этот этап не является обязательным, но он необходим, если вы хотите присвоить адресу доменное имя. Для этого надо зарегистрироваться на сайте https://www.noip.com/, перейти в раздел «Add host» и ввести IP-адрес системы.

Создание проекта завершено, можно проверять работоспособность системы.
Как это сделать?
Следует понять, что «умный» дом – это просто набор контролеров с подключенными датчиками, которые считывают информацию и на ее основе выполняют какие-то конкретные команды. Например, контролер обогрева. При фиксировании его датчиком падения температуры ниже определенного уровня, он включит подачу тепла в комнату. На таком принципе работают автоматические кондиционеры. А в «умном» доме такие контролеры с датчиками стоят везде, что и позволяет охватить контролем максимальное количество задач. Естественно, чтобы сделать свой «умный» дом, вы сначала разработаете у себя в голове небольшой проект, учтя в нем, какие именно сферы своего быта вы хотели бы усовершенствовать и что вам для этого нужно.
Итак, чтобы сделать свой дом более самостоятельным, вам потребуются контролеры, которыми вы смогли воспользоваться. Дело в том, что их мало купить – нужно еще их запрограммировать, подключить внешние источники информации и настроить на нужную работу. Здесь возникает проблема недостатка знаний в конкретной области, потому что многие подобные устройства достаточно сложны в эксплуатации и работать с ними может не так уж и много людей. Но при появлении спроса (кому бы не хотелось своими руками собрать работающее электронное устройство?) появляется и соответствующее предложение. Одна компания является на данный момент практически самым популярным поставщиком удобных в использовании и простых для понимания электронных устройств. Это компания Arduino (ардуино).
Прежде чем начать рассмотрение этой системы, нужно принять во внимание то, что универсального проекта «умного» дома для этой системы нет. Каждый пользователь делает свой особенный проект, который по-своему и реализует, используя свои уникальные технические решения. Это одно из достоинств системы, которую мы рассмотрим ниже
Это одно из достоинств системы, которую мы рассмотрим ниже.
Проекты Arduino для начинающих
Если посмотреть на все проекты ардуино, информация о которых доступна в интернете, то можно их разделить на несколько основных групп:
Начальные учебные проекты, не претендующие на какое-то важное практическое использование, но помогающие разобраться в разных аспектах платформы.
Мигающие светодиоды – маячок, мигалка, светофор и другие.
Проекты с датчиками: от простейших аналоговых до цифровых, использующих разнообразные протоколы для обмена данными.
Устройства регистрации и отображения информации.
Машины и устройства с сервоприводами и шаговыми двигателями.
Устройства с использованием различных беспроводных видов связи и GPS.
Проекты для автоматизации жилья – умные дома на Arduino, а также отдельные элементы управления домашней инфраструктурой.
Разнообразные автономные машины и роботы.
Проекты для исследования природы и автоматизации сельского хозяйства
Необычные и креативные – как правило, развлекательные проекты.
По каждой из этих групп можно найти множество самых разнообразных материалов в книгах и на сайтах. В этой статье мы начнем знакомство с описанием наиболее простых проектов, с которых рекомендуется стартовать начинающим.
Как создавать проект на ардуино
Проект Ардуино – это всегда сочетание электронной схемы, некоторых связанных друг с другом аппаратных и механических устройств, системы питания и программного обеспечения, управляющего всем этим хаосом. Поэтому приступая к работе, вы должны твердо понимать, что создавая устройство в одиночестве, вы должны будете стать и программистом, и электронщиком, и конструктором.
Если речь идет не об учебном проекте, то вы обязательно столкнетесь со следующими этапами реализации с такими вот задачами:
- Придумать что-то, что будет полезно и (или) интересно для окружающих. Даже самый простой проект несет какую-то пользу – как минимум, он помогает изучать новые технологии.
- Собрать схему, подключить модули друг к другу и к контроллеру.
- Написать скетч (программу) в специальной среде и загрузить ее в контроллер.
- Проверить, как все работает вместе, и исправить ошибки.
- После тестирования – готовиться к созданию готового устройства. Это означает, нужно собрать устройство в каком-то пригодном для эксплуатации корпусе, предусмотреть систему питания, связи с окружающей средой.
- Если вы собираетесь распространять созданные вами устройства, то придется также заняться дизайном, системой транспортировки, задуматься о безопасности использования необученными пользователями и обучением этих самых пользователей.
- Если ваше устройство работает, оно протестировано и обладает какими-то преимуществами перед другими решениями, то можно попытаться сделать из вашего инженерного уже бизнес-проект, попробовать привлечь инвестиции.
Каждый из этих этапов создания проекта достоин отдельной статьи
Но мы уделим главное внимание этапам сборки электронных схем (основы электроники) и программирования контроллера
Электронные схемы
Электронные схемы обычно собираются с применением макетных плат, скрепляющих элементы друг с другом без пайки и скрутки. О том, как работают модули и схемы подключения можно узнать на нашем сайте. Обычно в описании проекта указаны способы монтажа деталей. Но для большинства популярных модулей есть уже десятки готовых схем и примеров в интернете.
Программирование
Создание и прошивка скетчей производится в специальной программе – среде программирования. Наиболее популярной версией такой среды является Arduino IDE. На нашем сайте вы сможете найти информацию о том, как скачать, установить и настроить эту программу.
В этой статье вы найдете обзор инженерных проектов ардуино с кратким описанием каждого из них. Мы постарались не просто рассказать о проектах для начинающих, но и дать краткие комментарии с примерами и схемами реализации. Большинство проектов могут быть созданы с контроллерами Arduino Uno R3, Nano или Mega. Надеемся, что ваше знакомство с платформой продолжится, и вы сможете не только повторить уже существующие идеи, но и придумать свои решения, вдохновленные примерами.
Если посмотреть на все проекты ардуино, информация о которых доступна в интернете, то можно их разделить на несколько основных групп:
- Начальные учебные проекты, не претендующие на какое-то важное практическое использование, но помогающие разобраться в разных аспектах платформы.
- Мигающие светодиоды – маячок, мигалка, светофор и другие.
- Проекты с датчиками: от простейших аналоговых до цифровых, использующих разнообразные протоколы для обмена данными.
- Устройства регистрации и отображения информации.
- Машины и устройства с сервоприводами и шаговыми двигателями.
- Устройства с использованием различных беспроводных видов связи и GPS.
- Проекты для автоматизации жилья – умные дома на Arduino, а также отдельные элементы управления домашней инфраструктурой.
- Разнообразные автономные машины и роботы.
- Проекты для исследования природы и автоматизации сельского хозяйства
- Необычные и креативные – как правило, развлекательные проекты.
По каждой из этих групп можно найти множество самых разнообразных материалов в книгах и на сайтах. В этой статье мы начнем знакомство с описанием наиболее простых проектов, с которых рекомендуется стартовать начинающим.
Как создавать проект на ардуино
Проект Ардуино – это всегда сочетание электронной схемы, некоторых связанных друг с другом аппаратных и механических устройств, системы питания и программного обеспечения, управляющего всем этим хаосом. Поэтому приступая к работе, вы должны твердо понимать, что создавая устройство в одиночестве, вы должны будете стать и программистом, и электронщиком, и конструктором.
Если речь идет не об учебном проекте, то вы обязательно столкнетесь со следующими этапами реализации с такими вот задачами:
- Придумать что-то, что будет полезно и (или) интересно для окружающих. Даже самый простой проект несет какую-то пользу – как минимум, он помогает изучать новые технологии.
- Собрать схему, подключить модули друг к другу и к контроллеру.
- Написать скетч (программу) в специальной среде и загрузить ее в контроллер.
- Проверить, как все работает вместе, и исправить ошибки.
- После тестирования – готовиться к созданию готового устройства. Это означает, нужно собрать устройство в каком-то пригодном для эксплуатации корпусе, предусмотреть систему питания, связи с окружающей средой.
- Если вы собираетесь распространять созданные вами устройства, то придется также заняться дизайном, системой транспортировки, задуматься о безопасности использования необученными пользователями и обучением этих самых пользователей.
- Если ваше устройство работает, оно протестировано и обладает какими-то преимуществами перед другими решениями, то можно попытаться сделать из вашего инженерного уже бизнес-проект, попробовать привлечь инвестиции.
Каждый из этих этапов создания проекта достоин отдельной статьи. Но мы уделим главное внимание этапам сборки электронных схем (основы электроники) и программирования контроллера.
Электронные схемы
Электронные схемы обычно собираются с применением , скрепляющих элементы друг с другом без пайки и скрутки. О том, как работают модули и схемы подключения можно узнать на нашем сайте. Обычно в описании проекта указаны способы монтажа деталей. Но для большинства популярных модулей есть уже десятки готовых схем и примеров в интернете.
Программирование
Создание и прошивка скетчей производится в специальной программе – среде программирования. Наиболее популярной версией такой среды является Arduino IDE. На нашем сайте вы сможете найти информацию о том, .
Где купить все необходимое
Простые проекты Ардуино
Давайте начнем наш обзор с традиционно самых простых, но очень важных проектов, включающих в себя минимальное количество элементов: светодиоды, резисторы и, конечно же, плату ардуино. Все примеры рассчитаны на использование , но с минимальными изменениями будут работать на любой плате: от и до , и даже LilyPad.
Проект с мигающим светодиодом – маячок
Все без исключения учебники и пособия для начинающих по ардуино стартуют с примера мигания светодиодом. Этому есть две причины: такие проекты требуют минимального программирования и их можно запустить даже без сборки электронной схемы – уж что-что, а светодиод есть на любой плате ардуино. Поэтому и мы не станем исключением – давайте начнем с маячка.
Нам понадобится:
- Плата Ардуино Uno, Nano или Mega со встроенным светодиодом, подключенным к 13 пину.
- И все.
Что должно получиться в итоге:
Светодиод мигает – включается и выключается через равные промежутки времени (по умолчанию – 1 сек). Скорость включения и выключения можно настраивать.
Схема проекта
Схема проекта довольно проста: нам нужен только контроллер ардуино со встроенным светодиодом, подсоединенным к пину 13. Именно этим светодиодом мы и будем мигать. Подойдут любые популярные платы: Uno, Nano, Mega и другие.
Подсоединяем Arduino к компьютеру, убеждаемся, что плата ожила и замигала загрузочными огоньками. Во многих платах «мигающий» скетч уже записан в микроконтроллер, поэтому светодиод может начать мигать сразу после включения.
С помощью такого простого проекта маячка вы можете быстро проверить работоспособность платы: подключите ее к компьютеру, залейте скетч и по миганию светодиода сразу станет понятно – работает плата или нет.
Программирование в проекте Ардуино
Если в вашей плате нет загруженного скетча маячка – не беда. Можно легко загрузить уже готовый пример, доступный в среде программирования Ардуино.
Открываем программу Arduino IDE, убеждаемся, что выбран нужный порт.

Затем открываем уже готовый скетч Blink – он находится в списке встроенных примеров. Откройте меню Файл, найдите подпункт с примерами, затем Basics и выберите файл Blink.

В открытом окне отобразится исходный код программы (скетча), который вам нужно будет загрузить в контроллер. Для этого просто нажимаем на кнопку со стрелочкой.

Ждем немного (внизу можно отследить процесс загрузки) – и все. Плата опять подмигнет несколькими светодиодами, а затем один из светодиодов начнет свой размеренный цикл включений и выключений. Можно вас поздравить с первым загруженным проектом!
Проект маячка со светодиодом и макетной платой
В этом проекте мы создадим мигающий светодиод – подключим его с помощью проводов, резистора и макетной платы к ардуино. Сам скетч и логика работы останутся таким же – светодиод включается и выключается.
Графическое изображение схемы подключения доступно на следующем рисунке:
Другие идеи проектов со светодиодами:
- Мигалка (мигаем двумя свтодиодами разных цветов)
- Светофор
- Светомузыка
- Сонный маячок
- Маячок – сигнализация
- Азбука Морзе
Подробное описание схемы подключения и логики работы программы можно найти в отдельной статье, посвященной проектам со светодиодами.
Проекты Ардуино в Интернете
В интернете можно найти огромное количество примеров самых разных проектов с Arduino. Мы сделали небольшую подборку самых необычных проектов.
Сегодня без труда можно найти сотни проектов, созданных руками инженеров-энтузиастов по всему миру. Невозможно сделать качественный обзор всех их. В данной подборке мы просто сделали небольшой обзор
Этот оригинальный проект кажется невероятным, ведь для переключения канала нужен не пульт, а мысль о его смене. Для создания потребуется Ардуино Уно, игра Star Wars Force Trainer, инфракрасные приемник и передатчик.
Проект был реализован Дэниэлом Дэвисом в домашних условиях. За основу он взял игру 2009 года Star Wars Force Trainer и разобрал ее. Сама игра содержит гарнитуру, которая может обнаружить электрические поля разума (аналогично ЭЭГ). Внутри был обнаружен чип NeuroSky ЭЭГ, который Дэниэл подключил к плате Ардуино. Данные ЭЭГ собираются и преобразовываются на компьютере.
С помощью serial монитора можно посмотреть сигналы, которые передает пульт на ИК приемник при переключении каналов. Далее записывается код кнопки и пишется небольшая программа.
После завершения программной части на человека надевают шлем, и он может переключать канаты телевизора и выключать его путем сосредоточения мыслей.
Plotclock является простейшим роботом, который состоит из руки с маркером, которая пишет на доске текущее время. Когда время изменяется, рука стирает ранее записанное число и пишет новые значения. Проект постоянно развивается, описанная технология является простейшей.
Для реализации проекта нужны 3D принтер, Ардуино Уно, 3 сервомотора, болты и гайки, маркер для стираемой доски, белая поверхность.
Механическая составляющая робота выполняется из пластиковых элементов и соединенных между собой механизмов. Управляется рука с помощью платы Ардуино и трех серводвигателей.
В проекте реализуется открытие двери с помощью определенной голосовой команды. Чтобы войти в помещение, достаточно назвать фразу «Сезам, откройся».
Для создания потребуются Ардуино Уно, серводвигатель, Bluetooth модуль.
Для разблокирования двери используются команды Google Now. Для смартфонов и планшетов есть приложение с названием «Сезам», которое и отправляет команду дверному замку при произношении слов «О’кей Google, Сезам, откройся».
Сервопривод подключается к дверному замку. Модуль Bluetooth ожидает команду, и при ее получении подает сигнал Ардуино через serial порт. Arduino Uno отдает команду сервоприводу и дверь открывается.
Куб из светодиодов на базе Ардуино – это развлекательное осветительное устройство. Он может быть разного размера с различными режимами подсветки. Куб оснащен кнопкой переключения режимов.
Для создания понадобится 64 светодиода, 4 резистора 100 Ом, проводники, макетная плата, коннекторы, коробка, источник питания на 9 В и плата Ардуино Уно.
На коробке рисуется или распечатывается эскиз квадрата 4х4. Проделываются отверстия, в которые помещаются светодиоды. Аноды нужно соединить между собой, затем коробку требуется повернуть и вытащить диоды. Аналогично формируются еще 3 слоя. Все слои нужно соединить с помощью оставшихся катодов. На макетную плату ставится получившийся куб и подключается к плате.
На базе Ардуино можно создать полезную вещь для дома – робота-уборщика. Самостоятельно сделанная модель не будет уступать по своим характеристикам магазинному экземпляру.
Для сборки потребуется:
- Arduino;
- драйвер L298N для управления двигателем;
- миниатюрные двигатели с редуктором и колесами;
- 6 инфракрасных датчиков;
- двигатель для турбины;
- турбина;
- двигатели для щеток;
- датчики столкновения;
- 4 аккумулятора;
- повышающий и понижающий преобразователи тока;
- контроллер для батареи.
Пылесос оборудован ИК датчиками. Они реагируют, когда пылесос приближается к препятствию, и дают ему команду остановиться и развернуться. При столкновении со стеной или другим препятствием срабатывает один из выключателей, соединяющий бампер и корпус робота.
Веб-камера закрепляется на поворотном механизме и подключается к ПК, на котором установлено программное обеспечение OpenCV. Когда программа обнаруживает лицо, начинается вычисление его центральной точки. Полученные координаты передаются на микроконтроллер Ардуино, который управляет сервомоторами и следит за лицом.
Для реализации потребуются:
- программное обеспечение Arduino IDE, OpenCV;
- плата Ардуино Уно;
- 2 сервомотора;
- веб-камера.
Автоматизация задач для аквариума помогает облегчить жизнь пользователя. Проект должен отвечать за следующие действия:
- подача подсветки того или иного цвета в зависимости от условий;
- отображение времени;
- регулирование компрессора;
- включение и выключение фильтров;
- отображение данных о температуре, влажности.
Чтобы собрать устройство, потребуются плата Ардуино Уно, пьезо сигналка, RGB лента, белая диодная лента, датчик температуры и влажности, LCD экран, часы, 2 реле, ик-приемник, транзисторы.
Схем реализации прибора существует множество. Пример одной из них приведен ниже.
Требуется также прописать код для включения того или иного цвета в зависимости от условий и настроить работу ЖК экрана.
В умной теплице для цветов происходит мониторинг и регулировка температуры и освещения и полив почвы. Особенно это актуально для теплолюбивых тропических растений, в которых необходимо постоянно поддерживать высокую температуру. Управлять можно автоматически или удаленно с планшета или смартфона.
Чтобы собрать проект, нужны следующие компоненты:
- Ардуино Уно;
- USB кабель;
- плата прототипирования;
- провода;
- фоторезистор;
- резистор на 10 кОм;
- температурный датчик;
- модуль температуры и влажности окружающей среды;
- модуль влажности почвы.
Фоторезистор отвечает за измерение освещенности. Температурный сенсор получает температуру воздуха. Модуль влажности почвы помещается в землю и измеряет уровень воды в ней.
Прибор может использоваться в умном доме в качестве измерителя потребляемой электроэнергии на современных счетчиках. Считывание информации происходит через светодиод счетчика – просчитывается длительность между миганиями.
Принцип работы следующие. Ардуино считывает частоту миганий и подает информацию через беспроводной модуль. Модуль, установленный на компьютер, получает эти данные и передает их в программу 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-проекты, которые мы встретили в 2015 году.
Arduino Wake-Up Machine
Взлом кодовых замков с помощью Arduino
Этот механизм, управляемый Arduino, может открыть любой кодовый замок менее чем за 30 секунд. Проект хакера Samy Kamkar продемонстрировал уязвимость.
Робот, сортирующий Skittles
Проект распечатанного на 3D-принтере Arduino-робота, который поможет сэкономить время, необходимое на сортировку Skittles. Возможно, самое большое разочарование, что механизм не универсален и подходит для M&M’s. Видео и более подробное описание
Protopiper — гаджет для прототипирования
Удивительный гаджет для прототипирования. Устали бегать с рулеткой? Обладая этим устройством, вы можете быстро набросать эскиз размером с комнату.
Open Source снегоуборщик
Двигателем прогресса во многих случаях является лень. Убирать снег лопатой? Для этой работы нужен робот. Возможно продавцам снегоуборщиков не понравится этот проект, т.к. автор считает, что каждый может самостоятельно сделать себе такой. .
Бластер для переключения музыки
У всех разные музыкальные вкусы. Но бывает так, что музыка просто ужасна. Она не нравится никому в компании. Так бывает. Если ваша мечта а такие моменты — выстрелить из пистолета и поменять музыку… то знайте, что проект реализован, мечты сбываются.
Придай своим волосам больше возможностей
Незаметно отправлять сообщения, запускать приложения, транслировать свое место положение — все это можно делать аккуратно поглаживая свои волосы — это так естественно для девушек.
Вяжи с Arduino
Чтобы вязать необязательно обращаться к бабушке или покупать профессиональное оборудование. Сделай сам робота, который вяжет, используя Arduino.
Робот BB-8 на Arduino
Проект для тех, кто мечтает сделать робота BB-8 из Звездных Войн.
О’кей Google, Сезам, открой дверь
В это проекте студент MIT реализовал открывание двери с помощью голосовой команды Google Now. Чтобы попасть в дом, нужно просто сказать: «Сезам, откройся». Видео и описание проекта .
Печатная машинка, играющая симфонию
Печатная машинка 1960 года превратилась не только в принтер, но и в музыкальный инструмент.
Робот AT-AT
Управляемый робот AT-AT из Звездных Войн.
Робот T-800 из Терминатора
В мире очень много поклонников фильма «Терминатор», но немногие воссоздали робота T-800. Подробнее почитать о проекте и посмотреть видео можно .
Робот миньон из яйца от Kinder-сюрприза
Веселый самодельный робот, которого можно сделать самому. Подробнее оп проекте .
Управление телевизором силой мысли
Пульт от телевизора больше не нужен. Все что нужно сделать — это подумать о смене канала. В проекте использован чип из игры Star Wars Force Trainer (Звездные войны), выпущенной в 2009 году. Подробнее .
Arduino — это универсальная платформа для самоделок на микроконтроллерах. К ней есть множество шилдов (плат расширения) и датчиков. Это многообразие позволяет сделать целый ряд интересных проектов, направленных на улучшение вашей жизни и повышение её комфорта. Сферы применения платы безграничны: автоматизация, системы безопасности, системы для сбора и анализа данных и прочее.
Из этой статьи вы узнаете, что можно сделать интересного на Ардуино. Какие проекты станут зрелищными, а какие полезными.
Что можно сделать с помощью Arduino
Робот пылесос
Уборка в квартире — рутинное занятие и малопривлекательное, тем более на это нужно время. Сэкономить его можно, если часть хлопот по дому возложить на робота. Этого робота собрал электронщик из г. Сочи — Дмитрий Иванов. Конструктивно он получился достаточно качественным и не уступает в эффективности .
Для его сборки вам понадобятся:
1. Arduino Pro-mini, или любая другая подобная и подходящая по размерам…
2. USB-TTL переходник, если вы используете Pro mini. Если вы выбрали Arduino Nano, то он не нужен. Он уже установлен на плате.
3. Драйвер L298N нужен для управления и реверсирования двигателей постоянного тока.
4. Маленькие двигателя с редуктором и колесами.
5. 6 ИК-датчиков.
6. Двигатель для турбины (побольше).
7. Сама турбина, а вернее крыльчатка от пылесоса.
8. Двигателя для щеток (небольшие).
9. 2 датчика столкновения.
10. 4 аккумулятора 18650.
11. 2 преобразователя постоянного напряжения (повышающий и понижающий).
13. Контроллер для работы (заряда и разряда) аккумуляторов.
Система управления выглядит следующим образом:
А вот система питания:
Подобные уборщики развиваются, модели заводского изготовления обладают сложными интеллектуальными алгоритмами, но вы можете попытаться сделать свою конструкцию, которая не будет уступать по качеству дорогим аналогам.
Способны выдавать световой поток любого цвета, в них обычно используются светодиоды в корпусе которых размещено три кристалла светящиеся разным цветом. Для их управления продаются , их суть заключается в регулировании тока подаваемого на каждый из цветов светодиодной ленты, следовательно — регулируется интенсивность свечения каждого из трёх цветов (отдельно).
Вы можете сделать своими руками RGB-контроллер на Ардуино, даже более того, в этом проекте реализовано управление через Bluetooth.
На фото приведен пример использования одного RGB-светодиода. Для управления лентой потребуется дополнительный блок питания на 12В, тогда будут управлять затворами полевых транзисторов включенных в цепь. Ток заряда затвора ограничен резисторами на 10 кОм, они устанавливаются между пином Ардуино и затвором, последовательно ему.
С помощью микроконтроллера можно сделать универсальный пульт дистанционного управления управляемый с мобильного телефона.
Для этого понадобится:
Arduino любой модели;
ИК-приемник TSOP1138;
ИК-светодиод;
Bluetooth-модуль HC-05 или HC-06.
Проект может считывать коды с заводских пультов и сохранять их значения. После чего вы можете управлять этой самоделкой через Bluetooth.
Веб-камера устанавливается на поворотный механизм. Её подключают к компьютеру, с установленным программным обеспечением. Оно базируется на библиотеке компьютерного зрения — OpenCV (Open Source Computer Vision Library), после обнаружения программой лица, координаты его перемещения передаются через USB-кабель.
Ардуино даёт команду приводу поворотного механизма и позиционирует объектив камеры. Для движения камеры используется пара сервоприводов.
На видео изображена работа этого устройства.
Следите за своими животными!
Идея заключается в следующем — узнать, где гуляет ваше животное, это может вызвать интерес для научных исследований и просто для развлечения. Для этого нужно использовать GPS-маячок. Но чтобы хранить данные о местоположении на каком-нибудь накопителе.
При этом габариты устройства здесь играют решающую роль, поскольку животное не должно ощущать от него дискомфорт. Для записи данных можно использовать для работы с картами памяти формата Micro-SD.
Ниже приведена схема оригинального варианта устройства.
В оригинальной версии проекта использовалась плата TinyDuino и шилды к ней. Если вы не можете найти такую, вполне можно использовать маленькие экземпляры Arduino: mini, micro, nano.
Для питания использовался элемент Li-ion, малой ёмкости. Маленького аккумулятора хватает примерно на 6 часов работы.
У автора в итоге все поместилось в обрезанную баночку из-под тик-така. Стоит отметить, что антенна GPS должна смотреть вверх, чтобы получать достоверные показания датчика.
Взломщик кодовых замков
Для взлома кодовых замков с помощью Ардуино понадобятся серво- и шаговый двигатель. Этот проект разработал хакер Samy Kamkar. Это достаточно сложный проект. Работа этого устройства изображена на видео, где автор рассказывает все подробности.
Конечно, для практического применения такое устройство вряд ли подойдет, но это отличный демонстрационный.
Ардуино в музыке
Это скорее не проект, а небольшая демонстрация какое применение нашла эта платформа у музыкантов.
Драм машина на Ардуино. Примечательна тем, что это не обычный перебор записанных сэмплов, а, в принципе, генерация звука с помощью «железных» приспособлений.
Номиналы деталей:
Транзистор NPN-типа, например 2n3904 — 1 шт.
Резистор 1 кОм (R2, R4, R5) — 3 шт.
330 Ом (R6) — 1 шт.
10 кОм (R1) — 1 шт.
100 кОм (R3) — 1 шт.
Электролитический конденсатор 3.3 мкФ — 1 шт.
Для работы проекта потребуется подключение библиотеки для быстрого разложения в ряд Фурье.
Это достаточно простой и интересный проект из разряда «можно похвастаться перед друзьями».
3 проекта роботов
Робототехника — одно из интереснейших направлений для гиков и просто любителей сделать что-нибудь необычное своими руками, я решил сделать подборку из нескольких интересных проектов.
BEAM-робот на Ардуино
Для сборки четырёхногого шагающего робота вам понадобятся:
Для движения ног нужны сервомоторчики, например, Tower Hobbies TS-53;
Кусок медной проволоки средней толщины (чтобы выдерживала вес конструкции и не гнулась, но и не слишком толстой, т.к. не имеет смысла);
Микроконтроллер — AVR ATMega 8 или плата Ардуино любой модели;
Для шасси в проекте указано, что использовалась Рамка Sintra. Это что-то вроде пластика, он сгибается в любую форму при нагревании.
В результате вы получите:
Примечательно то, что этот робот не ездит, а шагает, может перешагивать и заходить на возвышения до 1 см.
Этот проект мне, почему-то, напомнил робота из мультфильма Wall-e. Его особенностью является использование для зарядки аккумуляторов. Он перемещается подобно автомобилю, на 4-х колесах.
Его составляющие детали:
-
Перемычки мама-папа;
Солнечная панель с выходным напряжением в 6В;
В качестве донора колес, двигателей и других деталей — машинка на радиоуправлении;
Два сервопривода непрерывного вращения;
Два обычных сервопривода (180 градусов);
Держатель для батареек типа АА и для «кроны»;
Датчик столкновений;
Светодиоды, фоторезисторы, постоянные резисторы на 10 кОм — всего по 4 штуки;
Диод 1n4001.
Пластиковая бутылка подходящего размера;
Вот основа — плата Ардуино с прото-шилдом.
Вот так выглядят запчасти от — колеса.
Конструкция почти в сборе, датчики установлены.
Суть работы робота заключается в том, что он едет на свет. Обилие нужно ему для навигации.
Это скорее ЧПУ станок, чем робот, но проект весьма занимательный. Он представляет собой 2-х осевой станок для рисования. Вот перечень основных компонентов, из которых он состоит:
(DVD)CD-приводы — 2 шт;
2 драйвера для шаговых двигателей A498;
сервопривод MG90S;
Ардуино Уно;
Источник питания 12В;
Шариковая ручка, и другие элементы конструкции.
Из привода оптических дисков используется блоки с шаговым двигателем и направляющей штангой, которые позиционировали оптическую головку. Из этих блоков извлекают двигатель, вал и каретку.
Управлять шаговым двигателем без дополнительного оборудования у вас не выйдет, поэтому используют специальные платы-драйверы, лучше, если на них будет установлен радиатор двигателя в момент пуска или смены направления вращения.
Полный процесс сборки и работы показан на этом видео.
Смотрите также 16 лучших Arduino проектов от AlexGyver:
Заключение
В статье рассмотрена лишь малая капля из всего того, что вы можете сделать на этой популярной платформе. На самом деле всё зависит от вашей фантазии и задачи, которую вы ставите перед собой.
Что такое цифровая драм-машина или иначе бит-машина слышали наверное все. Совсем другое дело электромеханическая драм-машина, созданая норвежским композитором Koka Nikoladze. В ней звук формируется за счет механического воздействия. Машинка работает под управлением Arduino, который позволяет запрограммировать мелодию для исполнения.
Вы слышали про Arduino и вам хочется поскорее разобраться с ней, чтобы сделать свое устройство, робота или что там еще придумали. Помигать светодиодом вы сможете уже в первый вечер, но на создание более сложного гаджета уйдет куда больше времени. Впереди долгие недели и даже месяцы изучения программирования на C, поиск совместимых библиотек и модулей, костылей и превозмогания трудностей. Как ускорить процесс? Начните с Arduino совместимой платы, которую можно программировать на JavaScript.
Оригинал статьи на английском http://www.bunniestudios.com/blog/?p=2407
На фотографии готовые печатные платы для Leonardo
Самое интересное в лампе — это то, что она реагирует на приближение с помощью самодельного, и вообщем-то очень простого емкостного сенсора. Основной элемент, которого — лист фольги. На данный момент эта сборка лишь прототип, и все электронные компоненты и сенсор (тот самый лист фольги) никаким образом не интегрированы в сам светильник, но сама идея очень интересная.
Arduino, самодельная перчатка с 5-тью зашитыми датчиками изгиба, 5 сервоприводов HITEC HS-81 и механическая рука. Как все это работает можно посмотреть на видео. Arduino cчитывает данные с датчиков изгиба и управляет сервомоторчиками так, чтобы механическая рука повторяла движения кисти человека. Кстати, в первом видео автор использует готовый набор механики руки, который можно купить на ebay, правда без электронных компонентов и приводов. В другом проекте автор сделал подобную руку из подручных материалов.

Более подробно об использовании 74HC59 с Arduino можно почитать в инструкции Использование сдвигового регистра 74HC595 для увеличения количества выходов .
Один регистр дает нам 8 выходов, так как у нашей матрицы 32 входа, в проекте использована техника каскадирования сдвиговых регистров. Нам понадобится 4 регистра 74HC59, при этом количество подключений к Arduino не изменится и будут задействованы 3 выхода на Arduino. для управления. Питание осуществляется по USB, но можно подключить и автономное.

Cтрого говоря, Arduino будет управлять не затвором камеры, а фотовспышкой. К сожалению, задержка реакции камеры на сигнал — в районе 20 миллисекунд, что для человеческого глаза не заметно, но все же дольше, чем можно себе позволить при съемке лопнувшего шарика. Поэтому съемка производится в темной комнате с выдержкой 10 секунд, а вот вспышка срабатывает именно в нужный момент. Так как в комнате практически нет освещения, то всё экспонирование фотографии произойдет именно в момент работы вспышки (около 1 миллисекунды).
В этой статье я решал собрать полное пошаговое руководство для начинающих Arduino. Мы разберем что такое ардуино, что нужно для начала изучения, где скачать и как установить и настроить среду программирования, как устроен и как пользоваться языком программирования и многое другое, что необходимо для создания полноценных сложных устройств на базе семейства этих микроконтроллеров.
Тут я постараюсь дать сжатый минимум для того, что бы вы понимали принципы работы с Arduino. Для более полного погружения в мир программируемых микроконтроллеров обратите внимание на другие разделы и статьи этого сайта. Я буду оставлять ссылки на другие материалы этого сайта для более подробного изучения некоторых аспектов.
Что такое Arduino и для чего оно нужно?
Arduino — это электронный конструктор, который позволяет любому человеку создавать разнообразные электро-механические устройства. Ардуино состоит из программной и аппаратной части. Программная часть включает в себя среду разработки (программа для написания и отладки прошивок), множество готовых и удобных библиотек, упрощенный язык программирования. Аппаратная часть включает в себя большую линейку микроконтроллеров и готовых модулей для них. Благодаря этому, работать с Arduino очень просто!
С помощью ардуино можно обучаться программированию, электротехнике и механике. Но это не просто обучающий конструктор. На его основе вы сможете сделать действительно полезные устройства.
Начиная с простых мигалок, метеостанций, систем автоматизации и заканчивая системой умного дома, ЧПУ станками и беспилотными летательными аппаратами. Возможности не ограничиваются даже вашей фантазией, потому что есть огромное количество инструкций и идей для реализации.
Стартовый набор Arduino
Для того что бы начать изучать Arduino необходимо обзавестись самой платой микроконтроллера и дополнительными деталями. Лучше всего приобрести стартовый набор Ардуино, но можно и самостоятельно подобрать все необходимое. Я советую выбрать набор, потому что это проще и зачастую дешевле. Вот ссылки на лучшие наборы и на отдельные детали, которые обязательно пригодятся вам для изучения:
| Базовый набор ардуино для начинающих: | Купить |
| Большой набор для обучения и первых проектов: | Купить |
| Набор дополнительных датчиков и модулей: | Купить |
| Ардуино Уно самая базовая и удобная модель из линейки: | Купить |
| Беспаечная макетная плата для удобного обучения и прототипирования: | Купить |
| Набор проводов с удобными коннекторами: | Купить |
| Комплект светодиодов: | Купить |
| Комплект резисторов: | Купить |
| Кнопки: | Купить |
| Потенциометры: | Купить |
Среда разработки Arduino IDE
Для написания, отладки и загрузки прошивок необходимо скачать и установить Arduino IDE. Это очень простая и удобная программа. На моем сайте я уже описывал процесс загрузки, установки и настройки среды разработки. Поэтому здесь я просто оставлю ссылки на последнюю версию программы и на
| Версия | Windows | Mac OS X | Linux |
| 1.8.2 |
Язык программирования Ардуино
Когда у вас есть на руках плата микроконтроллера и на компьютере установлена среда разработки, вы можете приступать к написанию своих первых скетчей (прошивок). Для этого необходимо ознакомиться с языком программирования.
Для программирования Arduino используется упрощенная версия языка C++ с предопределенными функциями. Как и в других Cи-подобных языках программирования есть ряд правил написания кода. Вот самые базовые из них:
- После каждой инструкции необходимо ставить знак точки с запятой (;)
- Перед объявлением функции необходимо указать тип данных, возвращаемый функцией или void если функция не возвращает значение.
- Так же необходимо указывать тип данных перед объявлением переменной.
- Комментарии обозначаются: // Строчный и /* блочный */
Подробнее о типах данных, функциях, переменных, операторах и языковых конструкциях вы можете узнать на странице по Вам не нужно заучивать и запоминать всю эту информацию. Вы всегда можете зайти в справочник и посмотреть синтаксис той или иной функции.
Все прошивки для Arduino должны содержать минимум 2 функции. Это setup() и loop().
Функция setup
Для того что бы все работало, нам надо написать скетч. Давайте сделаем так, что бы светодиод загорался после нажатия на кнопку, а после следующего нажатия гас. Вот наш первый скетч:
// переменные с пинами подключенных устройств
int switchPin = 8;
int ledPin = 11;
// переменные для хранения состояния кнопки и светодиода
boolean lastButton = LOW;
boolean currentButton = LOW;
boolean ledOn = false;
void setup() {
pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT);
}
// функция для подавления дребезга
boolean debounse(boolean last) {
boolean current = digitalRead(switchPin);
if(last != current) {
delay(5);
current = digitalRead(switchPin);
}
return current;
}
void loop() {
currentButton = debounse(lastButton);
if(lastButton == LOW && currentButton == HIGH) {
ledOn = !ledOn;
}
lastButton = currentButton;
digitalWrite(ledPin, ledOn);
}
| // переменные с пинами подключенных устройств int int // переменные для хранения состояния кнопки и светодиода boolean boolean boolean void pinMode pinMode // функция для подавления дребезга boolean boolean if delay current return void currentButton if ledOn lastButton digitalWrite |
В этом скетче я создал дополнительную функцию debounse для подавления дребезга контактов. О дребезге контактов есть на моем сайте. Обязательно ознакомьтесь с этим материалом.
ШИМ Arduino
Широтно-импульсная модуляция (ШИМ) — это процесс управления напряжением за счет скважности сигнала. То есть используя ШИМ мы можем плавно управлять нагрузкой. Например можно плавно изменять яркость светодиода, но это изменение яркости получается не за счет уменьшения напряжения, а за счет увеличения интервалов низкого сигнала. Принцип действия ШИМ показан на этой схеме:
Когда мы подаем ШИМ на светодиод, то он начинает быстро зажигаться и гаснуть. Человеческий глаз не способен увидеть это, так как частота слишком высока. Но при съемке на видео вы скорее всего увидите моменты когда светодиод не горит. Это случится при условии что частота кадров камеры не будет кратна частоте ШИМ.
В Arduino есть встроенный широтно-импульсный модулятор. Использовать ШИМ можно только на тех пинах, которые поддерживаются микроконтроллером. Например Arduino Uno и Nano имеют по 6 ШИМ выводов: это пины D3, D5, D6, D9, D10 и D11. В других платах пины могут отличаться. Вы можете найти описание интересующей вас платы в
Для использования ШИМ в Arduino есть функция Она принимает в качестве аргументов номер пина и значение ШИМ от 0 до 255. 0 — это 0% заполнения высоким сигналом, а 255 это 100%. Давайте для примера напишем простой скетч. Сделаем так, что бы светодиод плавно загорался, ждал одну секунду и так же плавно угасал и так до бесконечности. Вот пример использования этой функции:
// Светодиод подключен к 11 пину
int ledPin = 11;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
for (int i = 0; i 0; i—) {
analogWrite(ledPin, i);
delay(5);
}
}
| // Светодиод подключен к 11 пину int void pinMode void for analogWrite delay delay for |
Loading…
Последнее обновление 2 января 2022
Сегодня наблюдается рост интереса пользователей к внедрению в домах и квартирах если не полноценных систем «умного дома», то некоторых элементов Home Automation (домашней автоматизации).
В связи с этим производители ведут разработки и наращивают выпуск систем различной сложности – от полноценных коробочных решений с использованием ИИ, до комплектов на базе микроконтроллеров, позволяющих быстро решать прикладные задачи различной сложности.
Некоторые из них помогут как сделать первые шаги в разработке, так и реализовать достаточно сложные проекты. Например¸ вполне реальный вариант – умный дом на Arduino своими руками.
Что такое Arduino
Arduino – это полностью открытая программно-аппаратная платформа для создания систем роботизации и автоматизации (в том числе, домашней) различной сложности. Ее основное отличие – простота в использовании, возможность освоения и создания вполне работоспособных проектов даже без глубоких знаний электроники и программирования.
Аппаратные средства Arduino позволяют получить сигналы от сенсоров (например, уровень температуры, наличие света, нажатие на кнопку) или более сложных систем, таких как html-страницы.
Программный код обрабатывает их и выдает сигналы на исполнительные механизмы, например, включает сервопривод, замыкает контакты реле или сервисы, способные выполнять весьма сложные операции – от отправки сообщений на e-mail до размещения контента на страницах.
Основными преимуществами платформы являются:
- Полная открытость. Это касается как аппаратных модулей (приводятся схемы и для большинства – печатные платы), так и программного обеспечения. В результате сторонние разработчики имеют возможность создавать полностью совместимые устройства. Сообществом создано множество программных проектов и модулей для решения различных задач автоматизации. Все они находятся в свободном доступе, так что подобрать нужный софт и адаптировать его под собственные потребности труда не составляет. Существует достаточно большое число и российских проектов, которые упоминаются на страницах официального сайта.
- Широкий выбор. В ассортименте предлагаемых продуктов – решения для любого уровня, от плат на 8-битных контроллерах с минимумом функциональных возможностей для начальных шагов и простых проектов, до мощных контроллеров на 32-битных чипах. Возможности подбора нужной конфигурации расширяет богатый ассортимент собственных модулей расширения и аппаратных продуктов сторонних разработчиков. Кроме того, приобрести продукты Arduino можно практически в любом виде – от печатной платы с набором компонентов для сборки своими руками, до готовых контроллеров и Starter Kits – специализированных наборов.
- Кроссплатформенность. Софт Arduino работает под всеми ОС для ПК – Windows, Linux, MacOS, сохраняя полную функциональность, а готовые программные наработки вообще являются платформенно независимыми.
- Гибкость подхода. На платах Arduino реализован весь необходимый функционал, – от стабилизатора питания и программатора для контроллера, до набора портов ввода/вывода и конкретных интерфейсов, например BlueTooth, Wi-Fi, управления двигателями и пр. Однако представленная система не ограничивает разработчика в выборе, например, прошивку микроконтроллера можно выполнить не только при помощи штатных средств, но также и с помощью совместимости программаторов других производителей, а набор портов и интерфейсов легко расширить.
- Простота освоения. Прозрачные схемотехнические решения, качественная документация позволяют работать с модулями платформами без серьезного опыта и знаний электроники. Этому способствует и программная среда, требующая лишь базовых знаний C++. Более того, проект предлагает и средства графического проектирования, освоить которые могут даже дети и подростки.
- Стоимость. Микроконтроллеры Arduino на сегодняшний день являются одним из самых более доступных в ценовой среде вариантов среди множественных более модифицированных аналогов – даже самый мощный микроконтроллер обойдется покупателю не дороже 50 долларов. На рынке можно найти множество разнообразных расширений и компонентов, которые выпускаются различными производителями, в том числе и азиатскими, которые при достаточно достойном качестве изготовления стоят весьма недорого.
Словом, пытаться решить задачи домашней автоматизации на этой платформе – хороший вариант и для новичков, и для опытных разработчиков. Конечно, полноценный «умный дом» на Arduino своими руками не построить, но подавляющее большинство повседневных функций home automation реализовать будет достаточно просто.
Как сделать умный дом на Arduino своими руками
Создание умного дома на Arduino своими руками мало чем отличается от разработки и реализации любой другой электронной системы. Процесс включает несколько обязательных этапов.
Разработка эскизного проекта
Мнение эксперта
Яковлев Алексей Сергеевич
Электрик с 20 летним стажем и богатым опытом
На первом этапе составляется подробный проект будущей системы. При создании системы для собственных дома или квартиры, хозяин выступает и заказчиком, и исполнителем. Соответственно, этот этап включает и составление подробного ТЗ и эскизное проектирование.
Соответственно, разработчику придется решить несколько задач.
Формулировка задания
Задание для проекта должно быть определено максимально точно и подробно. Например, решается одна из частных home automation – включить освещение крыльца, когда в темное время к нему приближается человек. Это общее описание задачи нуждается в более конкретных формулировках для проектирования.
Они описывают:
- Основные условия для срабатывания автоматики – триггеры (triggers) в терминах home automation. В рассматриваемой задаче такой триггер один – приближение человека к крыльцу.
- Дополнительные условия (conditions). Они задают разрешения на срабатывание триггера и, в большинстве случаев, определяют длительность их действия. Для данной задачи дополнительное условие – темное время. Действительно, включать свет на крыльце днем смысла не имеет. Нет необходимости делать это и когда крыльцо освещено – свет уже включен или задействованы другие источники. Соответственно, дополнительные условия можно задать в нескольких вариантах: наступило темное время суток, и свет на крыльце не включен. Практически полное описание условий, но не учитывает возможность освещения от других источников, освещенность на крыльце ниже порогового значения. Хотя условие и выглядит проще, но учитывает практически все случаи.
- Действия (actions). Описывает реакцию системы на триггеры и дополнительные условия. Для текущего примера система должна выполнить единственное действие – включить свет.
- Действия в случае отсутствия триггеров и/или невыполнения условий. Здесь необходимо рассматривать 2 случая: ни основные, ни дополнительные условия не были выполнены. Наиболее логичное поведение – бездействие, триггер и условия были выполнены, произошло срабатывание, затем ситуация изменилась (т.н. post-action действия). Поведение проектируемой системы должно выглядеть следующим образом – не включать свет до срабатывания триггера и выполнения условий, выключить после того, как он перестал быть нужен.
Таким образом, результат – подробное описание задания:
- Проверять, есть ли у крыльца человек.
- Бездействовать, пока его нет.
- Если человек подошел – проверить освещенность.
- Если она ниже заданной – включить свет.
- Проверять, остается ли нужен свет.
- Если да – оставаться в текущем состоянии, если нет – выключить свет.
Выбор способов реализации алгоритма
На этом этапе определяется набор сенсоров для получения данных (триггеров и условий) и исполнительных механизмов для выполнения действий.
Даже в простейшем рассматриваемом случае возможны несколько вариантов реализации. Например, определять присутствие человека у крыльца можно:
- по сигналу стандартного инфракрасного датчика;
- разместив под площадкой у крыльца датчики, реагирующие на давление (например, тензодатчики на основе пьезоффекта);
- получая с работающего в квартире Wi-Fi-роутера сигнал о подключении нового/конкретного абонента к домашней беспроводной сети и т.д.
Аналогичным образом рассматриваются ситуации с определением уровня освещенности и включением света на крыльце.
Еще один обязательный момент, требующий учета на данном этапе – определение обмена данными между устройствами. Здесь также возможны несколько вариантов – обмен по сигнальным проводникам, беспроводная передача сигналов (в этом случае потребуется выбрать соответствующий стандарт, например, BlueTooth, Wi-Fi, ZigBee или др.).
Завершает этап запись алгоритма с учетом принятых решений, например:
- Опрашивать проводной ИК-датчик.
- Если сигнала нет – ничего не делать.
- При появлении сигнала, проверить состояние проводного датчика освещенности.
- При наличии сигнала – ничего не делать.
- При отсутствии сигнала – выдать на ZigBee хаб команду на включение выключателя по соответствующему адресу (отвечающему за освещение на крыльце).
- Опрашивать ИК датчик.
- Пока есть сигнал (человек на крыльце) – ничего не делать.
- Если сигнала нет – отключить свет, т.е. выдать на ZigBee выключатель команду на отключение.
- Вернуться к началу цикла.
Еще один результат этого этапа – перечень необходимого оборудования и материалов. Для сборки системы потребуются:
- Контроллер с возможностью опроса проводных каналов связи (минимум, двух, для датчика освещенности и ИК-датчика).
- ZigBee выключатель.
- ZigBee хаб (без него моно обойтись, если контроллер имеет интерфейс для прямого управления ZigBee устройствами).
Мнение эксперта
Яковлев Алексей Сергеевич
Электрик с 20 летним стажем и богатым опытом
Не следует забывать о проводах для прокладки сигнальных линий, источниках питания для всех устройств, возможно – ретрансляторах или усилителях сигналов, если расстояния окажутся велики. Лучший вариант оформить результаты этапа – составить структурную схему системы и блок-схему алгоритма. Это существенно упростит работу в дальнейшем.
Выбор оборудования
После составления структурной схемы проекта можно приступать к разработке принципиальной, которая, прежде всего, включает выбор оборудования.
Выбор контроллера Arduino
Поскольку базовая платформа – Arduino, определена ранее, остается выбрать конкретную модель контроллера и, при необходимости, расширение. Задача не сложная, поскольку ассортимент устройств достаточно обширен и включает модели для большинства практических задач.
В список оборудования входят:
| Контроллер | Чип | Память (ОЗУ/ПЗУ) | Порты ввода/вывода и интерфейсы | Дополнительно |
| Due | 32-битный Cortex-M3 ARM SAM3U4E,, 84 МГц | 64+36Кб/256+256Кб (возможна прямая адресация всего пространства) | 54 цифровых IO (некоторые со специальными функциями, например, ШИМ) 12 аналоговых входов (с АЦП) 2 аналоговых входа | Питание контроллера 3.3В |
| Uno | 8-бит ATmega328 или ATmega8U2 (в новой версии), 16 МГц | 2Кб/32Кб+1Кб EEPROM | 14 цифровых IO (6 могут использоваться как ШИМ) 6 аналоговых входов с АЦП UART TTL USB Разъемы для модулей расширения | |
| Leonardo | 8-бит ATmega32u4, 16МГц | 2.5кБ/32Кб+1Кб EEPROM | 20 цифровых IO (7 с функциями ШИМ) 12 аналоговых входов (могут работать как цифровые) USB расширения | Встроенная поддержка USB позволяет настраивать видимость при связи с ПК (как клавиатуру, мышь, виртуальный последовательный порт) Функционально и конструктивно аналогичен Uno |
| Duemilanove, Decimila | 8-бит ATmega168, 16МГц | 1Кб/16Кб+512б EEPROM | В остальном полностью аналогичны Uno на базе ATmega328 | |
| Mini | 8-бит ATmega168, 16МГц | 1Кб/16Кб+512б EEPROM | 14 цифровых IO (6 могут использоваться как ШИМ) 6 аналоговых входов с АЦП | Для программирования требуется адаптер MiniUSB Компактное решение для макетирования |
| Micro | 8-бит ATmega32u4, 16МГц | Компактный контролер, по функциональности и аналогичный Leonardo, для подключения и программирования используется кабель microUSB | ||
| Nano | 8-бит ATmega168 или ATmega328, 16МГц | Компактный вариант Duemilanove, отличающийся только габаритами и отсутствием разъема для подключения внешнего источника питания | ||
| Mega | 8-бит ATmega1280, 16МГц | 8Кб/128Кб+4Кб EEPROM | 54 цифровых IO (14 с функциями ШИМ) 16 аналоговых входов с АЦП 4 порта UART USB расширения | |
| Mega 2560 Mega ADK | 8-бит ATmega2560, 16МГц | Отличаются от Mega увеличенным до 256Кб объемом ПЗУ для хранения программ и реализацией USB-интерфейса на ATMega8U2. В Mega ADK сконфигурирован USB host, который моет работать с другими устройствами, в частности, смарифонами | ||
| Pro | 8-бит ATmega328, 16МГц (3.3В) или ATmega168, 8МГц (5В) | 2 или 1 Кб/32 или 16 Кб + 1 Кб или 512б EEPROM | 14 цифровых IO (6 могут использоваться как ШИМ) 6 аналоговых входов с АЦП UART TTL USB Разъемы для модулей расширения | Разъемы ввода/вывода и интерфейсов не установлены, разработчик может использовать собственные |
| Pro Mini | Аналогична Mini, но как и в полномасштабной Pro требуется установка разъемов |
Внимание! Для работы с платами, не содержащими встроенных USB-интерфейсов применяют адаптеры Adapter Mini USB или USB Serial Light Adapter.
Кроме стандартных контроллеров разработаны и поставляются специализированные, с дополнительными интерфейсами на борту:
- Yun – устройство по возможностям (чип, выводы) аналогичное Leonardo, но со встроенным Wi-Fi модулем на базе Atheros AR9331.
- BT – платформа со встроенным BlueTooth интерфейсом.
- Fio – контроллер, аналогичный Uno по функциональности, но без установленных разъемов на портах ввода/вывода. Предназначен для работы в беспроводной сети ZigBee.
- Serial – функционально аналогична базовой Uno с интегрированным стандартным последовательным интерфейсом RS232.
Кроме того, для работы с различными стандартами связи и устройствами можно использовать стандартные платы расширения:
- Wi-Fi с поддержкой протокола 802.11 b/g;
- Xbee Shield, с интегрированным модулем Maxstream Xbee Zigbee, поддерживающим до 32 устройств ZigBee (35/90 м в помещении и на открытом пространстве соответственно);
- Ethernet Shield – с установленным портом стандарта Ethernet 10/100 Base-T для проводного сетевого соединения;
- Motor Shield – с портами для управления двигателями постоянного тока и получения сигналов обратной связи от датчиков положения.
При необходимости можно найти и другие конфигурации полностью совместимых контроллеров, выпускаемые сторонними разработчиками. Полный список одобренного оборудования размещен на странице https://playground.arduino.cc/Main/SimilarBoards/ официального сайта.
При выборе контроллера необходимо учитывать:
- Производительность;
- Наличие необходимого количества портов ввода/вывода, цифровых и аналоговых;
- Объем памяти для хранения программ и данных (все платы Arduino используют небогатые ресурсы микроконтроллера и не предполагают расширений);
- Удобство работы – программирования, отладки программ, установки готового устройства в корпус.
Для решения рассматриваемой задачи с освещением на крыльце вполне достаточно компактным Micro, Nano или Mini, но с базовой Uno работать гораздо удобнее. Кроме того, понадобится плата расширения Xbee Shield для работы c ZigBee устройствами.
Выбор периферии
При выборе датчиков и исполнительных механизмов нет значительных ограничений. Единственное требование – обеспечить совместимость с портами Arduino по уровням сигналов и нагрузке.
Однако, при желании, и это требование легко обходится за счет сборки собственных или использования готовых плат согласования.
Разработка принципиальной схемы
После покупки контроллера и периферийных устройств следует начертить принципиальную схему системы автоматизации. С платами Arduino это труда не составит, главная задача разработчика – выбрать пины портов ввода/вывода для подключения – это важная информация для написания программы.
К сведению! Поменять выводы на этапе разработки программы не сложно – достаточно откорректировать буквально 2 строки кода.
Работа с программным обеспечением
Когда принципиальная схема готова, начинается важнейший этап проектирования – написание программы для контроллера. Для этого необходимо скачать среду разработки Arduino IDE.
Загрузка, установка, проверка ПО
Программное обеспечение скачивают со страницы официального сайта https://www.arduino.cc/en/software.
Стабильная версия – Arduino IDE 1.8.13 поддерживает:
- Windows 7 и более новые версии ОС, х86 и х64;
- MacOS 10.10 и новее;
- 32- и 64-битные версии Linux и Linux ARM.
Для работы под Windows можно скачать установщик или ZIP-архив софта. Использовать установщик для неопытных пользователей предпочтительнее – установка драйверов будет произведена автоматически вместе с установкой программы.
При использовании ZIP-архива достаточно развернуть программу на жестком диске ПК и запустить IDE. В этом случае программа также попытается установить драйвера, но, возможно, придется обновить их вручную в Панели управления. Все необходимые .inf файлы входят в комплект поставки.
К сведению! Опытные пользователи могут попробовать бета-версию Arduino IDE 2.0 с улучшенной функциональностью, поддержкой Win 10, 32- или 64-разрядных Linux-систем, MacOS 10-14.
Возможности среды разработки Arduino IDE:
- Создание проектов (скетчей, от англ. sketch – набросок).
- Их проверка и компиляция для загрузки в контроллер;
- «Заливка» готового машинного кода в контроллеры;
- Поддержка всех версий плат;
- Подключение библиотек, не входящих в комплект поставки.
После установки софта следует проверить работоспособность купленного контроллера и целостность софта.
Для этого достаточно выполнить входящий в комплект поставки простейший скетч с управлением светоиодом.
Пошагово процесс выглядит следующим образом:
- Подключить плату Arduino Uno (именно на ней остановился выбор для реализации предложенной задачи) кабелем к USB-порту компьютера.
- Запустить Arduino IDE.
- В среде разработки открыть готовый скетч – в меню File выбрать папку Examples-1.Basic, в ней файл Blink.
- Выбрать плату контроллера для работы – меню Tools-Board.
- Указать порт для связи с платой (как правило COM3 или другой COM с бОльшим номером). Если этих портов нет, следует проверить, подключена ли плата или установить вручную драйверы.
- Откомпилировать скетч через меню Sketch-Verify/Compile или нажатием на соответствующую кнопку в панели инструментов под строкой меню.
- Загрузить готовый скетч в контроллер (Sketch-Upload) или нажатием кнопки панели инструментов. На этом этапе можно наблюдать мигание светодиодов Rx и Tx , которое свидетельствует об обмене с ПК.
- После окончания загрузки через несколько секунд начнет мигать светодиод на плате Uno. Это говорит о том, что и контроллер и среда разработки полностью работоспособны.
Внимание! Если скетч не загружается, следует нажать кнопку Reset на плате контролера и повторить процедуру загрузки. Аналогичным образом следует поступать перед каждой новой загрузкой, особенно на платах типа Mini.
После проверки можно приступать к разработке собственной программы.
Программирование скетчей
Программирование скетча можно выполнить непосредственно в редакторе среды разработки или в любом другом удобном текстовом редакторе (в последнем случае не забыть сохранить работу в файле .ino). Встроенный язык программирования Arduino является клоном языка C++ с некоторыми упрощениями и дополнительными функциями и библиотеками для обращения к функционалу контроллера.
Для работы с программой в IDE необходимо:
- Создать новый скетч (File-New).
- Подключить необходимые библиотеки. Стандартные библиотеки функций входят в комплект поставки, нестандартные нужно разместить в соответствующих папках папки Libraries. После этого их имена станут доступны разработчику в меню Sketch-Import Library. Достаточно выбрать нужные имена, и они будут включены для обработки препроцессором.
- В функции setup() прописать все необходимые действия для инициализации системы. Эта функция выполняется один раз перед стартом. Как правило, в ее тексте достаточно ограничиться назначением функций пинам ввода/вывода.
- В функции loop() прописать код, реализующий алгоритм автоматизации – опрос сенсоров, анализ условий, выдачу сигналов на исполнительные механизмы. Функция выполняется в бесконечном цикле, операторы прерывания этого цикла не предусмотрены.
- Откомпилировать написанный скетч.
- Загрузить его в контроллер.
Отличия языка Arduino от стандарта C++
- Не требуется включения заголовочных файлов (хидеров, файлов с расширением .h)в текст программы, препроцессор добавит их автоматически в соответствии с импортированными для скетча библиотеками.
- Добавлены предопределенные константы для уровней (HIGH и LOW) и функций выводов портов ввода/вывода (INPUT и OUTPUT).
- Добавлены функции для работы:
- c цифровыми портами ввода/вывода pinMode(), digitalWrite(), digitalRead();
- с аналоговыми пинами analogReference(), analogRead(), analogWrite();
- дополнительными IO функциями, например, побитного вывода со сдвигом shiftOut();
- временем mills() – время в мс, micros() время в мкс, delay() – задержка в мс, delayMicroseconds – задержка в мкс;
- внешними прерываниями attachInterrupt() и detachInterrupt();
- последовательным портом.
- В комплект поставки включены библиотеки для сервоприводов (Servo), шаговых двигателей (Steps), EEPROM, SPI-интерфейса.
В остальном полностью поддерживается стандарт языка, включая директивы компилятора, константы и типы данных, операторы (в т.ч. унарные), функции.
Со всеми платами контролеров и расширений поставляются необходимые библиотеки для работы со всем аппаратным обеспечением. Кроме того, в сети доступны тысячи готовых библиотек разработанных сообществом. Подобрать нужную (с документацией) можно по ссылкам на официальном сайте https://playground.arduino.cc/Main/LibraryList/ и https://www.arduinolibraries.info/ или на GitHub.
Соответственно, для реализации поставленной задачи разработчику нужно:
- Создать скетч.
- Скачать и подключить библиотеку для работы с Xbee (ZigBee).
- Выполнить назначение портов для опроса датчиков в функции setup();
- Инициализировать работу с интерфейсом ZigBee в setup();
- Прописать опрос датчиков и выдачу команды управления по условиям в loop().
Работать с Arduino можно и без установки IDE. Для этого удобно использовать:
- Web-редактор на официальном сайте. Полностью поддерживает синтаксис (с подсветкой), включает все необходимые для работы библиотеки. Альтернативный вариант – любой тестовый редактор.
- Компилятор avr-gcc.
- Программатор, поддерживающий чипы микроконтроллеров, используемых на платах Arduino,
Для пользователей, далеких от программирования на любых языках, созданы альтернативные варианты разработки проектов – визуальные. Среди наиболее известных:
- Scratch (http://s4a.cat);
- Snap (http://snap4arduino.rocks/);
- Ardublock (http://ardublock.com);
- XOD (https://xod.io/).
Таким образом, умный дом на Arduino своими руками – решение, доступное практически каждому. Ассортимент аппаратных средств позволяет решать задачи от простейших до максимально сложных (в том числе, за счет взаимодействия нескольких контролеров).
Способствует этому и накопленный сообществом богатый опыт, и полная открытость проекта, благодаря которой можно найти готовые программные разработки для большинства процессов home automation.
Часто спрашивают
Как решать вопрос с недостатком памяти контроллера для хранения программ?
Переносятся ли готовые скетчи с оного контроллера на другой?
Где найти подробную документацию для Arduino?
Не будет ли проблемой покупка совместимых сенсоров и исполнительных механизмов?
Рационально ли останавливаться на Arduino, когда есть более мощные открытые платформы, поддерживающие большее количество устройств и стандартов (например, Home Assistant)?
Arduino — готовая платформа для управления различными сопрягаемыми электронными устройствами, контроллер простыми словами, в основе которой лежит плата с собственной памятью, процессором и программным обеспечением. Разработана она была в 2005г., и ориентирована на непрофессиональных пользователей, которые с её помощью могут создавать простые автоматизированные системы управления. В том числе возможно построить на Arduino систему умный дом, интегрировав в данную среду различные датчики и электронные устройства.
Описание контроллера Arduino
Программная составляющая контроллера Arduino состоит из бесплатно распространяемой оболочки, обладающей простым, понятным на интуитивном уровне интерфейсом IDE. Программирование на ней можно осуществлять с платформ Windows, Linux и MacOSX. В оболочке уже имеется весь набор для загрузки программ сразу в контроллер, поэтому при работе с ней не требуется специальный программатор.
Для загрузки достаточно соединить плату Arduino с ПК или ноутбуком через USB-порт, после чего произвести загрузку нужной программы на устройство. При желании можно прошить загрузчик и самостоятельно: оболочка IDE позволяет поддерживать многие недорогие программаторы. Подсоединить их можно через штыревые выходы, специально предназначенные для внутреннего программирования:
- AVR через разъём ICSP
- ARM через JTAG.
Аппаратная составляющая платформы монтируется из печатных плат, выпускающихся как официальным обладателем товарного знака, так и многими другими производителями. На сегодня в продаже насчитывается свыше 20 разновидностей плат-контроллеров, которые могут сопрягаться между собой специальными разъёмами в виде своеобразного сэндвича. Большинство современных устройств типа Arduino используют следующие контроллеры:
- Atmel-AVR.
- ATmega-328.
- ATmega-168.
- ATmega-2560.
- ATmega-32U4.
- ATTiny-85.
Перечисленные микроконтроллеры работают на частоте 8 или 16 мегагерц. К плате контроллера возможно подключение различных электронных компонентов – датчиков, светодиодных осветителей, передающих устройств и т.д. Благодаря этому, Arduino удобно использовать для самостоятельного проектирования и сборки системы «умный дом».
Принцип работы системы Arduino
Получение и передача данных контроллером производится через порты. Всего на стандартной плате насчитывается свыше десятка различных портов, число которых можно увеличить присоединив ещё один такой же контроллер. Все порты Arduino делятся на два типа, для присоединения различных приборов:
- Аналоговые.
- Цифровые.
Схема подключения Arduino
Инициировать работу аналоговых портов следует, использовав в загружаемой программе pin-Mode-функцию:
- Выбираем номер нужного пина.
- Выставляем режим «Приём данных» (OUTPUT) или «Передача данных» (INPUT).
Широтноимпульсные цифровые модуляторы (ШИМ) имеют более интеллектуальный интерфейс, позволяющий им как принимать, так и передавать нужные данные. На плате ШИМ-порты обозначаются тильдой (~) или аббревиатурой PWM. При подключении к плате-контроллеру внешних датчиков и приборов следует учитывать и технические показатели портов. Они способны выдавать:
- 5 вольт напряжения.
- 0,02 ампера силы тока.
Если использовать в качестве питающего элемента для платы батарейки или АКБ напряжением свыше 12 вольт, возможен её перегрев и выход из строя. При снижении питающего напряжения до 6-7 вольт наоборот, на выходе порта может оказаться меньше 5В, что, в свою очередь, вызовет сбои в работе. Собранные в единый комплекс устройства, детекторы и датчики передают информацию на процессор Arduino, а оттуда, через подключенный модуль GPS или GSM, отправляется на компьютер или иное управляющее устройство с установленным софтом, принимающее решение о выдаче определённой команды. Это может быть включение-отключение бытового прибора, либо передача данных на мобильное устройство владельца дома.
Проект под систему для разных зон квартиры
Прежде чем приступить к сборке электронной системы следует составить план проекта умного дома на Arduino. Для примера возьмём небольшой дом, и попробуем составить схему работы «умного комплекса». Итак, нам необходимо в разных зонах обеспечить интеллектуальное функционирование разных приборов.
- Вход на придомовую территорию следует обеспечить автоматическим включением освещения в тёмное время, при подходе хозяев к дому, также при выходе из дома, при открывании двери. Потребуются: датчик движения и датчик открытия двери.
- Прихожая квартиры — при движении вдоль прохожей должно автоматически включаться освещение. Потребуются: датчик движения.
- Санузел. Автоматическое включение электрической водонагревательной установки при приходе домой хозяев. Вытяжка и освещение в санузле включается при открытии двери. Потребуются: датчик движен
ия и открытия двери. - Кухня. Освещение включается при входе жильца в помещение.
- При включении варочной плиты должна одновременно запускаться вытяжка. Потребуются реле для установки на питающую проводку электроплиты и датчик присутствия.
- Жилые комнаты. Автоматическое включение света, регулировка температуры электроконвекторами в зимнее время и кондиционерами летом. Потребуются детектор присутствия, датчик температуры и освещённости.
Установка системы: основные шаги
Основная задача – правильно подключить датчики к плате-контроллеру. Прежде всего, потребуется установить модуль Ethernet ENC28J60, предназначенный для объединения различных умных устройств в единую локальную сеть. Остальные детекторы соединяются с платформой либо посредством проводов (витых пар) со стандартными разъёмами, либо по беспроводной связи. В последнем случае потребуется присоединить к плате модули GPS или GSM.
Также потребуется написать программу для каждого прибора в оригинальной оболочке IDE. Это сделать не так уж сложно даже начинающему пользователю, поскольку оболочка имеет текстовый редактор, менеджером проектов и устройствами заливки программных кодов. Программа пишется на упрощённом языке C++. Сохраняется каждая из составленных программ в памяти с расширением (ino).
Платформа Arduino на сегодня обрела такую популярность, что начинающему пользователю зачастую вовсе не обязательно самостоятельно писать программы к ней. В интернет-сети имеется огромное количество бесплатных программ и целых библиотек, и для управления умными устройствами и датчиками. В качестве примера можно испольовать этот сайт.
Визуализировать управление «умным домом» на Arduino можно при помощи мобильного устройства или компьютера с установленной на них программой, которую можно найти и скачать бесплатно. При её установке, на дисплее устройства будет отображаться каждый подключённый к системе интеллектуальный прибор.
Чтобы получать данные от «умного дома» на Arduino в удалённом режиме, рекомендуется скачать в сети уже разработанное бесплатное приложение. Пошагово весь процесс установки программы выглядит так:
- На смартфон закачивается файл SmartHome.apk. с Google Play.
- Файл с приложением размещается в «менеджере файлов» и выставлением галочки активируется действие «Установить».
- По окончании установки программу нужно будет активировать и настроить под передающие устройства, подключённые к плате-контроллеру.
Материалы, необходимые для сборки
Сегодня множество фирм занимается разработкой и изготовлением самых разных приборов, интегрируемых с платформой Arduino. Для систем «умный дом» имеются следующие устройства, совместимые с данной платой:
- Климатические сенсоры, отслеживающие температуру и влажность воздуха как в помещении, так и снаружи.
- Датчики уровня освещённости, отвечающие за автоматическое включение ламп. При использовании устройств способных плавно менять уровень освещения по мере наступления темноты, нужно применять светодиоды. Обычные лампы накаливания или люминесцентные светильники не предназначены для подобных перепадов напряжения.
- Пространственные сенсоры, оснащённые гироскопом и компасом. Позволяют отслеживать перемещение какого-либо предмета в отсутствие хозяев.
- Датчики движения, действующие на основе фотоэлементов, ультразвука, или ИК-излучения.
- Аварийные детекторы – пожарные датчики, сенсоры протечки воды, утечки газа.
- Датчики-размыкатели открытия дверей и окон.
- Вентили-клапана для удалённого перекрытия газовых и водяных магистралей.
При необходимости этот список можно дополнить другими устройствами – микрофонами, моторчиками с сервоприводами, звуковой и световой сигнализацией. В целом же, платформа Arduino для непрофессиональных электронщиков, решивших самостоятельно собрать систему «умный дом».
Если коротко описать принцип действия Ардуино, то все очень просто. Например, при реализации проекта «Умный дом», это устройство работает следующим образом. По всему дому в определенных местах расставлены датчики, которые реагируют на внешнюю обстановку, и передают информацию на микропроцессор, который принимает решение.
Микропроцессор может быть соединен с компьютером, планшетом, ноутбуком, или смартфоном. Программы для ардуино можно легко скачать в интернете. Все комплектующие, разъемы производители выполняют стандартными, для любых подключений. Рассмотрим подробнее, как можно реализовать «Умный дом».
Проектирование «Умного дома»
Техника с каждым годом все глубже проникает в нашу жизнь. Без электроники уже невозможно представить повседневную жизнь, так как техника делает ее намного интереснее и проще.
Любой человек, который имеет хотя бы основные знания электротехники, может самостоятельно изготовить какое-либо полезное для дома устройство. Если в вашей квартире или доме установлены специальные считывающие информацию датчики, которые еще и выполняют различные функции, то это и есть «умный дом».
На практике не все так красиво и волшебно, как в фантастических фильмах, где роботы готовят утренние завтраки, стирают белье и делают в доме уборку. Реальные компьютеры еще далеки от подобного уровня развития.
Датчики «умного дома» всего лишь могут выполнять следующие функции:
- Автоматическое управление бытовыми устройствами. Система сама подключает и отключает чайник, телевизор, микроволновку и другие устройства.
- Обеспечивать пожарную безопасность. Система подает сигнал хозяину о возникновении возгорания, наличия дыма в помещении. В более сложных системах включается не только сигнализация, но и автоматически вызывается пожарная охрана и другие необходимые службы.
- Контроль погоды. Система контролирует и подает сигнал об изменениях погодных условий на улице. Это помогает человеку правильно планировать свой день.
- Контроль климатических условий в помещении. Устройство работает совместно с приборами отопления, вентиляции и другими климатическими устройствами. Ее принцип действия заключается в автоматическом увеличении или уменьшении температуры, влажности и т.д., в зависимости от настройки программы.
- Контроль проникновения на территорию жилого помещения. Система взаимосвязана с датчиками движения, и способна автоматически запирать дверные замки, определять точное число людей, находящихся в помещении.
- Контроль потребления электрической энергии путем автоматического подключения и отключения приборов освещения. В более сложных вариантах систем, осуществляется отключение освещения как с пульта управления, так и автоматическое полное отключение света, при отсутствии хозяина дома.
Квалифицированных специалистов, занимающихся обустройством таких умных домов, не так уж и много. Их услуги стоят немалых денег. Однако эту работу вполне можно выполнить самостоятельно. Вся система состоит из датчиков и контроллеров. Например, для контроля температуры в комнате, установлен датчик, который реагирует на понижение температуры ниже запрограммированного уровня. В этом случае микропроцессор автоматически включает нагревательные устройства. Аналогичные датчики располагают по всему дому, которые выполняют различные функции.
Система контроля достаточно надежна, и редко выходит из строя. В нее заложен открытый программный код, имеется возможность соединения с компьютером. В заводских настройках в микропроцессор заложено несколько стандартных программ. Однако, код этих программ можно легко изменять, и даже заменять на свои собственные проекты.
Работа системы ардуино
Датчики передают информацию на компьютер по беспроводной связи. Эти данные обрабатываются с помощью специальной программы. Далее, подается команда на исполнение определенных действий. Центральную плату можно приобрести или собрать самостоятельно. Все разъемы на плате являются стандартизованными, что облегчает сборку системы.
Необходимые комплектующие
Для самостоятельной сборки потребуются следующие и комплектующие:
- Отвертки.
- Пассатижи.
- Резисторы.
- Реле.
- Датчики.
- Модуль связи.
- Ардуино UNO.
Наборы для аналогичных систем лучше покупать в сертифицированных магазинах, так как использование поддельных элементов очень опасно. Необходимые программы для настройки системы без труда можно найти в интернете.
Датчики необходимо приобрести такие, которые будут соответствовать контролируемым ими параметрам.
Особенности установки ардуино
В системе умного дома целесообразно использовать только энергосберегающие лампы, лучше всего светодиодные. Применение обычных ламп не допускается, так как устройство не рассчитано на такую нагрузку.
После подготовки проекта и приобретения всех комплектующих, можно начинать подключение всех элементов в систему. Все подключения выполняются строго по схеме. Все контакты и соединения необходимо изолировать.
- Инсталляция кода программы.
- Настройка программы для применяемого планшета или компьютера.
- Настройка портов на модуле связи.
- Проверка работоспособности.
- Корректировка кода программы (при необходимости).
Для используемого вами гаджета в интернете скачивают специальную программу, которую затем устанавливают. Скачивать рекомендуется из официальных источников, во избежание сбоев в работе программы. После установки программы компьютер или планшет перезагружают.
Программа должна показывать информацию с датчиков, расположенных в разных помещениях. При необходимости настройки программы можно изменять.
Настройка роутера
На модуле связи (роутере) необходимо открыть порт. Это делается следующим образом:
- Открыть свойства роутера.
- Указать IP-адрес устройства.
- Открыть 80 порт.
- На новый адрес присвоить доменное имя.
- Произвести тестирование работы всей системы.
Для подобных проектов нецелесообразно применять открытый тип IP-адреса, так как такую систему могут взломать хакеры через интернет, и нарушить функционирование системы.
Такие системы «умных домов» способны значительно экономить электрическую энергию. Основным этапом является правильный выбор сертифицированных комплектующих, в противном случае нет гарантии качественной работы системы. Для ардуино существует большое множество готовых программных кодов. Это позволяет легко самостоятельно собрать такую систему.
К настоящему времени системы типа «умный дом» из удивительной экзотики, доступной только самым состоятельным лицам, превратились в обыденность, к которой может приобщиться любой желающий. Выбирать есть из чего: выпуск подобных аппаратно-программных комплексов освоили очень многие разработчики. К числу наиболее известных принадлежит компания Arduino, с продукцией которой мы сейчас и познакомимся.
Что такое «умный дом»
У этого термина есть более понятный аналог — «домашняя автоматизация». Суть подобных решений состоит в том, чтобы обеспечить автоматическое выполнение различных процессов, происходящих в жилище, офисе или на специализированных объектах. Простейший пример — автоматическое включение освещения в тот момент, когда кто-то из жильцов входит в комнату.
Система «умный дом» от Arduino представляет собой комплект оборудования для управления работой различных устройств с помощью мобильного телефона на базе ОС Android
В любой системе «умный дом» можно выделить следующие составляющие:
- Сенсорная часть. Это набор устройств, основная часть которых представлена всевозможными датчиками, позволяющими системе регистрировать события различного характера. Примерами могут служить датчики температуры и движения. Прочие устройства сенсорной части служат для передачи системе команд пользователя. Это выносные кнопки и пульты дистанционного управления с приёмниками.
Одним из наиболее часто импользуемых элементов «умного дома» является датчик движения
- Исполнительная часть. Это устройства, которыми система может управлять, реагируя таким образом на то или иное событие в соответствии с заданным пользователем сценарием. Прежде всего, это реле, посредством которых контроллер «умного дома» может подавать питание на любой электрический прибор, то есть включать и выключать его. Например, по хлопку в ладони (система «услышит» его при помощи микрофона) можно настроить включение реле, подающего питание на вентилятор. Обратите внимание: в этом примере вентилятор может быть любым. Но можно применить и прибор, специально выпущенный для работы в составе той или иной системы. Например, компания Arduino выпускает для своих систем электромоторчики, при помощи которых можно, допустим, закрывать или открывать форточку, а компания Xiaomi (китайский производитель подобных систем) — устройства управления воздухоочистителем. Такой прибор полностью контролируется системой, то есть она может не только включить его, но и изменить настройки.
Электромоторчик является исполнительным устройством, которое включается по сигналу контроллера системы и приводит в движение подключённый к нему механизм
- Процессор. Может также называться контроллером. Это «мозг» системы, который координирует и согласовывает работу всех её составляющих.
Плата процессора (или контроллера) управляет исполнительными устройствами на основе встроенной программы и данных, полученных от сенсоров
- Программное обеспечение. Это набор инструкций, которыми руководствуется процессор. В системах некоторых производителей, в том числе и от Arduino, пользователь может написать программу самостоятельно, в других — используются готовые решения, в которых пользователю доступны лишь типовые сценарии.
Современные системы «умный дом» делятся на несколько разновидностей:
- Оснащённые собственным контроллером.
- Использующие в этом качестве процессор пользовательского компьютера (планшета, смартфона).
- Обрабатывающие информацию при помощи удалённого сервера, принадлежащего компании-разработчику (облачный сервис).
Система может не только активировать тот или иной прибор, но и проинформировать пользователя о происшедшем событии путём отправки сообщения на телефон или каким-то иным способом. Таким образом, на неё можно возложить функции сигнализации, в том числе и противопожарной.
Сценарии могут быть гораздо более сложными, чем мы описали в примерах. Например, можно научить систему включать бойлер и переводить снабжение горячей водой на него при отключении централизованной подачи, если при этом обнаруживается присутствие кого-то из жильцов в доме (помогают инфракрасные, ультразвуковые датчики, а также датчики движения).
Знакомимся с Arduino
Arduino — итальянская компания, занимающаяся разработкой и производством компонентов и программного обеспечения для простых систем «умный дом», предназначенных для неспециалистов. Примечательным является то, что этот разработчик сделал архитектуру созданных им систем полностью открытой, что дало возможность сторонним производителям разрабатывать новые и копировать уже существующие Arduino-совместимые устройства, а также выпускать ПО для них.

Такой подход обеспечил высокую популярность системам итальянской компании, но у него есть и недостаток: из-за того что за производство компонентов для Arduino-систем берутся, так сказать, все кому не лень, не всегда удаётся с первого раза приобрести качественное изделие. Зачастую приходится сталкиваться и с проблемой совместимости компонентов от разных производителей.
Потенциальному пользователю следует знать, что с 2008 года существуют две компании, выпускающие продукцию под торговой маркой Arduino. У первой, которая начинала это направление, официальный сайт размещён по адресу www.arduino.cc ; у второй, новообразовавшейся — по адресу www.arduino.org. То, что было разработано до раскола, на обоих сайтах представлено одинаково, а вот ассортимент новой продукции уже отличается.
ПО для систем «умный дом» Arduino имеет вид программной оболочки (называется IDE), в которой можно писать и компилировать программы. Распространяется бесплатно. Программы пишутся на языке C++.
Версии программы Arduino IDE, представленные на указанных сайтах, тоже сильно отличаются, хотя имеют одинаковые не только название, но и номера версий.
Из-за этого в них довольно легко запутаться. Отличие состоит в том, что каждое ПО поддерживает свои библиотеки и платы.
«Железо» системы состоит из платы с микроконтроллером (процессорная плата) и установленных на ней плат расширения, которые в обиходе называют шилдами. Подключение шилд к процессорной плате позволяет добавлять к «умному дому» новые компоненты. Собранная система может быть как полностью автономной, так и работающей в связке с компьютером через стандартный проводной или беспроводной интерфейс.

Преимущества системы Arduino
Этот аппаратно-программный комплекс привлекает пользователя такими достоинствами:
- возможность автономной работы, обусловленная наличием собственного контроллера;
- широкие возможности по настройке работы системы (пользователь сам пишет программу, в которой могут быть предусмотрены сценарии любой сложности);
- простота процесса загрузки программы в контроллер: программатор для этого не требуется, достаточно иметь USB-кабель (в микроконтроллере имеется прошивка загрузчика Bootloader);
- доступная стоимость компонентов, обусловленная отсутствием у того или иного производителя монопольных прав (архитектура является открытой).
Если загрузчик Bootloader стал работать со сбоями, либо в приобретённом микроконтроллере его не оказалось, пользователь имеет возможность прошить его самостоятельно. В программной оболочке IDE для этой цели предусмотрена поддержка ряда наиболее доступных и популярных программаторов. Кроме того, почти все процессорные платы Arduino имеют штыревой разъём, позволяющий осуществлять внутрисхемное программирование.
В программе Arduino IDE, представленной на сайте arduino.cc, заложена возможность создания пользовательских аппаратно-программных платформ, в то время как в версии программы на arduino.org такая функция отсутствует.
Какие решения предлагает Arduino
Поскольку производством Arduino-совместимых датчиков и приборов занимается множество компаний, ассортимент этой продукции довольно широк. Вот что применяется чаще всего:
- Сенсоры, отслеживающие климатические параметры:
- Сенсоры, позволяющие определить пространственное положение объекта, на котором они закреплены:
- Сенсоры, позволяющие регистрировать присутствие различных объектов:
- Аварийные сенсоры:
- Прочие устройства, например:
- микрофон;
- часы;
- датчик открывания двери;
- пульты дистанционного управления (радиочастотные и инфракрасные) с приёмниками;
- удалённые кнопки.
Некоторые из этих устройств включены в состав базового набора Arduino Start, который у ряда производителей имеет название StarterKit.

Исполнительная часть содержит огромный набор устройств, например:
- электромоторы;
- реле и различные переключатели;
- диммеры (позволяют плавно менять интенсивность освещения);
- доводчики дверей;
- вентили и 3-ходовые клапаны с сервоприводами.
Если вы планируете подключить через реле Arduino освещение, то правильнее использовать в качестве светильников светодиодные лампы. Лампы накаливания при подключении через такие реле быстро горят.
Видео: начинаем работать с Arduino — управляем светодиодом через web-интерфейс
Составление проекта на Arduino
Процесс создания и настройки «умного дома» Arduino покажем на примере системы, в которую будут заложены следующие функции:
- мониторинг температуры на улице и в помещении;
- отслеживание состояния окна (открыто/закрыто);
- мониторинг погодных условий (ясно/дождь);
- генерация звукового сигнала при срабатывании датчика движения, если активирована функция сигнализации.
Систему настроим таким образом, чтобы данные можно было просматривать посредством специального приложения, а также веб-браузера, то есть пользователь сможет сделать это из любого места, где есть доступ в интернет.
Используемые сокращения:
- «GND» — заземление.
- «VCC» — питание.
- «PIR» — датчик движения.
Необходимые компоненты для изготовления системы «умного дома»
Для системы «умного дома» Arduino потребуется следующее:
- микропроцессорная плата Arduino;
- модуль Ethernet ENC28J60;
- два температурных датчика марки DS18B20;
- микрофон;
- датчик дождя и снега;
- датчик движения;
- переключатель язычковый;
- реле;
- резистор сопротивлением 4,7 кОм;
- кабель «витая пара»;
- кабель Ethernet.
Стоимость всех компонентов составляет примерно 90 долларов.

Сборка «умного дома»: пошаговая инструкция
Вот в какой последовательности необходимо действовать.
Подключение исполнительных и сенсорных устройств
Подключаем все компоненты согласно схеме.

Разработка программного кода
Пользователь пишет всю программу целиком в оболочке Arduino IDE, для чего последняя оснащена текстовым редактором, менеджером проектов, компилятором, препроцессором и средствами для заливки программного кода в микропроцессор платы Arduino. Разработаны версии IDE для операционных систем Mac OS X, Windows и Linux. Язык программирования — С++ с некоторыми упрощениями. Пользовательские программы для Arduino принято называть скетчами (sketch) или набросками, программа IDE сохраняет их в файлы с расширением «.ino».
Функцию main(), которая в С++ является обязательной, оболочка IDE создаёт автоматически, прописывая в ней ряд стандартных действий. Пользователь должен написать функции setup() (выполняется единоразово во время старта) и loop() (выполняется в бесконечном цикле). Обе эти функции для Arduino являются обязательными.
Заголовочные файлы стандартных библиотек вставлять в программу не нужно — IDE делает это автоматически. К пользовательским библиотекам это не относится — они должны быть указаны.
Добавление библиотек в «Менеджер проекта» IDE осуществляется несколько необычным способом. В виде исходных текстов, написанных на С++, они добавляются в особую папку в рабочем каталоге оболочки IDE. После этого названия этих библиотек появятся в соответствующем меню IDE. Те, что отметит пользователь, будут внесены в список компиляции.
В IDE предусмотрен минимум настроек, а возможность настройки компилятора отсутствует вовсе. Таким образом, начинающий программист застрахован от ошибок.
Вот пример самой простой программы, заставляющей каждые 2 секунды мигать подключённый к 13-му выводу платы светодиод:
void setup () { pinMode (13, OUTPUT); // Назначение 13 вывода Arduino выходом}
void loop () { digitalWrite (13, HIGH); // Включение 13 вывода, параметр вызова функции digitalWrite HIGH — признак высокого логического уровня
delay (1000); // Цикл задержки на 1000 мс — 1 секунду
digitalWrite (13, LOW); // Выключение 13 вывода, параметр вызова LOW — признак низкого логического уровня
delay (1000); // Цикл задержки на 1 секунду}
Однако в настоящий момент перед пользователем далеко не всегда встаёт необходимость лично писать программу: в сети выложено множество готовых библиотек и скетчей (загляните сюда: http://arduino.ru/Reference). Имеется готовая программа и для системы, рассматриваемой в этом примере. Её нужно загрузить, распаковать и импортировать в IDE. Текст программы снабжён комментариями, поясняющими принцип её работы.

Когда пользователь нажимает в браузере или установленном на смартфоне приложении кнопку «Refresh» (Обновление), микроконтроллер Arduino осуществляет отсылку данных этому клиенту. С каждой из страниц, обозначенных как «/tempin», «/tempout», «/rain», «/window», «/alarm», поступает программный код, который и отображается на экране.
Установка клиентского приложения на смартфон (для ОС Android)
Для получения данных от системы «умный дом» в сети можно скачать готовое приложение.
Вот что необходимо сделать владельцу гаджета:
С помощью этого приложения можно не только получать информацию от системы «умный дом», но и управлять ею — включать и отключать сигнализацию. Если она включена, то при срабатывании датчика движения приложению будет отправлено уведомление. Опрос системы Arduino на предмет срабатывания датчика движения приложение выполняет с периодичностью раз в минуту.
Активировав иконку «Настройки», можно отредактировать свой IP-адрес.
Настройка браузера на работу с «умным домом»
В адресной строке браузера следует ввести XXX.XXX.XXX.XXX/all, где «XXX.XXX.XXX.XXX» — ваш IP-адрес. После этого появится возможность получать данные от системы и осуществлять управление ею.
Представленный здесь программный код позволяет через браузер включать и выключать свет, тогда как в приложении для Android-смартфона такая функция не реализована.
Работа с роутером
Настройка учётной записи на noip.com
Этот этап не является обязательным, но он необходим, если вы хотите присвоить адресу доменное имя. Для этого надо зарегистрироваться на сайте https://www.noip.com/ , перейти в раздел «Add host» и ввести IP-адрес системы.

Создание проекта завершено, можно проверять работоспособность системы.
Видео: умный дом на «Ардуино»
Особенности работы некоторых аппаратных средств Arduino
Ввиду того что Arduino-совместимые компоненты выпускаются множеством сторонних компаний, качество продукции которых сама компания Arduino никак не контролирует, пользователь с большой вероятностью может приобрести компонент, работающий не совсем корректно.
Похожая ситуация сложилась в сфере разработки персональных компьютеров. В своё время компания IBM сделала архитектуру своих компьютеров открытой, вследствие чего IBM-совместимые компьютеры и отдельные компоненты стали выпускать многие компании. В итоге «персоналки» этого типа широко распространились по всему миру, однако, качество комплектующих и степень их совместимости во многих случаях оказывались не на самом высоком уровне. Противоположной тактики придерживалась компания Apple. Она ограничила круг разработчиков, имеющих доступ к архитектуре, и такую же политику провела в сфере разработки ПО. В итоге компьютеры Apple оказались менее распространёнными и более дорогими, но зато по качеству они на порядок превосходят IBM-совместимые устройства, работающие под Windows.
В отношении некоторых комплектующих для систем Arduino пользователи заметили следующее:
- Датчик температуры DHT11, поставляемый с базовым набором (StarterKit), даёт значительную погрешность в 2–3 градуса. В помещении рекомендуют применять температурный датчик DHT22, дающий более точные показания, а для установки на улицу — DHT21, способный работать при отрицательных температурах и имеющий защиту от механических повреждений.
- На некоторых микропроцессорных платах Arduino при замыкании подключённых к ним реле выходит из строя COM-порт. Из-за этого на микроконтроллер не удаётся загрузить скетч: как только начинается заливка, процессор перезагружается. Реле при этом щёлкает, COM-порт отключается и процесс загрузки скетча прекращается.
- Датчик закрытия окна/двери иногда преподносит сюрпризы в виде ложных срабатываний. С учётом этого скетч пишут так, чтобы система производила необходимое действие только по получении нескольких сигналов подряд.
- Для настройки управления процессами при помощи хлопков некоторые пользователи по неопытности вместо микрофона заказывают детектор звука с ручной настройкой порога. Для подобных целей этот компонент не подходит, так как имеет слишком малый радиус действия: хлопать приходится не далее 10 см от детектора. Кроме того, этот датчик передаёт сигналы импульсами малой продолжительности, так что при наличии большого скетча, на обработку которого уходит сравнительно много времени, микроконтроллер просто не успевает их зафиксировать.
- Для устройства противопожарной сигнализации следует использовать датчик дыма, а не датчик огня. Последний регистрирует пламя не далее 30 см от себя.
- На случай сбоя в работе микроконтроллера или ошибки в коде лучше применять нормально замкнутые реле с последовательно подключёнными ручными выключателями.
Чтобы избежать покупки низкокачественных комплектующих, бывалые пользователи рекомендуют предварительно изучать отзывы о них, опубликованные в Сети. Недорогие датчики можно покупать в нескольких вариантах, чтобы лично проверить, какой из них работает лучше.
Возможно, система «умный дом» от компании Arduino является не самой качественной, но зато широчайший выбор компонентов и их доступная стоимость точно сделали её одной из самых популярных. Воспользовавшись нашими советами, вы быстро научитесь создавать проекты Arduino, автоматизируя различные домашние процессы.
Всем привет! С вами снова Артем Лужецкий и очередной материал в направлении . Чтобы связать наши проекты с интернетом можно использовать 10-ки способов, но мы пока остановимся на модуле, о котором я еще говорил еще в самой первой статье, ESP 8266. не может работать с интернетом. Обычная плата без дополнений и модулей не может передавать информацию на расстоянии.
Но с помощью UART интерфейса на Arduino мы можем получать информацию, обрабатывать ее и отправлять данные обратно. С помощью него, UNO может работать с Bluetooth и Wi-fi модулями, которые уже и дают нашей системе дополнительные функции.
Выход в интернет
Давайте поговорим об интернете поподробнее. Я думаю, вы знаете, что интернет — это не магия и не просто радиоволны, а гигантская сеть между тысячами различных устройств с помощью беспроводной связи.
Сайты, с которыми мы каждый день сталкиваемся — это информация, переданная нам с сервера. Весь тот текст, картинки, анимация — все это хранится на сервере, пока клиент, мы, не захочет, чтобы ему передали эту информацию.
Вы можете узнать, что такое IP, TCP, HTTP, GET — запрос в интернете, если вам в дальнейшем будет не понятно.
Но это все не будет работать без связи нашей платы с сайтами и приложениями. Есть два решения, подключится к другому сайту (серверу), который будет обрабатывать информацию полученную либо от самой платы, либо от пользователя, чтобы управлять приборами на расстоянии или создать свой сервер, где будет лежать лично наш написанный сайт. Мы все это попробуем сделать в будущем.
Передача данных от Ардуино
Сначала мы заставим нашу ардуину передавать данные на отдельный сайт, который будет изображать данные, полученные с датчиков ардуино. Для этого прекрасно подойдет сайт для интернет вещей — dweet.io
Попробуем на него передавать данные изменения температуры нашей комнаты.
Можно обойтись без создания собственного ключа, и в коде (где нужно вставить ключ), можно записать все что угодно и сайт все равно вам выведет на экран график изменения отправленных данных по времени. Но для того, чтобы в дальнейшем создать сеть онлайн устройств, придется более серьезно отнестись к данному сайту.
На главной странице можно посмотреть возможные варианты работы данного сайта
Также создать свой аккаунт и сеть ключей для разных устройств, чтобы вы могли не беспокоится за безопасность данных и могли из любого устройства узнать, что происходит в вашем доме.
Схема подключения
Разберем электрическую схему подключения esp 8266. Нам потребуется только пины Rx, Tx, Gnd и Vcc. Данный модуль питается от 3,3 вольт.
И общую электрическую схему, в которой нам пригодится ардуино, esp и термистор.
Код проекта
Итак, приступим наконец-то к проекту. Основная часть нашего проекта будет в коде. Для библиотеки по использованию нашего модуля предусмотрено пара новых функций (ссылку на библиотеку можно найти в первой статье):
- ESP8266 wifi(Serial) — Подключаем esp8266 через Serial соединение.
- wifi.joinAP(a,b); — Подключение к wifi, где а — это название точки доступа, а b — пароль к этой точки доступа.
- wifi.createTCP(a,b) — Открытие TCP соединения, где «a» — DNC сайта (www.dweet.io), а «b» — сетевой порт (порт 80).
- wifi.send(a,b) — отправляем данные, где «a» — данные в массиве (строка с-стиля), а «b» — общее количество отправленных байтов.
- wifi.releaseTCP() — Закрытие TCP соединения.
#include «ESP8266.h» // для работы с esp8266
#include
// чтобы добавить больше пинов UART
#include // чтобы высчитать логарифм
#define SSID «Arduino» // имя вашего wi-fi
#define PASSWORD «12345678» //пароль вашего wi-fi
#define Thermistor_PIN A0 // пин подключения термистора
SoftwareSerial mySerial(2, 3); // пины подключения по UART
ESP8266 wifi(mySerial); // говорим esp8266, что она будет работать через пины UART
String name = «MyEyse»; // ваш ключ от сайта dweet.io
void setup() {
Serial.begin(9600); // открываем serial соединение
if (wifi.joinAP(SSID, PASSWORD)) { // если мы подключились к нашей сети
Serial.println(«https://dweet.io/follow/» + name); // пишем в мониторе порта адресс сайта
} else {
Serial.println(«Wi-Fi connection error»); // в случае, если мы не подключимся к сети, нам выдадут ошибку
}
}
void loop() {
float volt_temp = 1023.0 / analogRead(Thermistor_PIN) — 1.0; // высчитываем температуру
float temperatur = 1.0 / (-log(volt_temp) / 3977.0 + 1.0 / 295.0) — 273.0;
if (wifi.createTCP(«www.dweet.io», 80)) { // если нам удалось создать TCP соединение
String data = «GET /dweet/for/» + name + «?»; // создаем переменную data в виде строки (заполняем GET-запрос)
data += «temperatur_C=» + String(temperatur) + » HTTP/1.1rn»;
data += «Host: dweet.iornrn»; // закрываем GET-запрос в строке
wifi.send(data.c_str(), data.length()); // отправляем данные в массиве (строка с-стиля) и общее количество байтов
wifi.releaseTCP(); // закрываем TCP соеденение
} else {
Serial.println(«create TCP error»); // в случае, если мы не создали TCP соеденение, нам выдадут ошибку
}
delay(1000); // ждем секунду (dweet.io обрабатывает данные 1 секунду, нет смысла отправлять данные раньше)
}
Итоговый результат
Если код вы записали правильно, с правильным паролем и именем от вашего wifi, который исправно работает, то в монитор порта будет отправлена ссылка, которую необходимо вставить в адресную строку браузера. Изображение должно выглядеть так
А теперь вы можете подключить ардуино к источнику питания и убрать провод подключения ардуино — компьютер. И узнавать температуру в вашем доме, находясь на другом конце города. Все зависит только от вашей фантазии.
В следующий раз попробуем разобрать еще один проект, который поможет больше раскрыть все возможности интернет модуля. В дальнейшем попробуем создать свой сервер и сайт, а также поговорим о соединении с соцсетями. Увеличить возможности сделать ваш дом умным. Удачи!
Мир не стоит на месте. Техника проникает в жизнь людей. С каждым днём все сложнее представить себе повседневность без электроники. И если раньше все это было доступно только состоятельным людям, то теперь техника находится в каждом доме и делает жизнь проще и интересней.
К слову, сейчас любой человек, обладая базовыми знаниями, может собрать самостоятельно любое приспособление, которое в будущем может стать полезным в повседневной жизни. Интернет полон тематических сайтов и форумов, фото и видео мастер-классов, советов и инструкций. Вот так и создаются устройства, которые способствуют более лёгкой и приятной жизни. Если дом или квартира оснащена специальными датчиками, которые считывают ту или иную информацию и выполняют определённые функции, такой дом можно назвать «умным».
«Умный» дом — что это?
Возможно, в фантастических фильмах о будущем, многие уже встречали подобное строение. Красивая просторная квартира, в которой все автоматизировано. Компьютер будит семью по утрам, готовит завтраки, занимается стиркой и глажкой одежды, а также поддерживает чистоту в дому. Проще говоря — исполняет роль горничной-повара и даже больше.
В реальности все, конечно, не так волшебно и красочно. Нынешние машины и компьютеры ещё не достигли такого уровня развития. Поэтому функции современного «умного» дома ограничены. К примеру, датчики могут контролировать:
- Включение-выключение света.
- Расход энергии.
- Температуру.
- Влажность в доме.
Профессиональных компаний, которые занимаются строительством и обустройством «умных» домов, очень мало. К тому же их слуги довольно дорогие и по карману только узкому кругу потребителей. Но, это вовсе не повод отказывать себе в обустройстве комфортной жизни в собственном доме. Ведь можно сделать «умный дом» своими руками.
Технология сборки
«Умный дом» — это всего лишь контроллеры с датчиками
, основной целью которых является считывание информации и, исходя из этого, выполнение соответствующих команд. К примеру, контроль температуры в помещении. Если в комнате температура падает ниже ранее установленного уровня, то система автоматически включает обогрев комнаты. Это только один из примеров функций «умного дома». Подобные контрольные датчики установлены по всему дому и выполняют самые разнообразные функции.
Итак, как сделать свой дом «умным»? Что для этого нужно? Для начала нужно заняться закупкой необходимых контроллеров
, которые будет необходимо запрограммировать и наладить. На первый взгляд все достаточно просто, но на самом деле могут возникнуть проблемы с эксплуатацией самой системы, для сборки и управления которой необходимы определённые знания. Поэтому компания Arduino постаралась максимально упростить свою систему, с которой может справиться даже ребёнок.
Что такое система Arduino ?
Система компании Arduino – это платформа для разработки собственных программ комфорта. Система легка в управлении и редко даёт сбои или выходит из строя. Система Arduino имеет открытый исходный код и возможность подключения при помощи USB-кабеля. Изначально система имеет набор программ, установленных по умолчанию, но благодаря открытому типу исходного кода, можно инсталлировать собственные разработки.
Принцип работы
Arduino
Как же работает система Arduino? Очень просто. Установленные по всему дому или квартире датчики считывают информацию об окружающей среде и передают все данные на компьютер
, который самостоятельно принимает решения. Функционировать эта система может на компьютере, ноутбуке, планшете или даже телефоне. Все программы для ардуино можно найти в свободном доступе. Все «железо» производитель делает максимально стандартизированным под системные разъёмы.
Функции системы
Arduino
Система ардуино для проекта «умного дома» должна выполнять следующие функции:
Несмотря на набор разнообразных функций, существуют несколько важных причин
, отталкиваясь от которых потребители отдают своё предпочтение именно Arduino.
Преимущества
- Цена.
- Качество.
- Удобство.
- Простота монтажа и проекта в целом.
- Низкая стоимость в случае поломки или выхода из строя отдельных комплектующих.
- Доступность программного обеспечения.
История создания проекта для автоматизированных систем и робототехники Arduino берет начало с 2005 года. Тогда в итальянском институте студент Эрнандо Барраган создал платформу c аппаратно-программной частью, которая впоследствии стала основой для этого проекта. На данный момент платформа Arduino пользуется невероятным успехом. Сейчас с ее помощью создаются автоматизированные системы, которые используются на различных этапах производства.
Также широкое применение эта плата получила в различных вариациях роботизированных систем и в проектах умного дома, где используется множество дополнительных наборов модулей. Главным преимуществом такого проекта над другими системами автоматики является его цена. Благодаря низкой цене, систему автоматизированного умного дома на Ардуино может собрать своими руками любой пользователь, у которого есть начальные навыки программирования и необходимый набор компонентов.
Разнообразие Ардуино плат и их использование в умном доме
Актуальными на данный момент являются версии таких наборов плат Arduino:
- MICRO;
- PRO MINI;
- NANO.
а также новинки, которые появятся в ближайшем будущем:
- MEGA 2560;
- ZERO;
Кроме официального производителя плат Arduino процессорный гигант Intel подключился к созданию Ардуино подобных плат, выпустив Intel Galileo. Уже сейчас компания Intel официально запустила по этой программе три платы:
- Intel Galileo;
- Intel Galileo Gen 2;
- Intel Edison.
Кроме плат вы сможете найти десятки разнообразных наборов модулей, которые можно подключить к Ардуино для увеличения его функциональных возможностей.
Самой популярной платой является Arduino Uno. Эта плата сравнительно недорогая и пользуется популярностью, как у новичков, так и у профессионалов. С помощью такой платы можно создавать базовые автоматизированные механизмы умного дома. Например, с помощью Arduino Uno и дополнительных наборов модулей можно автоматизировать такие процессы умного дома, которые позволят:
- Управлять кондиционером через приложение на Andoid или iOS;
- Удаленно управлять системой электропитания в доме;
- Удаленно узнавать информацию о температуре дома;
- Управлять телевизором через приложение на Andoid или iOS;
- Управлять ресивером;
- Управлять освещением в доме;
- Получать всю информацию об устройствах, подключенных к умному дому через Интернет;
- Управлять солнечными панелями;
- Управлять температурным режимом в доме.
Это лишь малая часть возможностей проекта Ардуино для умного дома, которые любой желающий может собрать своими руками. Сейчас можно найти компании, внедряющие готовые решения умного дома. Но стоимость таких решений очень высока. Поэтому такой проект умного дома сейчас очень популярен во всем мире. Кроме того, функционал вашего умного дома ограничен только вашей фантазией и средствами. Модель умного дома с набором дополнительных модулей изображена на рисунке ниже.
Установка IDE для Arduino
На сайте официальном сайте выложена собственная программная оболочка IDE, которая является бесплатной и поддерживается всеми популярными операционными системами. С помощью IDE пользователь может создавать свои программы, которые можно загрузить в печатную плату Ардуино. Скачать IDE можно на официальном сайте перейдя по адресу https://www.Arduino.cc/en/Main/Software. На данный момент используется версия IDE Arduino 1.6.6. Рассмотрим подробнее процесс установки IDE для платформы Windows. После загрузки запустите инсталлятор и нажмите кнопку «I Agree».
В следующем окне оставляем все галочки и нажимаем кнопку «Next».
Выбираем место установки IDE и нажимаем кнопку «Install».
Начнется процесс установки.
После установки IDE, его можно запустить с ярлыка на рабочем столе, после чего вам откроется рабочая область программы:
Напишем простую программу и загрузим ее в Ардуино
IDE для Arduino использует упрощенный язык программирования C++, понятный начинающим программистам. Для примера напишем программу, которая будет включать светодиод с интервалом 1.5 секунды. Для этого запустите IDE и вставьте код, расположенный ниже:
В строке «int ledPin = 13» объявляем переменную цифровую ledPin и присвистываем ей значение 13. В функции «setup» устанавливаем порт 13 как исходящий. В цикле «loop» с помощью оператора «digitalWrite» включаем и отключаем светодиод. А с помощью оператора «delay» делаем задержку в 1,5 секунду два раза. В итоге бесконечный цикл «loop» будет отключать, и включать наш светодиод на 1,5 секунды.
Схема подключения с помощью набора из платы Arduino Uno и светодиода для нашей программы показана на рисунке ниже.
Для загрузки программы в Arduino Uno необходимо подключить плату к компьютеру с помощью USB кабеля. При успешном подключении загорится светодиод «ON» и замигает светодиод «L».
После этого в меню «Скетч» нажмите кнопку загрузка.
После компиляции и загрузки программы на устройстве начнет мигать светодиод.
Итог
Начав осваивать Ардуино, вы сможете сделать настоящий умный дом, который будет максимально соответствовать вашим потребностям. Надеемся, что наша статья поможет вам ближе познакомиться с таким проектом. Купить платы Ардуино и наборы модулей вы сможете как у официальных поставщиков, которых можно найти как на официальном сайте, так и во многих интернет-магазинах.
Видео по теме
Дальше дело техники — написать под Ардуино цикл опроса параметров и вывести их для начала в монитор порта. Время одного цикла получилось около секунды. Однако в конечном варианте проекта с логированием данных на флэшку и опросом температурных датчиков это время выросло до 4-x секунд. Это меня уже совершенно не устраивало и пришлось погрузиться в оптимизацию. В итоге я вновь добился секундного интервала без потери функциональности. К слову, скетч я переписывал с нуля два или три раза, пока не нашёл правильную архитектуру и экономные алгоритмы.
Программная реализация обмена со счётчиком
Код выдран из контекста моего большого рабочего скетча. Скомпилирован, но в таком виде я его никогда не запускал. Привожу только для примера, а не как готовую рабочую программу. Хотя в теории всё должно работать именно в таком виде.
Код написан для двух типов счётчиков одновременно, однофазного МТ-124 и трёхфазного МТ-324. Выбор типа счётчика происходит в программе автоматически по ответному слову инициализирующей команды.
Код привожу как есть, без прекрас и дополнительных комментариев кроме тех, что писал сам для себя. И да, я не программист, и даже не учусь на него, поэтому пинать меня за качество кода не следует, но поучить как надо кодить можно: EnergyMeterNeva.ino
Огромный дополнительный плюс счётчика электроэнергии — это надёжные и точные часы реального времени. Мне не пришлось обеспечивать систему дополнительным модулем, который ещё нужно найти не просто абы какой, а качественный. Текущее время с точностью до секунды я получаю со счётчика среди прочих данных. Да, относительно атомного времени время счётчика немного сдвинуто (несколько секунд), уж не знаю с чем это связано, с некачественной заводской установкой или ещё чем, но точность хода при этом отличная, просто с небольшим смещением.
В редкие моменты, когда электропитание на даче отключается и счётчик становится недоступен, текущее время я получаю от внутреннего таймера Ардуины. Когда электросчётчик работает и его данные доступны, внутренний таймер Ардуины я перепрописываю значением со счётчика на каждом витке loop. Когда счётчик отваливается — текущее время продолжает тикать на таймере Ардуины.
Помимо чтения параметров счётчик, естественно, можно и программировать. То есть интерфейс работает и на чтение, и на запись. Однако я с такими сложностями добивался протокола команд чтения, что о просьбе протокола записи я даже не заикнулся производителю. Во-первых, мне это было ни к чему, разве что только время чуть сдвинуть. Во-вторых, подозреваю, что эти данные уже не являются открытыми, так как могут быть использованы в мошеннических целях.
Температурные датчики
Тест температурных датчиков с помощью скетча-примера я уже проводил отдельно раньше. Теперь оставалось только встроить их опрос в основной проект. Это не составило никакого труда. Все девять имеющихся у меня датчиков работали без проблем при параллельном включении по 1-Wire. Разброс показаний между ними составил около 0.5 градуса, что показывает бессмысленность использования их на максимальной точности в 0.0625 градуса. Датчики для теста собрал в пачку и завернул в несколько слоёв пупырчатого полиэтилена. Для большей точности пачку расположил вертикально и ждал сутки для полного выравнивания температуры. Показания всех датчиков так и не оказались одинаковыми.
Однако загрублять точность конвертации температуры самих датчиков я тоже не стал. Проще округлить показания программно, а выгоды по времени опроса я бы не получил, так как придумал такой алгоритм, при котором время ожидания конвертации не является пустым бесполезным delay(750). Обычная логика работы с датчиками такая — сначала подача команды на запуск конвертации температуры, потом ожидание окончания конвертации (те самые 750 мс минимум), и уже затем вычитывание данных. Я сделал всё наоборот, что позволило мне исключить пустой интервал ожидания — сначала вычитываю данные из датчиков, а потом сразу запускаю конвертацию. И пока весь остальной код в цикле LOOP отработает, данные как раз успевают подготовиться для вычитывания на следующем витке. По времени данные с датчиков я получаю в этом случае чуть позже — цикл LOOP занимает примерно 1-1.5 секунды, но это совершенно не критично.
Иногда со всех датчиков я получал данные «85» или «0». Что это за косяк, я так и не понял, поэтому сделал в коде проверку и исключил попадание таких данных в результат. Ещё обнаружился косяк у одного из датчиков — он не держал настройки при отключении питания. То ли флэшка его внутренняя дохлая, то ли ещё что. Поэтому в сетапе прописал настройку датчиков, и теперь по включению питания (если оно таки пропадает) все датчики гаранитрованно настроены.
Адреса конкретных датчиков я получил с помощью скетча-примера, где-то нарытого и немного мной модифицированного: DS18x20_Temperature.ino
После чего адреса я забил константами в массив и в основной программе обращался к датчикам уже сразу по их адресам: TempSensors_DS18B20.ino
Для правильной работы датчиков на шине 1-Wire требуется установить подтяжечный резистор 4.7 кОм между линией данных и питанием. Мне было удобно припаять между пинами клеммной колодки SMD-резистор, но нашёл я у себя в подходящем корпусе только 5.1 кОм, его и поставил (он виден на фотке в разделе про сборку на нижней стороне платы). Работает всё хорошо.
Датчики температуры у меня подключены электрически параллельно на одной длинной линии (+5, gnd и data), все 9 штук, но хитро. Физически кабели витой пары подключены звездой для удобства разводки датчиков по объекту. В каждом плече кабеля я использую две пары. Одна пара — это питание датчика. Вторая пара — это линия данных, которая идёт по одному проводу к датчику и возвращается от него же обратно по второму проводу. Таким образом получается возможным развести кабели звездой от щитка, но электрически это звезда только по питанию, а по данным это одна линия. Такой вариант подключения оказался более надёжен в работе на длинных линиях, при простом параллельном подключении было много сбоев при чтении данных. Вот эскиз такой схемы:
Полуметровые хвосты трёхпроводных кабелей самих датчиков я не укорачивал, подключил их как были, оказалось не критично.
Всего по бытовке разведено три кабеля, два — для внешних датчиков, на каждом по одному, и один для всех оставшихся семи внутренних. Эти семь внутренних датчиков подключены по той же схеме, но в пределах одного длинного кабеля и с короткими ответвлениями от него (см. нижнюю Т-образную конфигурацию на эскизе). Где-то хватило штатного полуметрового хвоста датчика для ответвления, где-то ответвлял с помощью такой же витой пары.
Общая длина витой пары по бытовке составила примерно 25 метров. Куски для внешних датчиков — 5 и 10 метров, и десятиметровый внутренний кусок с ответвлениями на семь датчиков. Всё работает почти идеально. Лишь изредка проскакивают прочерки вместо значений температуры. Это значит, что данные с конкретного датчика были прочитаны некорректно. Но случается это настолько редко (замечаю раз в месяц может), что не доставляет никаких проблем.
Удалённый доступ
Для удалённого доступа к Ардуино был куплен Ethernet shield. При наличии встроенной библиотеки работа с ним, как и со всем остальным в Ардуино, оказалась довольно проста.
Функционально схема работы у меня такая. На Ардуино поднят веб-сервер, который при обращении к нему клиента (браузера) генерирует веб-страничку с различной информацией. Автообновление данных на страничке реализуется посредством яваскрипта, опрашивающего по таймеру сервер.
Также страничка имеет набор контролов для управления исполнительными механизмами, подключенными к Ардуино — силовыми реле, которые коммутируют нагрузку — электрообогреватели и освещение.
С дизайном веб-странички я не парился, тем более что был необходим минимальный объём текстовых данных для её более быстрой загрузки, поэтому самый примитивный html и всё:
В html-код я вместо данных встроил теги, которые на лету подменяются реальными данными при генерации странички сервером. При автообновлении данных по запросу яваскрипта они передаются в браузер уже непосредственно из микроконтроллера в формате JSON.
Код страничики лежит в файле на карте памяти и загружается с неё при обращении к серверу. Для более быстрой и удобной модификации кода странички я встроил механизм её обновления в неё саму. Внизу, под блоком основных контролов есть текстовое поле и кнопка Отправить. В текстовое поле копирую новый html-код, жму кнопку, после чего java-скрипт производит отправку данных на веб-сервер контроллера, который сохраняет его сначала в буферный файл. Если передача произошла успешно, то основной файл подменяется буферным, страничка автоматически обновляется. Всё. Изменения приняты.
Привожу фрагменты кода моей реализации этого механизма.
В html-страничке встраиваем форму:
По кнопке «Отправить» запускается следующий ява-скрипт: send_HTM.js
В скетче в функции обработки запросов веб-сервера по префиксам в запросе «CONTROL.HTM» (старт отправки файла), «htmlineN» (отправка строки №) и «END_CONTROL.HTM» (конец отправки файла) определяем дальнейшие действия:
File acceptHtmFile;
…………….
if (fl_accept_htm) // префикс «CONTROL.HTM»
{
SD.remove(CTRL_HTM);
acceptHtmFile = SD.open(CTRL_HTM, FILE_WRITE); // открываем файл на запись
if (!acceptHtmFile) // если файл открыть не удалось — ничего не пишем
{
#ifdef DEBUG_SD
Serial.println(«SD-card not found»);
#endif
client.print(«FAIL»);
client.stop();
}
else client.print(«OK_OPEN_FILE»);
acceptHtmMode = true;
break;
}
if (fl_htmline) // префикс «htmlineN»
{
int b = acceptHtmFile.println(tag);
if (b == 0)
{
client.print(«FAIL»);
acceptHtmMode = false;
cntHtmModeIteration = 0;
}
else
{
client.print(«OK»);
}
cntHtmModeIteration = 0;
break;
}
if (fl_endhtm) // префикс «END_CONTROL.HTM»
{
SD.remove(CONTROL_HTM);
acceptHtmFile.close();
File htmlFile = SD.open(CONTROL_HTM, FILE_WRITE); // открываем на запись
acceptHtmFile = SD.open(CTRL_HTM); // открываем на чтение
for (int i = 0; i
Дефайны CONTROL_HTM и CTRL_HTM здесь это имена html-файлов. Первый — основной файл, второй — буферный. В массиве чаров tag лежит текст принятой строки, выделенный из запроса. Логика такова: при приёме данных они пишутся в буферный файл, по окончании приёма буферный файл переписывается в основной. Как просто переименовать файлы я так и не смог понять, в стандартной библиотеке SD такой функции нет, поэтому тупое посимвольное копирование, отнимающее кучу времени.
Было бы удобным код веб-странички управления хранить не на карте памяти контроллера, а на клиентской машине, или загружать с какого-нибудь внешнего ресурса. Но запрет на кроссдоменные запросы не позволяет этого сделать. Яваскрипты могут отправлять свои запросы только тому северу, с которого были загружены сами. Тела яваскриптов при этом могут подгружаться откуда угодно, важно лишь только откуда была загружена страница с их вызовом.
Логирование данных
Ethernet shield имеет на борту слот карты памяти micro-SD. Именно из-за его наличия я и решил писать данные в лог-файлы. Для работы с картой памяти также имеется встроенная библиотека, и управлять записью-чтением файлов с ней вообще элементарно.
Для экономии объёма данных алгоритм логирования я построил так, что запись происходит только тогда, когда данные изменяются более чем на заданный порог. Для температуры это 0.1°, для напряжения это 0.2В. В один файл пишутся данные за одни сутки. В ноль часов создаётся новый файл. Формат хранения я выбрал обычный текстовый, с разделителями, чтобы можно было быстро контролировать содержимое файлов при отладке, и была бы простая возможность загрузки в Excel.
Конструктивные ограничения не позволяют удобно вставлять-вынимать карту памяти, поэтому я использовал карту большого объема. По моим расчётам, она будет заполняться в течение нескольких лет, после чего нужно будет подразобрать корпус, вынуть карту памяти и очистить её.
Приводить код логирования смысла не вижу, там всё совершенно тривиально — банальная запись текста в файл. Да и размазан этот код по всему скетчу (логируются не только параметры датчиков, но ещё и разнообразные разовые события), вычленить затруднительно.
Графики
В качестве движка для построения графиков я использую очень гибко настраиваемую javascript-библиотеку визуализации данных amchart . Библиотека бесплатная и доступна для скачивания и автономного использования. Эту библиотеку я также расположил на своём сетевом хранилище с постоянным доступом в интернет. Подключить и использовать её с дефолтными настройками не сложно, однако чтобы получить в итоге тот вид, который мне был нужен, пришлось немало повозиться. Помогло огромное количество примеров на сайте и наличие подробной документации.
Для примера приведу свой яваскрипт отрисовки графиков. Сам по себе он бесполезен, так как работает только в совокупности и с веб-сервером, и с html-страницей, и, возможно, завязан на другие скрипты (дело было давно, всех деталей уже не помню). Но настройки внешнего вида моих графиков содержаться именно в нём и почерпнуть их оттуда можно: get_log.js
Большим преимуществом библиотеки amchart является то, что она умеет отрисовывать правильные графики по «рваным» данным. Как я уже упоминал выше, в лог я сохраняю данные только при их изменении. То есть это происходит асинхронно и хаотично. Новых данных может не быть несколько минут, а потом за несколько секунд они поменяются несколько раз. Соответственно записи в логе идут с произвольными интервалами времени. Amchart при отрисовке учитывает это самостоятельно, у меня нет необходимости интерполировать данные перед отрисовкой. Я просто отправляю массив данных как есть, и вижу красивый равномерный во времени график.
Недостаток этой библиотеки я обнаружил только один — она не умеет (ну или я так и не понял как) по-человечески обновлять графики в реальном времени. Можно добавить новые данные к уже имеющимся, но перерисовка производится каждый раз полностью всего массива данных, и это сильно подтормаживает работу браузера. Впрочем, сама идеология чтения из Ардуины данных для отрисовки по запросу из браузера ущербна своей неоптимальностью, поэтому бороться за быстрое обновление в реальном времени смысла не было никакого.
Правильным решением было бы организовать отдельный сервер хранения и визуализации данных, куда с Ардуины в реальном времени данные капали бы по чуть-чуть и складировались в БД, и откуда бы они могли быстро быть отданы пользователю в браузер для визуализации.
Сейчас графики выглядят так (на примере дня, когда в бытовке никого нет и, соответственно, нет никакого энергопотребления). Когда возникают данные тока, масштаб автоматически устанавливается так, чтобы всё красиво влезало, и на вертикальной оси возникают и значения уровней тока:
Графики отображаются на той же самой страничке, где происходит управление, прямо ниже основного блока контролов.
Полный комплект исходников проекта не привожу намеренно по нескольким причинам:
- Его нельзя запустить как есть в любой другой сети, кроме моей, так как я не пытался сделать проект портабельным, и он жёстко завязан на мои адреса и мою топологию сети.
- Я уверен, что общая идеология проекта страдает массой разнообразных проблем, так как это моя первая попытка в той области, в которой я разбираюсь плохо. Поэтому не предлагаю никому весь проект к повторению именно в таком виде. Я поделился лишь теми моментами, в которых более менее уверен.
- Проект делался давно и долго, и я уже никогда не вспомню всех деталей и не смогу объяснить ряд решений. Объём скетча очень большой (по моим меркам, около 2 тыс строк), разнообразных обслуживающих ява-скриптов более десятка, принципиальную схему железа я не делал. То есть не смогу помочь консультативно по большинству вопросов.
Сборка
С самого начала я поставил себе цель — сделать законченное устройство, а не просто макет с ворохом проводочков на столе:
И сразу же решил, что устройство это я хочу разместить внутри электрощитка. Там и питание, и счётчик, и вообще, это удобно.
Для этого требовался динреечный корпус. Вначале думал разработать его и напечатать на 3D-принтере. Но, своего 3D-принтера у меня нет, а то, что печатают мои коллеги по работе на своих самосборных принтерах, меня совершенно не устраивало по качеству внешнего вида. Нашел в продаже готовые корпуса на DIN-рейку (разных размеров), выглядят хорошо, пользоваться удобно (разборные), да ещё и плата-слепыш под них специально имеется готовая.
Купил самый большой корпус, чтобы в него вместилась не только Ардуино с изернет-шилдом, но еще и реле для коммутации нагрузки:
Дальше был длительный и увлекательный процесс монтажа всей требухи в корпус. Под это дело я даже приобрёл себе замечательный паяльничек с функцией сна (имеющиеся у меня паяльники все были ещё советских времен):
Для монтажа накупил кучу всевозможных стоечек, винтиков, шайбочек и гаечек. Первая прикидочная сборка:
Для подключения проводов к верхним контактам пришлось использовать загнутые штырьки, иначе не влезало в корпус:
Изолирующие шайбы местами приходилось подрезать:
А местами изгаляться более извратно, поднимать винт на втулке, и вычурно подрезать втулку:
Для одиночной релюшки не хватило точек опоры, поэтому повисла только на двух точках:
Прикидочная сборка вместе с клеммными колодками:
Потом поделка стала постепенно обрастать проводами. Плата была использована только для разводки питания и для подключений к клеммным колодкам. Для сигнальных связей использовал провод МС-16 (мне он больше нравится), для силовых он не проходил по напряжению (до 100 В), поэтому МГТФ:
На лицевой панели закрепил светодиодики, токоограничивающие резисторы припаял прямо к ножкам светодиодов и закрыл термоусадкой:
В итоге получилась вот такая бородатая начинка:
А вот и платка с микросхемкой сторожевого таймера, приютилась в недрах моего творения, прямо над преобразователем уровней RS-485 — TTL:
Вся конструкция разборная, всё можно снять, отсоединить и заменить без пайки, кроме платки с вотчдогом, она припаяна к пинам разъема, одетого на ряд IO-портов Ардуины.
В коробочке:
Отверстия под разъёмы Ардуины выпилил в пластиковой стенке корпуса. Сначала сделал отверстия точно по размерам разъёмов, но сборку в корпус нужно заводить по диагнонали (иначе просто никак) и разъёмы не проходили, пришлось расточить немного:
Включение готового изделия на столе, всё заработало сразу:
На лицевую панель вывел:
- Четыре красных светодиода — индикация нагрузки;
- Два зеленых — наличие связи со счётчиком и с VPN-сервером;
- Два желтых — запасные;
- Один желтый — индикация перезагрузки роутера;
- Один красный — питание;
- И кнопочка сброса.
Для получения 5-ти вольт из 220-ти я использовал динреечный блок питания с подстройкой выходного уровня, питание подано непосредственно на микроконтроллер, минуя входной преобразователь из 7-12 в 5 вольт. Это было удобно по нескольким причинам. Во-первых, мощности встроенного преобразователя в какой-то момент стало не хватать, ток там ограничен. Во-вторых, питать реле всё равно нужно было 5-ю вольтами. В третьих, в щитке удобен динреечный форм-фактор с точки зрения монтажа. Поэтому вот:
Испытания
На столе всё было преверено, всё работало как надо, настала пора инсталлировать контроллер в щиток и проверить его в боевом режиме.
Но сначала я подключил всё «на соплях», буквально затолкав всю требуху в другой щиток, слаботочный, чтобы протестировать работу термодатчиков в реальных условиях на длинных линиях, проложенных в одном кабель-канале с силовыми кабелями ~220В:
Как можно заметить на фотке выше, доселе я пытался управлять перезагрузкой роутера по питанию с помощью «умной» розетки Senseit. Однако сей девайс безумной стоимостью в 5 тыс (на 2016 год) оказался на редкость глючным и капризным. За год использования не раз заставлял меня незапланированно приезжать на дачу в неурочное время, дабы вручную вывести это чудо инженерной и маркетинговой мысли из глубокого дауна в части GSM-связи. С переходом на свой Ардуино-контроллер, который оказался не в пример надёжнее, я с облегчением бросил это «профессиональное» барахло в красивой коробочке в ящик, и забыл про него.
Тест прошёл успешно, сбоев не было, и можно было приступить к окончательной инсталляции в штатное место:
Да-да, это щиток ABB TwinLine 800x300x225 IP55, стоимостью в 25 тыс. руб. без начинки (и начинка ещё на 15 тыс. примерно). И да, он установлен в бытовке 6х2. У всех свои тараканы. Да, собирал всю электрику сам . И бытовку строил тоже, да. Нет, я не электрик. И не строитель.
В глубине щитка я расположил небольшой источник бесперебойного питания Powercom WOW 300 , вон там горит его зелёный светодиод, а левее и выше — его вилка входного питания:
Его хватает на ~40 минут автономной работы Ардуино-девайса, роутера с USB-модемом и вайфаем, и Full HD IP-камеры наружного наблюдения.
А здесь видны белые вилки питания двух бесперебойных потребителей — блок питания Ардуино и слаботочный щиток, где расположен роутер и блок питания камеры наружного наблюдения. Эта линия идёт с разрывом через контактор, которым управляет Ардуино, как раз для того самого программного вотчдога, перезагружающего роутер по питанию в случае падения VPN (камера перезагружается заодно, хотя ей это и не надо). Сверху к контроллеру подключены линии витых пар от датчиков температуры:
Надо сказать, что маленьким синим китайским релюшечкам я бы никогда не доверил коммутацию мощной нагрузки, несмотря на вроде бы позволяющие это делать параметры этих релюшек. Поэтому сразу же было заложено использование нормальных модульных контакторов Legrand кат.№ 4 125 01 с возможностью ручного управления. То есть релюшки внутри корпуса контроллера управляют контакторами, а контакторы уже управляют нагрузкой. Это надёжно. А вот питание роутера и камеры осуществляется только лишь через эту маленькую синюю китайскую релюшку, ток там небольшой, поэтому можно.
При первом же боевом запуске меня ждало большое разочарование. На столе я испытал всё, кроме нагрузки. Зачем? Контакторы щёлкают, и так понятно, что нагрузку они коммутировать будут. Ан нет, надо было испытать. Мощные электроконвекторы привнесли в систему помеху в момент размыкания контактов, что приводило к гарантированному зависанию изернет-шилда. Причем вывести его из дауна было возможно только снятием питания, простой ресет не помогал. Погуглил — да, есть такая проблема у этой китайщины. И библиотека не обрабатывает эту ситуацию. То есть и железка хреновая, и софт не очень.
Думал уже, что всё пропало. Даже заказал твёрдотельные реле, но они, сволочи, больше по высоте, и в мою конструкцию уже не поместились бы. Но потом подумал, что может быть всё же помеху можно подавить. Опять погуглил, нашёл специальные помехоподавляющие конденсаторы (т.н. конденсаторы типа X). Просто подключил их параллельно управляющей обмотке контакторов, и о чудо! Зависания пропали полностью. За вот уже год эксплуатации ни одного случая не зарегистрировано:
А вот таким образом можно заглянуть внутрь коробки:
Ну и законченный вид щитка с пластроном (заглушек вот в комплекте не дали):
Для дебага и перепрошивки кабель USB подключен к контроллеру и хранится внутри щитка за закрытой дверцей (изернет на этой фотке временно не подключен):
Система работает уже почти год, пережила морозы до 20 градусов без проблем.
В целом я доволен результатом. Однако для более-менее функциональных задач Ардуино явно слабенький. Я уже не раз сталкивался с исчерпыванием памяти и приходилось кроить и оптимизировать. Да и скорость работы, особенно с картой памяти, меня совершенно не устраивает. Поэтому будущие реализации подобных поделок, если таковые потребуются, я бы хотел основывать на чём-то более мощном. Коллеги пиарят мне Raspberry Pi, хороший вариант, думаю.
Добавить метки
То, что получилось в итоге, можно назвать, пожалуй, самым дешевым решением для создания Умного дома, которое, тем не менее, умеет:
- Управлять освещением и силовыми устройствами(Реле, диммеры DMX-512 и Modbus RTU)
- Управлять теплыми полами (в качестве термодатчиков используются полтора десятка дешевых DS18B20, разведенных по квартире)
- Управлять задвижками вентиляции/кондиционера
- Управлять самодельной системой приточной вентиляции.
- Многое такого, о чем я изначально не задумывался, просто в силу того, что контроллер получился абсолютно открытым, гибко конфигурируемым, и прекрасно дополняющим Опенсорсные решения Openhab+Mosquitto+NodeRed
На вход контроллера подключаются обычные выключатели, кнопки, контактные датчики, датчики протечки и пр. которые могут управлять как локальными нагрузками так и устройствами, подключенными к другим таким же контроллерам или ко всему, что понимает протокол MQTT. У меня, например, подключен геркон, установленный в коробке входной двери. Когда закрываю замок на три оборота — выключаются свет, теплые полы, бойлеры, AV ресивер. Когда возвращаюсь — состояние этих приборов восстанавливается как было до ухода.
Serial CLI при создании нового контроллера надо прописать в NVRAM уникальный MAC адрес. Именно MAC является ключом, по которому изначально загружается конфигурация c http сервера.
В качестве управляющего ПО я взял Openhab 2, имеющий весь нужный мне функционал, плюс, мобильное приложение, плюс «Облако» — роль которого, правда, только в том, чтобы предоставлять доступ к домашней инфраструктуре извне, не прокидывая портов на роутере и не обладая фиксированным IP. Также, Openhab имеет интеграцию с HomeKit от Apple, что позволяет управлять устройствами дома с iPhone, вообще без установки аппликации. (Возможность интересная, но пользуюсь, в основном, «родным» приложением).
Немного скриншотов Openhab
Наличие в проекте квартиры большого кол-ва светодиодного освещения, также, требовало какого-то разумного управления.
Подробности по LED освещению
Решения, обнаруженные на рынке были либо закрытыми «вещами в себе», либо стоили неадекватных денег, поддерживая при этом немного каналов. Часто, производители ограничивались тремя каналами (RGB), хотя, вариант RGBW позволяет использовать светодионые ленты в качестве основного освещения, а не просто для цветовой подсветки.
Подумав, я заказал на АliExpress пару плат , каждая из которых может управлять 30-ю каналами LED с номинальным током до 2А на канал.
Для того, чтобы увеличить максимальную мощность одного канала, я перешел со светодиодных лент на 12В на 24В ленты. При этом, полноценно осветить комнату около 16-18 кв. м оказалось возможным при помощи 4-х ключей. БОльшие по площади помещения пришлось зонировать — в гостиной подключил независимо 4 ленты по 5 м, задействовав при это 16 каналов.
Для синхронного управления всей комнатой, пришлось придумать тип канала «группа»
Вот как выглядит описание гостиной в JSON конфиге:
«kuh»:],
«kuhwin»:,
«kuhline»:,
«kuhfre»:,
«kuhwork»:,
Первый элемент массива — тип канала, второй — параметр канала, который может являться массивом.
Для элемента типа 7 (группа) — аргументом является массив элементов, входящих в группу.
Рекурсия, конечно же, поддерживается.
Для элемента типа 1 (лента RGBW) — аргумент — базовый DMX адрес канала.
Со стандартной библиотекой EasyDMX платы не заработали сразу. Как оказалось, китайский LED контроллер не переваривал 2ms задержку между фреймами DMX (interframe delay). Несложная модификация кода библиотеки (сокращение цикла в два раза) помогла.
Подробности по кондиционированию
К сожалению, не удалось найти приводов воздушных заслонок с ШИМ или каким-то цифровым входом, поэтому на том же AliExpress были приобретены 4 преобразователя ШИМ в стандартный аналоговый сигнал 0..10В.
К сожалению, на Aliexpress этих устройств уже не вижу, но на e-bay — пожалуйста
Преобразователи великолепно заработали сразу, пришлось только перепрограммировать таймер ШИМ выходов для того, чтобы задать подходящую частоту.
Ниже пример перепрограммирования таймеров 3 и 4 (отвечают за pin-ы 2, 3, 5, 6, 7, 8 Arduino Mega на частоту 4000Гц).
PinMode(iaddr,OUTPUT);
//timer 0 for pin 13 and 4
//timer 1 for pin 12 and 11
//timer 2 for pin 10 and 9
//timer 3 for pin 5 and 3 and 2
//timer 4 for pin 8 and 7 and 6
int tval = 7; // 111 in binary — used as an eraser
TCCR4B &= ~tval; // set the three bits in TCCR2B to 0
TCCR3B &= ~tval;
tval=2; //prescaler = 2 —> PWM frequency is 4000 Hz
TCCR4B|=tval;
TCCR3B|=tval;
analogWrite(iaddr,k=map(Value,0,100,0,255));
Далее, я начал искать WiFi контроллеры теплых полов. Нашел, в целом, неплохое устройство стоимостью около 6 тыс руб от Теплолюкс, но оно имело некоторые существенные для меня недостатки.
Несмотря на наличие мобильного приложения, протокол управления был закрыт. Я провел некоторый реверс-инженеринг, который показал, что, теоретически, протокол можно расшифровать. Возможно, я бы этим и занялся, но обнаружил, что без переустановки подразетников сие устройство не устанавливается в один ряд с выключателями. Это определило судьбу устройства: продав его, я реализовал функционал простого термостата на своем контроллере, сэкономив почти 30 тыс руб на 5-ти теплых полах.
Получилось следующее:
- Все управление — локально на контроллере и независимо от домашней ИТ инфраструктуры
- Используются измерения с 1-wire термодатчиков. Если датчик долгое время не может быть опрошен — нагреватель отключается.
- Через MQTT можно включить/выключить теплый пол и задать его температуру. Соответственно, полы управляемы через интерфейсы и мобильное приложение Openhab
- Я не стал реализовывать хитрые сценарии и расписания на контроллере. При желании, это легко реализуется правилами Openhab или Node-Red. Я ограничился только отключением устройств, когда люди покидают дом.
Вот пример конфига для одного теплого пола:
«ow»:{
«2807FFD503000036»:{«emit»:»t_bath1″,»item»:»h_bath1″}
},
«items»:{
«h_bath1»:,
},
Данные при опросе термометра OneWire с указанным адресом передаются на шину MQTT в топик t_bath1, а также, внутри контроллера, объекту h_bath, имеющему тип №5 (термостат), реле подключено к pin#24 контроллера, уставка — 33 градуса (можно корректировать по MQTT)
Входы устройства
В конфиге для каждого входа можно задать как передачу команды локальному объекту так и выдачу команды в MQTT топик. Причем, отдельно как на условное «нажатие» кнопки так и на «отпускание».
Примеры:
«in»:{
«41»:{«emit»:»/myhome/in/all»,»scmd»:»HALT»,»rcmd»:»REST»},
«38»:{«item»:»spots_en»},
«37»:{«emit»:»/myhome/in/light»,»scmd»:»ON»,»rcmd»:»OFF»},
«40»:{«emit»:»/myhome/in/gstall»,»scmd»:»TOGGLE»,»rcmd»:»TOGGLE»},
«35»:{«emit»:»/myhome/s_out/water_leak»}
}
Pin 41: Геркон на замке входной двери — при запирании — выдаем в топик /myhome/in/all команду HALT, при отпирании — команду REST.
У меня это приводит к полному «засыпанию» и «просыпанию» дома. К слову — команды не входят в стандартный набор OpenHab, но получились крайне удобны — HALT — выключает устройство, REST — восстанавливает параметры устройства до последнего значения (цвет, яркость, температура), но только для того устройства, которое было выключено командой HALT а не OFF. Это позволяет не включать то, что было выключено на момент покидания дома.
Pin 38: Просто обычный выключатель света. При замыкании — выдает (по умолчанию) команду ON, при размыкании — команду OFF. Эти значения передаются объекту «spots_en». Понятно, что состояние обьекта можно изменить с мобильного приложения. В этом случае, выключатель, как бы, остается, например, во включенном положении, но свет выключен.
Для любителей классических проходных выключателей, подойдет синтаксис Pin 40: И при включении и при выключении выдается команда TOGGLE (тоже, кстати, новая, относительно OpenHab), меняющая положение Вкл-Выкл устройства (в данном примере, лампа управляется не локально, а через MQTT другим контроллером).
Если это не перекидной выключатель а кнопка — достаточно просто скорректировать «rcmd»:»» — при этом команда на переключение будет выдаваться только при нажатии.
А, ну и почти забыл описать DMX-IN — вход, ради которого, можно сказать, я и начинал эту разработку.
На рынке масса удачных с дизайнерской точки зрения и, в целом, эргономичных DMX контроллеров светодиодных лент.
Один из таких (сенсорную панель) я и купил в самом начале для экспериментов с DMX. Все хорошо, но архитектура DMX не предусматривает никакого управления из более чем одного места. Существует один Мастер, который постоянно транслирует в шину яркости каналов. Но в этом проекте данная проблема решена. Контроллер LightHub отслеживает изменения каналов DMX на входе, подключенном к сенсорной панели. Если они изменяются — транслирует изменения на выход (с маппингом на сконфигурированные устройства, в том числе, на группы светодиодных лент).
Пока ничего не меняется — устройства нормально управляются удаленно. Стоит сенсорной панели поменять значения яркости каналов — эти изменения транслируются на DMX выходы.
Как не странно, этот костыль получился вполне эргономичным. Хотя, как показал опыт, мы все реже используем сенсорную панель и все чаще смартфоны для управления устройствами.
Заключение
К сожалению, в одной статье невозможно описать все нюансы, заложенные в разработку.
Например, совсем за кадром осталась тема подключения Modbus устройств, их пуллинг и синхронизация локального состояния устройства с системой Умного Дома, интеграция с простой приточной установкой. Ну и, возможно, сравнение с существующими системами близких классов, такими, например, как MegaD-328, AMS и, даже, WirenBoard. Возможно, если будет заинтересованность — продолжу.
Также, пока за кадром то, что с использованием NodeRed удалось проинтегрировать систему с Telegram. Пока работает для получения оповещений, но можно создать полноценный Bot.
Относительно проекта LightHub — при всей дешевизне, контроллеры оказались вполне рабочим решением. Честно говоря, я сам не верил, что на основе Arduino можно создать стабильно работающую систему, но, по-моему, это удалось.
Конечно, надо многое еще доделать: полностью уйти от хардкода (осталось совсем чуть-чуть), немного и местами почистить и рефакторить код, тщательно документировать проект, развести печатную плату (сейчас интерфейсные Шилды спаяны просто на основе макетных плат и содержат три MAX-485 — (DMX-IN, DMX-OUT, Modbus) и 1-Wire мост) — и это станет, по сути, очень бюджетным готовым решением.
Warning: Напоминаю, что проект пока на уровне макетных плат. Открывая следующий спойлер, вы можете нанести урон своим эстетическим чувствам.
Немного картинок
Первый контроллер, управляющий LED (60 каналов DMX-512), Modbus (диммеры, приточка), заслонки ветиляции;
Это DMX-512 декодер, который удобно размещать там, где светодиодные ленты приходят к трансформаторам. У меня — под фальшпотолком в кладовке.
А это-второй контроллер, обслуживающий 1-wire, выключатели/датчики и релейный модуль. (Сам релейный модуль разместился прямо в распаечной коробке, где ему и место вместе с тремя фазами. Соседство 380В и слаботочки я искоренил везде, где возможно, после одного неудачного происшествия)
Понятно, что надо расширять функционал. Как минимум, в направлении беспроводных датчиков/устройств. (Хотя, например, ZWave и так сейчас можно использовать через стандартные биндинги Openhab).
Возможность подключения, например, бюджетного NooLight, вероятно, неплохая идея. Возможно, подумаю над миграцией на ESP-8266 для расширения RAM, хотя, уход на WiFi с проводного подключения к LAN мне не нравится с точки зрения надежности. Да и ESP не обладает такой богатой переферией как Arduino Mega. Еще планирую сделать учет электроэнергии через датчики тока и подключение Rotary Encoder на вход.
Также, полезно было бы сделать конфигурирование и запуск контроллера более User Friendly (визуальные конфигураторы и пр.). При этом, сознательно не хочется превращать контроллер в вебсервер с файлами/картинками, AJAX и пр. На мой взгляд, это уже должно являться прерогативой сервера. Хотя бы на основе Raspberry.
Но поскольку проект абсолютно Опенсорсный — возможны разные варианты, присоединяйтесь.
Также, с нетерпением ожидаю ваших отзывов.
UPDATE:
После публикации статьи, объединив усилия вместе с одним из жителей Хабра и нарисовав принципиальную схему LighthHub Shield, приступили к разводке печатной платы, с учетом всего осмысленного опыта и комментариев
- Плата будет совместима как с Arduino Mega (5v) так и с Arduino DUE (ARM 3,3В)
- Встроенный интерфейс Ethernet на базе Wiznet5500
- 8 опторазвязанных дискретных входов, 8 дискретных входов/выходов с защитой по напряжению/току
- 8 аналоговых входов с защитой по напряжению/току. В дальнейшем, предполагаю использовать аналоговые входы для контроля потребляемой мощности (датчики тока) и для того, чтобы подключать внешние потенциометры (диммеры)
- 8 ШИМ выходов, 4 из них с мощными выходными ключами (до 500 мА/50В) + 4 дискретных мощных выхода. Позволят подключить локально к контроллеру, например, несколько пускателей или даже не сильно длинную RGBW LED ленту.
- Разьем формата UEXT , который позволит, впоследствии, подключить к контроллеру совместимую переферию — например дополнительные радиомодули, для соединения с беспроводными устройствами.
- Остальные входы/выходы будут выведены без защит на разъемы RJ45 для подключения локальных устройств (релейные платы, ЦАП и пр)
- 1-wire
- dmx-512
- dmx
- Node-Red
- modbus
- iot
Добавить метки
Еще не так давно технология автоматизированного дома была недоступной для большинства людей, и считалась непозволительной роскошью. Эти времена прошли, и теперь позволить себе умный дом могут практически все жители городов и других населенных пунктов. Более того, можно сделать умный дом на Arduino своими руками, и тем самым значительно сэкономить. Что нужно для самостоятельного изготовления, и как сделать умный дом?
Из чего сделан современный умный дом?
Любая система автоматизации бытовых процессов состоит из нескольких компонентов, которые связаны друг с другом посредством проводной или беспроводной связи. В состав умного дома входят следующие элементы:
Контроллер. Главное устройство, которое занимается обработкой и отправкой сигналов. Контроллер – это сердце умного дома, к которому подключаются внешние датчики и исполнительные устройства. Именно на эту роль мы возьмем Arduino, так как его возможностей вполне достаточно для автоматизации жилья.
Датчики. Сегодня существует множество датчиков, реагирующих на те или иные изменения окружающей среды. К ним можно отнести датчики движения, открытия и закрытия дверей, разбивания стекла, света, температуры, влажности воздуха, освещения, магнитного поля, углекислого газа, а также многие другие.
Исполнительные устройства. К этой категории относятся краны с сервоприводом, системы тушения огня, сирены, твердотельные и электромагнитные реле, и многие другие. Именно при помощи них контроллер управляет процессами, происходящими в доме, и именно они делают жилище автоматизированным.
Нельзя не отметить и такой важный компонент автоматизированного жилья, как пульт управления. В готовых решениях в его качестве зачастую выступает одна или несколько настенных панелей, нередко сенсорных. Также возможно управление умным оборудованием при помощи пульта дистанционного управления. В готовых и в самодельных решениях есть возможность слежения за домом через приложение на мобильных устройствах.
Каковы особенности платформы Arduino?
Arduino – торговая марка, под которой выпускается широкий ассортимент аппаратно-программных устройств. Они предназначены специально для формирования систем автоматики и робототехники. Главное достоинств таких устройств заключается в том, что они рассчитаны на непрофессиональных пользователей. С настройкой автоматического дома на базе Ардуино можно разобраться, даже не имея при этом навыков программирования.
Автоматизированный дом на платформе Arduino отличается множеством преимуществ, среди которых такие:
Универсальность. К контроллеру можно подключить широкий спектр внешних датчиков для приема сигналов из окружающей среды, и большой выбор исполнительных устройств для управления домом.
Масштабируемость. При необходимости можно в любой момент добавить к системе дополнительные датчики и устройства, чтобы расширить возможности самодельного умного дома – дело пары минут.
Производительность. Если речь идет о несложных проектах, их вполне можно реализовать на базе Ардуино. К тому же под этой торговой маркой выпускаются контроллеры с различной продуктивностью.
Доступность. Стоимость контроллера и дополнительных модулей настолько низкая, что не нанесет существенного удара по бюджету. Кроме того, все это можно заказывать в Китае по самой низкой цене.
Эти и другие преимущества послужили причиной высокой востребованности платформы Arduino у тех людей, которые хотят автоматизировать жилье собственными силами. Разберемся подробно в том, как это сделать.
Какие компоненты требуется подготовить?
Прежде, чем собрать умный дом своими руками на базе Arduino, необходимо подготовить все комплектующие и инструменты для работы. Ниже мы рассмотрим изготовление автоматизированной системы из таких деталей:
- контроллер Arduino Leonardo;
- модуль Ethernet ENC28J60;
- датчик атмосферных осадков;
- датчик передвижения;
- два датчика температуры DS18B20;
- язычковый переключатель;
- реле и резистор с сопротивлением 4,7 кОм;
- кабель Ethernet и кабель типа «витая пара»;
- чувствительный микрофон.
Приблизительная стоимость всех перечисленных выше компонентов составляет порядка 90 долларов. Это в разы меньше по сравнению со стоимостью уже готовых к использованию систем автоматизации домашних процессов.
Стоит отметить, что для сборки автоматизированного дома на базе контроллера Ардуино вам даже не нужен паяльник. Все соединения выполняются стандартными проводами, которые продаются вместе с контроллером. Собрать устройство можно даже на макетной плате, после чего закрыть ее в защищенный корпус, чтобы не допустить ее затопление или механическое повреждение. Это упрощает и удешевляет процесс изготовления.
Подключение компонентов к Ардуино
После того, как все комплектующие для изготовления устройства готовы, и лежат под рукой, можно начинать сборку своими руками автоматизированного умного дома на платформе Arduino. Первое, что нужно сделать, это подключить внешние модули и устройства портам на контроллере Ардуино. Это выполняется по такой схеме:
Как можно заметить, даже после сборки всей системы в единое целое, на контроллере остается достаточно много свободных контактов. В дальнейшем можно будет подключить к ним дополнительные устройства. Если вам вдруг не будет хватать места для подключения внешних датчиков, можно приобрести плату расширения для Ардуино вашей версии. Нужно будет установить плату на контроллер, и все датчики подключать через нее.
Работа с программной частью проекта
Следующий после сборки системы этап – перепрошивка контроллера. Она выполняется для того, чтобы научить Ардуино работать с внешними датчиками по необходимым вам алгоритмам. Прежде, чем начать перепрошивку, нужно скачать программу Arduino IDE на персональный компьютер, и подключить контроллер к нему через USB кабель. После того, как устройство будет определено компьютером, можно начинать работу по перепрошивке.
Расписывать весь процесс написания прошивки не имеет смысла, так как сегодня в Интернете можно найти массу примеров готовых прошивок для автоматизации жилья. Достаточно скачать необходимые для работы внешних устройств библиотеки, скачать нужную прошивку и перенести ее на контроллер через программу Arduino IDE. Сразу после перепрошивки контроллера можно приступать к настройке самодельного умного дома.
Настройка управления автоматизированным домом
Заключительный этап – настройка управления умным жильем. Для этого нужно скачать в магазине приложений программу SmartHome и установить ее на своем мобильном устройстве. После этого надо зайти в настройки этой программы и отредактировать IP-адрес. Необходимо указать IP-адрес вашего роутера, к которому подключается контроллер Ардуино при помощи Ethernet кабеля. Далее выполняется настройка роутера по этой инструкции:
откройте настройки маршрутизатора;
впишите в настройках IP-адрес контроллера;
откройте порт под номером 80.
Сразу после этого у вас появится возможность получать сведения с датчиков умного дома, и видеть их на экране своего мобильного устройства. Если к системе подключены исполнительные устройства, можно ими управлять.
Заключение
Умный дом на базе контроллера Ардуино – это простое и современное решение, которое можно самостоятельно собрать и настроить за пару часов, не имея при этом никаких навыков программирования. Не упустите шанс воспользоваться возможностью недорого и достаточно быстро настроить автоматизацию домашних процессов.
В данном проекте я покажу, как построить умный дом. Он может контролировать температуру снаружи и внутри помещения, фиксировать открыто или закрыто окно, показывать, идет ли дождь, а также подавать тревожный сигнал, когда сработает датчик движения PIR. Я создал приложение на ОС Android для отображения всех данных (данные можно также просматривать через браузер). Вы сможете видеть температуру в вашем доме и другую информацию с любой точки мира! Приложение переведено на английский и польский язык. Я создал данное устройство, поскольку хотел иметь свой собственный умный дом, которым можно управлять. Вы также сможете построить умный дом из компонентов, рекомендованных ниже. Тогда приступим.
Объяснение сокращений для начинающих:
GND — земля
VCC — питание
PIR – датчик движения
Шаг 1: Компоненты
Стоимость всех компонентов не превышает $90
- Датчик температуры DS18B20 x 2 штуки
- Язычковый переключатель
- Резистор 4.7 кОм
- Кабель, витая пара
- ethernet кабель
- инструменты (паяльник, отвертка)
Шаг 2: Соединения
Схема соединений показана выше.
Шаг 3: Программный код
Сначала вам необходимо загрузить, разархивировать и импортировать данную библиотеку в среду разработки Arduino IDE. Далее потребуется загрузить данную программу в Arduino. В комментариях объясняется программный код.
Шаг 4: Принцип работы
Если вы нажмете на кнопке refresh (обновить) в вашем приложении или в браузере, то Arduino отправит данные в смартфон/браузер. Приложение получает программный код с каждой страницы (/tempin, /tempout, /rain, /window, /alarm) и отображает его на вашем смартфоне.
Шаг 5: Приложения для Android.
Для установки приложения на вашем смартфоне под управлением ОС Android вам необходимо выполнить следующее (это видно на картинках выше):
1. Сначала загрузите файл smartHome.apk
2. Отправьте файл apk на ваш телефон
3. Откройте файловый менеджер и разместите файл smarthHome.apk
4. Щелкните на нем и нажмите установить (вам необходимо установить галочку, которая разрешает устанавливать приложения вне маркета google play)
5. После установки вам необходимо активировать приложение
Шаг 6: Конфигурирование приложения
Я кратко объясню, как работает приложение. Оно отображает все данные из вашего дома. Вы можете нажать на иконку настроек для редактирования вашего IP адреса, и включать и выключать тревожную сигнализацию. Когда вы включаете сигнализацию, то приложение получает данные от активного датчика движения PIR. Если датчик определяет постороннее движение в доме, он посылает уведомление. Приложение получает данные от датчика каждую минуту. В поле IP введите ваш IP-адрес.
Шаг 7: Браузер
Введите в адресной строке браузера ваш ip адрес / all. При этом вы увидите все данные и сможете включать и выключать свет.
Для этих функций вы также можете использовать приложение на Android.
Шаг 8: Переадресация портов
Вам нужно открыть порт на вашем роутере. Войдите в конфигурацию роутера, установите адрес arduino ip и откройте порт 80. Процедура показана на картинке выше.
История создания проекта для автоматизированных систем и робототехники Arduino берет начало с 2005 года. Тогда в итальянском институте студент Эрнандо Барраган создал платформу c аппаратно-программной частью, которая впоследствии стала основой для этого проекта. На данный момент платформа Arduino пользуется невероятным успехом. Сейчас с ее помощью создаются автоматизированные системы, которые используются на различных этапах производства.
Также широкое применение эта плата получила в различных вариациях роботизированных систем и в проектах умного дома, где используется множество дополнительных наборов модулей. Главным преимуществом такого проекта над другими системами автоматики является его цена. Благодаря низкой цене, систему автоматизированного умного дома на Ардуино может собрать своими руками любой пользователь, у которого есть начальные навыки программирования и необходимый набор компонентов.
Разнообразие Ардуино плат и их использование в умном доме
Актуальными на данный момент являются версии таких наборов плат Arduino:
- MICRO;
- PRO MINI;
- NANO.
а также новинки, которые появятся в ближайшем будущем:
- MEGA 2560;
- ZERO;
Кроме официального производителя плат Arduino процессорный гигант Intel подключился к созданию Ардуино подобных плат, выпустив Intel Galileo. Уже сейчас компания Intel официально запустила по этой программе три платы:
- Intel Galileo;
- Intel Galileo Gen 2;
- Intel Edison.
Кроме плат вы сможете найти десятки разнообразных наборов модулей, которые можно подключить к Ардуино для увеличения его функциональных возможностей.
Самой популярной платой является Arduino Uno. Эта плата сравнительно недорогая и пользуется популярностью, как у новичков, так и у профессионалов. С помощью такой платы можно создавать базовые автоматизированные механизмы умного дома. Например, с помощью Arduino Uno и дополнительных наборов модулей можно автоматизировать такие процессы умного дома, которые позволят:
- Управлять кондиционером через приложение на Andoid или iOS;
- Удаленно управлять системой электропитания в доме;
- Удаленно узнавать информацию о температуре дома;
- Управлять телевизором через приложение на Andoid или iOS;
- Управлять ресивером;
- Управлять освещением в доме;
- Получать всю информацию об устройствах, подключенных к умному дому через Интернет;
- Управлять солнечными панелями;
- Управлять температурным режимом в доме.
Это лишь малая часть возможностей проекта Ардуино для умного дома, которые любой желающий может собрать своими руками. Сейчас можно найти компании, внедряющие готовые решения умного дома. Но стоимость таких решений очень высока. Поэтому такой проект умного дома сейчас очень популярен во всем мире. Кроме того, функционал вашего умного дома ограничен только вашей фантазией и средствами. Модель умного дома с набором дополнительных модулей изображена на рисунке ниже.
Установка IDE для Arduino
На сайте официальном сайте выложена собственная программная оболочка IDE, которая является бесплатной и поддерживается всеми популярными операционными системами. С помощью IDE пользователь может создавать свои программы, которые можно загрузить в печатную плату Ардуино. Скачать IDE можно на официальном сайте перейдя по адресу https://www.Arduino.cc/en/Main/Software. На данный момент используется версия IDE Arduino 1.6.6. Рассмотрим подробнее процесс установки IDE для платформы Windows. После загрузки запустите инсталлятор и нажмите кнопку «I Agree».
В следующем окне оставляем все галочки и нажимаем кнопку «Next».
Выбираем место установки IDE и нажимаем кнопку «Install».
Начнется процесс установки.
После установки IDE, его можно запустить с ярлыка на рабочем столе, после чего вам откроется рабочая область программы:
Напишем простую программу и загрузим ее в Ардуино
IDE для Arduino использует упрощенный язык программирования C++, понятный начинающим программистам. Для примера напишем программу, которая будет включать светодиод с интервалом 1.5 секунды. Для этого запустите IDE и вставьте код, расположенный ниже:
В строке «int ledPin = 13» объявляем переменную цифровую ledPin и присвистываем ей значение 13. В функции «setup» устанавливаем порт 13 как исходящий. В цикле «loop» с помощью оператора «digitalWrite» включаем и отключаем светодиод. А с помощью оператора «delay» делаем задержку в 1,5 секунду два раза. В итоге бесконечный цикл «loop» будет отключать, и включать наш светодиод на 1,5 секунды.
Схема подключения с помощью набора из платы Arduino Uno и светодиода для нашей программы показана на рисунке ниже.
Для загрузки программы в Arduino Uno необходимо подключить плату к компьютеру с помощью USB кабеля. При успешном подключении загорится светодиод «ON» и замигает светодиод «L».
После этого в меню «Скетч» нажмите кнопку загрузка.
После компиляции и загрузки программы на устройстве начнет мигать светодиод.
Итог
Начав осваивать Ардуино, вы сможете сделать настоящий умный дом, который будет максимально соответствовать вашим потребностям. Надеемся, что наша статья поможет вам ближе познакомиться с таким проектом. Купить платы Ардуино и наборы модулей вы сможете как у официальных поставщиков, которых можно найти как на официальном сайте, так и во многих интернет-магазинах.







































































Одним из наиболее часто импользуемых элементов «умного дома» является датчик движения
Электромоторчик является исполнительным устройством, которое включается по сигналу контроллера системы и приводит в движение подключённый к нему механизм
Плата процессора (или контроллера) управляет исполнительными устройствами на основе встроенной программы и данных, полученных от сенсоров



































































