Spisu treści:

System inteligentnego domu Arduino: 7 kroków
System inteligentnego domu Arduino: 7 kroków

Wideo: System inteligentnego domu Arduino: 7 kroków

Wideo: System inteligentnego domu Arduino: 7 kroków
Wideo: INTELIGENTNY DOM NA NOWO | Wyrzucam RASPBERRY PI, ARDUINO i chińskie przekaźniki SSR 2024, Listopad
Anonim
System inteligentnego domu Arduino
System inteligentnego domu Arduino
System inteligentnego domu Arduino
System inteligentnego domu Arduino

W tej instrukcji pokażemy, jak stworzyć własny system inteligentnego domu za pomocą aplikacji MATLAB App Designer z tablicą Sparkfun Red. Ta instrukcja może być wykorzystana do uzyskania podstawowej wiedzy na temat projektanta aplikacji MATLAB, a także korzystania z fotorezystora, serwomotoru i czujnika ruchu PIR.

Krok 1: Na początek: materiały

Ten projekt wymaga następujących materiałów:

- Arduino Uno (do tego projektu użyliśmy płytki Sparkfun Red)

- Jeden fotorezystor

- Jeden mini-serwomotor

-Jeden ciągły serwomotor

-Jeden czujnik ruchu PIR

-Jeden czujnik temperatury

- 2 diody LED

- Przewody i rezystory według potrzeb

Krok 2: Krok 2: Podejście do problemu do rozwiązania

Głównym celem tego projektu było stworzenie łatwego w obsłudze systemu inteligentnego domu poprzez zakodowanie płytki Arduino Uno za pomocą MATLAB. Najpierw myśleliśmy o pracy z czujnikiem temperatury i wilgotności, jednak gdybyśmy pozostali przy tych dwóch czujnikach, nasz system inteligentnego domu nie byłby łatwo dostępny na rynku. Zdecydowaliśmy, że chcemy stworzyć ogólny system energetyczny inteligentnego domu, który będzie działał jako inteligentny termostat i system bezpieczeństwa. Na koniec chcieliśmy pracować z AppDesignerem firmy MATLAB, aby użytkownik mógł łatwo zmieniać inteligentny dom według własnego uznania.

Krok 3: Krok 3: Konfiguracja GUI i podstawowego przepływu kodu

Krok 3: Konfiguracja GUI i podstawowego przepływu kodu
Krok 3: Konfiguracja GUI i podstawowego przepływu kodu

Aby rozpocząć, musisz otworzyć MATLABs AppDesigner i umieścić następujące elementy:

Dwa numeryczne pola edycyjne dla wejścia gorącego i zimnego progu

Przycisk do odblokowania drzwi

I cztery lampki sygnalizacyjne do kominka, drzwi, wentylatora i światła powodziowego.

Dwie etykiety do komunikacji z użytkownikiem.

W przypadku tego projektu łatwiej nam było pracować ze zmiennymi globalnymi i funkcją uruchamiania w obrębie projektanta. Będziesz potrzebować tych zmiennych w ramach funkcji startowej:

globalny a

a = arduino('COM3', 'uno', 'Biblioteki', 'Servo'); global s global p global hotUI global coldUI global unlock global temp global curr_temp global int_light

W tej chwili mamy tylko przypisanie do zmiennej, aby twój komputer mógł odczytać arduino. COM3 może się różnić w zależności od portu używanego przez komputer.

Po uruchomieniu kodu rozpocznie się on w ramach funkcji startowej, tworząc zmienne globalne i kalibrując system. Na końcu tej funkcji będzie funkcja timera, która wywołuje właściwość o nazwie Timer. W ramach tej właściwości Timer wstawiamy kod, który uruchamia system domowy, aby zegar nie uruchamiał ponownie kodu kalibracji.

Uwaga: Nie podaliśmy żadnych instrukcji okablowania systemu. Odnieśliśmy się do instrukcji dołączonej do płytki SparkFun Red.

Krok 4: Krok 3: Konfiguracja systemu termostatu

Krok 3: Konfiguracja systemu termostatu
Krok 3: Konfiguracja systemu termostatu
Krok 3: Konfiguracja systemu termostatu
Krok 3: Konfiguracja systemu termostatu

Funkcja termostatu działa w następujący sposób:

Użytkownik wprowadzi, jaką temperaturę uważa za zbyt wysoką lub zbyt niską. Gdy termometr odczyta, jeśli w domu jest zbyt zimno, „kominek” (czerwona dioda LED) włączy się i ogrzeje dom. Jeśli w domu jest za gorąco, wówczas „wentylator” (serwomotor ciągły) włączy chłodzenie domu.

Aby zakodować system termostatu:

Zaczniemy od funkcji uruchamiania, aby wyświetlić aktualną temperaturę i pozwolić użytkownikowi wprowadzić swoje progi zimnego i gorącego.

p = 'A0' %Pin fotorezystora

wolt = odczytaj napięcie(a, temp); celc = (wolt-0,5).*100; aktual_temp = celc*9/5+32; app. Label_4. Text = num2str(curr_temp); %Numer etykiety może zmienić pauzę(10); %Może chcieć zmienić!!!!!

Następnie uzupełnimy system termostatów we właściwości Timer.

globalna temperatura_aktualna

global coldUI global globalny hotUI if curr_temp hotUI app. FanStateLamp. Color = [0.47 0.67 0.19]; Włącza lampkę GUI na zielono writePWMDutyCycle(a, 'D11',.9) % Kolejne trzy linie kodu uruchamiają pauzę wentylatora serwomechanizmu (10) writePWMDutyCycle(a, 'D11',.0) else app. FireplaceStateLamp. Color = [0,90 0,90 0,90]; % Spowoduje to wyłączenie wszystkich lamp GUI i app kominka. FanStateLamp. Color = [0.9 0.9 0.9]; writeDigitalPin(a, 'D13', 0); kończyć się

Krok 5: Krok 4: Konfiguracja systemu drzwi

Krok 4: Konfiguracja systemu drzwi
Krok 4: Konfiguracja systemu drzwi

Funkcja drzwi działa w następujący sposób:

Po pierwszym uruchomieniu kodu MATLAB aplikacja poprosi o otwarcie drzwi, aby fotorezystor mógł wykonać wstępny odczyt światła. Po zakończeniu, timer zostanie aktywowany, a fotorezystor wykona odczyty światła wtórnego. Jeśli odczyt światła wtórnego jest lżejszy niż początkowy, serwomotor zablokuje drzwi. Jeśli użytkownik chce odblokować drzwi, może nacisnąć przycisk w aplikacji, który odblokuje drzwi.

Aby skonfigurować serwomotor i fotorezystor:

Aby zakodować system drzwi:

Zaczniemy od funkcji uruchamiania, aby wykonać wstępne odczyty światła.

s = serwo(a, 'D9') %Pin może się zmieniać w zależności od okablowania

app. Label_4. Text='Otwórz drzwi, aby skalibrować system'; pauza(15); % Daje to czas użytkownikowi na otwarcie drzwi int_light = readVoltage(a, p); app. Label_4. Text = 'Możesz zdjąć palec';

Następnie uzupełnimy kod we właściwości Timer

globalne odblokowanie

global int_light global s global a % Pobierz bieżący odczyt światła do porównania curr_light = readVoltage(a, p); % -- Zablokuj drzwi -- jeśli int_light<curr_light writePosition(s, 1) % Pozycje serwomechanizmów mogą się różnić w zależności od pauzy silnika (0.5); app. DoorStateLamp. Color = [0,47 0,67 0,19]; end % -- Unlock Door -- jeśli unlock == 1234 pauza (0.5); writePosition(s,.52) app. DoorStateLamp. Color = [0.85 0.33 0.10]; kończyć się

Na koniec utworzymy wywołanie zwrotne przycisku odblokowania. Gdy użytkownik naciśnie przycisk unlock, zmienna globalna unlock otrzyma numer, który może uzupełnić ostateczną instrukcję if we właściwości Timer.

globalne odblokowanie

odblokować = 1234;

Krok 6: Krok 6: Konfiguracja systemu Flood Light

Krok 6: Konfiguracja systemu Flood Light
Krok 6: Konfiguracja systemu Flood Light

Funkcja światła powodziowego działa w następujący sposób:

Po uruchomieniu kodu MATLAB czujnik ruchu PIR zacznie wykrywać ruch. Gdy wykryje jakiś rodzaj ruchu, odetnie sygnał zasilania. Po odcięciu tego sygnału przed domem włączy się światło powodziowe.

Aby skonfigurować system oświetlenia powodziowego:

Aby zakodować system oświetlenia powodziowego:

Tym razem możemy przejść do właściwości Timer, ponieważ nie musimy pisać żadnych dodatkowych zmiennych.

wykryto_człowieka = odczytajPinCyfrowy(a, 'D2'); %Pin może się zmienić w zależności od konfiguracji, jeśli wykryto człowieka == 0 writeDigitalPin(a, 'D7', 1) %Pin może zmienić app. FloodLightStateLamp. Color = [0.47 0.67 0.19]; elseif human_detected == 1 app. FloodLightStateLamp. Color = [0.9 0.9 0.9]; writeDigitalPin(a, 'D7', 0) koniec

Krok 7: Wniosek

Teraz, gdy masz już szkic swojego GUI z App Designerem i kodem dla Arduino, możesz wykonać własne edycje lub podłączyć Arduino i gotowe!

Zalecana: