Sommario:

Termostato per casa intelligente: 4 passaggi
Termostato per casa intelligente: 4 passaggi

Video: Termostato per casa intelligente: 4 passaggi

Video: Termostato per casa intelligente: 4 passaggi
Video: BEOK BOT 313W termostato wifi SMART per caldaia a gas - installazione e recensione 2024, Luglio
Anonim
Termostato per casa intelligente
Termostato per casa intelligente

Il nostro Smart Home Thermostat è un programma in grado di risparmiare automaticamente i soldi di una famiglia sulle bollette in base alle preferenze di una persona.

Passaggio 1: Panoramica

Il termostato Smart Home utilizza un sensore di temperatura per ottenere la temperatura della casa. Questa lettura della temperatura viene inserita nel programma dove deciderà se il sistema di condizionamento dell'aria deve riscaldare o raffreddare la casa in base alla temperatura desiderata del proprietario della casa.

Ci sono due modalità per il termostato: manuale e automatica. La modalità manuale che regolerà la temperatura della casa alla temperatura desiderata è impostata dall'utente. E la modalità automatica del termostato cambierà automaticamente la temperatura della casa alle temperature preimpostate dall'utente. Ci saranno due impostazioni di temperatura per la modalità automatica: temperatura assente e temperatura attuale. La temperatura di assenza viene utilizzata per risparmiare energia impostando il termostato su una temperatura di risparmio energetico preimpostata ogni volta che l'utente non è in casa. La temperatura attuale verrà utilizzata quando l'utente è a casa e desidera una temperatura confortevole. Quando si è in modalità automatica del termostato, i sensori di movimento cercano attivamente il movimento per determinare se qualcuno è in casa o meno. In base alla loro lettura, la temperatura di casa sarà impostata sulla temperatura in trasferta o sulla temperatura attuale.

Passaggio 2: parti e materiali

(15) Cavi dei ponticelli

(4) Resistori da 220 Ohm

(1) Resistenza da 10K Ohm

(1) Sensore di temperatura

(1) Fotoresistenza

(1) Mini cambio DC DAGU

(1) Diodo

(1) Transistor

(1) Fotoresistenza

(1) tagliere

(1) Arduino MKR

Passaggio 3: circuito

Circuito
Circuito
Circuito
Circuito
Circuito
Circuito
Circuito
Circuito

Figura 1 = Immagine grande a sinistra

Figura 2 = In alto a destra

Figura 3 = Al centro a destra

Figura 4 = In basso a destra

Figura 1

Utilizzando lo schema sopra, abbiamo cablato ciascuno dei nostri tre LED. Abbiamo distanziato ogni LED poiché stavamo lavorando con una grande breadboard. Per breadboard più piccoli, potrebbe essere necessario avvicinare i LED. Inoltre, non è necessario alimentare la breadboard poiché i LED assorbono così poca energia. Non abbiamo utilizzato la connessione 5V sulla breadboard per i LED. Ogni connessione dai LED al nostro Arduino è stata realizzata come il filo verde è sopra. I nostri LED rosso, blu e verde sono collegati rispettivamente ai pin digitali 8, 9 e 10, designati con un filo rosso, blu e verde nella nostra immagine.

figura 2

Lo schema sopra è stato utilizzato per cablare la fotoresistenza. Abbiamo apportato alcune nostre correzioni; comunque i concetti sono sempre gli stessi. La fotoresistenza va collegata al pin analogico che abbiamo nel pin A1. Assicurati di utilizzare una resistenza da 10K ohm per la resistenza più vicina alla fotoresistenza.

Figura 3

Questo è lo schema utilizzato per cablare il sensore di temperatura. Assicurati di non confondere il transistor utilizzato qui con il sensore di temperatura. Sembrano quasi identici. Il sensore di temperatura avrà probabilmente TMP o qualche altro script scritto sul lato piatto del sensore. Il cablaggio qui è molto semplice, il nostro sensore di temperatura è collegato al pin analogico A0 con un filo bianco.

Figura 4

L'immagine sopra è stata utilizzata per cablare il cambio DAGU Mini DC. Il filo verde attaccato al Gearbox è in realtà il filo rosso ad esso collegato nella nostra foto. Il Gearbox è collegato al pin digitale 11 con un filo arancione nel nostro modello. Assicurati di non confondere il transistor utilizzato qui con il sensore di temperatura. Sembrano quasi identici. Il sensore di temperatura avrà probabilmente TMP o qualche altro script scritto sul lato piatto del sensore. È necessario utilizzare il transistor qui e non il sensore di temperatura.

Passaggio 4: codice Arduino

Qui vengono spiegate le parti più importanti del codice. Il codice non funzionerà solo con ciò che viene fornito qui. Per ottenere il codice funzionante completo, c'è un link in fondo alla pagina.

Quando si crea il codice del cronotermostato, una delle prime cose da fare è impostare i sensori e creare un ciclo for che otterrà costantemente le letture delle temperature dal sensore di temperatura.

Impostazione sensore di temperatura e LED:

tempPin = 'A0';%define funzione anonima che converte la tensione in temperatura tempCfromVolts = @(volts) (volts-0.5)*100; campionamentoDurata = 5; %secondi. Per quanto tempo vogliamo campionare per samplingInterval = 1; %Quanti secondi tra le letture della temperatura %imposta il vettore dei tempi di campionamento samplingTimes = 0:samplingInterval:samplingDuration; %calcola il numero di campioni in base alla durata e all'intervallo numSamples = length(samplingTimes); %preallocare le variabili temporanee e la variabile per il numero di letture che memorizzerà tempC = zeros(numSamples, 1); tempF = tempC; %Utilizzeremo un ciclo for questa volta per eseguire un numero predeterminato di %lettura della temperatura

Il ciclo for:

for index = 1:numSamples %legge la tensione su tempPin e memorizza in volt variabili volts = readVoltage(a, tempPin); tempC(indice) = -1*tempCfromVolts(volt+0.3); tempF(indice) = tempC(indice)*(9/5)+32; %Visualizza l'output formattato che comunica la lettura della temperatura corrente fprintf('La temperatura a %d secondi è %5.2f C o %5.2f F.\n', … samplingTimes(indice), tempC(indice), tempF(indice)); %nota che questo output di visualizzazione diventerà visibile tutto in una volta solo al termine dell'esecuzione del codice, a meno che tu non copi/incolli il codice in un semplice mfile di script. pause(samplingInterval) %ritardo fino alla prossima fine del campione

Successivamente, creiamo il nostro menu utente per consentire all'utente di decidere se mettere il termostato in modalità manuale o automatica. Creiamo anche un codice di errore se l'utente non seleziona nessuna delle due opzioni.

Il menu della modalità manuale richiede all'utente di impostare un numero per la temperatura del termostato, quindi riscalderà la casa, raffredderà la casa o resterà inattivo in base alle letture. Per impostare questa parte del codice, hai utilizzato le letture della temperatura dal sensore di temperatura e hai creato un codice che raffredderà la casa quando la lettura della temperatura è superiore alla temperatura impostata e riscalderà la casa quando la lettura della temperatura è inferiore alla temperatura impostata.

Una volta ottenute le letture della temperatura, è possibile creare il codice che dirà al termostato di raffreddare la casa quando la lettura della temperatura è superiore alla temperatura impostata e riscaldare la casa quando la lettura della temperatura è inferiore alla temperatura impostata. Per il prototipo, la luce blu si accende quando il termostato dovrebbe raffreddarsi e la luce rossa si accende quando il termostato dovrebbe riscaldarsi.

Configurazione del menù:

scelte = {'Automatico', 'Manuale'};imode = menu('Modo', scelte) if imode>0 h=msgbox(['Hai scelto ' scelte{imode}]); else h=warndlg('Hai chiuso il menu senza fare una scelta') end waitfor(h);

La modalità Manuale richiede all'utente di inserire una temperatura per il termostato, quindi in base alle letture del sensore di temperatura, inizierà sia il raffreddamento della casa che il riscaldamento della casa. Se la lettura del sensore di temperatura è superiore alla temperatura impostata, inizierà a raffreddare la casa. Se la lettura del sensore di temperatura è inferiore alla temperatura impostata, riscalderà la casa.

La modalità Manuale si avvierà:

if imode == 2 dlg_prompts = {'Quale temperatura preferisci?'}; 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('Hai annullato il comando inputdlg'); else temp_manual = str2double(dlg_ans{1}) %[Aggiungi diapositiva di impostazione della regolazione della temperatura in basso] end

All'interno dell'istruzione if per la modalità manuale, è necessario scrivere l'interfaccia del menu per consentire all'utente di scegliere la temperatura domestica desiderata, quindi implementare un'istruzione while che regolerà la temperatura domestica.

Impostazione della regolazione della temperatura:

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); fine

La modalità automatica richiede più input rispetto alla modalità manuale. Dopo essere entrati nella modalità Automatica, l'utente imposterà una temperatura Normale e una Assenza per il proprio termostato. Dopo averle selezionate, in base alla modalità in cui si trova il termostato, tornerà alla modalità di regolazione della temperatura

Imposta la modalità automatica:

elseif imode == 1 dlg_prompts = {'Normale', 'Assente'}; dlg_title = 'Impostazioni 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('Hai annullato il comando inputdlg'); else temp_normal = str2double(dlg_ans{1}) temp_away = str2double(dlg_ans{2}) end waitfor(h); %[Aggiungi rilevatore di movimento passaggio sotto]

Dobbiamo anche configurare il sensore di movimento per le impostazioni della modalità automatica. Quando il rilevatore di movimento rileva il movimento, manterrà la temperatura sull'impostazione della temperatura attuale, altrimenti verrà impostata sull'impostazione della temperatura di distanza.

Run_Motion_Detector(a, inf) while lightStr == 0 temp = temp_away while temp tempF writeDigitalPin(a, 'D6', 1) qualunque sia il pin rosso presente anche nel motore della ventola writeDigitalPin(a, 'D9', 1); end end while lightStr == 1 temp = temp_normal writeDigitalPin(a, 'D6', 1) %change a qualunque pin si trovi la luce normale while temp tempF writeDigitalPin(a, 'D6', 1) qualunque pin sia anche la luce rossa motore per ventola writeDigitalPin(a, 'D9', 1); fine fine

Il codice completo lo trovate qui.

Consigliato: