INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
Onderdele en materiaal benodig:
- 1 Arduino MKR 1000
- 3 Broodplanke
- 2 mini fotoselle
- 1 NPN -transistors
- 1 mini -skakelaar
- 1 LED - RGB (4 tande)
- 1 LED (kleur van u keuse)
- 1 Diode 1N4148
- 1 10K Ohm weerstande
- Weerstand van 5 100 Ohm
- 1 Temperatuursensor TMP36
- 1 DAGU 48: 1 Verhouding ratmotor
- 25 Springdrade
- USB koord
- MATLAB -program
-
SIK -eksperimentgids vir die Arduino 101/Genuino 101 -bord - skakel SIK -eksperimentgids
Hierdie projek beskryf die konseptuele ontwerp van 'n slimhuisstelsel wat data sal gebruik om huiseienaars te help om hul energieverbruik en sekuriteit te optimaliseer. Dit bevat 'n ligsensor om snags buiteligte aan te skakel, 'n ligsensor vir sekuriteit, en 'n temperatuursensor en waaier vir binnentemperatuurbeheer.
Stap 1: Liggevoelige LED
- Die liggevoelige LED -opstelling is bedoel om die buiteligte by 'n huis wat snags aanskyn, voor te stel.
- As die minifotosel 'n verminderde hoeveelheid lig voel, sal die LED brand.
- Vir 'n slim huis het dit energie- en sekuriteitsimplikasies. Dit bespaar energie deur die ligte gedurende die dag uit te laat en verhoogde veiligheid in die nag.
- Die presiese bedrading en opset vir hierdie deel van die projek kan gevind word onder eksperiment 7 in die SIK -eksperimentgids.
Stap 2: Mini -kragskakelaar
- Die skakelaar is die eerste stap in die veiligheidsproses van die slimhuis.
- As dit aangeskakel is, sal die skakelaar 'n reaksie begin wat die gebruiker vra of hy 'tuis' of 'weg' wil afskakel.
- As die 'tuis' -modus gekies word, word die sekuriteit as ontwapen beskou, maar as u' weg '-modus kies, word die sekuriteitstelsel geaktiveer.
- Die bedrading vir hierdie gedeelte van die projek kan gevind word onder eksperiment 6 in die eksperimentgids. Vir die doeleindes van die slimhuis hoef die LED's en hul verbindingsdrade in eksperiment 6 nie ingesluit te word nie.
Stap 3: Tweede fotosel
- Die tweede fotosel dien as bewegingsensor vir die sekuriteitstelsel van die slimhuis.
- Die sensor word slegs gebruik as die stelsel in die 'Weg' -modus is, soos beskryf in die vorige stap.
- As die fotosel 'n afname in die hoeveelheid lig ondervind, herken dit dit as beweging binne -in die huis.
- Die opset vir hierdie deel van die projek kan gevind word onder eksperiment 7 in die SIK -eksperimentgids. Slegs die fotosel en sy verbindingsdrade moet egter by die bedrading ingesluit word.
Stap 4: RGB LED
- Die RGB LED word saam met die mini -skakelaar en die tweede fotosel vir die sekuriteitstelsel van die slimhuis gebruik.
- Die drie verskillende kleure word gebruik as aanwysers vir die slimhuisinwoner.
- As die stelsel in die 'huis' -modus geplaas word, word die LED blou. As die stelsel in die 'Weg' -modus geplaas word, word die LED groen. As die fotosel wat as bewegingsensor gebruik word, gestruikel word, flikker die lig rooi.
- Die bedrading vir die RGB LED kan gevind word in eksperiment 3 van die SIK -eksperimentgids.
Stap 5: Temperatuursensor
- Die temperatuursensor is 'n belangrike deel van die besparing van energie in die slimhuis.
- Die inwoner kan die gewenste temperatuur vir hul huis invoer wanneer die slimhuis gebruik word.
- Temperatuursensor is hoe die stelsel weet hoe ver die werklike temperatuur van die gewenste temperatuur is.
- Die opstelling van die temperatuursensor kan gevind word in eksperiment 9 van die SIK -eksperimentgids.
Stap 6: DAGU -ratmotor
- Met die motor kan die slimhuis die temperatuur in die huis reguleer op grond van die gewenste temperatuur en die lesings van die temperatuursensor.
- As 'n AC -eenheid in die huis, sal die motor teen verskillende snelhede draai, gebaseer op hoeveel hoër die werklike temperatuur is as die gewenste temperatuur. Hoe groter die verskil, hoe vinniger draai die motor.
- Die bedrading vir die motor kan gevind word in die eksperimentgids onder eksperiment 11.
Stap 7: Kode
- Die kode vir die slimhuis bevat veelvuldige gebruikerskoppelvlakke waarmee die inwoner maklik kan verstaan hoe dit werk en die instellings maklik kan verander.
- Met die slimhuisstelsel sal die inwoner 'n waarskuwing ontvang en e -pos stuur as die bewegingsensor afgeskakel word terwyl hulle weg is.
- Die enigste verandering wat aangebring moet word, is om die inligting vir die e -pos van die sender en die e -posadres van die ontvanger in te voeg.
duidelik a; duidelik s; duidelik m; clc; sluit almal; Maak arduino- en servo -veranderlikes skoon, sodat hulle elke keer herdefinieer kan word, sodat die kode effektief sal werk ('clear m' is nodig vir een van die terwyl die lusse behoorlik funksioneer) a = arduino (); % Stel die arduino -veranderlike in
s = servo (a, 'D6'); % Stel die servo -veranderlike in
% Inisialiseer e -pos veranderlikes vir e -pos waarskuwings e -pos
e -posse = {'voeg ontvangeradres in'}; Versameling e -posse om die e -pos na sekuriteit te stuur
% Instellings vir e -posvoorkeure wat nodig is vir die gebruik van 'n Gmail om e -pos vanaf te stuur
setpref ('Internet', 'E_mail', 'sender se e -posadres');
setpref ('Internet', 'SMTP_Username', 'sender's username');
setpref ('Internet', 'SMTP_Password', 'sender se wagwoord');
rekwisiete = 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 -pos onderwerp en teks veranderlikes
subj = 'Indringerwaarskuwing by u huis';
text = 'Hallo, dit is u Smart Home -sekuriteitstelsel wat u inlig dat daar beweging buite u huis opgemerk is. Ons het die nodige maatreëls getref en vir u die owerhede gekontak. Bly veilig.';
terwyl dit waar is
prompt = {'Voer die gewenste huistemperatuur in (tussen 65F en 85F):'}; % Vra vir gebruikersinvoer -kieslys
dlgtitle = 'Temperatuurkeuse'; % Titel vir gebruikersinvoer -kieslys
verdof = [1 30]; % Afmetings vir gebruikersinvoer -kieslys
definput = {'72'}; % Standaardinvoer wat verskyn wanneer die spyskaart die eerste keer oopgemaak word
tempsel_array = inputdlg (prompt, dlgtitle, dim, definput); Opspring -gebruikersinvoer -kieslys wat die ingevoerde nommer in 'n skikking sal stoor
as ~ isempty (tempsel_array) % As die skikking NIE leeg is nie
tempsel_char = cell2mat (tempsel_array); Skakel die skikking om na 'n tekenreeks
tempsel = str2double (tempsel_char); Skakel die tekenreeks om na getalle
thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Skryf die gekose temperatuur na u ThingSpeak -kanaal
break % Breek weg van die while lus sodat die spyskaart nie meer as een keer verskyn nie
anders % As die gebruiker klik, kanselleer in plaas daarvan om 'n temperatuur in te voer
msg1 = msgbox ('Geen temperatuur gekies nie, standaard 85F', 'Waarskuwing!'); % Boodskap word aan die gebruiker gewys nadat u op Annuleer geklik het
wag vir (msg1); % Wag totdat die boodskapkassie toemaak voordat u verder gaan
tempsel = 85; Stel die temperatuur op wat in die boodskapkassie staan
thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Skryf die gekose temperatuur na u ThingSpeak -kanaal
break % Breek weg van die while lus sodat die spyskaart nie meer as een keer verskyn nie
einde
einde
terwyl dit waar is
chID = 745517; % ThingSpeak -kanaal -ID
writeKey = 'G9XOQTP8KOVSCT0N'; % Sleutel vir toegang tot die ThingSpeak -kanaal
% Initialiseer sensors om data te gaan haal
tempread = readVoltage (a, 'A3'); % Lees die spanning van die temperatuursensor
lightl1 = readVoltage (a, 'A2'); % Ligvlak vir die fotoresistor wat na die rooi LED gaan
lightl2 = readVoltage (a, 'A5'); % Ligvlak vir die fotoresistor wat na die sekuriteitstelsel gaan
switchv = readVoltage (a, 'A0'); % Waarde vir die skakelaar
Skakel die temperatuurdata om van spanning na grade Fahrenheit
tempC = (tempread - 0.5) * 100; % Skakel spanning na temperatuur in Celsius om
tempF = (tempC * 9/5) + 32; Skakel temperatuur in Celsius om na temperatuur in Fahrenheit
% Begin die speldnommers vir die veelkleurige LED
redp = 'D9'; % Speld vir rooi lig van LED
greenp = 'D10'; % Speld vir groen lig van LED
bluep = 'D11'; % Speld vir blou lig van LED
as tempsel <tempF % As die gekose temperatuur groter is as die kamertemperatuur
skryfPosisie (s, 1); % Servo sal begin beweeg
pouse (10) % Servo sal 10 sekondes aanhou draai om aan te dui dat die wisselstroom na 'n bepaalde tyd sou uitskakel
skryfPosisie (s, 0); % Skakel waaier af om kode voort te sit sonder waaier aan
tempsel = 150; Verander die temperatuurwaarde om uit die lus te breek nadat die waaier afgeskakel is, weer net om die kode voort te sit
einde
if lightl1 <= 3 % As die eerste fotoresistor 'n lae ligvlak waarneem
writeDigitalPin (a, 'A1', 1); % Skakel rooi LED aan wat buiteligte voorstel
anders % As die ligvlak weer hoog is
writeDigitalPin (a, 'A1', 0); % Skakel rooi LED uit as die ligvlak weer hoog genoeg is
einde
as switchv> 3 % As die skakelaar aangeskakel is
A = bestaan ('m', 'var'); % Kontroleer of die veranderlike 'm' bestaan, dit sal vir die while lus inisialiseer en dit kan laat breek as 'n menu -item gekies word (daarom moet duidelike m aan die begin van die kode gedoen word)
terwyl A == 0 % lus sal uitgevoer word totdat veranderlike 'm' bestaan
menutext = 'Watter sekuriteitsmodus wil u binnegaan?'; % Teks vir die pop -up menu vir sekuriteit
keuses = {'Tuis', 'Weg'}; % Keuses vir die pop -up menu vir sekuriteit
m = spyskaart (menuteks, keuses); Opspringkieslys vir sekuriteitstelselmodusse
break % Verseker dat die while -lus gebreek word, sodat die spyskaart nie meer as een keer verskyn nie
einde
as m == 1 % As die 'tuis' -modus gekies is
writeDigitalPin (a, bluep, 1); Skakel net blou lig aan in die kleurveranderende LED
writeDigitalPin (a, redp, 0);
writeDigitalPin (a, greenp, 0);
elseif m == 2 % As 'Weg' -modus gekies is
writeDigitalPin (a, bluep, 0);
writeDigitalPin (a, redp, 0);
writeDigitalPin (a, greenp, 1); Skakel net die groen lig in die kleurveranderende LED aan
as lightl2 <= 3 % As die ligvlak in die tweede fotoresistor laag is, verteenwoordig dit beweging wat deur die sekuriteitstelsel opgespoor word
sendmail (e -pos, subj, teks); % Stuur 'n e -pos met die voorheen gedefinieerde e -pos eienskappe writeDigitalPin (a, greenp, 0); % Flits rooi kleur 2 keer aan en af
writeDigitalPin (a, redp, 1);
pouse (0.3)
writeDigitalPin (a, redp, 0);
pouse (0.3)
writeDigitalPin (a, redp, 1);
pouse (0.3)
writeDigitalPin (a, redp, 0);
pouse (0.3)
writeDigitalPin (a, redp, 1); % Voltooi met soliede rooi nadat dit geflits is om aan te toon dat daar beweging is totdat die ligvlak weer styg
msg2 = msgbox ('Inbreker opgespoor deur die sekuriteitstelsel, 'n e -pos is aan die huiseienaars gestuur om hulle in kennis te stel.', 'WAARSKUWING!'); % Boodskapsboks om die gebruiker in kennis te stel van beweging en om in te lig oor die e -pos wat gestuur is (msg2) % Wag totdat die boodskapkassie toemaak voordat u verder gaan
anders
writeDigitalPin (a, greenp, 1); % Sodra die ligvlak weer gestyg het, word dit weer groen
einde
einde
elseif switchv <3.3 % As die skakelaar afgeskakel is
writeDigitalPin (a, bluep, 0); % Skakel die LED heeltemal uit om te wys dat die sekuriteitstelsel af is
writeDigitalPin (a, redp, 0);
writeDigitalPin (a, greenp, 0);
einde
einde