Kazalo:

Projekt pametnega doma EF230: 7 korakov
Projekt pametnega doma EF230: 7 korakov

Video: Projekt pametnega doma EF230: 7 korakov

Video: Projekt pametnega doma EF230: 7 korakov
Video: The Choice is Ours (2016) Official Full Version 2024, Julij
Anonim
Projekt pametnega doma EF230
Projekt pametnega doma EF230

Potrebni deli in materiali:

  • 1 Arduino MKR 1000
  • 3 deske
  • 2 mini fotocelice
  • 1 NPN tranzistorji
  • 1 Mini stikalo za vklop
  • 1 LED - RGB (4 rog)
  • 1 LED (barva po vaši izbiri)
  • 1 dioda 1N4148
  • 1 10K ohmski upori
  • 5 100 ohmski upor
  • 1 Temperaturni senzor TMP36
  • 1 DAGU Ratio motor z razmerjem 48: 1
  • 25 mostičnih žic
  • USB kabel
  • Program MATLAB
  • Eksperimentalni vodnik SIK za ploščo Arduino 101/Genuino 101 - Povezava do vodiča za eksperiment SIK

Ta projekt podrobno opisuje idejno zasnovo sistema pametnega doma, ki bi uporabil podatke za pomoč lastnikom stanovanj pri optimizaciji porabe energije in varnosti. Vključuje svetlobni senzor za vklop zunanjih luči ponoči, svetlobni senzor za varnost ter temperaturni senzor in ventilator za nadzor notranje temperature.

1. korak: LED občutljiva LED

  • Svetlobno občutljiva LED nastavitev naj bi predstavljala zunanje luči v hiši, ki prižge ponoči.
  • Ko mini fotocelica zazna zmanjšano količino svetlobe, zasveti LED.
  • Za pametni dom to vpliva na energijo in varnost. Prihranil bo energijo tako, da bo dan ugasnil luči, ponoči pa bo povečal varnost.
  • Natančno ožičenje in nastavitev za ta del projekta najdete v 7. poskusu v SIK -ovem eksperimentalnem vodniku.

2. korak: Mini stikalo za vklop

  • Stikalo je prvi korak v varnostnem procesu pametnega doma.
  • Ko je vklopljeno, stikalo sproži odgovor, ki uporabnika vpraša, ali želi vstopiti v način "Doma" ali "Zunaj".
  • Če je izbran način "Doma", se varnost šteje za razoroženo, vendar če izberete način "Odsoten", bo varnostni sistem aktiviran.
  • Ožičenje za ta del projekta je mogoče najti v poskusu 6 v Vodniku za poskus. Za namene pametnega doma LED in njihovih povezovalnih žic, najdenih v poskusu 6, ni treba vključiti.

3. korak: Druga fotocelica

Druga fotocelica
Druga fotocelica
  • Druga fotocelica služi kot senzor gibanja za varnostni sistem pametnega doma.
  • Tipalo se uporablja samo, ko je sistem v načinu 'stran', kot je opisano v prejšnjem koraku.
  • Če fotocelica zazna zmanjšanje količine svetlobe, ki jo prejme, to prepozna kot gibanje v hiši.
  • Nastavitve tega dela projekta najdete v 7. poskusu v SIK -ovem vodniku za eksperimente. Vendar je treba v ožičenje vključiti le fotocelico in njene povezovalne žice.

4. korak: LED RGB

  • LED RGB se uporablja skupaj z mini stikalom za vklop in drugo fotocelico za varnostni sistem pametnega doma.
  • Tri različne barve se uporabljajo kot kazalci za prebivalce pametnega doma.
  • Ko je sistem v načinu 'Home', LED sveti modro. Ko je sistem v načinu "stran", LED sveti zeleno. Ko se sproži fotocelica, ki se uporablja kot senzor gibanja, lučka utripa rdeče.
  • Ožičenje za RGB LED najdete v poskusu 3 SIK -ovega eksperimentalnega vodnika.

5. korak: Temperaturni senzor

  • Senzor temperature je glavni del varčevanja z energijo v pametnem domu.
  • Stanovalec lahko vnese želeno temperaturo za svoj dom, ko je pametni dom v uporabi.
  • Senzor temperature je način, kako sistem ve, kako daleč je dejanska temperatura od želene temperature.
  • Nastavitev temperaturnega senzorja najdete v poskusu 9 SIK -ovega eksperimentalnega vodnika.

6. korak: DAGU Gearmotor

Zobniški motor DAGU
Zobniški motor DAGU
  • Motor omogoča pametnemu domu, da uravnava temperaturo v hiši glede na želeno temperaturo in odčitke temperaturnega senzorja.
  • Motor, ki deluje kot enota za izmenični tok v domu, se vrti z različnimi hitrostmi glede na to, koliko je dejanska temperatura višja od želene temperature. Večja kot je razlika, hitreje se motor vrti.
  • Ožičenje motorja najdete v vodniku za poskus v okviru poskusa 11.

7. korak: Koda

  • Koda za pametni dom vključuje več uporabniških vmesnikov, ki stanovalcu omogočajo enostavno razumevanje njegovega delovanja in enostavno spreminjanje nastavitev.
  • S sistemom pametnega doma bodo stanovalci prejeli e -poštno opozorilo, če je senzor gibanja izklopljen, medtem ko so odsotni.
  • Edina sprememba, ki jo je treba narediti, je vstavljanje podatkov o pošiljateljevem e -poštnem naslovu in e -poštnem naslovu prejemnika.

počisti a; jasno s; jasen m; clc; zaprite vse; % Počistite arduino in servo spremenljivke, tako da jih lahko vsakič znova določite, da bo koda delovala učinkovito ("clear m" je potrebno za pravilno delovanje ene od zank while) a = arduino (); % Nastavite spremenljivko arduino

s = servo (a, 'D6'); % Nastavite servo spremenljivko

% Inicializirajte e -poštne spremenljivke za e -poštno sporočilo varnostnega sistema

e -poštna sporočila = {'vstavi naslov prejemnika'}; % Niz e -poštnih sporočil, na katera je treba poslati varnostno e -poštno sporočilo

% Nastavitve e -pošte, potrebne za uporabo Gmaila za pošiljanje pošte

setpref ('Internet', 'E_mail', 'e -poštni naslov pošiljatelja');

setpref ('Internet', 'SMTP_Username', 'uporabniško ime pošiljatelja');

setpref ('Internet', 'SMTP_Password', 'geslo pošiljatelja');

rekviziti = 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');

% Spremenljivke teme in besedila e -pošte

subj = 'Opozorilo vsiljivca na vašem domu';

text = 'Pozdravljeni, to je vaš varnostni sistem Smart Home, ki vas obvešča, da je bilo zaznano gibanje zunaj vašega doma. Sprejeli smo potrebne ukrepe in se obrnili na vas. Ostani varen.';

medtem ko je res

prompt = {'Vnesite želeno temperaturo doma (med 65F in 85F):'}; % Poziv za vnos uporabniškega menija

dlgtitle = 'Izbira temperature'; % Naslov menija za vnos uporabnika

dims = [1 30]; % Dimenzije menija za vnos uporabnika

definput = {'72'}; % Privzeti vnos, ki se prikaže ob prvem odpiranju menija

tempsel_array = inputdlg (poziv, dlgtitle, dims, definicija); % Pojavni meni za vnos uporabnika, ki shrani vneseno številko v matriko

if ~ isempty (tempsel_array) % Če polje NI prazno

tempsel_char = celica2mat (matrika_predstavka); % Pretvori matriko v niz znakov

tempsel = str2double (tempsel_char); % Pretvorite niz znakov v številke

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Izbrano temperaturo zapišite v kanal ThingSpeak

break % Prekinitev zanke while, da se meni ne prikaže večkrat

else % Če uporabnik namesto vnosa temperature klikne preklic

msg1 = msgbox ('Ni izbrane temperature, privzeto nastavljeno na 85F', 'Pozor!'); % Sporočilo, prikazano uporabniku po kliku preklica

waitfor (msg1); % Počakajte, da se polje s sporočilom zapre, preden nadaljujete

tempsel = 85; % Nastavite temperaturo, kot je navedeno v polju za sporočila

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Izbrano temperaturo zapišite v kanal ThingSpeak

break % Prekinitev zanke while, da se meni ne prikaže večkrat

konec

konec

medtem ko je res

chID = 745517; % ThingSpeak ID kanala

writeKey = 'G9XOQTP8KOVSCT0N'; % Ključ za dostop do kanala ThingSpeak

% Inicializirajte senzorje za pridobivanje podatkov

tempread = readVoltage (a, 'A3'); % Preberite napetost temperaturnega tipala

lightl1 = readVoltage (a, 'A2'); % Raven svetlobe za foto upor do rdeče LED

lightl2 = readVoltage (a, 'A5'); % Raven svetlobe za fotorezistor, ki gre v varnostni sistem

switchv = readVoltage (a, 'A0'); % Vrednost za stikalo

% Pretvorite podatke o temperaturi iz napetosti v stopinje Fahrenheita

tempC = (tempread - 0,5) * 100; % Pretvorite napetost v temperaturo v Celzijah

tempF = (tempC * 9/5) + 32; % Pretvorite temperaturo v Celzijah v temperaturo v Fahrenheitu

% Inicializirajte številke pinov za večbarvno LED

redp = 'D9'; % Pin za rdečo luč iz LED

greenp = 'D10'; % Pin za zeleno luč iz LED

bluep = 'D11'; % Pin za modro svetlobo iz LED

če tempsel <tempF % Če je izbrana temperatura višja od sobne temperature

writePosition (s, 1); % Servo se bo začel premikati

pause (10) % Servo se bo še naprej vrtelo 10 sekund, kar pomeni, da bi se AC po določenem času izklopil

writePosition (s, 0); % Za nadaljevanje kode brez ventilatorja izklopite ventilator

tempsel = 150; % Spremenite temperaturno vrednost, da se izklopi iz zanke po izklopu ventilatorja, samo za nadaljevanje kode

konec

če je lightl1 <= 3 % Če prvi fotootpornik zazna nizko stopnjo svetlobe

writeDigitalPin (a, 'A1', 1); % Vklopite rdečo LED, ki predstavlja zunanje luči

else % Če je raven svetlobe spet visoka

writeDigitalPin (a, 'A1', 0); % Ko je raven svetlobe spet dovolj visoka, izklopite rdečo LED

konec

če je stikalov> 3 % Če je stikalo vklopljeno

A = obstaja ('m', 'var'); % Preverite obstoj spremenljivke 'm', to se bo inicializiralo za zanko while in omogočilo njeno prekinitev, ko je izbran element menija (zato je treba na začetku kode počistiti m)

medtem ko se A == 0 % Loop izvaja, dokler ne obstaja spremenljivka 'm'

menutext = 'V kateri varnostni način želite vstopiti?'; % Besedilo za pojavni meni zaščite

choices = {'Doma', 'Zdoma'}; % Izbira pojavnega menija zaščite

m = meni (besedilo menija, izbire); % Pojavni meni za načine varnostnega sistema

break % Zagotavlja, da je zanka while prekinjena, zato se meni ne prikaže večkrat

konec

if m == 1 % Če je izbran način 'Home'

writeDigitalPin (a, bluep, 1); % Vklopite samo modro svetlobo v LED za spreminjanje barve

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

elseif m == 2 % Če je izbran način 'Away'

writeDigitalPin (a, bluep, 0);

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 1); % Vklopite samo zeleno luč LED za spreminjanje barve

če je lightl2 <= 3 % Če je raven svetlobe v drugem fotorezistorju nizka, predstavlja gibanje, ki ga zazna varnostni sistem

sendmail (e -poštna sporočila, subj, besedilo); % Pošlji e -poštno sporočilo s predhodno določenimi lastnostmi e -pošte writeDigitalPin (a, greenp, 0); % 2 -krat vklop in izklop rdeče barve

writeDigitalPin (a, redp, 1);

premor (0,3)

writeDigitalPin (a, redp, 0);

premor (0,3)

writeDigitalPin (a, redp, 1);

premor (0,3)

writeDigitalPin (a, redp, 0);

premor (0,3)

writeDigitalPin (a, redp, 1); % Po utripanju zaključite z rdečo, da pokažete gibanje, dokler se raven svetlobe ne dvigne

msg2 = msgbox ('Varnostni sistem je odkril vsiljivca, lastnikom stanovanj je bilo poslano e -poštno sporočilo, da jih obvesti.', 'OPOZORILO!'); % Sporočilo za obveščanje uporabnika o gibanju in obveščanje o poslanem e -poštnem naslovu waitfor (msg2) % Počakajte, da se polje za sporočila zapre, preden nadaljujete

drugače

writeDigitalPin (a, greenp, 1); % Ko se raven svetlobe ponovno dvigne, bo spet postala zelena

konec

konec

elseif switchv <3,3 % Če je stikalo izklopljeno

writeDigitalPin (a, bluep, 0); % Popolnoma izklopite LED, da pokažete, da je varnostni sistem izklopljen

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

konec

konec

Priporočena: