Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Tento návod vám pomôže vysvetliť, ako nastaviť a používať náš systém Smart Home pomocou softvéru Matlab a hardvéru Raspberry Pi. Na konci tohto návodu by ste mali byť schopní naplno používať náš produkt bez problémov!
Krok 1: Krok 1: Potrebné diely a materiál
- Malinový koláč
- Breadboard (x2)
- Pohybový snímač PIR
- LCD modul
- LED svetlo
- Kondenzátor
- Kamera Raspberry Pi
- Micro servomotor
- Obojstranné vodiče (20)
Krok 2: Krok 2: Vyhlásenie o probléme
Problémy, ktoré sa náš produkt pokúša vyriešiť, sú manuálne ovládanie osvetlenia, regulácia vnútornej teploty a energetická účinnosť. Zamerali sme sa na množstvo energie, ktoré priemerný domov spotrebuje, a chceli sme nájsť spôsoby, ako znížiť spotrebu energie. Nechané svetlá a zbytočné teploty termostatu spôsobujú veľmi vysokú nepotrebnú spotrebu energie. Svetlo sa aktivuje pohybom tam, kde sa vypne, keď je miestnosť prázdna, a termostat sa nastaví na teplotu šetrnú k životnému prostrediu na základe odčítania vonkajšej teploty.
Krok 3: Krok 3: Konfigurácia snímača pohybu
Senzor pohybu je pripojený k napájaciemu kolíku 3,3 V, uzemňovaciemu a digitálnemu kolíku podľa vášho výberu. Sú pripojené k portom VCC, GND a OUT na snímači pohybu. Senzor pohybu detekuje, keď je niekto blízko, a aktivuje LED diódu, čím signalizuje, že sú svetlá zapnuté. Akonáhle už pohyb nie je detekovaný, LED dióda sa sama vypne. Kód je nasledujúci:
kým je to pravda
motionDetected = readDigitalPin (rpi, 3);
ak je detekovaný pohyb == 1
writeDigitalPin (rpi, 16, 1)
inak
writeDigitalPin (rpi, 16, 0)
koniec
koniec
Krok 4: Krok 4: Displej modulu LCD
Displej LCD preberá údaje o teplote z aktuálnych informácií o počasí poskytovaných z internetu. LCD modul potom zobrazí aktuálnu teplotu. V Matlabe sa teplota odčíta a potom prejde slučkou if, aby sa určilo, ako veľmi je potrebné upraviť nastavenie teploty v domácnosti. Kód je nasledujúci:
url = 'https://forecast.weather.gov/MapClick.php? lat = 35,9606 & lon = -83,9207 & FcstType = json';
data = webread (url);
a = data.currentobservation. Temp;
fprintf ('Vonkajšia teplota je %s / n', a)
x = str2num (a);
ak x> 80
fprintf („Otočte termostat o 15 stupňov nadol“)
writeDigitalPin (rpi, 26, 1) %zapne svetlá
elseif x> 75 && x <80
fprintf ('Vypnúť termostat / n')
writeDigitalPin (rpi, 26, 1) %zapne svetlá
inak x 55
fprintf ('Otočte termostat o 10 stupňov / n')
writeDigitalPin (rpi, 26, 0) %vypne svetlá
inak x 45
fprintf ('Otočte termostat o 20 stupňov / n')
writeDigitalPin (rpi, 26, 0) %vypne svetlá
inak x 40
fprintf ('Otočte termostat o 25 stupňov / n')
writeDigitalPin (rpi, 26, 0) %vypne svetlá
inak x 30
fprintf ('Otočte termostat o 35 stupňov / n')
inak
fprintf ('Otočte termostat o 65 stupňov / n')
koniec
Krok 5: Krok 5: Servo modul motora
Servo modul motora má predstavovať schopnosť otvárať a zatvárať žalúzie. Keď je potrebné dom ochladiť, žalúzie sa zatiahnu, aby dovnútra vniklo menej tepla. Keď je potrebné dom zahriať, žalúzie sa otvoria, aby sa rýchlejšie zahriali. Servo rozhoduje o tom, čo má urobiť, a to tak, že dostane vstup od používateľa v interakcii s ponukou možností. Kód motora je nasledujúci:
s = servo (rpi, 3)
writeDigitalPin (rpi, 4, 1)
writePosition (s, 45)
temp_sys = menu ('Ako sa cítite?') %nastavenia teploty
ak je temp_sys == 1 %horúce
writeDigitalPin (rpi, 26, 1) %zapne svetlá
writePosition (s, 0) %otáča motor CW/CCW
zatiahnite žalúzie, vypnite svetlá
elseif temp_sys == 2 %za studena
writeDigitalPin (rpi, 26, 0) %vypne svetlá
writePosition (s, 180) %otáča motor Vpravo/Vľavo
otvorte žalúzie, zapnite svetlá
elseif temp_sys == 3 %tak akurát
fprintf ('Udržiavanie teplotného stavu. / n')
koniec
Krok 6: Krok 6: Kamera so snímačom pohybu
Kamera so snímačom pohybu urobí fotografiu tých, ktorí vstúpia alebo vyjdú z miestnosti. Vybrali sme to ako pridanú funkciu zabezpečenia pre tých, ktorí sú zvedaví, kto bol v ich dome. Keď snímač pohybu detekuje pohyb, kód Matlab povie kamere, aby urobila obrázok a zobrazila ho. Kód je nasledujúci:
i = 0
jasná kamera
cam = kamera (rpi);
pričom i == 0
momentka (kamera); %čírej vyrovnávacej pamäte obrazu
img = snapshot (kamera);
imagesc (img);
koniec