Inhoudsopgave:

EF230 Smart Home-project: 7 stappen
EF230 Smart Home-project: 7 stappen

Video: EF230 Smart Home-project: 7 stappen

Video: EF230 Smart Home-project: 7 stappen
Video: EF 230 Roomba Project 2024, November
Anonim
EF230 Smart Home-project
EF230 Smart Home-project

Benodigde onderdelen en materialen:

  • 1 Arduino MKR 1000
  • 3 Breadboards
  • 2 mini-fotocellen
  • 1 NPN-transistoren
  • 1 mini-aan/uit-schakelaar
  • 1 LED – RGB (4-polig)
  • 1 LED (kleur naar keuze)
  • 1 Diode 1N4148
  • 1 10K Ohm Weerstanden
  • 5 100 Ohm Weerstand
  • 1 temperatuursensor TMP36
  • 1 DAGU 48:1 Verhouding Motorreductor
  • 25 jumperdraden
  • USB-kabel
  • MATLAB-programma
  • SIK Experiment Guide voor het Arduino 101/Genuino 101 Board - SIK Experiment Guide Link

Dit project beschrijft het conceptuele ontwerp van een smart home-systeem dat gegevens zou gebruiken om huiseigenaren te helpen hun energieverbruik en beveiliging te optimaliseren. Het bevat een lichtsensor om de buitenverlichting 's nachts in te schakelen, een lichtsensor voor beveiliging en een temperatuursensor en ventilator voor het regelen van de binnentemperatuur.

Stap 1: Lichtgevoelige LED

  • De lichtgevoelige LED-opstelling is bedoeld om de buitenverlichting van een huis weer te geven die 's nachts aangaat.
  • Wanneer de mini-fotocel een verminderde hoeveelheid licht detecteert, zal de LED oplichten.
  • Voor een slimme woning heeft dit gevolgen voor energie en veiligheid. Het bespaart energie door de lichten overdag uit te laten en zorgt 's nachts voor meer veiligheid.
  • De exacte bedrading en opstelling voor dit deel van het project is te vinden onder experiment 7 in de SIK Experiment Guide.

Stap 2: Mini-aan/uit-schakelaar

  • De overstap is de eerste stap in het beveiligingsproces van het slimme huis.
  • Wanneer ingeschakeld, zal de schakelaar een reactie initiëren met de vraag of de gebruiker naar de 'Thuis'-modus of 'Afwezig'-modus wil gaan.
  • Als de modus 'Thuis' is geselecteerd, wordt de beveiliging als uitgeschakeld beschouwd, maar als u de modus 'Afwezig' selecteert, wordt het beveiligingssysteem ingeschakeld.
  • De bedrading voor dit deel van het project is te vinden onder experiment 6 in de Experiment Guide. Voor de doeleinden van het slimme huis hoeven de LED's en hun verbindingsdraden gevonden in experiment 6 niet te worden opgenomen.

Stap 3: Tweede fotocel

Tweede fotocel
Tweede fotocel
  • De tweede fotocel dient als bewegingssensor voor het beveiligingssysteem van het slimme huis.
  • De sensor wordt alleen gebruikt als het systeem in de 'Afwezig' modus staat zoals beschreven in de vorige stap.
  • Als de fotocel een afname van de hoeveelheid licht ervaart die hij ontvangt, herkent hij dit als beweging in huis.
  • De opzet voor dit deel van het project is te vinden onder experiment 7 in de SIK Experiment Guide. Alleen de fotocel en de bijbehorende aansluitdraden hoeven echter in de bedrading te worden opgenomen.

Stap 4: RGB-LED

  • De RGB-led wordt gebruikt in combinatie met de mini-schakelaar en de tweede fotocel voor het beveiligingssysteem van het slimme huis.
  • De drie verschillende kleuren worden gebruikt als indicatoren voor de slimme thuisbewoner.
  • Wanneer het systeem in de 'Home'-modus wordt gezet, wordt de LED blauw. Wanneer het systeem in de 'Afwezig'-modus wordt gezet, wordt de LED groen. Wanneer de fotocel die als bewegingssensor wordt gebruikt, wordt geactiveerd, knippert het lampje rood.
  • De bedrading voor de RGB LED is te vinden in experiment 3 van de SIK Experiment Guide.

Stap 5: Temperatuursensor

  • De temperatuursensor is een belangrijk onderdeel van het besparen van energie in het slimme huis.
  • De bewoner kan een gewenste temperatuur voor zijn huis invoeren wanneer het slimme huis in gebruik is.
  • Temperatuursensor is hoe het systeem weet hoe ver de werkelijke temperatuur verwijderd is van de gewenste temperatuur.
  • Opstelling voor de temperatuursensor is te vinden in experiment 9 van de SIK Experiment Guide.

Stap 6: DAGU-motorreductor

DAGU Motorreductor
DAGU Motorreductor
  • Door de motor kan de smart home de temperatuur in huis regelen op basis van de gewenste temperatuur en de uitlezingen van de temperatuursensor.
  • De motor fungeert als de AC-eenheid in huis en draait met verschillende snelheden op basis van hoeveel hoger de werkelijke temperatuur is dan de gewenste temperatuur. Hoe groter het verschil, hoe sneller de motor draait.
  • De bedrading voor de motor is te vinden in de Experiment Guide onder experiment 11.

Stap 7: Coderen

  • De code voor het slimme huis bevat meerdere gebruikersinterfaces waarmee de bewoner gemakkelijk kan begrijpen hoe het werkt en de instellingen gemakkelijk kan wijzigen.
  • Met het smart home-systeem ontvangt de bewoner een e-mail als de bewegingssensor afgaat terwijl hij/zij weg is.
  • De enige wijziging die moet worden aangebracht, is het invoeren van de informatie voor de e-mail van de afzender en het e-mailadres van de ontvanger.

duidelijk een; duidelijke s; duidelijk m; clc; sluit alles; % Wis arduino- en servovariabelen zodat ze elke keer opnieuw kunnen worden gedefinieerd, zodat de code effectief wordt uitgevoerd ("clear m" is nodig om een van de while-lussen goed te laten functioneren)a = arduino(); % Stel de Arduino-variabele in

s = servo(a, 'D6'); % Stel de servovariabele in

% Initialiseer e-mailvariabelen voor waarschuwingsmail van het beveiligingssysteem

e-mails = {'adres van ontvanger invoegen'}; % Array van e-mails waarnaar de beveiligings-e-mail moet worden verzonden

% Instellingen voor e-mailvoorkeuren die nodig zijn voor het gebruik van een Gmail om e-mail te verzenden

setpref('Internet', 'E_mail', 'e-mailadres van de afzender');

setpref('Internet', 'SMTP_Gebruikersnaam', 'gebruikersnaam afzender');

setpref('Internet', 'SMTP_Password', 'wachtwoord afzender');

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-mailonderwerp en tekstvariabelen

subj = 'Inbraakalarm bij u thuis';

text = 'Hallo, dit is uw Smart Home-beveiligingssysteem dat u informeert dat er beweging is gedetecteerd buiten uw huis. Wij hebben voor u de nodige maatregelen genomen en contact opgenomen met autoriteiten. Blijf Veilig.';

terwijl het waar is

prompt = {'Voer de gewenste thuistemperatuur in (tussen 65F en 85F):'}; % Prompt voor gebruikersinvoermenu

dlgtitle = 'Temperatuur selecteren'; % Titel voor gebruikersinvoermenu

dimt = [1 30]; % Afmetingen voor gebruikersinvoermenu

definitie = {'72'}; % Standaardinvoer die verschijnt wanneer het menu voor het eerst wordt geopend

tempsel_array = inputdlg(prompt, dlgtitle, dims, definitie); % Pop-up gebruikersinvoermenu dat het ingevoerde nummer in een array opslaat

if ~isempty(tempsel_array) % Als de array NIET leeg is

tempsel_char = cell2mat(tempsel_array); % Converteer de array naar een tekenreeks

tempsel = str2double(tempsel_char); % Converteer de tekenreeks naar cijfers

thingSpeakWrite(chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Schrijf de geselecteerde temperatuur naar uw ThingSpeak-kanaal

break % Breek uit de while-lus zodat het menu niet meerdere keren verschijnt

else % Als de gebruiker op annuleren klikt in plaats van een temperatuur in te voeren

msg1 = msgbox('Geen temperatuur geselecteerd, standaard ingesteld op 85F', 'Waarschuwing!'); % Bericht weergegeven aan gebruiker na klikken op annuleren

wachten op (msg1); % Wacht tot het berichtvenster is gesloten voordat u doorgaat

tempsel = 85; % Stel de temperatuur in op wat er in het berichtvenster stond

thingSpeakWrite(chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Schrijf de geselecteerde temperatuur naar uw ThingSpeak-kanaal

break % Breek uit de while-lus zodat het menu niet meerdere keren verschijnt

einde

einde

terwijl het waar is

chID = 745517; % ThingSpeak-kanaal-ID

writeKey = 'G9XOQTP8KOVSCT0N'; % Sleutel voor toegang tot het ThingSpeak-kanaal

% Sensoren initialiseren om gegevens op te halen

tempread = leesVoltage (a, 'A3'); % Lees de spanning van de temperatuursensor

lightl1 = leesVoltage (a, 'A2'); % Lichtniveau voor de fotoresistor die naar de rode LED gaat

lightl2 = leesVoltage(a, 'A5'); % Lichtniveau voor de fotoresistor die naar het beveiligingssysteem gaat

switchv = leesVoltage (a, 'A0'); % Waarde voor de schakelaar

% Converteer de temperatuurgegevens van spanning naar graden Fahrenheit

tempC = (tempread - 0,5) * 100; % Zet spanning om in temperatuur in Celsius

tempF = (tempC * 9/5) + 32; % Zet temperatuur in Celsius om in temperatuur in Fahrenheit

% Initialiseer de pinnummers voor de meerkleurige LED

redp = 'D9'; % Pin voor rood licht van LED

groenp = 'D10'; % Pin voor groen licht van LED

blauw = 'D11'; % Pin voor blauw licht van LED

if tempsel < tempF % Als de geselecteerde temperatuur hoger is dan de kamertemperatuur

schrijfPositie(s, 1); % Servo begint te bewegen

pauze(10) % Servo blijft 10 seconden draaien om aan te geven dat de AC na een bepaalde tijd zou worden uitgeschakeld

schrijfPositie(s, 0); % Zet ventilator uit om door te gaan met code zonder ventilator aan

tempsel = 150; % Wijzig de temperatuurwaarde om uit de lus te breken nadat de ventilator is uitgeschakeld, opnieuw alleen om door te gaan met de code

einde

if lightl1 <= 3 % Als de eerste fotoresistor een laag lichtniveau detecteert

writeDigitalPin(a, 'A1', 1); % Schakel de rode LED in die staat voor buitenverlichting

else % Als het lichtniveau weer hoog is

writeDigitalPin(a, 'A1', 0); % Schakel de rode LED uit wanneer het lichtniveau weer hoog genoeg is

einde

als schakelaarv > 3 % Als de schakelaar is ingeschakeld

A = bestaan('m', 'var'); % Controleer op het bestaan van variabele 'm', dit zal initialiseren voor de while-lus en kan worden verbroken wanneer een menu-item wordt geselecteerd (daarom moet m wissen aan het begin van de code)

terwijl A==0 % Loop wordt uitgevoerd totdat variabele 'm' bestaat

menutext = 'Welke beveiligingsmodus wilt u invoeren?'; % Tekst voor het pop-upmenu voor beveiliging

keuzes = {'Thuis', 'Afwezig'}; % Keuzes voor het pop-upmenu voor beveiliging

m = menu(menutekst, keuzes); % Pop-upmenu voor beveiligingssysteemmodi

break % Zorgt ervoor dat de while-lus wordt verbroken, zodat het menu niet meerdere keren verschijnt

einde

if m == 1 % Als 'Thuis'-modus is geselecteerd

writeDigitalPin(a, bluep, 1); % Zet alleen blauw licht aan in de van kleur veranderende LED

writeDigitalPin(a, redp, 0);

writeDigitalPin(a, greenp, 0);

elseif m == 2 % Als de modus 'Afwezig' is geselecteerd

writeDigitalPin(a, bluep, 0);

writeDigitalPin(a, redp, 0);

writeDigitalPin(a, greenp, 1); % Schakel alleen het groene lampje in de van kleur veranderende LED in

if lightl2 <= 3 % Als het lichtniveau in de tweede fotoresistor laag is, wat duidt op beweging gedetecteerd door het beveiligingssysteem

sendmail (e-mails, subj, tekst); % Stuur een e-mail met de eerder gedefinieerde e-maileigenschappen writeDigitalPin(a, greenp, 0); % Knipperende rode kleur 2 keer aan en uit

writeDigitalPin(a, redp, 1);

pauze(0.3)

writeDigitalPin(a, redp, 0);

pauze(0.3)

writeDigitalPin(a, redp, 1);

pauze(0.3)

writeDigitalPin(a, redp, 0);

pauze(0.3)

writeDigitalPin(a, redp, 1); % Eindig met ononderbroken rood na het knipperen om aan te geven dat er beweging is totdat het lichtniveau weer omhoog gaat

msg2 = msgbox('Indringer gedetecteerd door beveiligingssysteem, er is een e-mail verzonden naar de huiseigenaren om hen te informeren.', 'WAARSCHUWING!'); % Berichtvenster om de gebruiker te informeren over beweging en om te informeren over de verzonden e-mail waitfor(msg2) % Wacht tot het berichtvenster sluit voordat u verdergaat

anders

writeDigitalPin(a, greenp, 1); % Zodra het lichtniveau weer is gestegen, wordt het weer groen

einde

einde

elseif switchv < 3,3% Als de schakelaar is uitgeschakeld

writeDigitalPin(a, bluep, 0); % Schakel de LED volledig uit om aan te geven dat het beveiligingssysteem is uitgeschakeld

writeDigitalPin(a, redp, 0);

writeDigitalPin(a, greenp, 0);

einde

einde

Aanbevolen: