Spisu treści:
- Krok 1: Części i materiały
- Krok 2: Pakiet wsparcia MATLAB Arduino
- Krok 3: Korzystanie z czujników danych pobranych z urządzenia mobilnego
- Krok 4: Porty kodu i okablowania
Wideo: Kontrolowany mikrokontroler MATLAB (Arduino MKR1000): 4 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
Celem naszego projektu było jak najlepsze wykorzystanie MATLAB oraz Arduino MKR1000. Naszym celem było stworzenie skryptu, który pozwalałby pewnym funkcjom arduino na wykonanie określonego wyjścia w oparciu o określone dane wejściowe. Użyliśmy wielu pętli i instrukcji warunkowych zawartych w MATLAB, które to umożliwiły. Wykorzystaliśmy również MATLAB mobile, wykorzystując dane uzyskane z żyroskopu urządzenia mobilnego, aby maksymalnie usprawnić projekt.
Krok 1: Części i materiały
MATLAB 2018a
- Wersja MATLAB 2018 jest najbardziej preferowaną wersją, głównie dlatego, że najlepiej działa z kodem, który łączy się z urządzeniem mobilnym. Jednak większość naszego kodu może być interpretowana przez większość wersji MATLAB.
Arduino MKR1000
-Jest to specyficzne urządzenie, które pozwala nam podłączyć obwody zarówno do portów cyfrowych, jak i analogowych. Ważne jest, abyś miał również tablicę prototypową, aby się z tym pogodzić.
Akcesoria
- Podczas korzystania z MKR1000 potrzebowaliśmy akcesoriów do wykonywania niezbędnych funkcji.
To zawiera
- Serwo
- Przycisk (6)
- Wymienne światło LED RGB
- Proste przewody
- płytki do krojenia chleba
- mini wyłącznik zasilania
- czujnik temperatury
- Rezystor 330 omów
- Rezystor 10K omów
- Przewód USB-microUSB
- Laptop/komputer stacjonarny
- Urządzenie przenośne
Należy również zauważyć, że istnieje wiele, wiele więcej akcesoriów, których można używać z MKR1000
Krok 2: Pakiet wsparcia MATLAB Arduino
Aby prawidłowo korzystać z Arduino MKR1000 przez MATLAB, musisz pobrać pakiet wsparcia MATLAB dla sprzętu Arduino. Ten plik do pobrania daje dostęp do niektórych funkcji i poleceń bezpośrednio do płyty arduino.
Możesz pobrać pakiet pod poniższym linkiem
www.mathworks.com/matlabcentral/fileexchange/47522-matlab-support-package-for-arduino-hardware
Krok 3: Korzystanie z czujników danych pobranych z urządzenia mobilnego
Aplikacja MATLAB Mobile pozwala nam używać urządzenia mobilnego do strumieniowego przesyłania danych za pomocą żyroskopu. Aby uzyskać dane za pośrednictwem MATLAB, uzyskujemy dane, pobierając je z macierzy orientacji z MATLAB mobile. Robimy to, tworząc zmienną dla każdej kolumny macierzy orientacji (azymut, skok i przechylenie) i indeksując stały strumień wartości z urządzenia mobilnego do komputera. To pozwala nam tworzyć instrukcje warunkowe, które będą tworzyć dane wyjściowe, jeśli MATLAB pobierze określone dane wejściowe z urządzenia mobilnego. Aby to zrobić, będziesz potrzebować MATLAB mobile na swoim urządzeniu mobilnym oraz pakietu wsparcia urządzeń mobilnych dla MATLAB na swoim komputerze.
Możesz pobrać plik pod poniższym linkiem
www.mathworks.com/matlabcentral/fileexchange/51235-matlab-support-package-for-apple-ios-sensors
Krok 4: Porty kodu i okablowania
Kod zaczyna się od komunikatu startowego, który pyta, czy chcemy uruchomić nasze domowe urządzenie zabezpieczające. Jeśli odpowiemy tak i podamy poprawne hasło, skrypt natychmiast wskoczy w pętlę while. Stamtąd zaczyna zbierać dane z urządzenia mobilnego. Istnieją warunki, które odczytują te dane. Możemy odblokować i zablokować system z naszego urządzenia mobilnego, a kod będzie włączał serwo i mrugał diodą LED w zależności od podanych danych z urządzenia mobilnego
startup = questdlg('Czy chcesz aktywować system ecoTECH Smart Home Energy System?'); % Rozpoczyna sekwencję aktywacji ecoTECHwaitfor(startup); if startup == "Tak" % Jeśli wybrano "Tak" sekwencja aktywacji rozpoczyna się i wchodzi w pętlę while na końcu zasilania = "on"; m1 = msgbox('Uruchamianie ecoTECH…'); pauza(2); usuń(m1); m1_wait = waitbar(0, 'Proszę czekać…'); kroki = 25; dla i = 1:kroki pauza(.1); pasek oczekiwania(i/kroki); % Aktualizuje koniec paska oczekiwania usuń(m1_wait); HASŁO = [0 0 0 0]; % Inicjuje hasło ii = 0; % Inicjuje zmienną służącą do wyjścia z pętli m2 = msgbox('ecoTECH w pełni działa!'); pauza(2); usuń(m2); uruchamianie elseif == "Nie" || startup == "Anuluj" % Jeśli wybrano "Nie" lub "Anuluj", sekwencja aktywacji nie rozpoczyna się i nie wchodzi do pętli while power = "off"; m3 = msgbox('Do widzenia! Do widzenia!'); pauza(2); usuń(m3); kończyć się
% ecoTECH w sekcji Action while true while power == "on" % Mobile Key Sekcja while true % Zbiera dane o orientacji roll urządzenia mobilnego KEY = m. Orientation(3); % Zbiera dane o przyciskach b2 = readDigitalPin(a, 'D2'); % Przycisk 2 (czerwony) b3 = readDigitalPin(a, 'D3'); % Przycisk 3 (biały) jeśli KLUCZ >= 35 % w stopniach m4 = msgbox('Witaj w domu!'); writeDigitalPin(a, 'D8', 1); % Włącza pauzę zielonego światła (.5); pozycja(s, 1); % Obraca serwo, aby odblokować pauzę drzwi (2); writeDigitalPin(a, 'D8', 0); % Wyłącza zielone światło usuń (m4); elseif KLUCZ <= -35% w stopniach m5 = msgbox('Drzwi zamknięte!'); writeDigitalPin(a, 'D7', 1); % Włącza pauzę czerwonego światła (.5); pozycja(y, 0); % Obraca serwo blokując pauzę drzwi (2); writeDigitalPin(a, 'D7', 0); % Wyłącza czerwone światło usuń (m5); ii = 1; break % Wychodzi, gdy pętla zawiera klucz mobilny, jeśli drzwi są zamknięte za pomocą urządzenia mobilnego elseif b2 == 0 && b3 == 0 % Wychodzi, gdy pętla zawiera klucz mobilny, aby wprowadzić sekcję hasła break end end
Następnie może wejść w kolejną pętlę while. Ta pętla while kontroluje wyniki na podstawie danych wejściowych z przycisków. Jeśli pierwsza pętla while jest nieistotna lub wymagana jest ręczna blokada, wejdzie ona w kolejną pętlę while, w której potrzebne jest określone hasło. Jeśli hasło jest nieprawidłowe, pętla zostanie zrestartowana
while true if ii == 1 % Wychodzi podczas gdy pętla zawierająca hasło, jeżeli drzwi zostały odblokowane przy użyciu urządzenia mobilnego break end % Zbiera dane o przyciskach b5 = readDigitalPin(a, 'D5'); % Przycisk 5 (niebieski) b1 = odczytajPinCyfrowy(a, 'D1'); % Przycisk 1 (czarny) b4 = readDigitalPin(a, 'D4'); % Przycisk 4 (biały) jeśli b5 == 0 % Rozpoczyna sekcję wprowadzania hasła dla b = 1:5 m6 = msgbox('Naciśnij i przytrzymaj przycisk A'); pauza(2); usuń(m6); % Zbiera dane o przyciskach b1 = readDigitalPin(a, 'D1'); % Przycisk 1 (czarny) b2 = readDigitalPin(a, 'D2'); % Przycisk 2 (czerwony) b3 = readDigitalPin(a, 'D3'); % Przycisk 3 (biały) b4 = odczytajPinCyfrowy(a, 'D4'); % Przycisk 4 (żółty) b5 = readDigitalPin(a, 'D5'); % Przycisk 5 (niebieski) % Zastępuje pojedynczo wartości w początkowym kodzie dostępu, jeśli b1 == 0 HASŁO(0+b) = 1; elseif b2 == 0 HASŁO(0+b) = 2; elseif b3 == 0 HASŁO(0+b) = 3; elseif b4 == 0 HASŁO(0+b) = 4; elseif b5 == 0 HASŁO = sprintf('%.0f%.0f%.0f%.0f', HASŁO(1), HASŁO(2), HASŁO(3), HASŁO(4)); % Zamienia sekwencję naciśniętych przycisków na cyfry, a następnie przekształca ją w ciąg end end % Koniec pętli for do wprowadzania cyfr kodu dostępu, jeśli PASSCODE == "2314" % Jeśli wprowadzone hasło jest zgodne, drzwi odblokują się na kilka sekund, a następnie zostaną zablokowane m7 = msgbox('Witaj w domu!'); writeDigitalPin(a, 'D8', 1); % Włącza pauzę zielonego światła (.5); pozycja(s, 1); % Obraca serwo w celu odblokowania pauzy drzwi (5); writeDigitalPin(a, 'D8', 0); % Wyłącza pauzę zielonego światła (.1); writeDigitalPin(a, 'D7', 1); % Włącza pauzę czerwonego światła (.5); pozycja(y, 0); % Obraca serwo blokując pauzę drzwi (1); writeDigitalPin(a, 'D7', 0); % Wyłącza czerwone światło usuń (m7); ii = 1; break % Wychodzi z pętli while zawierającej hasło po wpisaniu poprawnego hasła elseif PASSCODE ~= "2314" writeDigitalPin(a, 'D7', 1); % Włącza czerwone światło m8 = msgbox('Nieprawidłowy kod dostępu! Spróbuj ponownie!'); waitfor(m8) writeDigitalPin(a, 'D7', 0); % Wyłącza czerwone światło dalej % Pozwala na ponowne wprowadzenie hasła end elseif b1 == 0 && b4 == 0 % Wychodzi while pętla zawierająca sekcję hasła, jeśli nie chcesz wprowadzać hasła ii = 1; przerwa koniec koniec
Jeśli jest poprawny, natychmiast wejdzie w pętlę while, która steruje czujnikiem temperatury. Jeśli przełącznik jest włączony, pętla będzie kontynuować i wykreślić wykres temperatury w funkcji czasu, umożliwiając podgląd trendu. Jeśli przycisk podłączony do czujnika temperatury zostanie naciśnięty, wyśle również e-mail z informacją, jaka jest temperatura w Twoim „domu”. Jeśli przełącznik zostanie wyłączony, natychmiast zakończy kod
t = 0; % Czas początkowy = 0 sekund przerwa(5) % Daje użytkownikowi czas na włączenie przełącznika temperatury SWITCH = readDigitalPin(a, 'D11'); % Zbiera dane o przełączniku w pinie D11, podczas gdy SWITCH == 0 SWITCH = readDigitalPin(a, 'D11'); % Zbiera dane o przełączniku na pinie D11 napięcie = readVoltage(a, 'A1'); % Odczytuje napięcie z czujnika temperatury temp_C = (napięcie.*1000 - 500)./10; % Przelicza napięcie na temperaturę w °C temp_F = (9/5).*temp_C + 32; % Konwertuje z °C na °F wykres(t, temp_C, 'b.') hold on title('Room Temperature'); xlabel('Czas w sekundach'); ylabel('Temperatura'); oś([0, 180, 0, 100]); plot(t, temp_F, 'r.') legend('Temperatura w °C', 'Temperatura w °F') pause(1); t = t + 1; % Licznik czasu w sekundach % Sekcja E-mail b_temp = readDigitalPin(a, 'D0'); % Zbiera dane (niebieskiego) przycisku temperatury w pinie D0 if b_temp == 0 setpref('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref('Internet', 'E_mail', '[email protected]'); % Sender setpref('Internet', 'SMTP_Username', '[email protected]'); % Nazwa użytkownika nadawcy setpref('Internet', 'SMTP_Password', 'Integral_ecoTECH'); % props hasła nadawcy = 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'); sendmail('[email protected]', 'ecoTECH Temperatura w pomieszczeniu', sprintf('Aktualna temperatura w pomieszczeniu to %.1f °C lub %.1f °F.', temp_C, temp_F)); % Wysyła do odbiorcy e-mail z danymi o aktualnej temperaturze pokojowej fprintf('E-mail wysłany pomyślnie!\n') end if temp_F >= 75 % Jeśli temperatura w pomieszczeniu wzrośnie do 75 °F… temp_AC = 65; % Zmienia temperaturę na termostacie na 65 °F elseif temp_F <= 65 % Jeśli temperatura w pomieszczeniu spadnie do 60 °F… temp_AC = 80; % Zmienia temperaturę na termostacie na 80 °F koniec koniec % Koniec "PRZEŁĄCZNIK == 0" while pętla, jeśli zasilanie == "wyłączone" || ii == 1 % Wyjście „zasilanie == włączone” podczas przerwania pętli koniec koniec % Koniec „zasilania == włączone” podczas gdy pętla jeśli zasilanie == „wyłączone” || ii == 1 % Wychodzi w całości, gdy kończy się przerwanie pętli
To był tylko krótki przegląd kodu i jego funkcjonalności. W razie potrzeby załączyliśmy pełny kod w formacie pdf
Oto lista portów, do których podłączone jest każde urządzenie
1. Dioda LED RGB: cyfrowe piny (7, 8, 9)
2. Serwo: cyfrowy pin 6
3. Przyciski: piny cyfrowe (1, 2, 3, 4, 5)
4. Niebieski przycisk do e-maila: cyfrowy pin 0
5. Czujnik temperatury: analogowy pin 1
6. Przełącznik: cyfrowy pin 11
Zalecana:
Potencjometr i serwo: kontrolowany ruch z Arduino: 4 kroki
Potencjometr i serwo: Ruch kontrolowany z Arduino: Najpierw musisz zebrać odpowiednie materiały, aby połączyć ten obwód
2 potencjometry i 2 serwa: Kontrolowany ruch z Arduino: 4 kroki
2 potencjometry i 2 serwa: kontrolowany ruch z Arduino: Najpierw musisz zebrać odpowiednie materiały, aby połączyć ten obwód
Kontrolowany CV moduł mono do stereo - format Eurorack: 3 kroki
Kontrolowany przez CV moduł mono do stereo w formacie Eurorack: Rewolucja w modułowych i półmodułowych syntezatorach zaowocowała piękną różnorodnością nowych opcji mono-syntezatorów do użytku w muzyce elektronicznej i hałasie, ale jeden problem z mono-syntezatorami (i większością modułów Eurorack i /lub przepływy sygnałów) jest to, że nie tylko są
Easy IOT – kontrolowany przez aplikację koncentrator czujników RF dla urządzeń IOT średniego zasięgu: 4 kroki
Easy IOT – Kontrolowany przez aplikację koncentrator czujników RF dla urządzeń IOT średniego zasięgu: W tej serii samouczków zbudujemy sieć urządzeń, które będą mogły być sterowane za pośrednictwem łącza radiowego z centralnego urządzenia koncentratora. Zaletą korzystania z szeregowego połączenia radiowego 433 MHz zamiast WIFI lub Bluetooth jest znacznie większy zasięg (przy dobrym
Spraw, aby Twój gest drona był kontrolowany w 10 USD: 4 kroki
Spraw, aby Twój dron był kontrolowany gestami za 10 USD: Ta instrukcja jest przewodnikiem po przekształceniu drona zdalnego sterowania w drona sterowanego gestami za mniej niż 10 USD! Jestem osobą, która bardzo inspiruje się filmami Sci-Fi i staram się pokazać technologię w filmie w prawdziwym życiu. Ten projekt jest inspiracją