Съдържание:

Термостат за интелигентен дом: 4 стъпки
Термостат за интелигентен дом: 4 стъпки

Видео: Термостат за интелигентен дом: 4 стъпки

Видео: Термостат за интелигентен дом: 4 стъпки
Видео: Zigbee Термостат для управления теплым водяным полом MOES BHT-006GAZB 2024, Юли
Anonim
Термостат за интелигентен дом
Термостат за интелигентен дом

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

Стъпка 1: Общ преглед

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

Има два режима на термостата: ръчен и автоматичен. Ръчният режим, който ще регулира домашната температура до желаната температура, зададена от потребителя. А автоматичният режим на термостата автоматично ще промени температурата на дома до температури, предварително зададени от потребителя. За автоматичния режим ще има две температурни настройки: далечна температура и настояща температура. Отдалечената температура се използва за пестене на енергия чрез смяна на термостата на предварително зададена енергоспестяваща температура, когато потребителят не е у дома. Настоящата температура ще се използва, когато потребителят е у дома и иска комфортна температура. Когато са в автоматичен режим на термостата, сензорите за движение активно търсят движение, за да определят дали някой е у дома или не. Въз основа на тяхното отчитане, домашната температура ще бъде или настроена на температурата на отсъствието или на настоящата температура.

Стъпка 2: Части и материали

(15) Кабелни проводници

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

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

(1) Сензор за температура

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

(1) DAGU Mini DC скоростна кутия

(1) Диод

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

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

(1) Платформа

(1) Arduino MKR

Стъпка 3: Схема

Верига
Верига
Верига
Верига
Верига
Верига
Верига
Верига

Фигура 1 = Голяма лява картина

Фигура 2 = Горе вдясно

Фигура 3 = Средно дясно

Фигура 4 = Долу вдясно

Фигура 1

Използвайки горната диаграма, ние свързахме всеки от нашите три светодиода. Разположихме всеки светодиод, тъй като работехме с голяма дъска за хляб. За по -малки дъски за хляб може да се наложи да поставите светодиодите по -близо един до друг. Също така не е необходимо да захранвате платката, тъй като светодиодите черпят толкова малко енергия. Не използвахме 5V връзката на платката за светодиодите. Всяка връзка от светодиодите към нашия Arduino беше направена като зеления проводник отгоре. Нашите червени, сини и зелени светодиоди са свързани към цифровия пин 8, 9 и 10 съответно, обозначени с червен, син и зелен проводник на нашата снимка.

Фигура 2

Горната диаграма е използвана за свързване на фоторезистора. Направихме няколко собствени корекции; концепциите обаче са все същите. Фоторезисторът трябва да бъде свързан към аналоговия щифт, който имаме в щифт A1. Не забравяйте да използвате 10K ом резистор за най -близкия до фоторезистора резистор.

Фигура 3

Това е диаграмата, използвана за свързване на температурния сензор. Внимавайте да не сбъркате използвания тук транзистор с температурния сензор. Изглеждат почти идентични. Температурният сензор вероятно ще има TMP или друг скрипт, написан на плоската страна на сензора. Окабеляването тук е много просто, нашият температурен сензор е включен в аналогов щифт A0 с бял проводник.

Фигура 4

Снимката по -горе е използвана за свързване на DAGU Mini DC скоростна кутия. Зеленият проводник, прикрепен към скоростната кутия, всъщност е червеният проводник, свързан към него на нашата снимка. Скоростната кутия е свързана към цифров щифт 11 с оранжев проводник в нашия модел. Внимавайте да не сбъркате използвания тук транзистор с температурния сензор. Те изглеждат почти идентични. Температурният сензор вероятно ще има TMP или друг скрипт, написан на плоската страна на сензора. Тук трябва да използвате транзистора, а не температурния сензор.

Стъпка 4: Arduino код

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

Когато създавате кода на програмируемия термостат, едно от първите неща, които правите, е да настроите сензорите и да създадете цикъл за, който постоянно ще получава показания за температурата от температурния сензор.

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

tempPin = 'A0';%дефинира анонимна функция, която преобразува напрежението в температура tempCfromVolts = @(волта) (волта-0.5)*100; samplingDuration = 5; %секунди. Колко време искаме да вземем проба за samplingInterval = 1; %Колко секунди между показанията на температурата %настроен вектор на времената на вземане на проби samplingTimes = 0: samplingInterval: samplingDuration; %изчислява броя на пробите въз основа на продължителността и интервала numSamples = дължина (samplingTimes); %предварително разпределят временни променливи и променлива за броя показания, които ще съхранява tempC = нули (numSamples, 1); tempF = tempC; %Този път ще използваме цикъл for, за да вземем предварително определен брой %отчитания на температурата

Цикълът for:

за индекс = 1: numSamples %отчита напрежението при tempPin и съхранява в променливи волта volts = readVoltage (a, tempPin); tempC (индекс) = -1*tempCfromVolts (волта+0,3); tempF (индекс) = tempC (индекс)*(9/5) +32; %Показване на форматиран изход, съобщаващ текущото отчитане на температурата fprintf ('Температурата при %d секунди е %5.2f C или %5.2f F. / n',… samplingTimes (индекс), tempC (индекс), tempF (индекс)); %забележете, че този изходен дисплей ще стане видим само след като кодът е изпълнен %, освен ако не копирате/поставите кода в обикновен скрипт mfile. пауза (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); end while 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'); else 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); край край

Пълният код може да се намери тук.

Препоръчано: