Tartalomjegyzék:

EF230 intelligens otthon projekt: 7 lépés
EF230 intelligens otthon projekt: 7 lépés

Videó: EF230 intelligens otthon projekt: 7 lépés

Videó: EF230 intelligens otthon projekt: 7 lépés
Videó: В БЕЗДНУ - ранчо Скинвокер с Брэндоном Фугалом (последние сведения) 2024, November
Anonim
EF230 intelligens otthon projekt
EF230 intelligens otthon projekt

Szükséges alkatrészek és anyagok:

  • 1 Arduino MKR 1000
  • 3 Kenyeretábla
  • 2 mini fotocella
  • 1 NPN tranzisztor
  • 1 mini tápkapcsoló
  • 1 LED - RGB (4 érintkezős)
  • 1 LED (választott szín)
  • 1 dióda 1N4148
  • 1 10K ohmos ellenállás
  • 5 100 Ohm ellenállás
  • 1 TMP36 hőmérséklet -érzékelő
  • 1 DAGU 48: 1 arányú hajtóműves motor
  • 25 Jumper vezetékek
  • USB kábel
  • MATLAB program
  • SIK kísérleti útmutató az Arduino 101/Genuino 101 táblához - SIK kísérleti útmutató link

Ez a projekt részletezi az intelligens otthoni rendszer koncepcionális tervezését, amely adatokat használna fel a lakástulajdonosok energiafelhasználásának és biztonságának optimalizálásához. Tartalmaz egy fényérzékelőt a kültéri lámpák éjszakai bekapcsolásához, egy fényérzékelőt a biztonság érdekében, valamint egy hőmérséklet -érzékelőt és ventilátort a beltéri hőmérséklet szabályozásához.

Lépés: Fényérzékeny LED

  • A fényérzékeny LED -elrendezés az éjszaka kigyulladó ház kültéri lámpáit jelenti.
  • Amikor a mini fénysorompó csökkentett mennyiségű fényt érzékel, a LED kigyullad.
  • Egy okos otthon számára ennek energia- és biztonsági vonatkozásai vannak. Energiát takarít meg, ha nappal kikapcsolja a lámpákat, és fokozott biztonságot nyújt éjszaka.
  • A projekt ezen részének pontos bekötése és beállítása megtalálható a SIK kísérleti útmutató 7. kísérletében.

2. lépés: Mini tápkapcsoló

  • A kapcsoló az első lépés az intelligens otthon biztonsági folyamatában.
  • Amikor be van kapcsolva, a kapcsoló válaszol, és megkérdezi a felhasználót, hogy szeretne -e „otthoni” vagy „távol” módba lépni.
  • Ha az „Otthoni” mód van kiválasztva, a biztonság hatástalanítottnak minősül, de az „Idegen” mód kiválasztása élesíti a biztonsági rendszert.
  • A projekt ezen részének kábelezése megtalálható a kísérleti útmutató 6. kísérlete alatt. Az intelligens otthon szempontjából a 6. kísérletben található LED -eket és azok összekötő vezetékét nem kell belefoglalni.

3. lépés: Második fotocella

Második fotocella
Második fotocella
  • A második fotocella mozgásérzékelőként szolgál az intelligens otthon biztonsági rendszeréhez.
  • Az érzékelőt csak akkor használja, ha a rendszer „távol” üzemmódba van állítva az előző lépésben leírtak szerint.
  • Ha a fotocella csökkenti a kapott fény mennyiségét, akkor ezt a házon belüli mozgásként ismeri fel.
  • A projekt ezen részének beállítása megtalálható a SIK kísérleti útmutató 7. kísérletében. A vezetékekbe azonban csak a fotocellát és a csatlakozó vezetékeket kell beépíteni.

4. lépés: RGB LED

  • Az RGB LED -et a mini tápkapcsolóval és a második fotocellával együtt használják az intelligens otthon biztonsági rendszeréhez.
  • A három különböző szín indikátorként szolgál az okos otthon lakója számára.
  • Amikor a rendszer „Home” módba van állítva, a LED kéken világít. Amikor a rendszert „távol” üzemmódba állítja, a LED zöldre vált. Amikor a mozgásérzékelőként használt fotocella kiold, a fény pirosan villog.
  • Az RGB LED kábelezése megtalálható a SIK kísérleti útmutató 3. kísérletében.

5. lépés: Hőmérséklet -érzékelő

  • A hőmérséklet -érzékelő az intelligens otthon energiatakarékosságának fontos része.
  • A lakó a kívánt hőmérsékletet tudja megadni otthonának, amikor az intelligens otthon használatban van.
  • A hőmérséklet -érzékelő az, amellyel a rendszer tudja, hogy a tényleges hőmérséklet milyen messze van a kívánt hőmérséklettől.
  • A hőmérséklet -érzékelő beállítása megtalálható a SIK kísérleti útmutató 9. kísérletében.

6. lépés: DAGU hajtóműves motor

DAGU hajtóműves motor
DAGU hajtóműves motor
  • A motor lehetővé teszi az intelligens otthon számára, hogy a kívánt hőmérséklet és a hőmérséklet -érzékelő leolvasása alapján szabályozza a ház hőmérsékletét.
  • Az otthoni váltakozó áramú egységként működő motor különböző sebességgel forog attól függően, hogy a tényleges hőmérséklet mennyivel magasabb, mint a kívánt hőmérséklet. Minél nagyobb a különbség, annál gyorsabban forog a motor.
  • A motor bekötése megtalálható a kísérleti útmutatóban a 11. kísérlet alatt.

7. lépés: Kód

  • Az intelligens otthon kódja több felhasználói felületet tartalmaz, amelyek lehetővé teszik a lakó számára, hogy könnyen megértse működését és könnyen módosítsa a beállításokat.
  • Az intelligens otthon rendszerrel a lakó e -mailben értesítést kap, ha a mozgásérzékelő kikapcsol, amíg távol vannak.
  • Az egyetlen változtatás, amelyet meg kell tenni, az a feladó e -mail címére és a címzett e -mail címére vonatkozó információk beszúrása.

tiszta a; tiszta s; tiszta m; clc; minden bezárása; % Törölje az arduino és a szervo változókat, hogy minden alkalommal újradefiniálhassák őket, így a kód hatékonyan fog futni ("clear m" szükséges, hogy az egyik ciklus megfelelően működjön) a = arduino (); % Állítsa be az arduino változót

s = szervo (a, 'D6'); % Állítsa be a szervo változót

% Inicializálja az e -mail változókat a biztonsági rendszer figyelmeztető e -mailjeihez

e -mailek = {'címzett címének beszúrása'}; % E -mailek tömbje, amelyekre a biztonsági e -mailt el kell küldeni

% Az e -mail beállítások szükségesek ahhoz, hogy a Gmail leveleket küldjön

setpref ('Internet', 'E_mail', 'feladó e -mail címe');

setpref ('Internet', 'SMTP_felhasználónév', 'feladó felhasználóneve');

setpref ('Internet', 'SMTP_Password', 'feladó jelszava');

kellékek = 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 -mail tárgy és szöveg változók

subj = 'Riasztás otthonában';

text = 'Helló, ez az Ön intelligens otthoni biztonsági rendszere, amely arról tájékoztat, hogy mozgást észlelt otthonán kívül. Megtettük a szükséges intézkedéseket, és felvettük a kapcsolatot a hatóságokkal. Maradj biztonságban.';

míg igaz

prompt = {'Adja meg a kívánt otthoni hőmérsékletet (65F és 85F között):'}; % Felhasználói beviteli menü kérése

dlgtitle = 'Hőmérsékletválasztás'; % A felhasználói beviteli menü címe

halvány = [1 30]; % Méretek a felhasználói beviteli menüben

definput = {'72'}; % Alapértelmezett bemenet, amely a menü első megnyitásakor jelenik meg

tempsel_array = inputdlg (prompt, dlgtitle, dims, definput); % Felugró felhasználói beviteli menü, amely a megadott számot tömbbe menti

if ~ isempty (tempsel_array) % Ha a tömb NEM üres

tempsel_char = cell2mat (tempsel_array); % A tömb átalakítása karakterlánccá

tempsel = str2double (tempsel_char); % A karakterlánc konvertálása számokká

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Írja be a kiválasztott hőmérsékletet a ThingSpeak csatornájába

break % Break from while loop, így a menü nem fog többször felbukkanni

else % Ha a felhasználó a Mégse gombra kattint a hőmérséklet megadása helyett

msg1 = msgbox ('Nincs hőmérséklet kiválasztva, alapértelmezés szerint 85F', 'Figyelem!'); % Üzenet jelenik meg a felhasználónak a Mégse gombra kattintás után

várni (msg1); % Várja meg, amíg az üzenetmező bezáródik, mielőtt folytatná

tempsel = 85; % Állítsa be a hőmérsékletet az üzenetmezőben megadott értékre

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Írja be a kiválasztott hőmérsékletet a ThingSpeak csatornájára

break % Break from while loop, így a menü nem fog többször felbukkanni

vége

vége

míg igaz

chID = 745517; % ThingSpeak csatornaazonosító

writeKey = 'G9XOQTP8KOVSCT0N'; % Kulcs a ThingSpeak csatorna eléréséhez

% Inicializálja az érzékelőket az adatok lekéréséhez

tempread = readVoltage (a, 'A3'); % Olvassa le a hőmérséklet -érzékelő feszültségét

lightl1 = readVoltage (a, 'A2'); % A fényellenállás fényereje a piros LED felé

lightl2 = readVoltage (a, 'A5'); % Fényszint a biztonsági rendszerhez tartozó fotorezisztor számára

switchv = readVoltage (a, 'A0'); % Érték a kapcsolóhoz

% Konvertálja a hőmérséklet adatait feszültségről Fahrenheit fokra

tempC = (tempread - 0,5) * 100; % Konvertálja a feszültséget Celsius -féle hőmérsékletre

tempF = (tempC * 9/5) + 32; % Konvertálja a Celsius -fokban mért hőmérsékletet Fahrenheit -fokra

% Inicializálja a pin -számokat a többszínű LED -hez

redp = 'D9'; % Tű a piros LED -től

greenp = 'D10'; % Tű a zöld LED -től

bluep = 'D11'; % Tű a kék fényhez a LED -től

ha temppsel <tempF % Ha a kiválasztott hőmérséklet nagyobb, mint a szobahőmérséklet

writePosition (s, 1); % Servo elkezd mozogni

szünet (10) % A szervó 10 másodpercig forog tovább, jelezve, hogy az AC meghatározott idő után kikapcsol.

writePosition (s, 0); % Kapcsolja ki a ventilátort, ha a kódot ventilátor bekapcsolása nélkül szeretné folytatni

tempsel = 150; % Változtassa meg a hőmérséklet értékét, hogy a ventilátor kikapcsolása után kitörjön a hurokból, ismét csak a kód folytatása céljából

vége

ha lightl1 <= 3 % Ha az első fotorezisztor gyenge fényszintet észlel

writeDigitalPin (a, 'A1', 1); % Kapcsolja be a piros LED -et, amely a kültéri lámpákat jelzi

else % Ha a fényerő ismét magas

writeDigitalPin (a, 'A1', 0); % Kapcsolja ki a piros LED -et, ha a fényerő ismét elég magas

vége

ha kapcsolóv> 3 % Ha a kapcsoló be van kapcsolva

A = létezik ('m', 'var'); % Ellenőrizze az 'm' változó meglétét, ez inicializálja a while ciklusot, és lehetővé teszi, hogy megtörje a menüelem kiválasztásakor (ezért a m elején törölni kell a kódot)

míg A == 0 % Loop addig fut, amíg az „m” változó nem létezik

menutext = 'Melyik biztonsági módba szeretne belépni?'; % A biztonsági előugró menü szövege

options = {'Otthon', 'Távol'}; % A biztonsági előugró menü választási lehetőségei

m = menü (menutext, választási lehetőségek); % Előugró menü a biztonsági rendszermódokhoz

break % Biztosítja, hogy a while ciklus megszakadjon, így a menü nem jelenik meg többször

vége

ha m == 1 % Ha a 'Home' mód van kiválasztva

writeDigitalPin (a, bluep, 1); % Kapcsolja be a kék fényt a színváltó LED -ben

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

elseif m == 2 % Ha a "Távol" mód van kiválasztva

writeDigitalPin (a, bluep, 0);

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 1); % Csak a zöld fényt kapcsolja be a színváltó LED -ben

ha lightl2 <= 3 % Ha a fényerő a második fotorezisztorban alacsony, ami a biztonsági rendszer által észlelt mozgást jelzi

sendmail (e -mailek, subj, szöveg); % E -mail küldése a korábban meghatározott email tulajdonságokkal writeDigitalPin (a, greenp, 0); % Vörös vaku kétszer ki- és bekapcsolva

writeDigitalPin (a, redp, 1);

szünet (0,3)

writeDigitalPin (a, redp, 0);

szünet (0,3)

writeDigitalPin (a, redp, 1);

szünet (0,3)

writeDigitalPin (a, redp, 0);

szünet (0,3)

writeDigitalPin (a, redp, 1); % Villogás után fejezze be a pirosat, jelezve, hogy mozgás van, amíg a fényszint vissza nem emelkedik

msg2 = msgbox ('A biztonsági rendszer észlelte a betolakodót, e -mailt küldtünk a háztulajdonosoknak, hogy tájékoztassuk őket.', 'FIGYELEM!'); % Üzenetdoboz a felhasználó tájékoztatására a mozgásról és az elküldött e -mail értesítésére várni (msg2) % Várja meg, amíg az üzenetmező bezáródik, mielőtt folytatja

más

writeDigitalPin (a, greenp, 1); % Miután a fényerő ismét emelkedett, zöldre vált

vége

vége

elseif kapcsolóv <3,3 % Ha a kapcsoló ki van kapcsolva

writeDigitalPin (a, bluep, 0); % Kapcsolja ki teljesen a LED -et, hogy a biztonsági rendszer ki legyen kapcsolva

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

vége

vége

Ajánlott: