Оглавление:

IDC2018IOT Подскажите, когда выключить кондиционер: 7 шагов
IDC2018IOT Подскажите, когда выключить кондиционер: 7 шагов

Видео: IDC2018IOT Подскажите, когда выключить кондиционер: 7 шагов

Видео: IDC2018IOT Подскажите, когда выключить кондиционер: 7 шагов
Видео: IDC UK Security Conference 2018 2024, Июль
Anonim
Image
Image

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

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

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

Шаг 1: немного подробнее

Мы собираем данные с 4-х различных датчиков:

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

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

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

Необходимые детали:

  1. Модуль WiFi - ESP8266
  2. Датчик PIR.
  3. Датчики температуры DHT11 / DHT22 x2.
  4. Резисторы 10 кОм / 4,7 кОм (DHT11 - 4,7 кОм, DHT22 - 10 кОм, PIR - 10 кОм).
  5. Электретный микрофон.
  6. Джемперы.
  7. Длинные кабели (телефонный провод отлично подойдет).

Полный код проекта прилагается в конце с комментариями по всему коду.

Логически у него есть несколько разных уровней функциональности:

  • Данные с датчиков считываются с интервалом в 3 секунды, так как они более точны, и в этом нет необходимости.
  • Одна часть кода отслеживает состояние переменного тока по значениям, поступающим с электретного микрофона, который помещается над отверстием переменного тока.
  • Другая часть - отслеживание показаний, поступающих от датчиков температуры, и различий, которые использование определено как приемлемое, чтобы выключить кондиционер и вместо этого открыть окно. Мы ждем момента, когда температуры станут достаточно близкими.
  • Третья часть отслеживает движение в комнате. Если он не обнаруживает значительного движения (способ проверки значимости будет вскоре объяснен) в течение периода времени, определенного пользователем, и состояние AC включено, пользователю будет отправлено уведомление.
  • Уведомления обрабатываются посредством запуска IFTTT Webhooks, которые отправляют пользователю заранее определенные сообщения через Facebook Messenger.
  • Последняя часть, на которую стоит обратить внимание, - это часть, которая обрабатывает интерфейс Blynk, как путем получения изменений, которые пользователь вносит в переменные, так и, с другой стороны, путем отправки данных в интерфейс Blynk, чтобы пользователь мог их увидеть.

Шаг 2: подробнее - датчики

Более подробно - датчики
Более подробно - датчики
Более подробно - датчики
Более подробно - датчики

Давайте начнем.

Во-первых, нам нужно убедиться, что оба наших датчика DHT показывают одинаковую температуру при размещении в одном месте. Для этого мы сделали простой скетч, прикрепленный в конце этого раздела (CompareSensors.ino). Подключите оба датчика и убедитесь, что вы изменили тип датчиков DHT в эскизе в соответствии с теми, которые у вас есть (по умолчанию один DHT11 и один DHT22, так что вы можете увидеть, как оба рассматриваются в коде). Откройте последовательный монитор и дайте им поработать некоторое время, особенно если вы используете датчики DHT11, поскольку им, как правило, требуется больше времени, чтобы приспособиться к изменениям температуры.

Обратите внимание на разницу между датчиками и вставьте ее позже в основной код в переменную «смещение».

Размещение датчиков:

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

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

Наконец, датчик PIR следует разместить в месте, обращенном к центру комнаты, чтобы он улавливал каждое движение в комнате. Обратите внимание, что у датчика есть две маленькие ручки, одна регулирует задержку (как долго ВЫСОКИЙ сигнал обнаружения движения остается ВЫСОКИМ), а другой регулирует чувствительность (см. Рисунок).

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

Подключение датчиков:

Мы использовали следующие номера контактов (и их можно изменить в основном коде):

Наружный датчик DHT - D2.

Внутренний датчик DHT - D3.

Электретный - A0 (аналоговый вывод).

ПИР - Д5.

Схемы для подключения каждого из них можно легко найти с помощью поиска изображений в Google с чем-то вроде «Схема PIR резистора Arduino» (мы бы не хотели копировать их здесь и пересекать любые линии авторских прав:)).

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

Как вы, наверное, знаете, что-то редко, если вообще когда-либо, работает с первого раза, когда мы их подключаем. Вот почему мы создали функцию, которая распечатывает показания датчиков в удобном для чтения виде, чтобы вы могли отладить свой способ их работы. Если вы не хотите, чтобы код пытался подключиться к Blynk во время отладки, просто закомментируйте «Blynk.begin (auth, ssid, pass);» из установочной части кода запустите его и откройте монитор последовательного порта, чтобы увидеть отпечатки. Также прилагаем фото с принтами.

Шаг 3. Более подробно - последовательность IFTTT

Более подробно - последовательность IFTTT
Более подробно - последовательность IFTTT

Итак, мы хотим получать уведомления в двух сценариях:

1. Внешняя температура достаточно близка к той, которая у нас есть внутри при работающем кондиционере.

2. Мы покинули комнату на длительный период времени, а кондиционер все еще работает.

IFTTT позволяет нам очень простым способом подключать множество различных сервисов, которые обычно не взаимодействуют друг с другом. В нашем случае это позволяет нам очень легко отправлять уведомления через многие службы. Мы выбрали Facebook Messanger, но после того, как он будет работать с Facebook Messanger, вы сможете легко заменить его на любую другую службу по вашему выбору.

Процесс:

На веб-сайте IFTTT щелкните свое имя пользователя (верхний правый угол), затем «Новый апплет», выберите «Webhooks» в качестве триггера («это») и выберите «Получить веб-запрос». Задайте название события (например, empty_room).

Для запущенной службы, действие («это»), выберите Facebook Messenger> Отправить сообщение и введите сообщение, которое вы хотите получить, когда это событие произойдет (например, «Привет, похоже, вы забыли AC на:).

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

Чтобы найти свой секретный ключ, перейдите на https://ifttt.com/services/maker_webhooks/settings. Там вы найдете URL-адрес с вашим ключом в следующем формате:

Шаг 4: Подробнее - Блинк

Image
Image
Более подробно - Blynk
Более подробно - Blynk
Более подробно - Блинк
Более подробно - Блинк

Нам также нужен интерфейс, который будет обладать следующими функциями:

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

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

3. Дисплей для показаний датчиков температуры.

4. Светодиод, сообщающий нам состояние переменного тока (включен / выключен).

5. И самое главное, дисплей, показывающий, сколько долларов и энергии мы сэкономили.

Как создать интерфейс Blynk:

Если у вас еще нет приложения Blynk, загрузите его на свой телефон. Когда вы открываете приложение и создаете новый проект, обязательно выберите соответствующее устройство (например, ESP8266).

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

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

После того, как вы закончите работу с приложением, и когда вы в конечном итоге захотите его использовать, просто нажмите значок «Играть» в правом верхнем углу, чтобы запустить приложение Blynk. Вы также сможете увидеть, когда подключается ваш ESP8266.

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

Шаг 5: Код

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

За частями кода, которые вы должны изменить перед его использованием (в качестве ключа авторизации для Blynk, вашего SSID и пароля Wi-Fi и т. Д.), Следует комментарий // * изменение *, чтобы вы могли легко их найти.

Вам понадобятся библиотеки, используемые в коде, вы можете установить их через IDE Arduino, щелкнув Sketch> Include Libraries> Manage Libraries. Там вы можете найти имя библиотеки и установить ее. Также убедитесь, что вы поместили файл generic8266_ifttt.h в то же место, что и ACsaver.ino.

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

Мы считываем данные с датчиков каждые 3 секунды, но, поскольку датчики не на 100% точны, мы не хотим, чтобы одно считывание изменило состояние, которое, по нашему мнению, сейчас находится в комнате. Чтобы решить эту проблему, код делает то, что у нас есть счетчик, который мы ++, когда получаем показание в пользу «AC включен», и - в противном случае. Затем, когда мы добираемся до значения, определенного в SWITCHAFTER (по умолчанию 4), мы меняем состояние на «AC включен», когда мы переходим на -SWITCHAFTER (отрицательное то же значение), мы меняем состояние на «AC отключен..

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

Шаг 6: Собираем все вместе

Итак, все датчики на месте и работают нормально. Настроен интерфейс Blynk (с правильными виртуальными контактами!). И события IFTTT ждут нашего триггера.

Вы вставили секретный ключ IFTTT в код, ключ аутентификации от Blynk, SSID вашего WiFi и пароль, и вы даже проверили, что датчики DHT откалиброваны, а если нет, изменили смещение соответственно (например, наш температура снаружи DHT на 1 градус Цельсия выше, чем должна быть, поэтому мы использовали смещение = -1).

Убедитесь, что ваш Wi-Fi включен, запустите приложение Blynk и загрузите код в свой ESP8266.

Вот и все. Если все было сделано правильно, вы можете сейчас поиграть и увидеть это в действии.

И если вы просто хотите увидеть это в действии, не сложив все вместе… Что ж… Прокрутите вверх и посмотрите видео. (Смотрите с субтитрами! Без озвучивания)

Шаг 7: Мысли

Здесь у нас были две основные проблемы.

Прежде всего, как мы узнаем, что кондиционер включен? Мы попытались использовать ИК-приемник, который будет «слушать» связь между AC и пультом дистанционного управления. Это оказалось слишком сложным, так как данные были очень беспорядочными и недостаточно последовательными, чтобы понять: «Хорошо, это сигнал ВКЛ». Поэтому мы искали другие пути. Одна идея заключалась в использовании небольшого пропеллера, который будет генерировать небольшой ток при движении от ветра переменного тока, другая идея, которую мы пробовали, заключалась в том, чтобы акселерометр измерял угол вращающихся крыльев на вентиляционных отверстиях и обнаруживал их движение из положения ВЫКЛ.

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

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

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

Поэтому мы немного обдумали, что должно быть в интерфейсе Blynk, и постарались сделать код максимально надежным, позаботившись о каждом граничном случае, который мы могли придумать.

Еще одна проблема, которую мы не смогли решить к моменту написания этого руководства, заключалась в том, чтобы добавить ИК-передатчик, который позволит нам отключать AC через интерфейс Blynk. Какой смысл знать, что вы забыли включить кондиционер, не имея возможности его выключить? (ну … вы можете спросить кого-нибудь, дома ли он).

К сожалению, у нас возникли некоторые трудности с воспроизведением сигналов, которые мы записали с пульта дистанционного управления, обратно в AC с ESP8266. Нам удалось управлять AC с помощью Arduino Uno, следуя этой инструкции:

www.instructables.com/id/How-to-control-th…

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

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

Проект можно расширить разными способами. Как было сказано выше, мы постараемся найти способ включить ИК-контроль над AC, что затем откроет целый новый мир возможностей для включения и выключения AC из любой точки мира или установки времени включения и выключения через Blynk. app, как другой пример. После выяснения технических трудностей с IR добавлением кода довольно просто и понятно, и это не займет много времени.

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

На самом деле, все, что нам нужно, это датчик температуры внутри, датчик PIR для обнаружения движения и ИК-светодиод в качестве бластера, а также ИК-приемник для «прослушивания» связи между AC и пультом дистанционного управления, который мы используем.

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

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

Но если вы делаете это для себя, ну, если вы занимаетесь этим в свободное время, по нашим расчетам, это займет не больше недели или двух. Зависит от того, сколько у вас свободного времени… Основная задача здесь - сохранить все различные сигналы, которые может отправлять пульт дистанционного управления переменного тока, и разобраться в них. (Хотя просто воспроизвести их должно быть еще проще).

Рекомендуемые: