Innholdsfortegnelse:

EF230 Smart Home Project: 7 trinn
EF230 Smart Home Project: 7 trinn

Video: EF230 Smart Home Project: 7 trinn

Video: EF230 Smart Home Project: 7 trinn
Video: EF 230 Roomba Project 2024, November
Anonim
EF230 Smart Home -prosjekt
EF230 Smart Home -prosjekt

Nødvendige deler og materialer:

  • 1 Arduino MKR 1000
  • 3 brødbrett
  • 2 mini fotoceller
  • 1 NPN -transistorer
  • 1 mini strømbryter
  • 1 LED - RGB (4 pinner)
  • 1 LED (valgfri farge)
  • 1 Diode 1N4148
  • 1 10K ohm motstander
  • 5 100 Ohm motstand
  • 1 temperatursensor TMP36
  • 1 DAGU 48: 1 Ratio Gearmotor
  • 25 hoppetråder
  • USB -kabel
  • MATLAB -program
  • SIK Experiment Guide for Arduino 101/Genuino 101 Board - SIK Experiment Guide Link

Dette prosjektet beskriver konseptdesign av et smarthus system som ville bruke data for å hjelpe huseiere optimalisere energibruken og sikkerhet. Det inkluderer en lyssensor for å slå på utendørs lys om natten, en lyssensor for sikkerhet, og en temperatursensor og vifte for innendørs temperaturkontroll.

Trinn 1: Lysfølsom LED

  • Det lysfølsomme LED -oppsettet er ment å representere utelysene i et hus som tennes om natten.
  • Når minifotocellen registrerer en redusert mengde lys, lyser LED -en.
  • For et smart hjem har dette konsekvenser for energi og sikkerhet. Det vil spare energi ved å la lysene være slukket i løpet av dagen og vil gi økt sikkerhet om natten.
  • Den eksakte kabling og oppsett for denne delen av prosjektet finner du under eksperiment 7 i SIK Experiment Guide.

Trinn 2: Mini -strømbryter

  • Bryteren er det første trinnet i sikkerhetsprosessen til det smarte hjemmet.
  • Når den er slått på, vil bryteren initiere en respons ber brukeren om de ønsker å gå inn i 'Hjem' -modus eller 'borte' modus.
  • Hvis "Hjem" -modus er valgt, anses sikkerheten som deaktivert, men å velge "Borte" -modus vil aktivere sikkerhetssystemet.
  • Kablingene for denne delen av prosjektet finner du under eksperiment 6 i eksperimentguiden. For det smarte hjemmet trenger ikke LED -lampene og tilkoblingskablene som finnes i eksperiment 6 å være inkludert.

Trinn 3: Andre fotocelle

Andre fotocelle
Andre fotocelle
  • Den andre fotocellen fungerer som en bevegelsessensor for sikkerhetssystemet til det smarte hjemmet.
  • Sensoren brukes bare når systemet settes i "Borte" -modus som beskrevet i forrige trinn.
  • Hvis fotocellen opplever en reduksjon i lysmengden den mottar, gjenkjenner den dette som bevegelse inne i huset.
  • Oppsettet for denne delen av prosjektet finner du under eksperiment 7 i SIK Experiment Guide. Imidlertid er det bare fotocellen og tilkoblingskablene som må inkluderes i ledningene.

Trinn 4: RGB LED

  • RGB LED blir anvendt sammen med den ministrømbryteren og den andre fotocellen for sikkerhetssystemet av smart hjem.
  • De tre forskjellige fargene brukes som indikatorer for smarthusboeren.
  • Når systemet er i "Hjem" -modus, blir LED -en blå. Når systemet er i "Bort" -modus, lyser LED -en grønt. Når fotocellen som brukes som bevegelsessensor er utløst, blinker lyset rødt.
  • Kablingene for RGB -LED -en finnes i eksperiment 3 i SIK -eksperimentguiden.

Trinn 5: Temperatursensor

  • Temperatursensoren er en viktig del av energibesparelsen i det smarte hjemmet.
  • Beboeren kan angi ønsket temperatur for hjemmet sitt når det smarte hjemmet er i bruk.
  • Temperatursensor er hvordan systemet vet hvor langt den faktiske temperaturen er fra ønsket temperatur.
  • Oppsett for temperatursensoren finnes i eksperiment 9 i SIK Experiment Guide.

Trinn 6: DAGU girmotor

DAGU Girmotor
DAGU Girmotor
  • Motoren lar det smarte hjemmet regulere temperaturen i huset basert på ønsket temperatur og avlesninger av temperatursensoren.
  • Fungerende som AC-enhet i hjemmet, vil motoren spinne på ulike hastigheter basert på hvor mye høyere den faktiske temperaturen er enn ønsket temperatur. Jo høyere forskjell, jo raskere snurrer motoren.
  • Ledningen til motoren finner du i eksperimentguiden under eksperiment 11.

Trinn 7: Kode

  • Koden for det smarte hjemmet inneholder flere brukergrensesnitt som lar beboeren enkelt forstå hvordan det fungerer og enkelt endre innstillingene.
  • Med det smarte hjemmesystemet vil beboeren motta og varsle e -post hvis bevegelsessensoren er satt av mens de er borte.
  • Den eneste endringen som må gjøres er å sette inn informasjonen for avsenderens e -post og mottakerens e -postadresse.

klar a; klar s; klar m; clc; Lukk alle; % Fjern arduino og servo variabler slik at de kan redefineres hver gang slik at koden vil kjøre effektivt ("clear m" er nødvendig for at en av mens loopene skal fungere skikkelig) a = arduino (); % Angi arduino -variabelen

s = servo (a, 'D6'); % Sett servovariabelen

% Initialiser e -postvariabler for e -post med advarsler om sikkerhetssystem

emails = {'insert mottaker address'}; % Array av e -poster for å få sikkerhets -e -posten sendt til

% Innstillinger for e -postinnstilling nødvendig for å bruke en Gmail å sende e -post fra

setpref ('Internett', 'E_mail', 'avsenders e -postadresse');

setpref ('Internett', 'SMTP_Username', 'senderens brukernavn');

setpref ('Internett', 'SMTP_Password', 'senderens passord');

rekvisitter = 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 -postemne og tekstvariabler

subj = 'Varsel om inntrenger hjemme';

text = 'Hei, dette er ditt Smart Home -sikkerhetssystem som informerer deg om at det har blitt oppdaget bevegelse utenfor hjemmet ditt. Vi har tatt de nødvendige tiltakene og kontaktet myndigheter for deg. Vær trygg. ';

mens det er sant

prompt = {'Skriv inn ønsket hjemmetemperatur (mellom 65F og 85F):'}; % Spør om brukerinntastingsmeny

dlgtitle = 'Temperaturvalg'; % Tittel for brukerinntastingsmeny

dims = [1 30]; % Dimensjoner for brukerinntastingsmeny

definput = {'72'}; % Standardinngang som vises når menyen først åpnes

tempsel_array = inputdlg (prompt, dlgtitle, dims, definput); % Popup -brukerinntastingsmeny som lagrer det angitte nummeret i en matrise

if ~ isempty (tempsel_array) % Hvis matrisen IKKE er tom

tempsel_char = cell2mat (tempsel_array); % Konverter matrisen til en tegnstreng

tempsel = str2double (tempsel_char); % Konverter tegnstrengen til tall

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Skriv den valgte temperaturen til ThingSpeak -kanalen din

pause % Bryt fra mens -sløyfen, slik at menyen ikke dukker opp flere ganger

ellers % Hvis brukeren klikker, avbryt i stedet for å angi en temperatur

msg1 = msgbox ('Ingen temperatur valgt, standard til 85F', 'Advarsel!'); % Melding vises til brukeren etter å ha klikket Avbryt

waitfor (msg1); % Vent til meldingsboksen lukkes før du fortsetter

tempsel = 85; % Still inn temperaturen til det som stod i meldingsboksen

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Skriv den valgte temperaturen til ThingSpeak -kanalen din

pause % Bryt fra mens -sløyfen, slik at menyen ikke dukker opp flere ganger

slutt

slutt

mens det er sant

chID = 745517; % ThingSpeak -kanal -ID

writeKey = 'G9XOQTP8KOVSCT0N'; % Nøkkel for tilgang til ThingSpeak -kanalen

% Initialiser sensorer for å hente data

tempread = readVoltage (a, 'A3'); % Les spenningen til temperatursensoren

lightl1 = readVoltage (a, 'A2'); % Lysnivå for fotoresistoren som går til den røde lysdioden

lightl2 = readVoltage (a, 'A5'); % Lysnivå for fotoresistoren som går til sikkerhetssystemet

switchv = readVoltage (a, 'A0'); % Verdi for bryteren

% Konverter temperaturdata fra spenning til grader Fahrenheit

tempC = (tempread - 0,5) * 100; % Konverter spenning til temperatur i Celsius

tempF = (tempC * 9/5) + 32; % Konverter temperaturen i Celsius til temperaturen i Fahrenheit

% Initialiser pin -tallene for flerfarget LED

redp = 'D9'; % Pin for rødt lys fra LED

greenp = 'D10'; % Pin for grønt lys fra LED

bluep = 'D11'; % Pin for blått lys fra LED

hvis tempsel <tempF % Hvis den valgte temperaturen er større enn romtemperaturen

writePosition (s, 1); % Servo begynner å bevege seg

pause (10) % Servo vil fortsette å spinne i 10 sekunder for å representere at AC ville slå seg av etter en bestemt tid

writePosition (s, 0); % Slå av viften for å fortsette koden uten vifte på

tempsel = 150; % Endre temperaturverdien for å bryte ut av sløyfen etter at viften er slått av, igjen bare for å fortsette koden

slutt

hvis lightl1 <= 3 % Hvis den første fotoresistoren oppdager et lavt lysnivå

writeDigitalPin (a, 'A1', 1); % Slå på rød LED som representerer utelys

ellers % Hvis lysnivået er høyt igjen

writeDigitalPin (a, 'A1', 0); % Slå av rød LED når lysnivået er høyt nok igjen

slutt

hvis switchv> 3% Hvis bryteren er slått på

A = finnes ('m', 'var'); % Kontroller om det finnes variabel 'm', dette vil initialiseres for mens -sløyfen og tillate at den brytes når et menyelement velges (det er derfor klart m må gjøres i begynnelsen av koden)

mens A == 0 % Loop vil utføres til variabelen 'm' eksisterer

menutext = 'Hvilken sikkerhetsmodus vil du gå inn i?'; % Tekst for hurtigmenyen for sikkerhet

choice = {'Home', 'Away'}; % Valg for sikkerhetsmenyen

m = meny (menutekst, valg); % Popup -meny for sikkerhetssystemmoduser

break % Sikrer at mens loop er brutt, slik at menyen ikke vil dukke opp flere ganger

slutt

hvis m == 1 % Hvis "Hjem" -modus er valgt

writeDigitalPin (a, bluep, 1); % Slå på bare blått lys i fargen endrer LED

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

elseif m == 2 % Hvis "Bort" -modus er valgt

writeDigitalPin (a, bluep, 0);

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 1); % Slå på bare det grønne lyset i fargeskiftende LED

hvis lightl2 <= 3 % Hvis lysnivået i den andre fotoresistoren er lavt, representerer bevegelse detektert av sikkerhetssystemet

sendmail (e-post, subj, tekst); % Send en e -post med de tidligere definerte e -postegenskapene writeDigitalPin (a, greenp, 0); % Blinker rød farge på og av 2 ganger

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); % Fullfør med fast rødt etter å ha blinket for å vise at det er bevegelse til lysnivået går opp igjen

msg2 = msgbox ('Innbrudd oppdaget av sikkerhetssystemet, en e -post er sendt til huseierne for å informere dem.', 'ADVARSEL!'); % Meldingsboks for å informere brukeren om bevegelse og for å informere om e -posten som er sendt waitfor (msg2) % Vent til meldingsboksen lukkes før du fortsetter

ellers

writeDigitalPin (a, greenp, 1); % Når lysnivået har steget igjen, blir det grønt

slutt

slutt

elseif switchv <3,3 % Hvis bryteren er slått av

writeDigitalPin (a, bluep, 0); % Slå av LED -en helt for å vise at sikkerhetssystemet er slått av

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

slutt

slutt

Anbefalt: