Inhaltsverzeichnis:

Smart Home-Thermostat - Gunook
Smart Home-Thermostat - Gunook

Video: Smart Home-Thermostat - Gunook

Video: Smart Home-Thermostat - Gunook
Video: Best Smart Thermostat of 2023 | The 5 Best Smart Thermostats Review 2024, Juli
Anonim
Smart Home-Thermostat
Smart Home-Thermostat

Unser Smart Home Thermostat ist ein Programm, das einem Haushalt automatisch Geld für Stromrechnungen sparen kann, basierend auf den Vorlieben einer Person.

Schritt 1: Übersicht

Das Smart Home Thermostat verwendet einen Temperatursensor, um die Temperatur des Hauses zu messen. Dieser Temperaturwert wird in das Programm eingegeben und entscheidet, ob die Klimaanlage das Haus auf Grundlage der gewünschten Temperatur des Hausbesitzers heizen oder kühlen muss.

Es gibt zwei Modi für den Thermostat: manuell und automatisch. Der manuelle Modus, der die Temperatur des Hauses auf die vom Benutzer eingestellte gewünschte Temperatur anpasst. Und der Automatikmodus des Thermostats ändert die Temperatur des Hauses automatisch auf die vom Benutzer voreingestellten Temperaturen. Für den Automatikmodus gibt es zwei Temperatureinstellungen: Abwesenheitstemperatur und aktuelle Temperatur. Die Abwesenheitstemperatur wird verwendet, um Energie zu sparen, indem der Thermostat auf eine voreingestellte Energiespartemperatur umgestellt wird, wenn der Benutzer nicht zu Hause ist. Die aktuelle Temperatur wird verwendet, wenn der Benutzer zu Hause ist und eine angenehme Temperatur wünscht. Im Automatikmodus des Thermostats suchen Bewegungssensoren aktiv nach Bewegung, um festzustellen, ob jemand zu Hause ist oder nicht. Basierend auf ihrem Messwert wird die Heimtemperatur entweder auf die Abwesenheitstemperatur oder die aktuelle Temperatur eingestellt.

Schritt 2: Teile und Materialien

(15) Überbrückungsdrähte

(4) 220 Ohm Widerstände

(1) 10K Ohm Widerstand

(1) Temperatursensor

(1) Fotowiderstand

(1) DAGU Mini-DC-Getriebe

(1) Diode

(1) Transistor

(1) Fotowiderstand

(1) Steckbrett

(1) Arduino MKR

Schritt 3: Schaltung

Schaltkreis
Schaltkreis
Schaltkreis
Schaltkreis
Schaltkreis
Schaltkreis
Schaltkreis
Schaltkreis

Abbildung 1 = Großes linkes Bild

Abbildung 2 = Oben rechts

Abbildung 3 = Mitte rechts

Abbildung 4 = Unten rechts

Abbildung 1

Mit dem obigen Diagramm haben wir jede unserer drei LEDs verdrahtet. Wir haben jede LED beabstandet, da wir mit einem großen Brotbrett arbeiteten. Bei kleineren Steckbrettern kann es notwendig sein, die LEDs näher zusammen zu setzen. Außerdem ist es unnötig, das Steckbrett mit Strom zu versorgen, da die LEDs so wenig Strom verbrauchen. Wir haben den 5V-Anschluss auf dem Steckbrett nicht für die LEDs verwendet. Jede Verbindung von den LEDs zu unserem Arduino wurde wie der grüne Draht oben hergestellt. Unsere roten, blauen und grünen LEDs sind mit den digitalen Pins 8, 9 bzw. 10 verbunden, die in unserem Bild mit einem roten, blauen und grünen Draht gekennzeichnet sind.

Figur 2

Das obige Diagramm wurde verwendet, um den Fotowiderstand zu verdrahten. Wir haben selbst einige Korrekturen vorgenommen; die Konzepte sind jedoch immer noch die gleichen. Der Fotowiderstand muss mit einem analogen Pin verbunden werden, den wir in Pin A1 haben. Stellen Sie sicher, dass Sie einen 10K Ohm-Widerstand für den Widerstand verwenden, der dem Fotowiderstand am nächsten ist.

Figur 3

Dies ist das Diagramm, das verwendet wird, um den Temperatursensor zu verdrahten. Achten Sie darauf, den hier verwendeten Transistor nicht mit dem Temperatursensor zu verwechseln. Sie sehen fast identisch aus. Der Temperatursensor hat wahrscheinlich TMP oder ein anderes Skript auf der flachen Seite des Sensors. Die Verkabelung hier ist sehr einfach unser Temperatursensor wird mit einem weißen Kabel in den analogen Pin A0 gesteckt.

Figur 4

Das Bild oben wurde verwendet, um das DAGU Mini DC Gearbox zu verkabeln. Das grüne Kabel, das an der Gearbox befestigt ist, ist tatsächlich das rote Kabel, das in unserem Bild damit verbunden ist. Die Gearbox ist bei unserem Modell mit einem orangefarbenen Kabel mit dem digitalen Pin 11 verbunden. Achten Sie darauf, den hier verwendeten Transistor nicht mit dem Temperatursensor zu verwechseln. Sie sehen fast identisch aus. Der Temperatursensor hat wahrscheinlich TMP oder ein anderes Skript auf der flachen Seite des Sensors. Sie müssen hier den Transistor verwenden und nicht den Temperatursensor.

Schritt 4: Arduino-Code

Hier werden die wichtigsten Teile des Codes erklärt. Der Code funktioniert nicht nur mit dem, was hier angegeben ist. Um den vollständigen funktionierenden Code zu erhalten, befindet sich unten auf der Seite ein Link.

Beim Erstellen des Codes des programmierbaren Thermostats ist eines der ersten Dinge, die Sie tun, die Sensoren einzurichten und eine for-Schleife zu erstellen, die ständig Temperaturmesswerte vom Temperatursensor erhält.

Temperatursensor und LED einrichten:

tempPin = 'A0';%define anonyme Funktion, die die Spannung in Temperatur umwandelt tempCfromVolts = @(Volt) (Volt-0.5)*100; Abtastdauer = 5; % Sekunden. Wie lange wollen wir für sampleInterval = 1 abtasten; %Wie viele Sekunden zwischen Temperaturmesswerten %setup-Vektor der Abtastzeiten SamplingTimes = 0:samplingInterval:samplingDuration; %berechnen Sie die Anzahl der Samples basierend auf der Dauer und dem Intervall numSamples = length(samplingTimes); %preallocate temporäre Variablen und Variable für die Anzahl der zu speichernden Messwerte tempC = zeros(numSamples, 1); tempF = tempC; %Wir verwenden diesmal eine for-Schleife, um eine vorbestimmte Anzahl von %Temperaturmessungen durchzuführen

Die for-Schleife:

für index = 1:numSamples % die Spannung an tempPin ablesen und in variablen Volt speichern volts = readVoltage(a, tempPin); tempC(Index) = -1*tempCfromVolts(Volt + 0,3); tempF(Index) = tempC(Index)*(9/5)+32; %Display formatierte Ausgabe, die den aktuellen Temperaturmesswert kommuniziert fprintf('Temperatur bei %d Sekunden ist %5.2f C oder %5.2f F.\n', … sampleTimes(index), tempC(index), tempF(index)); %beachten Sie, dass diese Anzeigeausgabe erst auf einmal sichtbar wird, nachdem der Code ausgeführt wurde, es sei denn, Sie kopieren/einfügen den Code in eine einfache Skript-mfile. pause(samplingInterval) %Verzögerung bis zum nächsten Sampleende

Als nächstes erstellen wir unser Benutzermenü, damit der Benutzer entscheiden kann, ob er den Thermostat in den manuellen oder automatischen Modus versetzen möchte. Wir erstellen auch einen Fehlercode, wenn der Benutzer keine der beiden Optionen auswählt.

Im Menü für den manuellen Modus muss der Benutzer eine Zahl für die Thermostattemperatur einstellen, dann wird das Haus entweder geheizt, gekühlt oder basierend auf den Messwerten im Leerlauf betrieben. Um diesen Teil des Codes einzurichten, haben Sie die Temperaturmesswerte des Temperatursensors verwendet und einen Code erstellt, der das Haus kühlt, wenn der Temperaturmesswert höher als die eingestellte Temperatur ist, und das Haus heizt, wenn der Temperaturmesswert niedriger als die eingestellte Temperatur ist.

Sobald Sie die Temperaturmesswerte haben, können Sie den Code erstellen, der dem Thermostat mitteilt, das Haus zu kühlen, wenn die Temperaturmesswerte höher als die eingestellte Temperatur sind, und das Haus zu heizen, wenn die Temperaturmesswerte niedriger als die eingestellte Temperatur sind. Beim Prototyp leuchtet das blaue Licht, wenn der Thermostat abkühlen soll und das rote Licht, wenn der Thermostat heizen soll.

Menüeinstellungen:

choice = {'Automatic', 'Manual'};imode = menu('Mode', choice) if imode>0 h=msgbox(['You chooses' choice{imode}]); else h=warndlg('Sie haben das Menü geschlossen, ohne eine Auswahl zu treffen') end waitfor(h);

Im manuellen Modus muss der Benutzer eine Temperatur für den Thermostat eingeben, dann beginnt er basierend auf den Messwerten des Temperatursensors entweder das Haus zu kühlen oder das Haus zu heizen. Wenn der Messwert des Temperatursensors höher als die eingestellte Temperatur ist, beginnt er mit der Kühlung des Hauses. Wenn der Messwert des Temperatursensors niedriger als die eingestellte Temperatur ist, heizt er das Haus.

Der manuelle Modus wird gestartet:

if imode == 2 dlg_prompts = {'Welche Temperatur würden Sie bevorzugen?'}; 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('Sie haben den Befehl inputdlg abgebrochen'); else temp_manual = str2double(dlg_ans{1}) %[Folie für Temperaturregelungs-Setup unten hinzufügen] end

Innerhalb der if-Anweisung für den manuellen Modus müssen Sie die Menüoberfläche schreiben, damit der Benutzer die gewünschte Haustemperatur auswählen kann, und dann eine while-Anweisung implementieren, die die Haustemperatur regelt.

Einstellung der Temperaturregelung:

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

Der Automatikmodus erfordert mehr Eingaben als der manuelle Modus. Nach dem Aufrufen des Automatikmodus stellt der Benutzer eine Normal- und eine Abwesenheitstemperatur für seinen Thermostat ein. Nachdem er diese ausgewählt hat, kehrt er je nach Modus des Thermostats in den Temperaturregelungsmodus zurück

Richten Sie den Automatikmodus ein:

elseif imode == 1 dlg_prompts = {'Normal', 'Abwesend'}; dlg_title = 'Temperatureinstellungen'; dlg_defaults = {'68', '64'}; opts. Resize = 'on'; dlg_ans = inputdlg(dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty(dlg_ans) h=warndlg('Sie haben den Befehl inputdlg abgebrochen'); else temp_normal = str2double(dlg_ans{1}) temp_away = str2double(dlg_ans{2}) end waitfor(h); %[Schritt unten Bewegungsmelder hinzufügen]

Wir müssen auch den Bewegungssensor für die Einstellungen des Automatikmodus einrichten. Wenn der Bewegungsmelder eine Bewegung aufnimmt, hält er die Temperatur auf der aktuellen Temperatureinstellung, andernfalls wird er auf die Abwesenheitstemperatureinstellung eingestellt.

Run_Motion_Detector(a, inf) while lightStr == 0 temp = temp_away while temp tempF writeDigitalPin(a, 'D6', 1) was auch immer Pin rotes Licht ist auch Motor für Lüfter writeDigitalPin(a, 'D9', 1); end end while lightStr == 1 temp = temp_normal writeDigitalPin(a, 'D6', 1) %wechsel zu dem Pin, in dem sich das normale Licht befindet, während temp tempF writeDigitalPin(a, 'D6', 1) was auch immer das rote Licht des Pins ist Motor für Lüfter writeDigitalPin(a, 'D9', 1); Ende Ende

Den vollständigen Code finden Sie hier.

Empfohlen: