Talaan ng mga Nilalaman:

Smart Home Therostat: 4 na Hakbang
Smart Home Therostat: 4 na Hakbang

Video: Smart Home Therostat: 4 na Hakbang

Video: Smart Home Therostat: 4 na Hakbang
Video: Как установить режим отпуска Ecobee Smart Thermostat 2024, Hulyo
Anonim
Smart Home Therostat
Smart Home Therostat

Ang aming Smart Home Therostat ay isang programa na maaaring awtomatikong makatipid ng pera ng sambahayan sa mga bill ng utility batay sa mga kagustuhan ng isang tao.

Hakbang 1: Pangkalahatang-ideya

Ang Smart Home Thermostat ay gumagamit ng isang sensor ng temperatura upang makuha ang temperatura ng bahay. Ang pagbabasa ng temperatura na ito ay inilalagay sa programa kung saan magpapasya kung ang sistema ng aircon ay kailangang magpainit o magpalamig ng bahay batay sa temperatura ng nais na may-ari ng bahay.

Mayroong dalawang mga mode para sa termostat: manu-manong at awtomatiko. Ang manu-manong mode na ayusin ang temperatura ng bahay sa anumang nais na temperatura na itinakda ng gumagamit. At ang awtomatikong mode ng termostat ay awtomatikong magbabago ng temperatura ng bahay sa mga preset na temperatura ng gumagamit. Magkakaroon ng dalawang mga setting ng temperatura para sa awtomatikong mode: ang layo ng temperatura at kasalukuyang temperatura. Ginagamit ang layo na temperatura upang makatipid ng enerhiya sa pamamagitan ng pagbabago ng termostat sa isang preset na temperatura na nagse-save ng enerhiya tuwing wala sa bahay ang gumagamit. Gagamitin ang kasalukuyang temperatura kapag nasa bahay ang gumagamit at nais ang isang komportableng temperatura. Kapag nasa awtomatikong mode ng termostat, ang mga sensor ng paggalaw ay aktibong naghahanap ng paggalaw upang matukoy kung ang isang tao ay nasa bahay o wala. Batay sa kanilang pagbabasa, ang temperatura sa bahay ay itatakda sa layo na temperatura o kasalukuyang temperatura.

Hakbang 2: Mga Bahagi at Materyales

(15) Mga Jumper Wires

(4) 220 Ohm Resistors

(1) 10K Ohm Resistor

(1) Temp Sensor

(1) Photo Resistor

(1) DAGU Mini DC Gearbox

(1) Diode

(1) Transistor

(1) Photoresistor

(1) Breadboard

(1) Arduino MKR

Hakbang 3: Circuit

Circuit
Circuit
Circuit
Circuit
Circuit
Circuit
Circuit
Circuit

Larawan 1 = Malaking Kaliwa larawan

Larawan 2 = Taas sa Taas

Larawan 3 = Gitnang Kanan

Larawan 4 = Kanang Ibaba

Larawan 1

Gamit ang diagram sa itaas, nag-wire kami sa bawat isa sa aming tatlong mga LED. Inilayo namin ang bawat LED dahil nagtatrabaho kami sa isang malaking board ng tinapay. Para sa mas maliit na mga board ng tinapay, maaaring kinakailangan na ilagay ang mga LED nang mas malapit. Gayundin, hindi kinakailangan upang mapagana ang breadboard dahil ang mga LED ay nakakakuha ng napakaliit na lakas. Hindi namin ginamit ang 5V na koneksyon sa breadboard para sa mga LED. Ang bawat koneksyon mula sa mga LED sa aming Arduino ay ginawa tulad ng berdeng kawad na nasa itaas. Ang aming pula, asul, at berde na mga LED ay konektado sa Digital Pin 8, 9, at 10 ayon sa pagkakabanggit, na itinalaga ng isang pula, asul, at berdeng kawad sa aming larawan.

Figure 2

Ang diagram sa itaas ay ginamit upang i-wire ang photoresistor. Gumawa kami ng ilang mga pagwawasto ng aming sariling; gayunpaman ang mga konsepto ay pareho pa rin. Ang photoresistor ay dapat na konektado sa isang analog pin na mayroon kami sa pin A1. Siguraduhing gumamit ng isang 10K ohm risistor para sa risistor na pinakamalapit sa photoresistor.

Larawan 3

Ito ang ginamit na diagram upang i-wire ang sensor ng temperatura. Siguraduhing hindi pagkakamali ang ginamit ng transistor dito gamit ang sensor ng temperatura. Mukha silang halos magkapareho. Ang sensor ng temperatura ay malamang na may TMP o ilang iba pang script na nakasulat sa patag na bahagi ng sensor. Ang mga kable dito ay napaka-simple ang aming sensor ng temperatura ay naka-plug sa analog pin A0 na may isang puting kawad.

Larawan 4

Ang larawan sa itaas ay ginamit upang i-wire ang DAGU Mini DC Gearbox. Ang berdeng kawad na nakakabit sa Gearbox ay talagang ang pulang kawad na konektado dito sa aming larawan. Ang Gearbox ay konektado sa digital pin 11 na may isang orange wire sa aming modelo. Siguraduhing hindi pagkakamali ang ginamit ng transistor dito gamit ang sensor ng temperatura. Mukha silang halos magkapareho. Ang sensor ng temperatura ay malamang na may TMP o ilang iba pang script na nakasulat sa patag na bahagi ng sensor. Dapat mong gamitin ang transistor dito at hindi ang sensor ng temperatura.

Hakbang 4: Arduino Code

Dito, ipinaliwanag ang pinakamahalagang bahagi ng code. Ang code ay hindi gagana sa kung ano ang ibinigay dito. Upang makuha ang buong gumaganang code, mayroong isang link sa ilalim ng pahina.

Kapag lumilikha ng nai-program na code na maaaring mai-program, ang isa sa mga unang bagay na iyong ginagawa ay ang pag-set up ng mga sensor at lumikha ng isang para sa loop na patuloy na makakakuha ng mga pagbabasa ng temperatura mula sa sensor ng temperatura.

Pag-set up ng Temperatura Sensor at LED:

tempPin = 'A0';% tukuyin ang hindi nagpapakilalang pagpapaandar na nagko-convert sa boltahe sa temperatura tempCfromVolts = @ (volts) (volts-0.5) * 100; samplingDuration = 5; % segundo. Gaano katagal ang nais naming sample para sa samplingInterval = 1; % Ilan ang mga segundo sa pagitan ng mga pagbasa ng temperatura% na-set up na vector ng mga sampling beses na samplingTime = 0: samplingInterval: samplingDuration; % kalkulahin ang bilang ng mga sample batay sa tagal at agwat numSamples = haba (samplingTimes); % preallocate temp variable at variable para sa bilang ng mga pagbasa itatabi nito ang tempC = zero (numSamples, 1); tempF = tempC; % Gagamitin namin ang isang para sa loop sa oras na ito upang kumuha ng paunang natukoy na bilang ng mga pagbabasa ng temperatura ng%

Ang para sa loop:

para sa index = 1: numSamples% basahin ang boltahe sa tempPin at iimbak sa variable volts volts = readVoltage (a, tempPin); tempC (index) = -1 * tempCfromVolts (volts + 0.3); tempF (index) = tempC (index) * (9/5) +32; % Ipakita ang naka-format na output na nakikipag-usap sa kasalukuyang temperatura sa pagbabasa ng fprintf ('Temperatura sa% d segundo ay% 5.2f C o% 5.2f F. / n', … samplingTimes (index), tempC (index), tempF (index)); % tandaan ang display output na ito ay magiging visiable lamang nang sabay-sabay pagkatapos na ang code ay% tapos na sa pagpapatupad maliban kung kopyahin / i-paste mo ang code sa isang simpleng script mfile. pause (samplingInterval)% pagkaantala hanggang sa susunod na sample na pagtatapos

Susunod, nilikha namin ang aming menu ng gumagamit para magpasya ang gumagamit kung ilalagay ang Therostat sa Manu-manong o Awtomatikong mode. Lumilikha rin kami ng isang error code kung hindi pipili ang gumagamit ng alinman sa dalawang mga pagpipilian.

Kinakailangan ng menu ng Manu-manong mode ang gumagamit na magtakda ng isang numero para sa temperatura ng termostat, pagkatapos ay iinit nito ang bahay, palamig ang bahay, o idle batay sa mga pagbasa. Upang mai-set up ang bahaging ito ng code, gumamit ka ng mga pagbabasa ng temperatura mula sa sensor ng temperatura at lumikha ng code na magpapalamig sa bahay kapag mas mataas ang pagbabasa ng temperatura kaysa sa itinakdang temperatura, at painitin ang bahay kapag ang pagbabasa ng temperatura ay mas mababa kaysa sa itinakdang temperatura.

Kapag mayroon kang mga pagbabasa ng temperatura, maaari kang lumikha ng code na sasabihin sa termostat upang palamig ang bahay kapag ang pagbabasa ng temperatura ay mas mataas kaysa sa itinakdang temperatura, at painitin ang bahay kapag ang pagbabasa ng temperatura ay mas mababa kaysa sa itinakdang temperatura. Para sa prototype, ang asul na ilaw ay bukas kapag ang termostat ay dapat na cool at ang pulang ilaw ay dumating kapag ang termostat ay dapat na uminit.

Pag-setup ng Menu:

pagpipilian = {'Awtomatiko', 'Manu-manong'}; imode = menu ('Mode', mga pagpipilian) kung imode> 0 h = msgbox (['Napili mo' mga pagpipilian {imode}]); kung hindi man h = warndlg ('Isinara mo ang menu nang walang pagpili') tapusin ang waitfor (h);

Kinakailangan ng manwal na mode ang gumagamit na mag-input ng isang temperatura para sa termostat, pagkatapos ay batay sa mga pagbasa mula sa sensor ng temperatura, magsisimula ito alinman sa paglamig ng bahay ng pag-init ng bahay. Kung ang pagbabasa ng sensor ng temperatura ay mas mataas kaysa sa itinakdang temperatura, magsisimula itong paglamig sa bahay. Kung ang pagbabasa ng sensor ng temperatura ay mas mababa kaysa sa itinakdang temperatura, iinit nito ang bahay.

Magsisimula ang mode na Manu-manong:

kung imode == 2 dlg_prompts = {'Anong temperatura ang gusto mo?'}; dlg_title = 'Temperatura'; dlg_defaults = {'68'}; opts. Resize = 'on'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty (dlg_ans) h = warndlg ('Kinansela mo ang utos ng inputdlg'); else temp_manual = str2double (dlg_ans {1})% [Magdagdag ng Pag-set up ng Regulasyon ng Temperatura slide sa ibaba] pagtatapos

Sa loob ng pahayag kung para sa manwal na mode, kailangan mong isulat ang interface ng menu para mapili ng gumagamit ang kanilang ninanais na temperatura sa bahay, at pagkatapos ay ipatupad ang isang habang pahayag na magsasaayos ng temperatura sa bahay.

Pag-set up ng Regulasyon ng Temperatura:

habang temp_manual <tempF writeDigitalPin (a, 'D9', 1) isulatDigitalPin (a, 'D11', 1); magtapos habang temp_manual> tempF writeDigitalPin (a, 'D8', 1) isulatDigitalPin (a, 'D11', 1); magtapos

Nangangailangan ang Awtomatikong mode ng mas maraming mga input kaysa sa manual mode. Matapos ipasok ang Awtomatikong mode, magtatakda ang gumagamit ng isang Normal at isang temperatura na Away para sa kanilang termostat. Matapos piliin ang mga ito, batay sa kung aling mode ang termostat, babalik ito sa mode ng regulasyon ng temperatura

I-setup ang Awtomatikong mode:

elseif imode == 1 dlg_prompts = {'Normal', 'Away'}; dlg_title = 'Mga Setting ng Temperatura'; dlg_defaults = {'68', '64'}; opts. Resize = 'on'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty (dlg_ans) h = warndlg ('Kinansela mo ang utos ng inputdlg'); iba temp_normal = str2double (dlg_ans {1}) temp_away = str2double (dlg_ans {2}) tapusin ang waitfor (h); % [Magdagdag ng Hakbang ng Detalye ng Paggalaw sa ibaba]

Kailangan din naming i-setup ang sensor ng paggalaw para sa mga setting ng Awtomatikong mode. Kapag ang detektor ng paggalaw ay nakakakuha ng paggalaw, panatilihin nito ang temperatura sa kasalukuyang setting ng temperatura, kung hindi man ay magtatakda ito sa setting ng temperatura na malayo.

Run_Motion_Detector (a, inf) habang lightStr == 0 temp = temp_away habang temp tempF writeDigitalPin (a, 'D6', 1) kahit anong pin red light ang nasa motor din para sa fan writeDigitalPin (a, 'D9', 1); end end habang lightStr == 1 temp = temp_normal writeDigitalPin (a, 'D6', 1)% magbago sa anumang pin ang normal na ilaw ay nasa habang temp tempF writeDigitalPin (a, 'D6', 1) kahit anong pin red light ang nasa motor para sa fan wroteDigitalPin (a, 'D9', 1); pagtatapos ng wakas

Ang buong code ay matatagpuan dito.

Inirerekumendang: