Spisu treści:

Termostat inteligentnego domu: 4 kroki
Termostat inteligentnego domu: 4 kroki

Wideo: Termostat inteligentnego domu: 4 kroki

Wideo: Termostat inteligentnego domu: 4 kroki
Wideo: Zigbee Термостат для управления теплым водяным полом MOES BHT-006GAZB 2024, Listopad
Anonim
Inteligentny termostat domowy
Inteligentny termostat domowy

Nasz Smart Home Thermostat to program, który może automatycznie zaoszczędzić pieniądze gospodarstwa domowego na rachunkach za media w oparciu o preferencje danej osoby.

Krok 1: Przegląd

Termostat Smart Home wykorzystuje czujnik temperatury do pomiaru temperatury w domu. Ten odczyt temperatury jest wprowadzany do programu, w którym decyduje, czy system klimatyzacji musi ogrzać lub schłodzić dom w oparciu o żądaną temperaturę właściciela domu.

Termostat posiada dwa tryby: ręczny i automatyczny. Tryb ręczny, który dostosuje temperaturę w domu do dowolnej temperatury ustawionej przez użytkownika. A tryb automatyczny termostatu automatycznie zmieni temperaturę w domu na temperatury zadane przez użytkownika. W trybie automatycznym dostępne będą dwa ustawienia temperatury: temperatura wyjazdu i temperatura aktualna. Temperatura poza domem służy do oszczędzania energii poprzez zmianę termostatu na ustawioną temperaturę oszczędzania energii, gdy użytkownik nie jest w domu. Aktualna temperatura będzie używana, gdy użytkownik jest w domu i chce uzyskać komfortową temperaturę. W trybie automatycznym termostatu czujniki ruchu aktywnie szukają ruchu, aby określić, czy ktoś jest w domu, czy nie. Na podstawie ich odczytu temperatura w domu zostanie ustawiona na temperaturę na wyjeździe lub temperaturę obecną.

Krok 2: Części i materiały

(15) Przewody połączeniowe

(4) Rezystory 220 Ohm

(1) Rezystor 10K Ohm

(1) Czujnik temperatury

(1) Fotorezystor

(1) Przekładnia DAGU Mini DC

(1) Dioda

(1) Tranzystor

(1) Fotorezystor

(1) Deska do krojenia chleba

(1) Arduino MKR

Krok 3: Obwód

Okrążenie
Okrążenie
Okrążenie
Okrążenie
Okrążenie
Okrążenie
Okrążenie
Okrążenie

Rysunek 1 = Duże zdjęcie po lewej

Rysunek 2 = U góry po prawej

Rysunek 3 = Środkowy prawy

Rysunek 4 = Dolny prawy

Rysunek 1

Korzystając z powyższego schematu, podłączyliśmy każdą z naszych trzech diod LED. Rozstawiliśmy każdą diodę LED, ponieważ pracowaliśmy z dużą deską do krojenia chleba. W przypadku mniejszych płyt chlebowych może być konieczne umieszczenie diod LED bliżej siebie. Ponadto nie ma potrzeby zasilania płytki stykowej, ponieważ diody LED pobierają tak mało energii. Nie używaliśmy połączenia 5V na płytce stykowej dla diod LED. Każde połączenie z diod LED do naszego Arduino zostało wykonane tak, jak zielony przewód znajduje się powyżej. Nasze czerwone, niebieskie i zielone diody LED są podłączone odpowiednio do cyfrowych pinów 8, 9 i 10, oznaczonych na naszym zdjęciu czerwonym, niebieskim i zielonym przewodem.

Rysunek 2

Powyższy schemat posłużył do podłączenia fotorezystora. Wprowadziliśmy kilka własnych poprawek; jednak koncepcje są nadal takie same. Fotorezystor musi być podłączony do pinu analogowego, który mamy w pinie A1. Upewnij się, że używasz rezystora 10 kiloomów dla rezystora znajdującego się najbliżej fotorezystora.

Rysunek 3

To jest schemat używany do podłączenia czujnika temperatury. Pamiętaj, aby nie pomylić zastosowanego tutaj tranzystora z czujnikiem temperatury. Wyglądają prawie identycznie. Czujnik temperatury prawdopodobnie będzie miał TMP lub inny skrypt napisany na płaskiej stronie czujnika. Okablowanie tutaj jest bardzo proste, nasz czujnik temperatury jest podłączony do analogowego pinu A0 z białym przewodem.

Rysunek 4

Powyższe zdjęcie zostało użyte do okablowania skrzyni biegów DAGU Mini DC. Zielony przewód dołączony do Gearboxa to w rzeczywistości czerwony przewód podłączony do niego na naszym zdjęciu. Gearbox jest w naszym modelu połączony z cyfrowym pinem 11 pomarańczowym przewodem. Pamiętaj, aby nie pomylić zastosowanego tutaj tranzystora z czujnikiem temperatury. Wyglądają prawie identycznie. Czujnik temperatury prawdopodobnie będzie miał TMP lub inny skrypt napisany na płaskiej stronie czujnika. Musisz użyć tutaj tranzystora, a nie czujnika temperatury.

Krok 4: Kod Arduino

Tutaj wyjaśnione są najważniejsze części kodu. Kod nie będzie działał tylko z tym, co tutaj podano. Aby uzyskać pełny działający kod, na dole strony znajduje się link.

Podczas tworzenia kodu programowalnego termostatu, jedną z pierwszych rzeczy, które robisz, jest konfiguracja czujników i utworzenie pętli for, która będzie stale otrzymywać odczyty temperatury z czujnika temperatury.

Konfiguracja czujnika temperatury i diody LED:

tempPin = 'A0';%definiuj anonimową funkcję konwertującą napięcie na temperaturę tempCfromVolts = @(volts) (volts-0.5)*100; pobieranie próbekCzas trwania = 5; %sekundy. Jak długo chcemy próbkować dla samplingInterval = 1; %Ile sekund między odczytami temperatury %ustaw wektor czasów próbkowania samplingTimes = 0:samplingInterval:samplingDuration; % oblicz liczbę próbek na podstawie czasu trwania i interwału numSamples = length(samplingTimes); %prealokuj zmienne temp i zmienną dla liczby odczytów, które będą przechowywać tempC = zeros(numSamples, 1); tempF = tempC; % Tym razem użyjemy pętli for, aby wykonać określoną liczbę % odczytów temperatury

Pętla for:

dla indeksu = 1:numSamples %odczytaj napięcie w tempPin i zapisz w zmiennych woltach volts = readVoltage(a, tempPin); tempC(indeks) = -1*tempCfromVolts(wolty+0.3); tempF(indeks) = tempC(indeks)*(9/5)+32; %Wyświetlanie sformatowanego wyjścia przekazującego bieżący odczyt temperatury fprintf('Temperatura w %d sekundach wynosi %5.2f C lub %5.2f F.\n', … czasy próbkowania(indeks), tempC(indeks), tempF(indeks)); % zauważ, że ten wynik wyświetlania stanie się widoczny od razu po % zakończeniu wykonywania kodu, chyba że skopiujesz/wkleisz kod do zwykłego skryptu mplik. pause(samplingInterval) %opóźnienie do końca następnej próbki

Następnie tworzymy nasze menu użytkownika, aby użytkownik mógł zdecydować, czy ustawić termostat w trybie ręcznym, czy automatycznym. Tworzymy również kod błędu, jeśli użytkownik nie wybierze żadnej z dwóch opcji.

Menu trybu ręcznego wymaga od użytkownika ustawienia liczby dla temperatury termostatu, a następnie będzie on ogrzewał dom, chłodził dom lub był bezczynny na podstawie odczytów. Aby skonfigurować tę część kodu, użyłeś odczytów temperatury z czujnika temperatury i utworzyłeś kod, który będzie chłodził dom, gdy odczyt temperatury jest wyższy niż ustawiona temperatura, i ogrzewał dom, gdy odczyt temperatury jest niższy niż ustawiona temperatura.

Po odczytaniu temperatury możesz utworzyć kod, który powie termostatowi, aby schłodził dom, gdy odczyt temperatury jest wyższy niż ustawiona temperatura, i ogrzał dom, gdy odczyt temperatury jest niższy niż ustawiona temperatura. W przypadku prototypu niebieskie światło zapala się, gdy termostat powinien ostygnąć, a czerwone światło zapala się, gdy termostat powinien się nagrzać.

Konfiguracja menu:

choices = {'Automatyczny', 'Ręczny'};imode = menu('Tryb', wybory) if imode>0 h=msgbox(['Wybrałeś ' wybory{imode}]); else h=warndlg('Zamknąłeś menu bez dokonywania wyboru') end waitfor(h);

Tryb ręczny wymaga od użytkownika wprowadzenia temperatury dla termostatu, a następnie w oparciu o odczyty z czujnika temperatury, rozpocznie się chłodzenie domu lub ogrzewanie domu. Jeśli odczyt czujnika temperatury jest wyższy niż ustawiona temperatura, rozpocznie się chłodzenie domu. Jeśli odczyt czujnika temperatury jest niższy od ustawionej temperatury, ogrzeje on dom.

Rozpocznie się tryb ręczny:

if imode == 2 dlg_prompts = {'Jaką preferujesz temperaturę?'}; dlg_title = 'Temperatura'; dlg_defaults = {'68'}; opts. Resize = 'włączone'; dlg_ans = inputdlg(dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty(dlg_ans) h=warndlg('Anulowałeś polecenie inputdlg'); else temp_manual = str2double(dlg_ans{1}) %[Dodaj slajd konfiguracji regulacji temperatury poniżej] end

Wewnątrz instrukcji if dla trybu ręcznego należy napisać interfejs menu, w którym użytkownik może wybrać żądaną temperaturę w domu, a następnie wprowadzić instrukcję while, która będzie regulować temperaturę w domu.

Konfiguracja regulacji temperatury:

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); kończyć się

Tryb automatyczny wymaga większej liczby danych wejściowych niż tryb ręczny. Po przejściu w tryb automatyczny użytkownik ustawi dla termostatu temperaturę normalną i poza domem.

Ustaw tryb automatyczny:

elseif imode == 1 dlg_prompts = {'Normalnie', 'Poza domem'}; dlg_title = 'Ustawienia temperatury'; dlg_defaults = {'68', '64'}; opts. Resize = 'włączone'; dlg_ans = inputdlg(dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty(dlg_ans) h=warndlg('Anulowałeś polecenie inputdlg'); else temp_normal = str2double(dlg_ans{1}) temp_away = str2double(dlg_ans{2}) end waitfor(h); %[Dodaj krok detektora ruchu poniżej]

Musimy również skonfigurować czujnik ruchu dla ustawień trybu automatycznego. Gdy czujnik ruchu wykryje ruch, utrzyma temperaturę na aktualnym ustawieniu temperatury, w przeciwnym razie ustawi się na temperaturę poza domem.

Run_Motion_Detector(a, inf) while lightStr == 0 temp = temp_away while temp tempF writeDigitalPin(a, 'D6', 1) dowolny pin czerwonego światła jest również w silniku dla wentylatora writeDigitalPin(a, 'D9', 1); end end while lightStr == 1 temp = temp_normal writeDigitalPin(a, 'D6', 1) %zmiana na dowolny pin, na którym znajduje się normalne światło podczas temp tempF writeDigitalPin(a, 'D6', 1) niezależnie od tego, na którym pin jest czerwone światło silnik do wentylatora writeDigitalPin(a, 'D9', 1); koniec koniec

Pełny kod można znaleźć tutaj.

Zalecana: