Автоматическое управление температурой кондиционера с помощью Arduino и DHT11


Кондиционеры (Air Conditioner, сокращенно AC) стали привычным атрибутом жизни для многих современных людей. Некоторые из них озабочены проблемой снижения энергопотребления кондиционеров. Поэтому в данной статье мы рассмотрим схему автоматического регулятора температуры кондиционера в зависимости от температуры в комнате, что позволяет значительно снизить потребление им энергии.

Внешний вид проекта автоматического управления температурой кондиционера с помощью Arduino и DHT11

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

Необходимые компоненты

  1. Плата Arduino Mega 2560 (купить на AliExpress).
  2. Инфракрасный приемник TSOP1738 (HS0038) (купить на AliExpress).
  3. IR Led (инфракрасный светодиод, передатчик) (купить на AliExpress).
  4. Датчик температуры и влажности DHT11 (купить на AliExpress).
  5. Светодиод любого цвета (опционально) (купить на AliExpress).
  6. Резистор 1 кОм (опционально) (купить на AliExpress).
  7. Макетная плата.
  8. Соединительные провода.
  9. OLED дисплей (купить на AliExpress).

Общие принципы работы проекта

Все пульты дистанционного управления (ДУ), которые есть у нас дома, обязательно содержат в своем составе инфракрасный передатчик (IR Blasters) – по своей сути это просто инфракрасный светодиод, который может передавать полезный сигнал с помощью последовательности импульсов, которая считывается приемником радиоэлектронного устройства, которым вы хотите управлять. Каждая кнопка на пульте ДУ приводит к формированию своей уникальной последовательности импульсов, которая приемником используется для выполнения заранее определенной задачи. Если вы можете принять этот инфракрасный сигнал, то вы можете его и повторить (скопировать) с помощью инфракрасного светодиода, чтобы заставить устройство выполнить нужную вам задачу. Аналогичный проект мы уже рассматривали на нашем сайте – это универсальный пульт ДУ для всех домашних устройств на основе Arduino.

Внешний вид инфракрасного передатчика (светодиода)

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

Внешний вид инфракрасного приемника TSOP1738

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

Необходимые знания для реализации этого проекта

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

  1. Подключение датчика DHT11 к Arduino.
  2. Подключение OLED дисплея к Arduino.
  3. Универсальный инфракрасный пульт ДУ на основе Arduino и приложения на Android.

Убедитесь в том, что у вас есть плата Arduino Mega потому что код программы достаточно объемный. Также установите в вашу Arduino IDE следующие библиотеки (если они у вас еще не установлены):

  1. IR Remote Library для TSOP и инфракрасного передатчика.
  2. Adafruit Library для работы с OLED дисплеем.
  3. GFX Graphics Library для работы с OLED дисплеем.
  4. DHT11 Sensor Library для работы с датчиком температуры.

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

Прежде чем переходить к работе нашего проекта давайте немного остановимся на принципах работы пульта ДУ кондиционера. Он работает немного по другому чем пульты ДУ для телевизора, DVD проигрывателя и т.д. На пульте ДУ кондиционера может быть всего 10-12 кнопок, однако с их помощью пульт ДУ кондиционера может передавать огромное множество сигналов. То есть при нажатии одной и той же кнопки в разных ситуациях могут формироваться разные сигналы. К примеру, когда вы нажимаете кнопку уменьшения температуру чтобы снизить температуру в кондиционере до 24°C, вы формируете определенный набор данных. Но когда вы нажимаете ее же чтобы снизить температуру до 25°C, вы получите уже другой набор данных поскольку в данном случае будет уже 25°C, а не 24°C. Не будем тратить время на все возможные опции кондиционера (будем считать их неизменными), а сконцентрируемся только на управлении температурой.

Другой проблемой при работе с пультом ДУ кондиционера является большой объем передаваемых данных. Если для обычных пультов ДУ объем данных передаваемых при нажатии одной кнопки обычно составляет 24 или 48 бит, то для пульта ДУ этот объем данных может доходить до 228 бит поскольку в нем закодированы данные о температуре, скорости вентилятора, времени засыпания, режиме работы и т.д. По этой причине мы и используем в нашем проекте именно плату Arduino Mega – чтобы можно было хранить большие объемы данных.

Работа схемы

Схема устройства представлена на следующем рисунке.

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

Номер п/п Контакт компонента Контакт Arduino
1 OLED – Vcc 5V
2 OLED – Gnd Gnd
3 OLED- SCK, D0,SCL,CLK 4
4 OLED- SDA, D1,MOSI, Data 3
5 OLED- RES, RST,RESET 7
6 OLED- DC, A0 5
7 OLED- CS, Chip Select 6
8 DHT11 – Vcc 5V
9 DHT11 – Gnd Gnd
10 DHT11 – Signal 13
11 TSOP – Vcc 5V
12 TSOP – Gnd Gnd
13 IR Led – Anode 9
14 IR Led – Cathode Gnd

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

Внешний вид собранного устройства на макетной плате

Декодирование сигналов от пульта ДУ кондиционера

Первое, что нам необходимо сделать в нашем проекте – это декодировать сигналы с пульта ДУ кондиционера. Убедитесь в том, что все соединения в схеме сделаны и все необходимые библиотеки в Arduino IDE установлены. Теперь откройте пример программы под названием “IRrecvDumpV2”, который можно найти по адресу File -> Examples -> IRremote -> IRrecvDumpV2. Загрузите эту программу в Arduino Mega и откройте окно монитора последовательной связи (Serial Monitor).

После этого направьте ваш пульт ДУ в сторону TSOP и нажмите любую кнопку, для каждой нажатой кнопки соответствующий сигнал будет считан TSOP1738, декодирован Arduino и отображен в окне монитора последовательной связи. Для каждого изменения температуры ваш пульт ДУ будет генерировать различный набор данных. Сохраните эти данные для последующего использования в нашей основной программе. Ваше окно монитора последовательной связи при этом должно выглядеть примерно так, как показано на следующем рисунке. Также на рисунке мы отобразили снимок файла в Word, в который мы копировали данные для их последующего сохранения.

Данные, которые необходимо сохранить

Скриншот показывает формируемый код для установки температуры 26°C для используемого нами пульта ДУ кондиционера. Для вашего пульта ДУ вы получите другой набор кодов. Аналогичным образом скопируйте эти коды для различных уровней температуры. Также вы можете посмотреть все инфракрасные коды для удаленного управления кондиционером, которые приведены в конце данной статьи (они для нашего пульта).

Основная программа для Arduino

Полный код программы для Arduino приведен в конце данной статьи, но вам нельзя просто так копировать ее и загружать в свою плату Arduino – скорее всего у вас она не заработает. Чтобы она заработала, вы должны заменить в ней коды управления кондиционером на свои, которые вы получили и сохранили в предыдущем разделе этой статьи (в ходе работы демонстрационного примера). Откройте программу в Arduino IDE и найдите в ней то место, где записаны массивы кодов, полученных от используемого пульта ДУ кондиционером. Замените в ней эти массивы на массивы своих кодов, для вашего пульта ДУ.

Массивы с кодами, которые необходимо заменить в программе для Arduino

Заметьте, что мы использовали всего 10 массивов кодов, 2 из которых используются для включения и выключения кондиционера, а остальные 8 – для установки различных значений температуры. К примеру, массив Temp23 используется для установки температуры 23°C. Поэтому когда нам нужно установить на кондиционере температуру 23°C, мы должны использовать коды именно из этого массива. Когда вы все это сделаете (замените массивы кодов на свои), можете загружать программу в плату Arduino и затем наслаждаться освежающей прохладой )).

Также рассмотрим принцип работы наиболее важных фрагментов кода программы. Первым делом мы должны считать значения температуры и влажности с датчика DHT11 и отобразить их на OLED дисплее. Сделать это можно с помощью следующего фрагмента кода.

Когда измерим температуру в комнате мы можем сравнить ее с желаемым значением температуры. Желаемая температура в комнате у нас в программе установлена с помощью константы и составляет 27°C. Исходя из результатов сравнения мы можем установить соответствующую температуру на кондиционере с помощью следующего фрагмента кода.

То есть температура кондиционера будет установлена 24°C когда измеренное значение температуры составляет 30°C (поскольку желаемое значение температуры равно 27°C). Аналогичным образом мы можем создать много подобных блоков для установки необходимого значения температуры.

Тестирование работы проекта

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

Тестирование работы проекта

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

Исходный код программы

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

Видео, демонстрирующее работу схемы

(Проголосуй первым!)
Загрузка...
3 536 просмотров

Комментарии

Автоматическое управление температурой кондиционера с помощью Arduino и DHT11 — 2 комментария

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

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