Inhaltsverzeichnis:

EF230 Smart Home-Projekt - Gunook
EF230 Smart Home-Projekt - Gunook

Video: EF230 Smart Home-Projekt - Gunook

Video: EF230 Smart Home-Projekt - Gunook
Video: roomba project 2024, Juli
Anonim
EF230 Smart Home-Projekt
EF230 Smart Home-Projekt

Benötigte Teile und Materialien:

  • 1 Arduino MKR 1000
  • 3 Steckbretter
  • 2 Mini-Fotozellen
  • 1 NPN-Transistoren
  • 1 Mini-Netzschalter
  • 1 LED – RGB (4-polig)
  • 1 LED (Farbe nach Wahl)
  • 1 Diode 1N4148
  • 1 10K Ohm Widerstände
  • 5 100 Ohm Widerstand
  • 1 Temperatursensor TMP36
  • 1 DAGU 48:1 Übersetzungsgetriebemotor
  • 25 Überbrückungsdrähte
  • USB-Kabel
  • MATLAB-Programm
  • SIK Experimentieranleitung für das Arduino 101/Genuino 101 Board - SIK Experimentieranleitung Link

Dieses Projekt beschreibt das konzeptionelle Design eines Smart-Home-Systems, das Hausbesitzern dabei hilft, ihren Energieverbrauch und ihre Sicherheit mithilfe von Daten zu optimieren. Es enthält einen Lichtsensor, um nachts die Außenbeleuchtung einzuschalten, einen Lichtsensor für die Sicherheit und einen Temperatursensor und einen Lüfter zur Kontrolle der Innentemperatur.

Schritt 1: Lichtempfindliche LED

  • Das lichtempfindliche LED-Setup soll die Außenbeleuchtung eines Hauses darstellen, die nachts aufleuchtet.
  • Wenn die Mini-Fotozelle eine reduzierte Lichtmenge erkennt, leuchtet die LED auf.
  • Für ein Smart Home hat dies Auswirkungen auf Energie und Sicherheit. Es spart Energie, indem es tagsüber das Licht ausgeschaltet lässt und nachts mehr Sicherheit bietet.
  • Die genaue Verdrahtung und Einrichtung für diesen Teil des Projekts finden Sie unter Experiment 7 im SIK Experiment Guide.

Schritt 2: Mini-Netzschalter

  • Der Schalter ist der erste Schritt im Sicherheitsprozess des Smart Home.
  • Wenn er eingeschaltet ist, wird der Schalter eine Antwort einleiten, in der der Benutzer gefragt wird, ob er in den Modus "Zuhause" oder "Abwesend" wechseln möchte.
  • Wenn der Modus „Zuhause“ausgewählt ist, gilt die Sicherheit als unscharf, aber die Auswahl des Modus „Abwesend“aktiviert das Sicherheitssystem.
  • Die Verdrahtung für diesen Teil des Projekts finden Sie unter Experiment 6 im Experimentierleitfaden. Für die Zwecke des Smart Homes müssen die LEDs und deren Anschlussdrähte aus Experiment 6 nicht berücksichtigt werden.

Schritt 3: Zweite Lichtschranke

Zweite Lichtschranke
Zweite Lichtschranke
  • Die zweite Lichtschranke dient als Bewegungssensor für das Sicherheitssystem des Smart Home.
  • Der Sensor wird nur verwendet, wenn das System wie im vorherigen Schritt beschrieben in den „Abwesend“-Modus versetzt wird.
  • Erfährt die Lichtschranke eine Abnahme der Lichtmenge, die sie erhält, erkennt sie dies als Bewegung im Inneren des Hauses.
  • Den Aufbau für diesen Teil des Projekts finden Sie unter Experiment 7 im SIK Experiment Guide. Es müssen jedoch nur die Lichtschranke und ihre Anschlussdrähte in die Verdrahtung einbezogen werden.

Schritt 4: RGB-LED

  • Die RGB-LED wird in Verbindung mit dem Mini-Netzschalter und der zweiten Lichtschranke für das Sicherheitssystem des Smart Home verwendet.
  • Die drei verschiedenen Farben dienen als Indikatoren für den Smart Home Bewohner.
  • Wenn das System in den Home-Modus versetzt wird, leuchtet die LED blau. Wenn das System in den 'Abwesend'-Modus versetzt wird, leuchtet die LED grün. Wenn die als Bewegungsmelder verwendete Fotozelle ausgelöst wird, blinkt das Licht rot.
  • Die Verdrahtung der RGB-LED finden Sie im Experiment 3 des SIK Experimentierhandbuchs.

Schritt 5: Temperatursensor

  • Der Temperatursensor trägt maßgeblich zum Energiesparen im Smart Home bei.
  • Der Bewohner kann während der Nutzung des Smart Home eine Wunschtemperatur für sein Zuhause eingeben.
  • Der Temperatursensor gibt dem System an, wie weit die tatsächliche Temperatur von der gewünschten Temperatur entfernt ist.
  • Den Aufbau des Temperatursensors finden Sie im Experiment 9 der SIK Experimentieranleitung.

Schritt 6: DAGU Getriebemotor

DAGU Getriebemotor
DAGU Getriebemotor
  • Der Motor ermöglicht es dem Smart Home, die Temperatur im Haus basierend auf der gewünschten Temperatur und den Messwerten des Temperatursensors zu regulieren.
  • Als AC-Einheit im Haus dreht sich der Motor mit unterschiedlichen Geschwindigkeiten, je nachdem, wie viel höher die tatsächliche Temperatur als die gewünschte Temperatur ist. Je höher die Differenz, desto schneller dreht der Motor.
  • Die Verkabelung des Motors finden Sie in der Experimentieranleitung unter Experiment 11.

Schritt 7: Code

  • Der Code für das Smart Home enthält mehrere Benutzeroberflächen, die es dem Bewohner ermöglichen, die Funktionsweise leicht zu verstehen und die Einstellungen einfach zu ändern.
  • Mit dem Smart-Home-System erhält der Bewohner eine E-Mail-Benachrichtigung, wenn der Bewegungssensor während seiner Abwesenheit ausgelöst wird.
  • Die einzige Änderung, die vorgenommen werden muss, ist das Einfügen der Informationen für die E-Mail des Absenders und die E-Mail-Adresse des Empfängers.

klar a; klar s; klar m; clc; alle schließen; % Löschen Sie Arduino- und Servo-Variablen, damit sie jedes Mal neu definiert werden können, damit der Code effektiv ausgeführt wird ("clear m" ist erforderlich, damit eine der while-Schleifen ordnungsgemäß funktioniert)a = arduino (); % Stellen Sie die Arduino-Variable ein

s = Servo(a, 'D6'); % Stellt die Servovariable ein

% E-Mail-Variablen für Warn-E-Mails des Sicherheitssystems initialisieren

emails = {'Empfängeradresse einfügen'}; % E-Mail-Array, an das die Sicherheits-E-Mail gesendet werden soll

% E-Mail-Einstellungen, die für die Verwendung von Gmail zum Senden von E-Mails erforderlich sind

setpref('Internet', 'E_Mail', 'E-Mail-Adresse des Absenders');

setpref('Internet', 'SMTP_Benutzername', 'Benutzername des Absenders');

setpref('Internet', 'SMTP_Password', 'Passwort des Absenders');

props = java.lang. System.getProperties;

props.setProperty('mail.smtp.auth', 'true');

props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty('mail.smtp.socketFactory.port', '465');

% E-Mail-Betreff- und Textvariablen

subj = 'Einbruchalarm bei Ihnen zu Hause';

text = 'Hallo, Dies ist Ihr Smart Home-Sicherheitssystem, das Sie darüber informiert, dass außerhalb Ihres Hauses eine Bewegung erkannt wurde. Wir haben für Sie die notwendigen Maßnahmen ergriffen und Behörden kontaktiert. Bleib sicher.';

während wahr

prompt = {'Gewünschte Haustemperatur eingeben (zwischen 65F und 85F):'}; % Aufforderung zum Benutzereingabemenü

dlgtitle = 'Temperaturauswahl'; % Titel für Benutzereingabemenü

dims = [1 30]; % Abmessungen für Benutzereingabemenü

Definition = {'72'}; % Standardeingabe, die beim ersten Öffnen des Menüs angezeigt wird

tempsel_array = inputdlg(prompt, dlgtitle, dims, definput); % Popup-Benutzereingabemenü, das die eingegebene Zahl in einem Array speichert

if ~isempty(tempsel_array) % Wenn das Array NICHT leer ist

tempsel_char = cell2mat(tempsel_array); % Konvertieren des Arrays in eine Zeichenkette

tempsel = str2double(tempsel_char); % Wandeln Sie die Zeichenkette in Zahlen um

thingSpeakWrite(chID, tempsel, 'WriteKey', writeKey, 'Felder', 1); % Schreiben Sie die ausgewählte Temperatur in Ihren ThingSpeak-Kanal

break % Pause von der while-Schleife, damit das Menü nicht mehrmals erscheint

else % Wenn der Benutzer auf Abbrechen klickt, anstatt eine Temperatur einzugeben

msg1 = msgbox('Keine Temperatur ausgewählt, Standard ist 85F', 'Warnung!'); % Nachricht, die dem Benutzer angezeigt wird, nachdem er auf Abbrechen geklickt hat

warte auf(msg1); % Warten Sie, bis das Meldungsfeld geschlossen ist, bevor Sie fortfahren

Tempel = 85; % Stellen Sie die Temperatur auf die im Meldungsfeld angegebene Temperatur ein

thingSpeakWrite(chID, tempsel, 'WriteKey', writeKey, 'Felder', 1); % Schreiben Sie die ausgewählte Temperatur in Ihren ThingSpeak-Kanal

break % Pause von der while-Schleife, damit das Menü nicht mehrmals erscheint

Ende

Ende

während wahr

chID = 745517; % ThingSpeak-Kanal-ID

writeKey = 'G9XOQTP8KOVSCT0N'; % Schlüssel für den Zugriff auf den ThingSpeak-Kanal

% Sensoren initialisieren, um Daten abzurufen

tempread = readVoltage(a, 'A3'); % Lesen Sie die Spannung des Temperatursensors ab

lightl1 = readVoltage(a, 'A2'); % Lichtstärke für den Fotowiderstand, der zur roten LED geht

lightl2 = readVoltage(a, 'A5'); % Lichtstärke für den Fotowiderstand, der zum Sicherheitssystem geht

switchv = readVoltage(a, 'A0'); % Wert für den Schalter

% Konvertieren Sie die Temperaturdaten von Spannung in Grad Fahrenheit

tempC = (tempread - 0,5) * 100; % Spannung in Temperatur in Celsius umrechnen

tempF = (tempC * 9/5) + 32; % Temperatur in Celsius in Temperatur in Fahrenheit umrechnen

% Initialisieren Sie die Pin-Nummern für die mehrfarbige LED

redp = 'D9'; % Pin für rotes Licht von LED

greenp = 'D10'; % Pin für grünes Licht von LED

bluep = 'D11'; % Pin für blaues Licht von LED

if tempsel < tempF % Wenn die gewählte Temperatur größer als die Raumtemperatur ist

writePosition(s, 1); % Servo beginnt sich zu bewegen

pause(10) % Servo dreht sich 10 Sekunden lang weiter, um anzuzeigen, dass die Klimaanlage nach einer bestimmten Zeit ausgeschaltet wird

writePosition(s, 0); % Schalten Sie den Lüfter aus, um den Code ohne eingeschalteten Lüfter fortzusetzen

Tempel = 150; % Ändern Sie den Temperaturwert, um die Schleife zu verlassen, nachdem der Lüfter ausgeschaltet wurde, nur um den Code fortzusetzen

Ende

if lightl1 <= 3 % Wenn der erste Fotowiderstand eine geringe Lichtstärke erkennt

writeDigitalPin(a, 'A1', 1); % Schalten Sie die rote LED ein, die die Außenbeleuchtung darstellt

sonst % Wenn die Lichtstärke wieder hoch ist

writeDigitalPin(a, 'A1', 0); % Rote LED ausschalten, wenn die Lichtstärke wieder hoch genug ist

Ende

wenn switchv > 3 % Wenn der Schalter eingeschaltet ist

A = exist('m', 'var'); % Überprüfen Sie, ob die Variable 'm' vorhanden ist, dies wird für die while-Schleife initialisiert und ermöglicht, dass sie unterbrochen wird, wenn ein Menüpunkt ausgewählt wird (deshalb muss am Anfang des Codes m gelöscht werden)

während A==0 % Schleife wird ausgeführt, bis die Variable 'm' existiert

menutext = 'Welchen Sicherheitsmodus möchten Sie aufrufen?'; % Text für das Sicherheits-Popup-Menü

Auswahlmöglichkeiten = {'Zuhause', 'Abwesend'}; % Auswahlmöglichkeiten für das Sicherheits-Popup-Menü

m = Menü (Menütext, Auswahlmöglichkeiten); % Popup-Menü für Sicherheitssystemmodi

break % Stellt sicher, dass die while-Schleife unterbrochen wird, damit das Menü nicht mehrmals angezeigt wird

Ende

if m == 1 % Wenn 'Home'-Modus ausgewählt ist

writeDigitalPin(a, bluep, 1); % Schalten Sie nur blaues Licht in der Farbwechsel-LED ein

writeDigitalPin(a, redp, 0);

writeDigitalPin(a, greenp, 0);

elseif m == 2 % Wenn der Modus 'Abwesend' gewählt ist

writeDigitalPin(a, bluep, 0);

writeDigitalPin(a, redp, 0);

writeDigitalPin(a, greenp, 1); % Schalten Sie nur das grüne Licht in der Farbwechsel-LED ein

if lightl2 <= 3 % Wenn der Lichtpegel im zweiten Fotowiderstand niedrig ist, was eine vom Sicherheitssystem erkannte Bewegung darstellt

sendmail(E-Mails, Betreff, Text); % Senden Sie eine E-Mail mit den zuvor definierten E-Mail-Eigenschaften writeDigitalPin(a, greenp, 0); % Rote Farbe ein- und ausschalten 2 Mal

writeDigitalPin(a, redp, 1);

Pause(0.3)

writeDigitalPin(a, redp, 0);

Pause(0.3)

writeDigitalPin(a, redp, 1);

Pause(0.3)

writeDigitalPin(a, redp, 0);

Pause(0.3)

writeDigitalPin(a, redp, 1); % Beenden Sie mit durchgehendem Rot nach dem Blinken, um anzuzeigen, dass Bewegung vorhanden ist, bis die Lichtstärke wieder ansteigt

msg2 = msgbox('Eindringling vom Sicherheitssystem entdeckt, eine E-Mail wurde an die Hausbesitzer gesendet, um sie zu informieren.', 'WARNUNG!'); % Nachrichtenbox, um den Benutzer über die Bewegung zu informieren und über die gesendete E-Mail zu informieren waitfor(msg2) % Warten Sie, bis die Nachrichtenbox geschlossen ist, bevor Sie fortfahren

anders

writeDigitalPin(a, greenp, 1); % Sobald die Lichtstärke wieder angestiegen ist, wird sie wieder grün

Ende

Ende

elseif switchv < 3,3 % Wenn der Schalter ausgeschaltet ist

writeDigitalPin(a, bluep, 0); % Schalten Sie die LED vollständig aus, um anzuzeigen, dass das Sicherheitssystem ausgeschaltet ist

writeDigitalPin(a, redp, 0);

writeDigitalPin(a, greenp, 0);

Ende

Ende

Empfohlen: