Spisu treści:

Projekt inteligentnego domu EF230: 7 kroków
Projekt inteligentnego domu EF230: 7 kroków

Wideo: Projekt inteligentnego domu EF230: 7 kroków

Wideo: Projekt inteligentnego domu EF230: 7 kroków
Wideo: Poradnik Smart Home - Projektujemy rozdzielnicę do Inteligentnego Domu - MUSISZ wykonać projekt !? 2024, Listopad
Anonim
Projekt inteligentnego domu EF230
Projekt inteligentnego domu EF230

Potrzebne części i materiały:

  • 1 Arduino MKR 1000
  • 3 deski do krojenia chleba
  • 2 mini fotokomórki
  • 1 tranzystory NPN
  • 1 mini wyłącznik zasilania
  • 1 LED – RGB (4 bolce)
  • 1 dioda LED (kolor do wyboru)
  • 1 dioda 1N4148
  • 1 rezystory 10K Ohm
  • Rezystor 5 100 Ohm
  • 1 czujnik temperatury TMP36
  • 1 motoreduktor DAGU o przełożeniu 48:1
  • 25 przewodów połączeniowych
  • Przewód USB
  • Program MATLAB
  • Przewodnik po eksperymentach SIK dla płytki Arduino 101/Genuino 101 - Przewodnik po eksperymentach SIK

Ten projekt szczegółowo przedstawia projekt koncepcyjny systemu inteligentnego domu, który wykorzystuje dane, aby pomóc właścicielom domów zoptymalizować zużycie energii i bezpieczeństwo. Zawiera czujnik światła do włączania oświetlenia zewnętrznego w nocy, czujnik światła dla bezpieczeństwa oraz czujnik temperatury i wentylator do kontroli temperatury w pomieszczeniu.

Krok 1: światłoczuła dioda LED

  • Konfiguracja LED czuła na światło ma reprezentować światła zewnętrzne w domu, które pojawiają się w nocy.
  • Gdy mini fotokomórka wykryje zmniejszoną ilość światła, zapali się dioda LED.
  • W przypadku inteligentnego domu ma to wpływ na energię i bezpieczeństwo. Oszczędzi energię, wyłączając światła w ciągu dnia i zapewni większe bezpieczeństwo w nocy.
  • Dokładne okablowanie i konfigurację dla tej części projektu można znaleźć w eksperymencie 7 w SIK Experiment Guide.

Krok 2: Mini wyłącznik zasilania

  • Przełącznik to pierwszy krok w procesie bezpieczeństwa inteligentnego domu.
  • Po włączeniu przełącznik zainicjuje odpowiedź, pytając użytkownika, czy chce przejść do trybu „Dom” czy „Away”.
  • W przypadku wybrania trybu „Dom” ochrona jest uważana za rozbrojoną, ale wybranie trybu „Poza domem” spowoduje uzbrojenie systemu bezpieczeństwa.
  • Okablowanie dla tej części projektu można znaleźć w eksperymencie 6 w Przewodniku po eksperymencie. Na potrzeby inteligentnego domu diody LED i ich przewody połączeniowe znalezione w eksperymencie 6 nie muszą być uwzględniane.

Krok 3: Druga fotokomórka

Druga fotokomórka
Druga fotokomórka
  • Druga fotokomórka służy jako czujnik ruchu do systemu bezpieczeństwa inteligentnego domu.
  • Czujnik jest używany tylko wtedy, gdy system znajduje się w trybie „Poza domem”, jak opisano w poprzednim kroku.
  • Jeśli fotokomórka odczuwa spadek ilości otrzymywanego światła, rozpoznaje to jako ruch wewnątrz domu.
  • Konfigurację dla tej części projektu można znaleźć w eksperymencie 7 w SIK Experiment Guide. Jednak w okablowaniu musi znajdować się tylko fotokomórka i jej przewody łączące.

Krok 4: Dioda LED RGB

  • Dioda LED RGB jest używana w połączeniu z mini wyłącznikiem zasilania i drugą fotokomórką w systemie bezpieczeństwa inteligentnego domu.
  • Trzy różne kolory są używane jako wskaźniki dla mieszkańca inteligentnego domu.
  • Gdy system znajduje się w trybie „Dom”, dioda LED zmienia kolor na niebieski. Gdy system znajduje się w trybie „Poza domem”, dioda LED zmienia kolor na zielony. Gdy fotokomórka używana jako czujnik ruchu zostanie wyzwolona, światło miga na czerwono.
  • Okablowanie diody LED RGB można znaleźć w eksperymencie 3 przewodnika eksperymentów SIK.

Krok 5: Czujnik temperatury

  • Czujnik temperatury jest głównym elementem oszczędzania energii w inteligentnym domu.
  • Mieszkaniec może wprowadzić żądaną temperaturę dla swojego domu, gdy inteligentny dom jest w użyciu.
  • Dzięki czujnikowi temperatury system wie, jak daleko rzeczywista temperatura różni się od temperatury pożądanej.
  • Konfigurację czujnika temperatury można znaleźć w eksperymencie 9 instrukcji SIK Experiment Guide.

Krok 6: Motoreduktor DAGU

Motoreduktor DAGU
Motoreduktor DAGU
  • Silnik pozwala inteligentnemu domowi regulować temperaturę w domu w oparciu o żądaną temperaturę i odczyty czujnika temperatury.
  • Działając jako jednostka klimatyzacyjna w domu, silnik będzie się obracał z różnymi prędkościami w zależności od tego, o ile wyższa jest rzeczywista temperatura niż temperatura pożądana. Im większa różnica, tym szybciej silnik się kręci.
  • Okablowanie silnika można znaleźć w Podręczniku eksperymentów w eksperymencie 11.

Krok 7: Kod

  • Kod inteligentnego domu zawiera wiele interfejsów użytkownika, które pozwalają mieszkańcom łatwo zrozumieć, jak to działa i łatwo zmienić ustawienia.
  • Dzięki systemowi inteligentnego domu mieszkaniec otrzyma powiadomienie e-mailem, jeśli czujnik ruchu zostanie uruchomiony podczas jego nieobecności.
  • Jedyną zmianą, którą należy wprowadzić, jest wstawienie informacji dotyczących adresu e-mail nadawcy i adresu e-mail odbiorcy.

jasne; jasne s; jasne m; kl; zamknij wszystko; % Wyczyść zmienne arduino i servo, aby można je było ponownie zdefiniować za każdym razem, aby kod działał efektywnie ("clear m" jest konieczne, aby jedna z pętli while działała poprawnie)a = arduino(); % Ustaw zmienną arduino

s = serwo(a, 'D6'); % Ustaw zmienną serwo

% Zainicjuj zmienne e-mail dla e-maila ostrzegawczego systemu bezpieczeństwa

emails = {'wstaw adres odbiorcy'}; % Tablica wiadomości e-mail, na które ma zostać wysłany e-mail bezpieczeństwa

% Ustawienia preferencji poczty e-mail niezbędne do korzystania z Gmaila do wysyłania poczty z

setpref('Internet', 'E_mail', 'Adres e-mail nadawcy');

setpref('Internet', 'SMTP_Nazwa użytkownika', 'Nazwa użytkownika nadawcy');

setpref('Internet', 'SMTP_Password', 'Hasło nadawcy');

rekwizyty = java.lang. System.getProperties;

props.setProperty('mail.smtp.auth', 'prawda');

props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty('mail.smtp.socketFactory.port', '465');

% Zmienne tematu i tekstu wiadomości e-mail

subj = 'Powiadomienie o intruzach w Twoim domu';

text = 'Witam, to system bezpieczeństwa Smart Home, który informuje o wykryciu ruchu poza domem. Podjęliśmy dla Ciebie niezbędne środki i skontaktowaliśmy się z władzami. Bądź bezpieczny.';

podczas gdy prawda

monit = {'Wprowadź żądaną temperaturę w domu (między 65F a 85F):'}; % Pytaj o menu wprowadzania danych przez użytkownika

dlgtitle = 'Wybór temperatury'; % Tytuł menu wprowadzania danych przez użytkownika

wymiary = [1 30]; % Wymiary dla menu wprowadzania danych przez użytkownika

definicja = {'72'}; % Domyślne wejście, które pojawia się po pierwszym otwarciu menu

tablica_tempsel = inputdlg(monit, dlgtitle, dims, definput); % Wyskakujące menu wprowadzania użytkownika, które zapisze wprowadzoną liczbę w tablicy

if ~isempty(tempsel_array) % Jeśli tablica NIE jest pusta

tempsel_char = cell2mat(tablica_tempsel); % Konwertuj tablicę na ciąg znaków

tempsel = str2double(tempsel_char); % Zamień ciąg znaków na liczby

thingSpeakWrite(chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Zapisz wybraną temperaturę do swojego kanału ThingSpeak

break % Przerwa od pętli while, aby menu nie pojawiało się wiele razy

else % Jeśli użytkownik kliknie anuluj zamiast wpisywać temperaturę

msg1 = msgbox('Nie wybrano temperatury, domyślnie 85F', 'Ostrzeżenie!'); % Wiadomość wyświetlana użytkownikowi po kliknięciu anuluj

czekaj na(msg1); % Przed kontynuowaniem poczekaj na zamknięcie okna wiadomości

tempsel = 85; % Ustaw temperaturę na taką, jaka została podana w oknie komunikatu

thingSpeakWrite(chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Zapisz wybraną temperaturę do swojego kanału ThingSpeak

break % Przerwa od pętli while, aby menu nie pojawiało się wiele razy

kończyć się

kończyć się

podczas gdy prawda

chID = 745517; % Identyfikator kanału ThingSpeak

writeKey = 'G9XOQTP8KOVSCT0N'; % Klucz dostępu do kanału ThingSpeak

% Inicjalizuj czujniki w celu pobrania danych

tempread = odczytaj napięcie(a, 'A3'); % Odczytaj napięcie czujnika temperatury

lightl1 = odczytaj napięcie(a, 'A2'); % Poziom światła dla fotorezystora przechodzący na czerwoną diodę LED

lightl2 = odczytaj napięcie(a, 'A5'); % Poziom światła dla fotorezystora przechodzącego do systemu bezpieczeństwa

switchv = odczytaj napięcie(a, 'A0'); % Wartość przełącznika

% Przekształć dane temperatury z napięcia na stopnie Fahrenheita

tempC = (tempread - 0.5) * 100; % Konwersja napięcia na temperaturę w stopniach Celsjusza

tempF = (tempC * 9/5) + 32; % Przelicz temperaturę w stopniach Celsjusza na temperaturę w stopniach Fahrenheita

% Zainicjuj numery pinów dla wielokolorowej diody LED

redp = 'D9'; % Pin dla czerwonego światła z LED

zielonyp = 'D10'; % Pin dla zielonego światła z diody LED

bluep = „D11”; % Pin dla niebieskiego światła z diody LED

if tempsel < tempF % Jeśli wybrana temperatura jest wyższa niż temperatura w pomieszczeniu

pozycja(s, 1); % Servo zacznie się poruszać

pauza(10) % Serwo będzie się kręcić przez 10 sekund, aby wskazać, że AC wyłączy się po określonym czasie

pozycja(y, 0); % Wyłącz wentylator w celu kontynuowania kodu bez włączonego wentylatora

tempsel = 150; % Zmień wartość temperatury, aby wyjść z pętli po wyłączeniu wentylatora, ponownie tylko w celu kontynuowania kodu

kończyć się

if lightl1 <= 3 % Jeśli pierwszy fotorezystor wykryje niski poziom światła

writeDigitalPin(a, 'A1', 1); % Włącz czerwoną diodę LED, która reprezentuje oświetlenie zewnętrzne

else % Jeśli poziom światła jest znowu wysoki

writeDigitalPin(a, 'A1', 0); % Wyłącz czerwoną diodę LED, gdy poziom światła będzie ponownie wystarczająco wysoki

kończyć się

jeśli przełącznikv > 3 % Jeśli przełącznik jest włączony

A = istnieje('m', 'zmienna'); % Sprawdź, czy istnieje zmienna 'm', zainicjuje to pętlę while i pozwoli na jej przerwanie po wybraniu elementu menu (dlatego należy wyczyścić m na początku kodu)

podczas gdy A==0 % Pętla będzie wykonywana, dopóki nie będzie zmiennej 'm'

menutext = 'W który tryb bezpieczeństwa chcesz wejść?'; % Tekst dla wyskakującego menu bezpieczeństwa

wybory = {'Dom', 'Poza domem'}; % wyborów dla wyskakującego menu bezpieczeństwa

m = menu(tekst menu, wybory); % Menu podręczne dla trybów systemu bezpieczeństwa

break % Zapewnia, że pętla while jest przerwana, więc menu nie będzie się pojawiać wielokrotnie

kończyć się

if m == 1 % Jeśli wybrano tryb „Dom”

writeDigitalPin(a, bluep, 1); % Włącz tylko niebieskie światło w zmieniającej kolor diody LED

writeDigitalPin(a, redp, 0);

writeDigitalPin(a, greenp, 0);

elseif m == 2 % Jeśli wybrano tryb „Poza domem”

writeDigitalPin(a, bluep, 0);

writeDigitalPin(a, redp, 0);

writeDigitalPin(a, greenp, 1); % Włącz tylko zielone światło w zmieniającej kolor diody LED

if lightl2 <= 3 % Jeśli poziom światła w drugim fotorezystorze jest niski, reprezentujący ruch wykryty przez system bezpieczeństwa

sendmail(e-maile, temat, tekst); % Wyślij e-mail z wcześniej zdefiniowanymi właściwościami e-mail writeDigitalPin(a, greenp, 0); % Migający czerwony kolor wł. i wył. 2 razy

writeDigitalPin(a, redp, 1);

pauza(0.3)

writeDigitalPin(a, redp, 0);

pauza(0.3)

writeDigitalPin(a, redp, 1);

pauza(0.3)

writeDigitalPin(a, redp, 0);

pauza(0.3)

writeDigitalPin(a, redp, 1); % Zakończ z ciągłym czerwonym po miganiu, aby pokazać ruch, aż poziom światła powróci do góry

msg2 = msgbox('Intruz wykryty przez system bezpieczeństwa, e-mail został wysłany do właścicieli domów, aby ich poinformować.', 'OSTRZEŻENIE!'); % Okno wiadomości informujące użytkownika o ruchu i wysłaniu wiadomości e-mail waitfor(msg2) % Poczekaj na zamknięcie okna wiadomości przed kontynuowaniem

w przeciwnym razie

writeDigitalPin(a, greenp, 1); % Gdy poziom światła ponownie wzrośnie, zmieni kolor z powrotem na zielony

kończyć się

kończyć się

elseif switchv < 3,3 % Jeśli przełącznik jest wyłączony

writeDigitalPin(a, bluep, 0); % Całkowicie wyłącz diodę LED, aby pokazać, że system bezpieczeństwa jest wyłączony

writeDigitalPin(a, redp, 0);

writeDigitalPin(a, greenp, 0);

kończyć się

kończyć się

Zalecana: