Cuprins:

Termostat Smart Home: 4 pași
Termostat Smart Home: 4 pași

Video: Termostat Smart Home: 4 pași

Video: Termostat Smart Home: 4 pași
Video: Termostat smart pentru centrala conectare și control din aplicație 2024, Noiembrie
Anonim
Termostat Smart Home
Termostat Smart Home

Termostatul nostru Smart Home este un program care poate economisi automat o gospodărie de bani pe facturile de utilități pe baza preferințelor unei persoane.

Pasul 1: Prezentare generală

Termostatul Smart Home folosește un senzor de temperatură pentru a obține temperatura casei. Această citire a temperaturii este introdusă în program unde va decide dacă sistemul de aer condiționat trebuie să încălzească sau să răcească casa în funcție de temperatura dorită a proprietarului casei.

Există două moduri pentru termostat: manual și automat. Modul manual care va regla temperatura casei la orice temperatură dorită este setat de utilizator. Iar modul automat al termostatului va schimba automat temperatura casei la temperaturi prestabilite de utilizator. Vor exista două setări de temperatură pentru modul automat: temperatura la distanță și temperatura actuală. Temperatura la distanță este utilizată pentru a economisi energie prin schimbarea termostatului la o temperatură prestabilită de economisire a energiei ori de câte ori utilizatorul nu este acasă. Temperatura actuală va fi utilizată atunci când utilizatorul este acasă și dorește o temperatură confortabilă. Când se află în modul automat al termostatului, senzorii de mișcare caută activ mișcarea pentru a determina dacă cineva este sau nu acasă. Pe baza citirii lor, temperatura de acasă va fi setată fie la temperatura de deplasare, fie la temperatura actuală.

Pasul 2: Piese și materiale

(15) Jumper Wires

(4) Rezistențe de 220 ohmi

(1) Rezistor de 10K Ohm

(1) Senzor de temperatură

(1) Rezistor foto

(1) Cutie de viteze Mini DC DAGU

(1) Diodă

(1) Tranzistor

(1) Fotorezistor

(1) Pană de pâine

(1) Arduino MKR

Pasul 3: Circuit

Circuit
Circuit
Circuit
Circuit
Circuit
Circuit
Circuit
Circuit

Figura 1 = Imagine stângă mare

Figura 2 = Dreapta sus

Figura 3 = Dreapta mijlocie

Figura 4 = Jos dreapta

figura 1

Folosind diagrama de mai sus, am conectat fiecare dintre cele trei LED-uri. Am distanțat fiecare LED, deoarece lucram cu o placă mare. Pentru plăcile de pâine mai mici, poate fi necesar să apropiați LED-urile. De asemenea, nu este necesar să alimentați panoul de control, deoarece LED-urile consumă atât de puțină energie. Nu am folosit conexiunea de 5V de pe panou pentru LED-uri. Fiecare conexiune de la LED-uri la Arduino a fost făcută ca firul verde deasupra. LED-urile noastre roșii, albastre și verzi sunt conectate la pinul digital 8, 9 și respectiv 10, desemnate cu un fir roșu, albastru și verde în imaginea noastră.

Figura 2

Diagrama de mai sus a fost utilizată pentru a conecta fotorezistorul. Am făcut câteva corecții proprii; totuși conceptele sunt în continuare aceleași. Fotorezistorul trebuie să fie conectat la un pin analogic pe care îl avem în pinul A1. Asigurați-vă că utilizați un rezistor de 10K ohm pentru rezistorul cel mai apropiat de fotorezistor.

Figura 3

Aceasta este diagrama utilizată pentru conectarea senzorului de temperatură. Asigurați-vă că nu confundați tranzistorul utilizat aici cu senzorul de temperatură. Arată aproape identic. Senzorul de temperatură va avea probabil TMP sau un alt script scris pe partea plană a senzorului. Cablarea aici este foarte simplă senzorul nostru de temperatură este conectat la pinul analogic A0 cu un fir alb.

Figura 4

Imaginea de mai sus a fost utilizată pentru cablarea cutiei de viteze Mini DC DAGU. Firul verde atașat la Cutia de viteze este de fapt firul roșu conectat la acesta în imaginea noastră. Cutia de viteze este conectată la pinul digital 11 cu un fir portocaliu în modelul nostru. Asigurați-vă că nu confundați tranzistorul utilizat aici cu senzorul de temperatură. Arată aproape identic. Senzorul de temperatură va avea probabil TMP sau un alt script scris pe partea plană a senzorului. Trebuie să folosiți tranzistorul aici și nu senzorul de temperatură.

Pasul 4: Cod Arduino

Aici sunt explicate cele mai importante părți ale codului. Codul nu va funcționa doar cu ceea ce este dat aici. Pentru a obține codul complet de lucru, există un link în partea de jos a paginii.

Când creați codul termostatului programabil, unul dintre primele lucruri pe care le faceți este să configurați senzorii și să creați o buclă pentru care va obține în mod constant citiri ale temperaturii de la senzorul de temperatură.

Configurarea senzorului de temperatură și a LED-ului:

tempPin = 'A0';% definește funcția anonimă care convertește tensiunea în temperatură tempCfromVolts = @ (volți) (volți-0,5) * 100; samplingDuration = 5; % secunde. Cât vrem să prelevăm pentru samplingInterval = 1; % Câte secunde între citirile de temperatură% setează vectorul timpilor de eșantionare SamplingTimes = 0: samplingInterval: samplingDuration; % calculați numărul de probe pe baza duratei și intervalului numSamples = length (samplingTimes); % prealocați variabilele temp și variabila pentru numărul de citiri pe care le va stoca tempC = zerouri (numSamples, 1); tempF = tempC; De data aceasta vom folosi o buclă for pentru a lua un număr prestabilit de citiri de temperatură%

Bucla for:

pentru index = 1: numSamples% citește tensiunea la tempPin și stochează în volți variați volți = readVoltage (a, tempPin); tempC (index) = -1 * tempCfromVolts (volți + 0,3); tempF (index) = tempC (index) * (9/5) +32; % Afișați ieșirea formatată comunicând temperatura curentă citind fprintf („Temperatura la% d secunde este% 5.2f C sau% 5.2f F. / n”,… samplingTimes (index), tempC (index), tempF (index)); % rețineți că această ieșire a afișajului va deveni vizibilă simultan numai după ce codul este executat%, cu excepția cazului în care copiați / lipiți codul într-un fișier de script simplu. pauză (samplingInterval)% întârziere până la sfârșitul eșantionului următor

Apoi, creăm meniul nostru de utilizator pentru ca acesta să decidă dacă pune termostatul în modul manual sau automat. De asemenea, creăm un cod de eroare dacă utilizatorul nu selectează nici una dintre cele două opțiuni.

Meniul Mod manual cere utilizatorului să seteze un număr pentru temperatura termostatului, apoi fie va încălzi casa, va răci casa sau va rula în funcție de citiri. Pentru a configura această parte a codului, ați folosit citiri de temperatură de la senzorul de temperatură și ați creat cod care să răcească casa când citirea temperaturii este mai mare decât temperatura setată și să încălzească casa când citirea temperaturii este mai mică decât temperatura setată.

Odată ce ați citit temperatura, puteți crea codul care va spune termostatului să răcească casa atunci când citirea temperaturii este mai mare decât temperatura setată și să încălziți casa când citirea temperaturii este mai mică decât temperatura setată. Pentru prototip, lumina albastră se aprinde atunci când termostatul trebuie să se răcească, iar lumina roșie se aprinde atunci când termostatul trebuie să se încălzească.

Configurare meniu:

choix = {'Automat', 'Manual'}; imode = meniu ('Mod', alegeri) dacă imode> 0 h = msgbox (['Ați ales' alegeri {imode}]); else h = warndlg („Ați închis meniul fără a face o alegere”) terminați waitfor (h);

Modul manual cere utilizatorului să introducă o temperatură pentru termostat, apoi pe baza citirilor de la senzorul de temperatură, va începe fie răcirea casei de încălzire a casei. Dacă citirea senzorului de temperatură este mai mare decât temperatura setată, va începe răcirea locuinței. Dacă citirea senzorului de temperatură este mai mică decât temperatura setată, va încălzi casa.

Modul manual va porni:

if imode == 2 dlg_prompts = {'Ce temperatură ați prefera?'}; dlg_title = 'Temperatură'; dlg_defaults = {'68'}; opts. Resize = 'on'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty (dlg_ans) h = warndlg ('Ați anulat comanda inputdlg'); else temp_manual = str2double (dlg_ans {1})% [Adăugați diapozitivul de configurare a reglării temperaturii de mai jos] end

În interiorul declarației if pentru modul manual, trebuie să scrieți interfața meniului pentru ca utilizatorul să aleagă temperatura dorită de acasă și apoi să implementați o declarație de timp care să regleze temperatura acasă.

Configurarea reglării temperaturii:

în timp ce temp_manual <tempF writeDigitalPin (a, 'D9', 1) writeDigitalPin (a, 'D11', 1); termină în timp ce temp_manual> tempF writeDigitalPin (a, 'D8', 1) writeDigitalPin (a, 'D11', 1); Sfârșit

Modul automat necesită mai multe intrări decât modul manual. După ce a intrat în modul automat, utilizatorul va seta o temperatură normală și o temperatură îndepărtată pentru termostatul lor. După selectarea acestora, în funcție de modul în care se află termostatul, acesta va reveni în modul de reglare a temperaturii.

Configurați modul automat:

elseif imode == 1 dlg_prompts = {'Normal', 'Plecat'}; dlg_title = 'Setări de temperatură'; dlg_defaults = {'68', '64'}; opts. Resize = 'on'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty (dlg_ans) h = warndlg ('Ați anulat comanda inputdlg'); else temp_normal = str2double (dlg_ans {1}) temp_away = str2double (dlg_ans {2}) end waitfor (h); % [Adăugați Detector de mișcare Pasul de mai jos]

De asemenea, trebuie să configurăm senzorul de mișcare pentru setările modului automat. Când detectorul de mișcare preia mișcarea, acesta va menține temperatura la setarea actuală a temperaturii, în caz contrar se va seta la temperatura setată.

Run_Motion_Detector (a, inf) while lightStr == 0 temp = temp_away while temp tempF writeDigitalPin (a, 'D6', 1) orice lumină roșie a pinului este, de asemenea, motor pentru ventilatorul writeDigitalPin (a, 'D9', 1); end end while lightStr == 1 temp = temp_normal writeDigitalPin (a, 'D6', 1)% change to any pin the normal light is in while temp tempF writeDigitalPin (a, 'D6', 1) whatever pin red light is in also motor pentru ventilator writeDigitalPin (a, 'D9', 1); sfârșit sfârșit

Codul complet poate fi găsit aici.

Recomandat: