Taula de continguts:

Termòstat Smart Home: 4 passos
Termòstat Smart Home: 4 passos

Vídeo: Termòstat Smart Home: 4 passos

Vídeo: Termòstat Smart Home: 4 passos
Vídeo: Комнатный термостат zeissler к насосу отопления 2024, Desembre
Anonim
Termòstat Smart Home
Termòstat Smart Home

El nostre termòstat Smart Home és un programa que permet estalviar automàticament diners de la llar en factures de serveis públics en funció de les preferències d’una persona.

Pas 1: Visió general

El termòstat Smart Home utilitza un sensor de temperatura per obtenir la temperatura de la llar. Aquesta lectura de temperatura s’inclou al programa on decidirà si el sistema d’aire condicionat necessita escalfar o refredar la casa en funció de la temperatura del propietari desitjat.

Hi ha dos modes per al termòstat: manual i automàtic. El mode manual que ajustarà la temperatura de la llar a la temperatura desitjada que estableixi l’usuari. I el mode automàtic del termòstat canviarà automàticament la temperatura de la llar a les temperatures preestablertes per l'usuari. Hi haurà dos paràmetres de temperatura per al mode automàtic: temperatura fora i temperatura actual. La temperatura externa s’utilitza per estalviar energia canviant el termòstat a una temperatura d’estalvi d’energia predeterminada sempre que l’usuari no es troba a casa. La temperatura actual s’utilitzarà quan l’usuari sigui a casa i vulgui una temperatura confortable. Quan es troba en mode automàtic del termòstat, els sensors de moviment busquen activament el moviment per determinar si algú és o no a casa. Segons la seva lectura, la temperatura de casa es configurarà a la temperatura fora o a la temperatura actual.

Pas 2: peces i materials

(15) cables de pont

(4) Resistències de 220 ohms

(1) Resistència de 10 k ohmis

(1) Sensor de temperatura

(1) Resistència fotogràfica

(1) Caixa de canvis DAGU Mini DC

(1) Diodo

(1) Transistor

(1) Fotoresistència

(1) Taula de pa

(1) Arduino MKR

Pas 3: Circuit

Circuit
Circuit
Circuit
Circuit
Circuit
Circuit
Circuit
Circuit

Figura 1 = Imatge esquerra gran

Figura 2 = Part superior dreta

Figura 3 = Mig dret

Figura 4 = Part inferior dreta

figura 1

Mitjançant l’esquema anterior, hem connectat cadascun dels nostres tres LED. Vam separar cada LED perquè treballàvem amb una taula de pa gran. Per a taules de pa més petites, pot ser que sigui necessari acostar els LED. A més, no és necessari alimentar la placa de control, ja que els LED consumeixen tan poca energia. No hem utilitzat la connexió de 5V a la placa per als LEDs. Cada connexió dels LEDs al nostre Arduino es va fer com si hi hagués un cable verd. Els nostres LED vermells, blaus i verds estan connectats als pins digitals 8, 9 i 10 respectivament, designats amb un fil vermell, blau i verd a la nostra imatge.

Figura 2

El diagrama anterior es va utilitzar per connectar el fotoresistor. Vam fer algunes correccions pròpies; no obstant això, els conceptes segueixen sent els mateixos. El fotoresistor s’ha de connectar al pin analògic que tenim al pin A1. Assegureu-vos d’utilitzar una resistència de 10K ohmis per a la resistència més propera a la fotoresistència.

Figura 3

Aquest és el diagrama utilitzat per connectar el sensor de temperatura. Assegureu-vos de no confondre el transistor utilitzat aquí amb el sensor de temperatura. Tenen un aspecte gairebé idèntic. El sensor de temperatura probablement tindrà TMP o algun altre script escrit al costat pla del sensor. El cablejat aquí és molt senzill, el nostre sensor de temperatura està connectat al pin analògic A0 amb un cable blanc.

Figura 4

La imatge superior es va utilitzar per connectar la caixa de canvis DAGU Mini DC. El fil verd connectat a la caixa de canvis és en realitat el fil vermell que hi està connectat a la nostra imatge. El Gearbox està connectat al pin digital 11 amb un fil taronja al nostre model. Assegureu-vos de no confondre el transistor utilitzat aquí amb el sensor de temperatura. Tenen un aspecte gairebé idèntic. El sensor de temperatura probablement tindrà TMP o algun altre script escrit al costat pla del sensor. Heu d’utilitzar el transistor aquí i no el sensor de temperatura.

Pas 4: Codi Arduino

Aquí s’expliquen les parts més importants del codi. El codi no funcionarà només amb el que s'indica aquí. Per obtenir el codi de treball complet, hi ha un enllaç a la part inferior de la pàgina.

Quan creeu el codi del termòstat programable, una de les primeres coses que feu és configurar els sensors i crear un bucle for que obtindrà constantment lectures de temperatura del sensor de temperatura.

Configuració del sensor de temperatura i del LED:

tempPin = 'A0';% defineix una funció anònima que converteix el voltatge en temperatura tempCfromVolts = @ (volts) (volts-0,5) * 100; mostreigDuració = 5; % segons. Quant de temps volem mostrejar per a mostreigInterval = 1; % Quants segons entre les lectures de temperatura% configurat vector de temps de mostreig samplingTimes = 0: samplingInterval: samplingDuration; % calculeu el nombre de mostres en funció de la durada i l'interval numSamples = length (samplingTimes); % prealoca les variables temporals i la variable per al nombre de lectures que emmagatzemarà tempC = zeros (numSamples, 1); tempF = tempC; % Utilitzarem un bucle for aquesta vegada per fer un nombre predeterminat de% de lectures de temperatura

El bucle for:

per a índex = 1: numSamples% llegeix el voltatge a tempPin i emmagatzema en volts variables volts = readVoltage (a, tempPin); tempC (índex) = -1 * tempCfromVolts (volts + 0,3); tempF (índex) = tempC (índex) * (9/5) +32; % Visualització de la sortida formatada que comunica la lectura de temperatura actual fprintf ('La temperatura a% d segons és% 5.2f C o% 5.2f F. / n', … samplingTimes (índex), tempC (índex), tempF (índex)); % Tingueu en compte que aquesta sortida de visualització només es podrà visualitzar alhora alhora que s'hagi executat el codi, tret que copieu / enganxeu el codi en un fitxer de script simple. pausa (samplingInterval)% de retard fins al següent final de la mostra

A continuació, creem el nostre menú d'usuari perquè l'usuari pugui decidir si voleu posar el termòstat en mode manual o automàtic. També creem un codi d'error si l'usuari no selecciona cap de les dues opcions.

El menú del mode manual requereix que l’usuari estableixi un número per a la temperatura del termòstat; a continuació, escalfarà la casa, refredarà la casa o es quedarà inactiu segons les lectures. Per configurar aquesta part del codi, heu utilitzat lectures de temperatura del sensor de temperatura i creeu un codi que refredarà la casa quan la lectura de temperatura sigui superior a la temperatura establerta i escalfeu la casa quan la lectura de temperatura sigui inferior a la temperatura establerta.

Un cop tingueu les lectures de temperatura, podeu crear el codi que indicarà al termòstat que refredi la casa quan la lectura de temperatura sigui superior a la temperatura establerta i escalfeu la casa quan la lectura de temperatura sigui inferior a la temperatura establerta. Per al prototip, la llum blava s’encén quan el termòstat s’ha de refredar i la llum vermella quan el termòstat s’ha d’escalfar.

Configuració del menú:

decisions = {'Automàtic', 'Manual'}; imode = menú ('Mode', opcions) si imode> 0 h = msgbox (['Heu triat' eleccions {imode}]); else h = warndlg ('Heu tancat el menú sense fer una tria') finalitzar waitfor (h);

El mode manual requereix que l'usuari introdueixi una temperatura per al termòstat, i després, a partir de les lectures del sensor de temperatura, començarà a refredar la casa per escalfar la casa. Si la lectura del sensor de temperatura és superior a la temperatura establerta, començarà a refredar la casa. Si la lectura del sensor de temperatura és inferior a la temperatura establerta, escalfarà la llar.

El mode manual s'iniciarà:

if imode == 2 dlg_prompts = {'Quina temperatura preferiríeu?'}; dlg_title = 'Temperatura'; dlg_defaults = {'68'}; opts. Resize = 'activat'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); si isempty (dlg_ans) h = warndlg ('Heu cancel·lat l'ordre inputdlg'); else temp_manual = str2double (dlg_ans {1})% [Afegiu una diapositiva de configuració de la regulació de la temperatura a sota] final

Dins de la sentència if per al mode manual, heu d’escriure la interfície de menú perquè l’usuari pugui escollir la temperatura de casa desitjada i implementar una sentència while que regularà la temperatura de casa.

Configuració de la regulació de la temperatura:

mentre que temp_manual <tempF writeDigitalPin (a, 'D9', 1) writeDigitalPin (a, 'D11', 1); acabar mentre temp_manual> tempF writeDigitalPin (a, 'D8', 1) writeDigitalPin (a, 'D11', 1); final

El mode automàtic requereix més entrades que el mode manual. Després d’entrar al mode automàtic, l’usuari establirà una temperatura normal i una temperatura fora del termòstat. Després de seleccionar-los, en funció del mode en què estigui el termòstat, tornarà al mode de regulació de temperatura.

Configureu el mode automàtic:

elseif imode == 1 dlg_prompts = {'Normal', 'Fora'}; dlg_title = 'Configuració de la temperatura'; dlg_defaults = {'68', '64'}; opts. Resize = 'activat'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); si isempty (dlg_ans) h = warndlg ('Heu cancel·lat l'ordre inputdlg'); else temp_normal = str2double (dlg_ans {1}) temp_away = str2double (dlg_ans {2}) end waitforfor (h); % [Afegeix el pas del detector de moviment a continuació]

També hem de configurar el sensor de moviment per a la configuració del mode automàtic. Quan el detector de moviment capta el moviment, mantindrà la temperatura en la configuració actual de la temperatura, en cas contrari es configurarà a la temperatura de fora.

Run_Motion_Detector (a, inf) mentre lightStr == 0 temp = temp_away mentre temp tempF writeDigitalPin (a, 'D6', 1) qualsevol llum vermella del pin també estigui en motor per al ventilador writeDigitalPin (a, 'D9', 1); finalitzar mentre lightStr == 1 temp = temp_normal writeDigitalPin (a, 'D6', 1)% canvia al pin que hi hagi la llum normal mentre que temp tempF writeDigitalPin (a, 'D6', 1) qualsevol pin vermell que hi hagi també motor per a ventilador writeDigitalPin (a, 'D9', 1); fi final

El codi complet es pot trobar aquí.

Recomanat: