Оглавление:

Термостат умного дома: 4 шага
Термостат умного дома: 4 шага

Видео: Термостат умного дома: 4 шага

Видео: Термостат умного дома: 4 шага
Видео: Комнатные термостаты для управления температурой в доме. 2024, Июль
Anonim
Умный домашний термостат
Умный домашний термостат

Наш Умный Домашний Термостат - это программа, которая может автоматически экономить деньги семьи на счетах за коммунальные услуги в зависимости от предпочтений человека.

Шаг 1. Обзор

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

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

Шаг 2: Детали и материалы

(15) перемычки

(4) резистора 220 Ом

(1) резистор 10 кОм

(1) Датчик температуры

(1) Фоторезистор

(1) Коробка передач DAGU Mini DC

(1) диод

(1) Транзистор

(1) Фоторезистор

(1) Макетная плата

(1) Ардуино MKR

Шаг 3: Схема

Схема
Схема
Схема
Схема
Схема
Схема
Схема
Схема

Рисунок 1 = Большое левое изображение

Рисунок 2 = Вверху справа

Рисунок 3 = В центре справа

Рисунок 4 = Внизу справа

Рисунок 1

Используя схему выше, мы подключили каждый из трех наших светодиодов. Мы разместили каждый светодиод, так как работали с большой макетной платой. Для макетных плат меньшего размера может потребоваться расположить светодиоды ближе друг к другу. Кроме того, нет необходимости запитывать макетную плату, поскольку светодиоды потребляют очень мало энергии. Мы не использовали 5-вольтовое соединение на макетной плате для светодиодов. Каждое подключение светодиодов к нашей Arduino выполнялось так, как показано на рисунке выше. Наши красный, синий и зеленый светодиоды подключены к цифровым выводам 8, 9 и 10 соответственно, обозначенным на нашем рисунке красным, синим и зеленым проводом.

фигура 2

Схема выше использовалась для подключения фоторезистора. Мы сделали несколько собственных исправлений; однако концепции остаются прежними. Фоторезистор должен быть подключен к аналоговому выводу, который у нас есть на выводе A1. Обязательно используйте резистор 10 кОм для резистора, ближайшего к фоторезистору.

Рисунок 3

Это схема, по которой подключается датчик температуры. Не перепутайте используемый здесь транзистор с датчиком температуры. Они выглядят почти одинаково. Датчик температуры, скорее всего, будет иметь TMP или какой-либо другой сценарий, написанный на плоской стороне датчика. Подключение здесь очень простое: датчик температуры подключается к аналоговому выводу A0 белым проводом.

Рисунок 4

Изображение выше было использовано для подключения коробки передач постоянного тока DAGU Mini. Зеленый провод, подключенный к коробке передач, на самом деле красный провод, подключенный к нему на нашей картинке. Коробка передач подключена к цифровому контакту 11 оранжевым проводом в нашей модели. Не перепутайте используемый здесь транзистор с датчиком температуры. Они выглядят почти одинаково. Датчик температуры, скорее всего, будет иметь TMP или другой сценарий, написанный на плоской стороне датчика. Здесь вы должны использовать транзистор, а не датчик температуры.

Шаг 4: Код Arduino

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

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

Настройка датчика температуры и светодиода:

tempPin = 'A0';% определяет анонимную функцию, которая преобразует напряжение в температуру tempCfromVolts = @ (вольт) (вольт-0,5) * 100; samplingDuration = 5; % секунд. Как долго мы хотим производить выборку для samplingInterval = 1; % Сколько секунд между показаниями температуры% задает вектор времени выборки samplingTimes = 0: samplingInterval: samplingDuration; % вычислить количество выборок на основе продолжительности и интервала numSamples = length (samplingTimes); % предварительно выделить временные переменные и переменную для количества показаний, которые она будет хранить tempC = zeros (numSamples, 1); tempF = tempC; % На этот раз мы воспользуемся циклом for, чтобы снять заданное количество значений температуры в%.

Цикл for:

для index = 1: numSamples% считывает напряжение на tempPin и сохраняет в переменной volts volts = readVoltage (a, tempPin); tempC (индекс) = -1 * tempCfromVolts (вольт + 0,3); tempF (индекс) = tempC (индекс) * (9/5) +32; % Отобразить форматированный вывод, сообщающий текущее значение температуры fprintf ('Температура в% d секундах равна% 5.2f C или% 5.2f F. / n',… samplingTimes (index), tempC (index), tempF (index)); % обратите внимание, что этот вывод станет видимым только сразу после того, как код будет% выполнен, если вы не скопируете / не вставите код в простой файл сценария. pause (samplingInterval)% задержки до конца следующего образца

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

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

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

Настройка меню:

choices = {'Automatic', 'Manual'}; imode = menu ('Mode', choices) if imode> 0 h = msgbox (['You selected' choices {imode}]); else h = warndlg ('Вы закрыли меню, не сделав выбора') end waitfor (h);

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

Ручной режим запустится:

if imode == 2 dlg_prompts = {'Какую температуру вы бы предпочли?'}; dlg_title = 'Температура'; dlg_defaults = {'68'}; opts. Resize = 'вкл'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty (dlg_ans) h = warndlg ('Вы отменили команду inputdlg'); else temp_manual = str2double (dlg_ans {1})% [Добавить слайд настройки регулирования температуры ниже] конец

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

Настройка регулирования температуры:

в то время как temp_manual <tempF writeDigitalPin (a, 'D9', 1) writeDigitalPin (a, 'D11', 1); конец, пока temp_manual> tempF writeDigitalPin (a, 'D8', 1) writeDigitalPin (a, 'D11', 1); конец

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

Настройте автоматический режим:

elseif imode == 1 dlg_prompts = {'Обычный', 'В гостях'}; dlg_title = «Настройки температуры»; dlg_defaults = {'68', '64'}; opts. Resize = 'вкл'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty (dlg_ans) h = warndlg ('Вы отменили команду inputdlg'); иначе temp_normal = str2double (dlg_ans {1}) temp_away = str2double (dlg_ans {2}) end waitfor (h); % [Добавить детектор движения шаг ниже]

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

Run_Motion_Detector (a, inf) while lightStr == 0 temp = temp_away while temp tempF writeDigitalPin (a, 'D6', 1) независимо от того, на каком выводе горит красный свет, также двигатель для вентилятора writeDigitalPin (a, 'D9', 1); end end while lightStr == 1 temp = temp_normal writeDigitalPin (a, 'D6', 1)% изменение на любой вывод, на котором находится нормальный свет, в то время как temp tempF writeDigitalPin (a, 'D6', 1) независимо от того, на каком выводе находится красный свет мотор вентилятора writeDigitalPin (a, 'D9', 1); конец конец

Полный код можно найти здесь.

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