Умный дом на ардуино управление с андроид


Умный дом на ардуино управление с андроид

В данном проекте я покажу, как построить умный дом. Он может контролировать температуру снаружи и внутри помещения, фиксировать открыто или закрыто окно, показывать, идет ли дождь, а также подавать тревожный сигнал, когда сработает датчик движения PIR. Я создал приложение на ОС Android для отображения всех данных (данные можно также просматривать через браузер). Вы сможете видеть температуру в вашем доме и другую информацию с любой точки мира! Приложение переведено на английский и польский язык. Я создал данное устройство, поскольку хотел иметь свой собственный умный дом, которым можно управлять. Вы также сможете построить умный дом из компонентов, рекомендованных ниже. Тогда приступим.

Объяснение сокращений для начинающих:

GND — земля
VCC — питание
PIR – датчик движения

Шаг 1: Компоненты

Умный дом на ардуино управление с андроид

Умный дом на ардуино управление с андроид

Стоимость всех компонентов не превышает $90


  • Arduino
  • ethernet модуль ENC28J60
  • Датчик температуры DS18B20 x 2 штуки
  • Микрофонный модуль
  • Датчик дождя
  • PIR — датчик движения
  • Язычковый переключатель
  • Реле
  • Резистор 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. Процедура показана на картинке выше.

Шаг 9: Присвоение доменного имени NO IP (опция)

Умный дом на ардуино управление с андроид


Вы можете настроить учетную запись на no ip, но это не обязательно. На картинке выше показан процесс конфигурации.

Шаг 10: Тестирование

Если вы хотите видеть данные на вашем компьютере, то в адресной строке браузера введите ваш ip адрес / all (напр., 12.345.678.901/all) или используйте приложение Android.

Шаг 11: Редактирование: исходная программа приложения Android app

Ниже указан исходный программный код для Android.

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

Оригинал статьи

Источник: cxem.net

Почитал ваши статьи.
Субъективно, немного не хватает структурированности вашей системе (меньше проводов!)
Не хватает так же практических примеров ее применения.
Большинство ошибочно воспринимает "Умный дом" как дорогое излишество. Хотя, если задуматься, существует некий объем стандартных действий, которые мы выполняем в своем жилище каждый день по нескольку раз. Я бы призвал "Умный дом" освободить меня от неинтересной рутины.
Поэтому больше примеров! Конкретных, живых, не академических.

Небольшой пример для тех, кто пока не понимает, зачем иметь (уметь сделать) Умный дом:


Что дает понижение окружающей температуры в спальной комнате ?
Как правило наши жилища прогреты до 22-24 градусов. Если температура выше комфортного максимума, мы открываем окна. Ниже — ищем способ нагреть помещение.
Если лечь спать при температуре 22 градуса и затем постепенно понизить температуру воздуха до 16-18 градусов, сон будет крепче и глубже. А значит пользы от такого, пускай даже короткого сна, будет больше, а самочувствие утром лучше. Однако, желательно проснуться в заранее "подогретой" до комфортной температуры комнате.
Как добиваться этого с наименьшими затратами ?
Предприимчивые люди назвали это "Умный дом" и установили 3000% наценку на системы, в числе прочих возможностей которых — контроль теплового режима в помещениях.

Не призываю экономить. Многим удобнее купить "Умный дом" или теплый пол и довольствоваться усредненными возможностями систем контроля. Почему усредненными ? Потому как системы проектируются для людей с различными запросами. Как известно, любая унификация приводит к усложнению и удорожанию. А персонализация — опять же к удорожанию. Поэтому со временем владельцы систем "умный дом" начинают замечать, что система работает не совсем так, как им хотелось бы. А изменить это почти нельзя или можно, но это опять стоит денег.

Я люблю выпить хорошего красного вина за ужином. Граммов 200-300. Сон после приема вина в плохо проветриваемом помещении не будет крепким, а на утро весьма вероятна головная боль. Напротив, в проветриваемом помещении с нормальным содержанием кислорода и пониженной температурой здоровый сон обеспечен.
Хороший вечер в приятной компании, здоровый сон, радостное светлое утро, когда все только начинается.


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

Так вот, сделать "дом" своими руками сегодня крайне просто. А программировать сделанную своими руками систему — одно удовольствие.

Дальше больше. Включаем в состав управляемых систем водонагреватель. Отключили горячее водоснабжение ? Не беда. Микроконтроллер об этом узнает первый и "завернет" холодную магистраль в водонагреватель.
Хочется возвращаться летом в прохладную квартиру — включаем в состав системы уже имеющийся в доме кондиционер.
И так далее….

Если вы любите по вечерам пить пиво перед телеком, то одно другому не помеха.
Я имею в виду конструирование

Источник: forum.amperka.ru

Что такое Arduino

Arduino — это платформа для добавления и программирования электронных устройств, с типами управления: ручной, полуавтоматический и автоматический. Платформа представляет собой некий конструктор, с прописанными правилами взаимодействия элементов между собой. Система открытая, поэтому каждый заинтересованный производитель вносит лепту в развитие Arduino.

Функции стандартного умного дома:


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

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

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

Полезная информация! Arduino – итальянская компания, производящая и разрабатывающая компоненты ПО, для реальных и не сложных систем Smart Home, которые ориентированы на любого человека, заинтересовавшегося в этом вопросе. Архитектура полностью открыта, поэтому сторонние разработчики (преимущественно из Китая) уже успели полностью скопировать, и выпускают собственные альтернативные элементы системы, и ПО для них.

Научиться взаимодействовать с Ардуино можно двумя способами: методом самостоятельных проб и ошибок, или с помощью книги с комплектным набором для умного дома, которая расскажет о всех тонкостях работы в этой системе.


Проектирование умного дома Arduino

Умного дома «на все случаи жизни» не существует. Поэтому, его проектирование начинается с определения поставленных задач, выбора и размещения основного узла Arduino, а затем и остальных элементов. На конечном этапе связывается и дорабатывается функционал, с помощью программирования.

На базе Ардуино можно создать множество проектов, а затем скомпоновать их в единую систему. Среди таких:

  1. Контроль влажности в цоколе.
  2. Автоматическое включение конвекторов, при падении температуры в доме ниже допустимой в двух возможных вариантах – при наличии и отсутствии человека в комнате.
  3. Включение освещения на улице в сумерки.
  4. Отправка сообщений об изменениях каждого детектируемого состояния.

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

При составлении пошагового плана проектирования учитываем следующее:


  1. Крыльцо. При приближении владельца к дому ночью, включится освещение. Также следует учесть обратное – выходя из дома ночью, тоже надо включать освещение.
  2. Прихожая. При детектировании движения и в сумерки включать свет. В темное время необходимо, чтобы загорался приглушенный свет лампочки.
  3. Подвал на улице. При приближении хозяина, в темное время суток, должна загораться лампа возле дверцы подвала. Открывая дверь, загорается свет внутри, и выключается в том случае, когда человек покидает здание. При выходе, включается освещение на крыльце, а по мере отхождения от подвального помещения, выключается возле дверцы. В подвале установлен контроль влажности и при достижении критической температуры, включаются несколько вентиляторов для улучшения циркуляции воздуха.
  4. Душевая комната. В ней установлен бойлер. Если человек присутствует в доме, бойлер включает нагрев воды. Автоматика выключается, когда максимальная температура нагрева достигнута. При входе в туалет, включается вытяжка и свет.
  5. Кухня. Включение основного освещения ручное. При длительном отсутствии хозяина дома на кухне, свет выключается автоматически. Во время приготовления еды автоматически включается вытяжка.
  6. Столовая. Управление светом происходит по аналогии с кухней. Присутствуя на кухне, есть возможность дать голосовую команду ассистенту умной колонки, чтобы тот запустил музыку.
  7. Спальная комната. Включение освещение происходит вручную. Но есть автоматическое выключение, если в комнате долгое время отсутствует человек. Дополнительно, нужно выключать освещение по хлопку.

По всему дому расставлены конвекторы. Необходим автоматический контроль поддерживаемой температуры в доме в двух режимах: когда человек есть в доме и вовремя его отсутствия. В первом варианте, температура должна опускаться не ниже 20 градусов и подниматься не выше 22. Во втором, температура дома должна опускаться не ниже 12 градусов.

Проект готов, осталось заняться его реализацией.

Плюсы и минусы системы

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

Преимущества умного дома Arduino:

  1. Использование компонентов других производителей с контроллером Arduino.
  2. Создание собственных программ умного дома, так как исходных код проекта открыт.
  3. Язык программирования простой, мануалов в сети для него много, разобраться сможет даже начинающий.
  4. Простой проект делается за один час практики с помощью дефолтных библиотек, разработанных для: считывания сигналов кнопок, вывода информации на ЖК-дисплеи или семи сегментные индикаторы и так далее.
  5. Запитать, посылать команды и сообщения, программировать, или перенести готовые программные решения в Arduino, можно с помощью USB-кабеля.

Недостатки:

  1. Среда разработки Arduino IDE – это построенная на Java ппрограма, в которую входит: редактор кода, компилятор, передача прошивки в плату. По сравнению с современными решениями на 2019 год – это худшая среда разработки (в том виде, в котором она подается). Даже когда вы перейдете в другую среду разработки, IDE вам придется оставить для прошивки.
  2. Малое количество флэш-памяти для создания программ.
  3. Загрузчик нужно прошивать для каждого шилда микроконтроллера, чтобы закончить проект. Его размер – 2 Кб.
  4. Пустой проект занимает 466 байт на Arduino UNO и 666 байт в постоянной памяти платы Mega.
  5. Низкая частота процессора.

Модули и решения «умного дома» на Ардуино

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

Существует три основных микроконтроллера в системе:

  • Arduino UNO – средних размеров плата с собственным процессором и памятью. Основа — микроконтроллер ATmega328.  В наличии 14 цифровых входов/выходов (6 из них можно использовать как ШИМ выводы), 6 аналоговых входов, кварцевый резонатор 16 МГц, USB-порт (на некоторых платах USB-B), разъем для внутрисхемного программирования, кнопка RESET. Флэш-память – 32 Кб, оперативная память (SRAM) – 2 Кб, энергонезависимая память (EEPROM) – 1 Кб.
  • Arduino NANO – плата минимальных габаритов с микроконтроллером ATmega328. Отличие от UNO – компактность, за счет используемого типа контактных площадок – так называемого «гребня из ножек».
  • Arduino MEGA – больших размеров плата с микроконтроллером ATMega 2560. Тактовая частота 16 МГц (как и в UNO), цифровых пинов 54 вместо 14, а аналоговых 16, вместо 6. Флэш-память – 256 Кб, SRAM – 8 Кб, EEPROM – 4.

Arduino UNO – самая распространённая плата, так как с ней проще работать в плане монтажных работ. Плата NANO меньше в размерах и компактнее – это позволяет разместить ее в любом уголке умного дома. MEGA используется для сложных задач.

Сейчас на рынке представлено 3 поколение плат (R3) Ардуино. Обычно, при покупке платы, в комплект входит обучающий набор для собирания StarterKit, содержащий:

  1. Шаговый двигатель.
  2. Манипулятор управления.
  3. Электросхематическое реле SRD-05VDC-SL-C 5 В.
  4. Беспаечная плата для макета MB-102.
  5. Модуль с картой доступа и и двумя метками.
  6. Звуковой датчик LM393.
  7. Датчик с замером уровня жидкости.
  8. Два простейших устройства отображения цифровой информации.
  9. LCD-дисплей для вывода множества символов.
  10. LED-матрица ТС15-11GWA.
  11. Трехцветный RGB-модуль.
  12. Температурный датчик и измеритель влажности DHT11.
  13. Модуль риал тайм DS1302.
  14. Сервопривод SG-90.
  15. ИК-Пульт ДУ.
  16. Матрица клавиатуры на 16 кнопок.
  17. Микросхема 74HC595N сдвиговый регистр для получения дополнительных выходов.
  18. Основные небольшие компоненты электроники для составления схемы.

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

Сенсоры и датчики

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

Плата дополняется совместимыми датчиками движения или иными PIR-сенсорами, которые определяют присутствие или отсутствие человека в зоне действия, и привязывается через реле к освещению.

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

Реле

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

Светодиоды могут указывать состояние, в котором реле находится в данным момент времени. Например, красный – освещение выключено, зеленый – освещение есть. Схема подключение к лампе выглядит так.

Для более крупного проекта лучше применять шину реле, например, восьмиканальный модуль реле 5V.

Контроллер

В качестве контроллера выступает плата Arduino UNO. Для монтажа необходимо знать:

  • описание элементов;
  • распиновку платы;
  • принципиальную схему работы платы;
  • распиновку микроконтролеера ATMega 328.

Программная настройка

Программирование подключенных элементов Ардуино происходит в редакторе IDE. Скачать его можно с официального сайта. Для программирования можно использовать готовые библиотеки.

Или воспользоваться готовым скетч решением Ardublock – графический язык программирования, встраиваемый в IDE. По сути, вам нужно только скачать и установить ПО, а затем использовать блоки для создания схемы.

Дистанционное управление «умным» домом

Для подключения платы к интернету, понадобится:

  • Wi-Fi-адаптер, настроенный на прием и передачу сигнала через маршрутизатор;
  • или подключенный через Ethernet кабель Wi-Fi роутер.

Также, есть вариант дистанционного управления по блютуз. Соответственно, к плате должен быть подключен Bluetooth модуль.

Есть несколько вариантов управления умным домом Arduino: с помощью приложения для смартфона или через веб. Рассмотрим каждое подробнее.

Приложения управления

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

Blynk

Приложение на андроид и iOS с отличным дизайном, позволяет разрабатывать проекты, имеющие напрямую доступ к триггеру событий, на плате Ардуино. Но для работы приложения нужно интернет подключение, иначе взаимодействовать с ним не возможно.

Virtuino

Крутое бесплатное приложение на Android, позволяющее совмещать проекты в одно целое и управлять с помощью Wi-Fi или Bluetooth сразу несколькими платами.

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

Bluino Loader – Arduino IDE

Приложение для телефона, представляет собой программную среду для кодирования Arduino. С его помощью можно быстро и легко скомпилировать код в файл, а затем отправить по OTG-переходнику на плату.

Arduino Bluetooth Control

Приложение контролирует контакты Arduino и управляет основными функциями по Блютузу. Но, программа не направлена на удаленное управление, только мониторинг.

RemoteXY: Arduino Control

С помощью приложения пользователь может создать свой собственный интерфейс управления платой. Подключение происходит с помощью Wi-Fi, Блютуз или интернет, через облачный сервер.

Bluetooth Controller 8 Lamp

Созданное с помощью Bluetooth-модулей HC-05, HC-06 и HC-07 приложение, обеспечивает восьмиканальный контроль. Таким способом достигается контроль и регулирование работы Ардуино, в соответствии с каждым из 8 светодиодов.

BT Voice Control for Arduino

Приложение специально заточено под дистанционное управление данными с ультразвукового датчика, подключенного по блютуз через Arduino. Реализуется подключения через модуль HC-05.

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

IoT Wi-Fi контроллер

Приложение с интерфейсом, информирующем о конфигурации каждого входа/выхода в плате Arduino. В утилите можно переключать в реальном времени GPIO и показывать значение АЦП.

Веб-клиент

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

Для этих целей понадобится Arduino Ethernet Shield – сетевое расширение для пинов Ардуино Уно, позволяющее добавить разъем RJ-45 для подключения к сети.

При удаленном подключении, необходимо обеспечить внешнее питание платы не от USB.

Затем, подключите по USB плату к компьютеру, а по Ethernet плату к роутеру, которой раздает интернет компьютеру. При правильном установлении соединения, вы увидите зеленый свечение на порту.

После этого, нужно использовать библиотеки шилдов Ethernet и в среде разработки IDE написать код для создания сервера и отправки данных на сервер. Пример самодельного сервера неплохо описан в данной инструкции.

Уведомления по SMS

С помощью подключаемой библиотеки GSM в Arduino IDE можно:

  1. Работать с голосовыми вызовами.
  2. Получать и отправлять СМС.
  3. Подключаться к Интернету через GPRS.

Работает схема через специальную плату расширения GSM, содержащую специальный модем.

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

Обучение азов Arduino

С помощью приложения «Справочник по Arduino 2» можно в течении двух недель освоить материал. Приложение полностью автономно и не требует подключение к интернету. В нем описана такая информация: функции, данные, операторы, библиотеки Arduino.

После освоения азов, можно посетить ресурс Habrahabr, на котором собраны 100 уроков по программированию на Arduino.

Тем, кто привык черпать знания из книг, станет замечательным пособием для теории и практики «Джереми Блум: изучаем Arduino».

В книге приведены основные сведения об аппаратном и программном обеспечении Ардуино. Рассказаны принципы программирования в среде Arduino IDE. Автор книги учит анализу электрических схем и чтению технических заданий. Информация из книги поможет в дальнейшем определится с выбором подходящих деталей для создания умного дома.

Автор приводит примеры работы электродвигателей, датчиков, индикаторов, сервоприводов, всевозможных интерфейсов передачи данных. Книга содержит иллюстрированные комплектующие, монтажные схемы и листинги программ. Самое главное, комплектующие для практики, с которыми работает автор – не дорогой, не сложный и популярный материал для экспериментальных сборок в домашних условиях.

Видео по теме

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

Не лишним будет ознакомится на примере, как реализовано создание умного контроллера для теплицы.

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

Источник: future2day.ru

Что такое Arduino?

Ардуино (Arduino) — специальный инструмент, позволяющий проектировать электронные устройства, имеющие более тесное взаимодействие с физической средой в сравнении с теми же ПК, фактически не выходящими за пределы виртуальной реальности.

В основе платформы лежит открытый код, а само устройство построено на печатной плате с «вшитым» в ней программным обеспечением.

Другими словами, Ардуино — небольшое устройство, обеспечивающее управление различными датчиками, системами освещения, принятия и передачи данных.

Умный дом на ардуино управление с андроид

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

Существует несколько моделей плат, самые распространённые из них – UNO, Mega 2560 R3.

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

Особенность последних заключается в управлении с помощью только двух параметров — логической единицы или нуля. Что касается аналогового вывода, между 1 и 0 имеется много мелких участков.

Сегодня Arduino используется при создании электронных систем, способных принимать информацию с различных датчиков (цифровых и аналоговых).

Умный дом на ардуино управление с андроид

Устройства на Ардуино могут работать в комплексе с ПО на компьютере или самостоятельно.

Что касается плат, их можно собрать своими руками или же приобрести готовое изделие. Программирование Arduino производится на языке Wiring.

ЧИТАЙТЕ ПО ТЕМЕ: Умный дом Xiaomi Smart Home, обзор, комплектация, подключение и настройка своими руками, сценарии.

Чем управляет Arduino?

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

Умный дом на ардуино управление с андроид

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

Благодаря этой особенности, Arduino становится универсальным устройством — «мозговым центром» системы «Умный дом» с возможностью конфигурации с учетом поставленных задач.

Умный дом на ардуино управление с андроид

Принцип работы системы

Устройство Arduino работает следующим образом. Информация, собранная с различных датчиков в доме, направляется по беспроводной сети на планшет или ПК. Далее с помощью специального софта производится обработка данных и выполнение определенной команды.

Главную функцию выполняет центральный датчик, который можно приобрести или собрать самостоятельно. Разъемы на платах являются стандартными, что значительно упрощает выбор комплектующих.

Умный дом на ардуино управление с андроид

Питание

Питание Arduino производится через USB разъем или от внешнего питающего устройства. Источник напряжения определяется в автоматическом режиме.

Если выбран вариант с внешним питанием не через USB, можно подключать АКБ или блок питания (преобразователь напряжения). В последнем случае подключение производится с помощью 2,1-миллиметровго разъема с «+» на главном контакте.

Провода от АКБ подключаются к различным выводам питающего разъема — Vin и Gnd.

Для нормальной работы платформа нуждается в напряжении от 6 до 20 Вольт. Если параметр падает ниже 7 вольт, на выводе 5V может оказаться меньшее напряжение и появляется риск сбоя.

Если подавать 12 В, возможен перегрев регулятора напряжения и повреждения платы. По этой причине оптимальным уровнем является питание с помощью 7 — 12 В.

Умный дом на ардуино управление с андроид

В отличие от прошлых типов плат, Arduino Mega 2560 работает без применения USB-микроконтроллера типа FTDI. Для обеспечения обмена информацией по USB применяется запрограммированный под конвертер USB-to-serial конвертер.

ПОПУЛЯРНО У ЧИТАТЕЛЕЙ: Что такое умный дом CLAP.

На Ардуино предусмотрены следующие питающие выводы:

  • 5V — используется для подачи напряжения на микроконтроллер, а также другие элементы печатной платы. Источник питания является регулируемым. Напряжение подается через USB-разъем или от вывода VIN, а также от иного источника питания 5 Вольт с возможностью регулирования.
  • VIN — применяется для подачи напряжения с внешнего источника. Вывод необходим, когда нет возможности подать напряжение через USB-разъем или другой внешний источник. При подаче напряжения на 2,1-миллиметровй разъем применяется этот вход.
  • 3V3 — вывод, напряжение на котором является следствием работы самой микросхемы FTDI. Предельный уровень потребляемого тока для этого элемента составляет 50 мА.
  • GND — заземляющие выводы.

Умный дом на ардуино управление с андроид

Принципиальную схему платы в pdf формате можно посмотреть ЗДЕСЬ.

Связь

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

Модель ATmega 2560 отличается наличием 4 портов, через которые можно передавать данные для TTL и UART. Специальная микросхема ATmega 8U2 на плате передает интерфейс (один из них) через USB-разъем. В свою очередь, программы на ПК получают виртуальный COM.

Умный дом на ардуино управление с андроид

Здесь имеются нюансы, которые зависят от типа операционной системы:

  • Если на ПК установлен Linux, распознавание происходит в автоматическом режиме.
  • Если стоит Windows, потребуется дополнительный файл .inf.

С помощью утилиты мониторинга обеспечивается отправление и получение информации в текстовом формате после подключения к системе.

Мигание светодиодов TX и RX свидетельствует о передаче данных. Для последовательной отправки информации применяется специальная библиотека Software Serial.

К особенностям ATmega 2560 стоит отнести наличие интерфейсов SPI и I2C. Кроме того, в состав Ардуино входит библиотека Wire.

Умный дом на ардуино управление с андроид

Разработка проекта

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

Какие проекты можно создавать на Arduino?

Ардуино позволяет создавать множество уникальных проектов. Вот лишь некоторые из них:

  • Сборка кубика Рубика (система справляется за 0,887 с);
  • Контроль влажности в подвальном помещении;
  • Создание уникальных картин;
  • Отправка сообщений;
  • Балансирующий робот на двух колесах;
  • Анализатор спектра звука;
  • Лампа оригами с емкостным сенсором;
  • Рука-робот, управляемая с помощью Ардуино;
  • Написание букв в воздухе;
  • Управление фотовспышкой и многое другое.

Составление проекта для умного дома

Рассмотрим ситуацию, когда необходимо сделать автоматику для дома с одной комнатой.

Такое здание состоит из пяти основных зон — прихожей, крыльца, кухни, санузла, а также комнаты для проживания.

При составлении проекта стоит учесть следующее:

  • КРЫЛЬЦО. Включение света производится в двух случая — приближение хозяина к дому в темное время суток и открытие дверей (когда человек выходит из здания).
  • САНУЗЕЛ. В бойлере предусмотрен выключатель питания, который при достижении определенной температуры выключается. Управление бойлером производится в зависимости от наличия соответствующей автоматики. При входе в помещение должна срабатывать вытяжка, и загорается свет.
  • ПРИХОЖАЯ. Здесь требуется включение света при наступлении темноты (автоматическое), а также система обнаружения движения. Ночью включается лампочка небольшой мощности, что исключает дискомфорт для других жильцов дома.
  • КОМНАТА. Включение света производится вручную, но при необходимости и наличии датчика движения эта манипуляция может происходить автоматически.
  • КУХНЯ. Включение и отключение света на кухне осуществляется в ручном режиме. Допускается автоматическое отключение в случае продолжительного отсутствия перемещений по комнате. Если человек начинает готовить пищу, активируется вытяжка.

Отопительные устройства выполняют задачу поддержания необходимой температуры в помещении. Если в доме отсутствуют люди, нижний предел температуры падает до определенного уровня.

После появления людей в здании этот параметр поднимается до прежнего значения. Рекуперация воздуха осуществляется в случае, когда система обнаружила присутствие владельца. Продолжительность процесса — не более 10 минут в час.

Стоит обратить внимание, что если в доме планируется установка умных розеток, то для управления ими лучше использовать приложения на мобильных устройствах, WIFI или через SMS сообщения.

Визуальное программирование для Arduino можно осуществлять с помощью специального приложения FLProg, которое можно скачать с официального сайта http://flprog.ru/.

Умный дом на ардуино управление с андроид

Подбираем комплектацию под проект на примере Arduino Mega 2560 R3

Для создания полноценной системы «Умный дом» и выполнения ею возложенных функций важно правильно подойти к комплектации и выбору оборудования.

Что входит в комплект поставки?

Если ваша цель — «Умный дом» на базе Arduino, требуется подготовить следующее оборудование — саму плату Mega 2560 R3, модуль Ethernet (ENC28J60), датчик движения, а также другие датчики и контроллеры.

Кроме того, стоит подготовить кабель вида «витая пара», резистор, реле, переключатель и кабель для модуля Ethernet.

Arduino Mega 2560

Необходимы и дополнительные инструменты — отвертки, паяльники и прочее.

Учтите, что покупать наборы для монтажа системы стоит в сертифицированных пунктах. Это объясняется тем, что при реализации проекта применяется электричество, а использование подделки может привести к снижению уровня безопасности.

Все программы для адаптации можно найти в сети на официальном сайте Arduino http://arduino.ru.  При выборе датчиков стоит ориентироваться на задачи, которая должен решать «Умный дом».

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

Умный дом на ардуино управление с андроид

Прошивается плата с помощью специального софта, предназначенного для различных операционных систем, в том числе и кабеля USB. При этом в программаторах нет необходимости.

Что касается ПО, которое применяется в Ардуино, оно написано на языке Си. На число байт имеются определенные ограничения, но текущей памяти достаточно для реализации поставленной задачи.

Начало работы

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

Этапы

При организации системы «Умный дом» на базе Ардуино, стоит действовать по следующему алгоритму:

  • Инсталляция программного кода;
  • Конфигурация приложения под применяемое устройство;
  • Переадресация портов (для роутера);
  • Проведение тестов;
  • Внесение правок и так далее.

В Сети имеется весь необходимый софт на применяемое оборудование — его достаточно скачать с официального сайта и установить (ссылку смотрите выше).

Приложение позволяет увидеть информацию о датчиках. Если это требуется, настройки 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-адреса, ведь в этом случае высок риск взлома через Сеть.

Расширение возможности на Ардуино

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

Умный дом на ардуино управление с андроид

Упомянутая программная технология применяется для решения интернет-задач, поэтому для визуализации «Умного дома» используется язык Java Script (именно с его помощью создается обработчик и сервер). Результаты можно увидеть на экране компьютера или ПК.

Умный дом на ардуино управление с андроид

Для реализации задуманного подойдет ноутбук, обычный ПК или Raspberry Pi. Применение такой системы позволяет увеличить ее возможности. Так, если на плате Ардуино имеется небольшой объем памяти, на сервере такие ограничения отсутствуют. Программа пишется таким образом, чтобы обеспечить полное управление платформой.

При желании можно задать алгоритм, который будет фиксировать факт нахождения человека в доме, и собирать эту информацию. Если владелец ежедневно возвращается где-то к 17.30, за час может быть включен бойлер или отопительные устройства. По приходу домой человек попадает в теплое здание с горячей водой.

Программа может запомнить время, когда владелец ложится отдыхать и отключать нагрев воды. Таких нюансов, которые при необходимости вносятся в программу, множество. Именно наличие внешнего ПК дает большие возможности контроллеру на Ардуино.

Общение с Arduino

Чтобы узнать, какие действия осуществлять, процессор должен получить соответствующую команду. Общение производится с помощью специального языка, который адаптирован под работу с Ардуино и достаточно прост. При желании в нем легко работаться даже при отсутствии навыков программирования.

Оформление и отправка сообщения контроллеру называется программированием. Чтобы упростить процесс, разработана среда Arduino IDE, в состав которой входит множество программ. Их изучение позволяет получить массу полезной информации о работе с Ардуино.

Умный дом на ардуино управление с андроид

Как можно управлять?

Как отмечалось, сервер Node.js позволяет связать между собой оборудование в доме. Одним из способов управления процессами являются облачные сервисы в Сети. При этом включить отопление или бойлер можно за один-два часа до приезда.

Еще один способ — управление с помощью сообщений (MMS или SMS). Этот вариант актуален в случае, когда нет связи с Интернетом. Одним из преимуществ системы является возможность получения информации о форс-мажорной ситуации (например, протечке). Здесь помогает плата Edison от компании Intel.

Умный дом на ардуино управление с андроид

В итоге, что мы получим?

Сегодня Arduino востребовано среди людей, которые ничего не знают о программировании.

Причиной этому является простой интерфейс, а также ряд преимуществ — простой язык программирования, возможность создания своего алгоритма, благодаря открытому исходному коду, а также легкость переноса программ с помощью USB-кабеля. Необходимый для Ардуино софт имеется в Интернете, поэтому тут проблем нет.

Как видно, Ардуино — не просто плата, позволяющая подключить различные устройства. Это мощная база, которую можно использовать для создания «Умного дома». При этом нет нужды тратить большие деньги за дорогостоящие устройства, стоимость которых в 5-10 раз больше.

Это и есть основные преимущества системы.

К особенностям платы стоит отнести возможность подключения к компьютеру и получения визуализации процессов на дисплее планшета или ПК.

Управление автоматикой возможно через Интернет или посредством сообщений. Так что Ардуино отлично подходит для создания устройств повышенной сложности.

Источник: ElektrikExpert.ru

Видео работы устройства

 

Код сервера 

 // код сервера OEMHOME // oemhome.blogspot.ru  #include "etherShield.h" #include "ETHER_28J60.h" #include "DHT.h" #include <Wire.h>  #include <LiquidCrystal_I2C.h>  #define pinACON 7 #define pinACOFF 8 #define DHTPIN 6  #define DHTTYPE DHT11 // DHT 11  // #define DHTTYPE DHT22 // DHT 22 (AM2302) //#define DHTTYPE DHT21 // DHT 21 (AM2301)7 DHT dht(DHTPIN, DHTTYPE);  LiquidCrystal_I2C lcd(0x27,16,2); #if defined(ARDUINO) && ARDUINO >= 100 #define printByte(args) write(args); #else #define printByte(args) print(args,BYTE); #endif byte tempChar[8] = {  B00100,  B01010,  B01010,  B01110,  B01110,  B11111,  B11111,  B01110 }; byte humChar[8] = {  B00100,  B00100,  B01010,  B01010,  B10001,  B10001,  B10001,  B01110 }; byte r1Char[8] = {  B01110,  B10001,  B10001,  B10001,  B01010,  B01110,  B01110,  B00100 }; byte r2Char[8] = {  B00000,  B01010,  B01010,  B11111,  B11011,  B01110,  B00100,  B00100 };  int relayPin1 = 3; int relayPin2 = 4;  int ac_status = 0; int status_b = 0;  ETHER_28J60 e; static uint8_t mac[6] = {  0x74,0x69,0x69,0x2D,0x30,0x31 };  static uint8_t ip[4] = {  192, 168, 1, 25};  static uint8_t gwip[] = {  192,168,1,1}; static uint16_t port = 80;   int t=0; int h=0; int Timer= 0; int Animation = 0;  boolean AcStatus; boolean LcdStatus; boolean R1Status; boolean R2Status;   void setup () {  digitalWrite(pinACON,LOW);  digitalWrite(pinACOFF,LOW);  pinMode(pinACON,OUTPUT);  pinMode(pinACOFF,OUTPUT);  pinMode(relayPin1, OUTPUT);  pinMode(relayPin2, OUTPUT);  lcd.init();  //lcd.backlight();  lcd.createChar(0, tempChar);  lcd.createChar(1, humChar);  lcd.createChar(2, r1Char);  lcd.createChar(3, r2Char);  dht.begin();  e.setup(mac, ip, port);   Serial.begin(57600);  Serial.println("OEMHOME AC control");  Serial.print (dht.readTemperature());  Serial.println("C");  Serial.print (dht.readHumidity());  Serial.println("%");   Serial.println();  AcStatus = false;  LcdStatus = false;  R1Status = false;  R2Status = false;  }  static void ReadDHT11() {  h = dht.readHumidity();  t = dht.readTemperature();  } void loop() {     Timer = Timer+1;  if(Timer==1)  {  ReadDHT11();  lcd.setCursor(0, 0);  lcd.printByte(0);  lcd.print(t);  lcd.print("C");  if(Animation==0)  {  lcd.print(" +");  }  if(Animation==1)  {  lcd.print(" *");  }  lcd.setCursor(0,1);  lcd.printByte(1);  //lcd.print(" ");  //lcd.print("Rh: ");  lcd.print(h);  lcd.print("%");   Animation = Animation + 1;  if(Animation==2)  {  Animation=0;  }  }  if(Timer==1100)  {  Timer=0;  }  char* params;  if (params = e.serviceRequest())  {  // e.print("<head><title>AC control</title></head>");  e.print("Temperature <b>");  e.print(t);  e.print(" C</b><br/>");  e.print("Humidity <b>");  e.print(h);  e.print(" %</b><br/>");  // e.print("<b><h>AC Control</h></b><br/>");  // e.print("<a href='?cmd=off'><input name='But' type='button' value='AC off'></a> ");  // e.print("<a href='?cmd=on'><input name='But' type='button' value='AC on'></a><br>");  e.print("<A HREF='?cmd=acoff'>AC off</A><br>");  e.print("<A HREF='?cmd=acon'>AC on</A><br>");  if (strcmp(params, "?cmd=acon") == 0)  {  AcStatus = true;  status_b = 1;   }  else if (strcmp(params, "?cmd=acoff") == 0)   {  AcStatus = false;  status_b = 2;   }  if (AcStatus == true)  {  e.print("AC_ON<br><br> ");  }  else {  e.print("AC_OFF<br><br>");  }   // e.print("<a href='?cmd=nolight'><input name='But' type='button' value='lcd off'></a> ");  // e.print("<a href='?cmd=light'><input name='But' type='button' value='lcd on'></a><br>");  e.print("<A HREF='?cmd=loff'>LCD off</A><br>");  e.print("<A HREF='?cmd=lon'>LCD on</A><br>");  if(strcmp(params, "?cmd=lon") == 0)  {  LcdStatus = true;  lcd.backlight();   }  else if (strcmp(params, "?cmd=loff") == 0)   {  LcdStatus = false;   lcd.noBacklight();   }  if (LcdStatus == true)  {  e.print("L_ON<br><br>");  }  else {  e.print("L_OFF<br><br>");  }  e.print("<A HREF='?cmd=roff'>R1 off</A><br>");  e.print("<A HREF='?cmd=ron'>R1 on</A><br>");  if(strcmp(params, "?cmd=ron") == 0)  {  digitalWrite(relayPin1, HIGH);  R1Status = true;    }  else if (strcmp(params, "?cmd=roff") == 0)   {  digitalWrite(relayPin1, LOW);  R1Status = false;   }  if (R1Status == true)  {  e.print("R1_ON<br><br>");  lcd.setCursor(5,1);  lcd.printByte(2);  lcd.print(":");  lcd.print("ON ");  }  else {  e.print("R1_OFF<br><br>");  lcd.setCursor(5,1);  lcd.printByte(2);  lcd.print(":");  lcd.print("OFF");  }  e.print("<A HREF='?cmd=r2off'>R2 off</A><br>");  e.print("<A HREF='?cmd=r2on'>R2 on</A><br>");  if(strcmp(params, "?cmd=r2on") == 0)  {  digitalWrite(relayPin2, HIGH);  R2Status = true;    }  else if (strcmp(params, "?cmd=r2off") == 0)   {  digitalWrite(relayPin2, LOW);  R2Status = false;   }  if (R2Status == true)  {  e.print("R2_ON<br><br>");  lcd.setCursor(11,1);  lcd.printByte(3);  lcd.print(":");  lcd.print("ON ");  }  else {  e.print("R2_OFF<br><br>");  lcd.setCursor(11,1);  lcd.printByte(3);  lcd.print(":");  lcd.print("OFF");  }   e.respond();  //delay(100);  }    AcControl (status_b); }  void AcControl(int b_s){  int status = 0;  if (b_s == 1){  status = 1;  }  if (b_s == 2){  status = 2;  }  if(status != ac_status) {  ac_status = status;  {	  if(status == 1) {   status_b = 0;  digitalWrite(pinACON,HIGH);  delay(100);  digitalWrite(pinACON,LOW);  Serial.println("AC Magnit - Auto mode - ON");  Serial.print (t);  Serial.println("C");  Serial.print (h);  Serial.println("%");  lcd.setCursor(11,0);  lcd.print("*:");  lcd.print("ON ");  }  if (status == 2){  status_b = 0;  digitalWrite(pinACOFF,HIGH);  delay(100);  digitalWrite(pinACOFF,LOW);  Serial.println("AC Magnit OFF");  Serial.print (t);  Serial.println("C");  Serial.print (h);  Serial.println("%");  lcd.setCursor(11,0);  lcd.print("*:");  lcd.print("OFF");  }  }  }  } 

Код для управления кондиционером ver.1

 // код клиент ver.1 OEMHOME // oemhome.blogspot.ru  #include "IRremote.h" #define pinACON A2 #define pinACOFF A3   IRsend irsend;   void setup() {  //Serial.begin(9600); } int khz=38;  unsigned int AcOff[228] = {3750,1400,600,1150,600,1150,550,500,550,450,550,500,550,1150,600,450,550,450,550,1200,550,1200,550,450,550,1200,550,500,550,450,550,1200,550,1150,600,450,550,1200,550,1150,600,450,550,450,600,1150,550,500,550,500,500,1200,550,450,600,450,550,450,550,500,550,450,550,500,550,500,500,500,550,450,550,500,550,450,550,500,550,450,550,500,550,450,550,500,550,450,550,450,600,450,550,450,600,1150,550,500,550,450,550,500,550,450,550,500,550,1150,550,500,550,500,500,500,550,450,550,1200,550,1200,550,1150,600,450,550,500,550,450,550,450,600,450,550,1200,550,450,550,1200,550,1200,550,450,550,1200,550,450,600,450,550,450,600,450,550,450,550,500,550,500,500,500,550,450,550,500,550,450,550,500,550,450,550,450,600,450,550,450,600,450,550,450,600,1150,550,500,550,450,550,500,550,450,550,450,600,450,550,450,600,450,550,450,600,1150,550,500,550,450,550,450,600,450,550,500,550,450,550,1200,550,1150,600,450,550,1200,550,1150,600,1150,550,500,500}; unsigned int AcAutoOn[228] = {3800,1400,550,1200,550,1200,550,450,550,500,550,450,550,1200,550,450,600,450,550,1200,550,1150,600,450,550,1200,550,500,500,500,550,1150,600,1150,550,500,550,1150,600,1150,550,500,550,500,500,1200,550,450,600,450,550,1200,550,450,550,500,550,450,550,450,600,450,550,450,600,450,550,450,600,450,550,450,600,450,550,500,500,500,550,450,550,500,550,450,550,500,550,1150,600,450,550,450,600,1150,550,500,550,450,550,500,550,450,550,450,600,1150,550,500,550,450,550,500,550,450,550,1200,550,1200,550,1150,600,450,550,500,550,450,550,450,600,450,550,1200,550,450,550,1200,550,1200,550,450,550,1200,550,450,600,450,550,500,500,500,550,450,550,500,550,450,550,500,550,450,550,450,600,450,550,500,550,450,550,450,600,450,550,500,550,450,550,450,600,1150,550,500,550,450,550,450,600,450,550,450,600,450,550,500,550,450,550,450,600,1150,550,500,550,450,550,500,550,450,550,450,600,450,550,1200,550,450,550,1200,550,1200,550,1150,600,1150,550,500,500};  void loop() {  // Invio il segnale di accenedre il condizionatore sul CALDO  if(checkArduinoMaster(pinACON)){  irsend.sendRaw(AcAutoOn, sizeof(AcAutoOn)/sizeof(int),khz);   delay(1000); } // Invio il segnale di accedere il condizionatore sul FREDDO if(checkArduinoMaster(pinACOFF)){  irsend.sendRaw(AcOff, sizeof(AcOff)/sizeof(int),khz);   delay(100); } }  // Questa funziona stabilisce se a quella porta, è stata inviato un segnale dall'altro Arduino boolean checkArduinoMaster (int porta){  if(analogRead(porta)>1000){  return true;  }else{  return false;  } }  

Код для управления кондиционером ver.2, плюс считывания команд с пульта телевизора, для управления в паре с аудиоресивером (тут можно посмотреть подробнее на эту тему)

 

 // код клиент ver.2 OEMHOME // oemhome.blogspot.ru  #include "IRremote.h" #define pinACON A2 #define pinACOFF A3   int RECEIVE_PIN = 5; IRrecv irrecv(RECEIVE_PIN); decode_results results;   IRsend irsend;   void setup() { irrecv.enableIRIn(); //irrecv.blink13(true); pinMode(13, OUTPUT); } int khz=38;  unsigned int AcOff[228] = {3750,1400,600,1150,600,1150,550,500,550,450,550,500,550,1150,600,450,550,450,550,1200,550,1200,550,450,550,1200,550,500,550,450,550,1200,550,1150,600,450,550,1200,550,1150,600,450,550,450,600,1150,550,500,550,500,500,1200,550,450,600,450,550,450,550,500,550,450,550,500,550,500,500,500,550,450,550,500,550,450,550,500,550,450,550,500,550,450,550,500,550,450,550,450,600,450,550,450,600,1150,550,500,550,450,550,500,550,450,550,500,550,1150,550,500,550,500,500,500,550,450,550,1200,550,1200,550,1150,600,450,550,500,550,450,550,450,600,450,550,1200,550,450,550,1200,550,1200,550,450,550,1200,550,450,600,450,550,450,600,450,550,450,550,500,550,500,500,500,550,450,550,500,550,450,550,500,550,450,550,450,600,450,550,450,600,450,550,450,600,1150,550,500,550,450,550,500,550,450,550,450,600,450,550,450,600,450,550,450,600,1150,550,500,550,450,550,450,600,450,550,500,550,450,550,1200,550,1150,600,450,550,1200,550,1150,600,1150,550,500,500}; unsigned int AcAutoOn[228] = {3800,1400,550,1200,550,1200,550,450,550,500,550,450,550,1200,550,450,600,450,550,1200,550,1150,600,450,550,1200,550,500,500,500,550,1150,600,1150,550,500,550,1150,600,1150,550,500,550,500,500,1200,550,450,600,450,550,1200,550,450,550,500,550,450,550,450,600,450,550,450,600,450,550,450,600,450,550,450,600,450,550,500,500,500,550,450,550,500,550,450,550,500,550,1150,600,450,550,450,600,1150,550,500,550,450,550,500,550,450,550,450,600,1150,550,500,550,450,550,500,550,450,550,1200,550,1200,550,1150,600,450,550,500,550,450,550,450,600,450,550,1200,550,450,550,1200,550,1200,550,450,550,1200,550,450,600,450,550,500,500,500,550,450,550,500,550,450,550,500,550,450,550,450,600,450,550,500,550,450,550,450,600,450,550,500,550,450,550,450,600,1150,550,500,550,450,550,450,600,450,550,450,600,450,550,500,550,450,550,450,600,1150,550,500,550,450,550,500,550,450,550,450,600,450,550,1200,550,450,550,1200,550,1200,550,1150,600,1150,550,500,500};  void loop() {   if (irrecv.decode(&results)) {   if(results.value==0xE0E040BF)  {  //delay (500);  irsend.sendNEC(0xA55A38C7,32);  //Serial.println("POWER");  }   if(results.value==0xE0E0E01F)  {  //delay (500);  irsend.sendNEC(0xA55A50AF,32);  //Serial.println("Volume +");  }   if(results.value==0xE0E0D02F)  {  //delay (500);  irsend.sendNEC(0xA55AD02F,32);   //Serial.println("Volume -");  }   if(results.value==0xE0E0F00F)  {  //delay (500);  irsend.sendNEC(0xA55A48B7,32);   //Serial.println("MUTE");  }  irrecv.enableIRIn();  irrecv.resume();  }  if(checkArduinoMaster(pinACON)){  irsend.sendRaw(AcAutoOn, sizeof(AcAutoOn)/sizeof(int),khz);   digitalWrite(13, HIGH);  delay(100);  irrecv.enableIRIn();  irrecv.resume(); } if(checkArduinoMaster(pinACOFF)){  irsend.sendRaw(AcOff, sizeof(AcOff)/sizeof(int),khz);   digitalWrite(13, LOW);  delay(100);  irrecv.enableIRIn();  irrecv.resume(); } }  boolean checkArduinoMaster (int porta){  if(analogRead(porta)>1000){  return true;  }else{  return false;  } }  

Сильно не буду углубляться в логику работы кода, но если у вас появятся вопросы, пишите, постараюсь ответить. 

P.S. За отсутствие комментариев, сильно не пинайте, если появится время, то обновлю код и добавлю пояснения

Так же постараюсь быстрее закончить рисование схемы подключения всех устройств с помощью fritzing.org, и добавлю ее сюда

Статьи, которые мне помогли и вдохновили

http://habrahabr.ru/post/184966/

http://www.lucadentella.it/en/category/enc28j60-arduino/ (отличные примеры для работы с enc28j60)

http://www.instructables.com/id/Arduino-TempHumidity-with-LCD-and-Web-In…

http://www.instructables.com/id/How-to-control-the-air-conditioner-AC-at…

Источник: arduino.ru


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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.