Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Tento návod vám pomůže vysvětlit, jak nastavit a používat náš systém Smart Home pomocí softwaru Matlab a hardwaru Raspberry Pi. Na konci tohoto pokynu byste měli být schopni plně snadno používat náš produkt!
Krok 1: Krok 1: Potřebné součásti a materiály
- Raspberry Pi
- Breadboard (x2)
- Pohybový senzor PIR
- LCD modul
- LED světlo
- Kondenzátor
- Fotoaparát Raspberry Pi
- Micro servomotor
- Oboustranné vodiče (20)
Krok 2: Krok 2: Prohlášení o problému
Problémy, které se náš produkt snaží řešit, jsou ruční ovládání osvětlení, regulace vnitřní teploty a energetická účinnost. Zaměřili jsme se na množství energie, které průměrný domov spotřebuje, a chtěli jsme najít způsoby, jak spotřebu energie snížit. Ponechání zapnutých světel a zbytečné teploty termostatu způsobují velmi vysokou zbytečnou spotřebu energie. Světlo se aktivuje pohybem tam, kde se vypnou, když je místnost prázdná, a termostat se přizpůsobí ekologicky účinné teplotě na základě odečtu venkovní teploty.
Krok 3: Krok 3: Konfigurace snímače pohybu
Senzor pohybu je připojen k napájecímu kolíku 3,3 V, zemnicímu kolíku a digitálnímu kolíku podle vašeho výběru. Jsou připojeny k portům VCC, GND a OUT na pohybovém senzoru. Senzor pohybu detekuje, když je někdo poblíž, a aktivuje LED diodu, což znamená, že jsou světla zapnutá. Jakmile pohyb již není detekován, LED se sama vypne. Kód je následující:
zatímco pravda
motionDetected = readDigitalPin (rpi, 3);
if motionDetected == 1
writeDigitalPin (rpi, 16, 1)
jiný
writeDigitalPin (rpi, 16, 0)
konec
konec
Krok 4: Krok 4: Zobrazení modulu LCD
LCD přebírá údaje o teplotě z aktuálních informací o počasí poskytovaných z internetu. LCD modul poté zobrazí aktuální teplotu. V Matlabu se teplota odečte a poté prochází smyčkou if, aby se určilo, jak moc upravit nastavení teploty v domácnosti. Kód je následující:
url = 'https://forecast.weather.gov/MapClick.php? lat = 35,9606 & lon = -83,9207 & FcstType = json';
data = webread (url);
a = data.currentobservation. Temp;
fprintf ('Venkovní teplota je %s / n', a)
x = str2num (a);
pokud x> 80
fprintf („Otočte termostat o 15 stupňů dolů“)
writeDigitalPin (rpi, 26, 1) %zapne světla
elseif x> 75 && x <80
fprintf ('Vypnout termostat / n')
writeDigitalPin (rpi, 26, 1) %zapne světla
jinak x 55
fprintf ('Otočte termostat o 10 stupňů / n')
writeDigitalPin (rpi, 26, 0) %vypne světla
jinak x 45
fprintf ('Otočte termostat o 20 stupňů / n')
writeDigitalPin (rpi, 26, 0) %vypne světla
jinak x 40
fprintf ('Otočte termostat o 25 stupňů / n')
writeDigitalPin (rpi, 26, 0) %vypne světla
jinak x 30
fprintf ('Otočte termostat o 35 stupňů / n')
jiný
fprintf ('Otočte termostat až o 65 stupňů / n')
konec
Krok 5: Krok 5: Servo modul motoru
Servo modul motoru má představovat schopnost otevírat a zatahovat žaluzie. Když je třeba dům ochladit, rolety se zavřou, aby dovnitř pronikalo méně tepla. Když je třeba dům zahřát, rolety se otevřou, aby se rychleji zahřály. Servo rozhoduje o tom, co má dělat, přijímáním vstupu od uživatele, který interaguje s nabídkou možností. Kód pro motor je následující:
s = servo (rpi, 3)
writeDigitalPin (rpi, 4, 1)
writePosition (s, 45)
temp_sys = menu ('Jak se cítíte?') %nastavení teploty
pokud temp_sys == 1 %horké
writeDigitalPin (rpi, 26, 1) %zapne světla
writePosition (s, 0) %otáčí motor CW/CCW
zatáhněte žaluzie, vypněte světla
elseif temp_sys == 2 %za studena
writeDigitalPin (rpi, 26, 0) %vypne světla
writePosition (s, 180) %otáčí motor CCW/CW
otevřete žaluzie, zapněte světla
elseif temp_sys == 3 %tak akorát
fprintf ('Udržování teplotního stavu. / n')
konec
Krok 6: Krok 6: Kamera se snímačem pohybu
Kamera se snímačem pohybu pořídí fotografii těch, kteří vstoupí nebo vyjdou z místnosti. Vybrali jsme to jako přidanou bezpečnostní funkci pro ty, kteří jsou zvědaví, kdo byl v jejich domě. Když snímač pohybu detekuje pohyb, kód Matlab řekne kameře, aby pořídila snímek a zobrazila jej. Kód je následující:
i = 0
jasná kamera
cam = kamera (rpi);
zatímco i == 0
snímek (kamera); %vyrovnávací paměti pro jasný obraz
img = snapshot (kamera);
imagesc (img);
konec