Turinys:

„EF230 Smart Home“projektas: 7 žingsniai
„EF230 Smart Home“projektas: 7 žingsniai

Video: „EF230 Smart Home“projektas: 7 žingsniai

Video: „EF230 Smart Home“projektas: 7 žingsniai
Video: Ef230 RADbot 2024, Lapkritis
Anonim
„EF230 Smart Home“projektas
„EF230 Smart Home“projektas

Reikalingos dalys ir medžiagos:

  • 1 „Arduino MKR 1000“
  • 3 Duonos lentos
  • 2 mini fotoelementai
  • 1 NPN tranzistoriai
  • 1 mini maitinimo jungiklis
  • 1 LED - RGB (4 šakos)
  • 1 šviesos diodas (pasirinkta spalva)
  • 1 diodas 1N4148
  • 1 10K omų rezistoriai
  • 5 100 omų rezistorius
  • 1 Temperatūros jutiklis TMP36
  • 1 DAGU 48: 1 santykis pavarų variklis
  • 25 trumpieji laidai
  • USB laidas
  • MATLAB programa
  • SIK eksperimento vadovas „Arduino 101“/„Genuino 101“lentai - SIK eksperimento vadovo nuoroda

Šiame projekte išsamiai aprašytas sumanių namų sistemos, kuri naudotų duomenis, idėja padėtų namų savininkams optimizuoti energijos vartojimą ir saugumą. Jame yra šviesos jutiklis, skirtas įjungti lauko žibintus naktį, šviesos jutiklis, skirtas saugumui, ir temperatūros jutiklis bei ventiliatorius patalpų temperatūrai valdyti.

1 žingsnis: šviesai jautrus šviesos diodas

  • Šviesai jautrios šviesos diodų sąranka skirta atspindėti lauko žibintus namuose, kurie užsidega naktį.
  • Kai mini fotoelementas pajus sumažintą šviesos kiekį, užsidegs šviesos diodas.
  • Pažangiems namams tai turi įtakos energetikai ir saugumui. Tai sutaupys energijos, palikdama šviesą dienos metu ir užtikrins didesnį saugumą naktį.
  • Tikslius šios projekto dalies laidus ir sąranką rasite SIK eksperimento vadovo 7 eksperimente.

2 žingsnis: mini maitinimo jungiklis

  • Jungiklis yra pirmas žingsnis išmaniųjų namų saugumo procese.
  • Kai įjungtas, jungiklis inicijuos atsakymą ir paklaus, ar vartotojas nori įjungti „namų“arba „toli“režimą.
  • Jei pasirinktas režimas „Pagrindinis“, saugumas laikomas išjungtu, tačiau pasirinkus režimą „Away“apsaugos sistema bus įjungta.
  • Šios projekto dalies laidus rasite eksperimento vadovo 6 eksperimente. Išmaniesiems namams nereikia įtraukti 6 eksperimente rastų šviesos diodų ir jų jungiamųjų laidų.

3 žingsnis: antrasis fotoelementas

Antrasis fotoelementas
Antrasis fotoelementas
  • Antrasis fotoelementas tarnauja kaip judėjimo jutiklis išmaniųjų namų apsaugos sistemai.
  • Jutiklis naudojamas tik tada, kai sistema įjungta į „Away“režimą, kaip aprašyta ankstesniame žingsnyje.
  • Jei fotoelementas sumažina gaunamos šviesos kiekį, jis tai atpažįsta kaip judesį namuose.
  • Šios projekto dalies sąranką rasite SIK eksperimento vadovo 7 eksperimente. Tačiau į laidus reikia įtraukti tik fotoelementą ir jį jungiančius laidus.

4 žingsnis: RGB šviesos diodas

  • RGB šviesos diodas naudojamas kartu su mini maitinimo jungikliu ir antruoju išmaniųjų namų apsaugos sistemos fotoelementu.
  • Trys skirtingos spalvos naudojamos kaip išmaniųjų namų gyventojo rodikliai.
  • Kai sistema perjungiama į „namų“režimą, šviesos diodas tampa mėlynas. Kai sistema perjungiama į „Away“režimą, šviesos diodas užsidega žaliai. Kai fotoelementas naudojamas kaip judesio jutiklis, lemputė mirksi raudonai.
  • RGB šviesos diodų laidus rasite SIK eksperimento vadovo 3 eksperimente.

5 žingsnis: temperatūros jutiklis

  • Temperatūros jutiklis yra svarbi energijos taupymo išmaniuosiuose namuose dalis.
  • Naudojant išmaniuosius namus, gyventojas gali įvesti norimą temperatūrą savo namams.
  • Temperatūros jutiklis yra tai, kaip sistema žino, kiek toli yra norima temperatūra.
  • Temperatūros jutiklio sąranką rasite SIK eksperimento vadovo 9 eksperimente.

6 žingsnis: DAGU pavarų variklis

Pavarų variklis DAGU
Pavarų variklis DAGU
  • Variklis leidžia išmaniesiems namams reguliuoti namo temperatūrą, atsižvelgiant į norimą temperatūrą ir temperatūros jutiklio rodmenis.
  • Veikdamas kaip kintamosios srovės įrenginys namuose, variklis sukasi skirtingu greičiu, atsižvelgiant į tai, kiek faktinė temperatūra yra aukštesnė už norimą. Kuo didesnis skirtumas, tuo greičiau variklis sukasi.
  • Variklio laidus rasite Eksperimento vadovo 11 eksperimente.

7 žingsnis: kodas

  • Išmaniųjų namų kodas apima kelias vartotojo sąsajas, kurios leidžia gyventojui lengvai suprasti, kaip jis veikia, ir lengvai pakeisti nustatymus.
  • Naudodamas išmaniųjų namų sistemą, gyventojas gaus įspėjimą ir el. Laišką, jei judesio jutiklis bus išjungtas, kol jie nebus.
  • Vienintelis pakeitimas, kurį reikia atlikti, yra įvesti informaciją apie siuntėjo el. Paštą ir gavėjo el. Pašto adresą.

išvalyti a; aiškus s; aiškus m; clc; uždaryti viską; % Išvalyti arduino ir servo kintamuosius, kad juos būtų galima iš naujo apibrėžti kiekvieną kartą, kad kodas veiktų efektyviai („aiškus m“yra būtinas, kad viena iš ciklų tinkamai veiktų) a = arduino (); % Nustatykite kintamąjį arduino

s = servo (a, 'D6'); % Nustatykite servo kintamąjį

% Inicijuokite el. Pašto kintamuosius saugos sistemos įspėjamiesiems el

el. laiškai = {'įterpti gavėjo adresą'}; % El. Laiškų, į kuriuos turi būti siunčiamas saugos el. Laiškas, masyvas

% El. Pašto nuostatų nustatymai, būtini norint naudoti „Gmail“, norint siųsti laiškus

setpref („Internetas“, „El. paštas“, „siuntėjo el. pašto adresas“);

setpref ('Internetas', 'SMTP_Username', 'siuntėjo vartotojo vardas');

setpref ('Internetas', 'SMTP_Password', 'siuntėjo slaptažodis');

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

% El. Pašto temos ir teksto kintamieji

subj = 'Įspėjimas apie įsibrovėlį jūsų namuose';

text = 'Sveiki, tai jūsų išmaniųjų namų apsaugos sistema, informuojanti jus, kad už jūsų namų ribų buvo aptiktas judesys. Mes ėmėmės reikiamų priemonių ir susisiekėme su jumis. Lik saugus.';

kol tiesa

prompt = {'Įveskite norimą namų temperatūrą (nuo 65 F iki 85 F):'}; % Paprašykite vartotojo įvesties meniu

dlgtitle = 'Temperatūros pasirinkimas'; % Vartotojo įvesties meniu pavadinimas

blankus = [1 30]; % Vartotojo įvesties meniu matmenys

apibrėžimas = {'72'}; % Numatytoji įvestis, rodoma pirmą kartą atidarius meniu

tempsel_array = inputdlg (greitas, dlgtitle, dims, definput); % Iššokantis vartotojo įvesties meniu, kuris įrašys įvestą numerį į masyvą

jei ~ isempty (tempsel_array) % Jei masyvas NĖRA tuščias

tempsel_char = cell2mat (tempsel_array); % Konvertuokite masyvą į simbolių eilutę

tempsel = str2double (tempsel_char); % Konvertuokite simbolių eilutę į skaičius

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Įrašykite pasirinktą temperatūrą į „ThingSpeak“kanalą

break % Pertrauka nuo ciklo, kad meniu nebūtų rodomas kelis kartus

else % Jei vartotojas spustelėja atšaukti, o ne įveda temperatūrą

msg1 = msgbox ('Temperatūra nepasirinkta, numatytoji vertė 85 F', 'Įspėjimas!'); % Pranešimas rodomas vartotojui spustelėjus atšaukti

laukti (msg1); % Prieš tęsdami palaukite, kol pranešimų langas bus uždarytas

tempselis = 85; % Nustatykite temperatūrą, kuri buvo nurodyta pranešimų laukelyje

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Įrašykite pasirinktą temperatūrą į „ThingSpeak“kanalą

break % Pertrauka nuo ciklo, kad meniu nebūtų rodomas kelis kartus

galas

galas

kol tiesa

chID = 745517; % „ThingSpeak“kanalo ID

writeKey = 'G9XOQTP8KOVSCT0N'; % Raktas prieigai prie „ThingSpeak“kanalo

% Inicijuokite jutiklius, kad gautumėte duomenis

tempread = readVoltage (a, 'A3'); % Perskaitykite temperatūros jutiklio įtampą

lightl1 = skaitymo įtampa (a, 'A2'); % Fotorezistoriaus šviesos lygis pereina į raudoną šviesos diodą

lightl2 = skaitymo įtampa (a, 'A5'); % Fotoresistoriaus, einančio į apsaugos sistemą, šviesos lygis

switchv = readVoltage (a, 'A0'); % Vertė jungikliui

% Konvertuokite temperatūros duomenis iš įtampos į Farenheito laipsnius

tempC = (tempread - 0,5) * 100; % Konvertuokite įtampą į temperatūrą Celsijaus laipsniais

tempF = (tempC * 9/5) + 32; % Konvertuokite temperatūrą pagal Celsijų į Farenheito temperatūrą

% Inicijuokite daugiaspalvio šviesos diodo kaiščių numerius

redp = 'D9'; % Kaištis raudonai šviesai iš LED

greenp = 'D10'; % Kištukas žaliai šviesai iš LED

bluep = 'D11'; % Mėlynos šviesos iš LED kaištis

jei temppsel <tempF % Jei pasirinkta temperatūra yra didesnė už kambario temperatūrą

writePosition (s, 1); % Servo pradės judėti

pauzė (10) % „Servo“toliau suksis 10 sekundžių, rodydama, kad po tam tikro laiko AC išsijungs

writePosition (s, 0); % Išjunkite ventiliatorių, kad tęstumėte kodą neįjungę ventiliatoriaus

tempselis = 150; % Pakeiskite temperatūros vertę, kad išeitumėte iš ciklo, kai ventiliatorius išjungtas, dar kartą tik tam, kad tęstumėte kodą

galas

jei lightl1 <= 3 % Jei pirmasis fotorezistorius aptinka silpną apšvietimo lygį

writeDigitalPin (a, 'A1', 1); % Įjunkite raudoną šviesos diodą, kuris reiškia lauko žibintus

else % Jei šviesos lygis vėl yra aukštas

writeDigitalPin (a, 'A1', 0); % Išjunkite raudoną šviesos diodą, kai šviesos lygis vėl yra pakankamai aukštas

galas

jei jungiklisv> 3 % Jei jungiklis įjungtas

A = egzistuoja ('m', 'var'); % Patikrinkite, ar egzistuoja kintamasis „m“, jis bus inicijuotas ciklo „ciklas“metu ir leis jį sulaužyti, kai bus pasirinktas meniu elementas (todėl kodo pradžioje reikia padaryti aiškų m)

tuo tarpu A == 0 % ciklas vykdomas tol, kol egzistuoja kintamasis „m“

menutext = 'Kurį saugos režimą norėtumėte įjungti?'; % Iššokančiojo saugos teksto tekstas

options = {'Home', 'Away'}; % Iššokančio saugumo meniu pasirinkimas

m = meniu (meniu tekstas, pasirinkimai); % Iššokantis meniu apsaugos sistemos režimams

break % Užtikrina, kad ciklas while yra nutrūkęs, todėl meniu nebus rodomas kelis kartus

galas

jei m == 1 % Jei pasirinktas „Pagrindinis“režimas

writeDigitalPin (a, bluep, 1); % Įjunkite tik mėlyną šviesą spalvas keičiančiame LED

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

elseif m == 2 % Jei pasirinktas režimas „Away“

writeDigitalPin (a, bluep, 0);

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 1); % Įjunkite tik žalią spalvą keičiančio šviesos diodo lemputę

jei lightl2 <= 3 % Jei antrojo fotorezistoriaus šviesos lygis yra žemas, tai reiškia, kad apsaugos sistema aptiko judesį

sendmail (el. laiškai, subj, tekstas); % Siųsti el. Laišką su anksčiau apibrėžtomis el. Pašto savybėmis writeDigitalPin (a, greenp, 0); % Blykstės raudona spalva įjungta ir išjungta 2 kartus

writeDigitalPin (a, redp, 1);

pauzė (0,3)

writeDigitalPin (a, redp, 0);

pauzė (0,3)

writeDigitalPin (a, redp, 1);

pauzė (0,3)

writeDigitalPin (a, redp, 0);

pauzė (0,3)

writeDigitalPin (a, redp, 1); % Užbaikite raudona spalva, kai mirksi, kad būtų parodytas judėjimas, kol šviesos lygis vėl pakils

msg2 = msgbox ('Apsaugos sistema aptiko įsibrovėlį, namų savininkams buvo išsiųstas el. laiškas, kad jie būtų informuoti.', 'ĮSPĖJIMAS!'); % Pranešimų dėžutė, skirta informuoti vartotoją apie judesį ir informuoti apie išsiųstą el. Laišką laukiant (msg2) % Palaukite, kol pranešimų langas bus uždarytas

Kitas

writeDigitalPin (a, greenp, 1); % Kai šviesos lygis vėl pakils, jis vėl taps žalias

galas

galas

elseif jungiklisv <3,3 % Jei jungiklis išjungtas

writeDigitalPin (a, bluep, 0); % Visiškai išjunkite šviesos diodą, kad parodytumėte, jog apsaugos sistema yra išjungta

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

galas

galas

Rekomenduojamas: