- Wymagane składniki
- Schemat obwodu
- Komunikacja szeregowa za pomocą okna poleceń MATLAB
- Komunikacja szeregowa za pomocą MATLAB GUI
MATLAB to wszechstronne oprogramowanie, które można wykorzystać do wielu różnych zastosowań. W poprzednich samouczkach MATLAB wyjaśnialiśmy, jak używać MATLAB-a do sterowania silnikiem prądu stałego, serwomotorem i urządzeniami domowymi. Tutaj, w tym samouczku, nauczymy się, jak używać MATLAB-a do komunikacji szeregowej. Do odbiorczego końca komunikacji szeregowej używamy tutaj Arduino.
Istnieją dwa sposoby konfiguracji komunikacji szeregowej między MATLAB-em a Arduino, jeden wykorzystuje okno poleceń, a drugi wykorzystuje GUI MATLAB. Kod Arduino dla obu metod pozostanie taki sam. Jeśli dopiero zaczynasz przygodę z MATLABem, zalecamy rozpoczęcie pracy z prostym programem migania diod LED w programie MATLAB i nauczenie się podstawowej terminologii używanej w programie MATLAB.
Wymagane składniki
- Zainstalowany laptop MATLAB (preferencja: wersje R2016a lub nowsze)
- Arduino UNO
- LED (dowolny kolor)
- Rezystor (330 omów)
Schemat obwodu
Powyższy schemat obwodu pozostanie taki sam dla obu sposobów ustanowienia komunikacji szeregowej między MATLAB a Arduino.
Komunikacja szeregowa za pomocą okna poleceń MATLAB
Jest to prosta metoda konfiguracji komunikacji szeregowej między Arduino i MATLAB. Tutaj po prostu wyślemy dane z MATLAB-a do Arduino za pomocą okna poleceń, a następnie Arduino odczyta przychodzące dane szeregowe. Następnie te przesyłane szeregowo dane można wykorzystać do sterowania wszystkim podłączonym do Arduino. Tutaj podłączyliśmy diodę LED do Arduino, która będzie włączana i wyłączana zgodnie z szeregowo odebranymi danymi przez Arduino.
Najpierw prześlij podany kod Arduino do Arduino UNO, a następnie rozpocznij kodowanie w oknie edytora MATLAB. Aby otworzyć nowy skrypt edytora, kliknij `` Nowy skrypt '', jak pokazano na poniższym obrazku:
Następnie skopiuj i wklej poniższy kompletny kod MATLAB w oknie edytora do komunikacji szeregowej między MATLAB a Arduino.
% Kod MATLAB dla komunikacji szeregowej między Arduino i MATLAB x = serial ('COM18', 'BAUD', 9600); fopen (x); go = true; while go a = input ('Naciśnij 1, aby włączyć diodę LED i 0, aby wyłączyć:'); fprintf (x, a); if (a == 2) go = false; koniec koniec
W podanym kodzie poniższe polecenie służy do zdefiniowania komunikacji szeregowej w programie MATLAB. Upewnij się, że numer portu com to numer portu, do którego podłączone jest Arduino, a prędkość transmisji powinna być ustawiona tak samo w obu kodach Arduino i MATLAB.
x = serial ('COM18', 'BAUD', 9600);
Aby otworzyć port szeregowy, użyj poniższego polecenia, fopen (x);
Poniższe polecenie służy do seryjnego wysyłania danych z MATLAB-a do Arduino, gdzie x to wywołanie serialu, a a to wartość wprowadzona przez użytkownika.
fprintf (x, a);
Użyliśmy funkcji while do tworzenia nieskończonej pętli i za każdym razem, gdy użytkownik wprowadzi liczbę „2”, pętla zostanie przerwana.
while go a = input ('Naciśnij 1, aby włączyć diodę LED i 0, aby wyłączyć:'); fprintf (x, a); if (a == 2) go = false; koniec koniec
Po zakończeniu kodowania skryptu edytora MATLAB kliknij `` RUN '', aby uruchomić program, jak pokazano na poniższym obrazku,
MATLAB zajmuje kilka sekund na przetworzenie kodu i rozpoczęcie komunikacji szeregowej, poczekaj, aż MATLAB pokaże komunikat „ZAJĘTY” w lewym dolnym rogu ekranu oprogramowania, jak pokazano na poniższym obrazku.
Teraz zobaczysz okno poleceń do wysyłania danych wejściowych użytkownika, ustawiliśmy domyślną wiadomość, `` Naciśnij 1, aby włączyć diodę LED i 0, aby wyłączyć: ''
Wyślij „1”, aby włączyć diodę LED, „0”, aby ją wyłączyć, i „2”, aby przerwać działanie. Możesz ustawić dowolną liczbę dla każdego zadania, wystarczy tylko odpowiednio zmienić kod Arduino. Kompletny kod Arduino podany jest na końcu.
Możesz obejrzeć poniższe wideo, aby zrozumieć cały proces wysyłania danych szeregowych z MATLAB do Arduino za pomocą okna poleceń.
Komunikacja szeregowa za pomocą MATLAB GUI
Aby zademonstrować komunikację szeregową za pomocą MATLAB GUI, utworzymy dwa graficzne przyciski za pomocą MATLAB-a do włączania i wyłączania diody LED podłączonej do Arduino. Dane będą przesyłane szeregowo z MATLAB-a do Arduino po kliknięciu tych przycisków, aby włączyć i wyłączyć diodę LED. Arduino będzie zawierało kod do odbioru danych szeregowych z MATLAB i sterowania diodą LED na podstawie otrzymanych danych szeregowych. Kod Arduino pozostanie taki sam jak poprzedni, jedyną różnicą jest to, że wcześniej wysyłaliśmy dane szeregowe „1” i „0” przez okno poleceń MATLABA, a teraz te same dane będą przesyłane po kliknięciu dwóch graficznych przycisków.
Aby uruchomić GUI, wpisz poniższe polecenie w oknie poleceń
przewodnik
Otworzy się wyskakujące okienko, a następnie wybierz nowy pusty GUI, jak pokazano na poniższym obrazku,
Teraz wybierz dwa przyciski do włączania i wyłączania diody LED, jak pokazano poniżej,
Aby zmienić rozmiar lub kształt przycisków, po prostu kliknij na niego, a będziesz mógł przeciągać rogi przycisku. Dwukrotne kliknięcie przycisku pozwala zmienić kolor, ciąg i tag tego konkretnego przycisku. Dostosowaliśmy dwa przyciski, jak pokazano na poniższym obrazku.
Możesz dostosować przyciski według własnego wyboru. Teraz, kiedy to zapiszesz, kod zostanie wygenerowany w oknie edytora MATLAB-a. Edytuj ten kod zgodnie z zadaniem, które chcesz wykonać przez Arduino za pomocą GUI MATLAB. Więc poniżej zmieniliśmy kod MATLAB. Możesz dowiedzieć się więcej o oknie poleceń, oknie edytora itp. W samouczku Pierwsze kroki z MATLABem.
Kompletny kod MATLAB do ustanowienia komunikacji szeregowej między MATLAB a Arduino jest podany na końcu tego projektu. Ponadto dołączamy plik GUI (.fig) i plik kodu (.m) do pobrania (kliknij prawym przyciskiem myszy łącze, a następnie wybierz opcję „Zapisz łącze jako…”), za pomocą których można dostosować przyciski zgodnie z wymaganiami. Poniżej znajduje się kilka poprawek, które zrobiliśmy, aby kontrolować diodę LED połączoną z Arduino.
Skopiuj i wklej poniższy kod w linii nr. 74, aby ustawić port szeregowy i szybkość transmisji.
Wyczyść wszystko; globalny x; x = serial ('COM18', 'BAUD', 9600); % Upewnij się, że szybkość transmisji i port COM są w % takie same jak w Arduino IDE fopen (x);
gdzie fopen (x) służy do otwierania portu szeregowego do komunikacji szeregowej.
Po przewinięciu w dół zobaczysz dwie funkcje utworzone dla obu Przycisków w GUI. Teraz napisz kod w obu funkcjach zgodnie z zadaniem, które chcesz wykonać po kliknięciu.
W funkcji przycisku LED-ON skopiuj i wklej poniższy kod tuż przed zakończeniem funkcji, aby włączyć diodę LED. Jak widać na poniższym kodzie, fprintf (x, 1) służy do wysyłania danych szeregowych z MATLAB do szeregowego Arduino. Tutaj wysyłamy '1' do portu szeregowego Arduino i jeśli sprawdzisz kod Arduino, zobaczysz, że Arduino zaświeci diodę LED, ustawiając jej 13- ty pin WYSOKI, gdy otrzyma '1' na swoim porcie szeregowym.
globalny x; fprintf (x, 1);
W funkcji przycisku LED-OFF skopiuj i wklej poniższy kod tuż przed zakończeniem funkcji, aby wyłączyć diodę LED. Jak widać na poniższym kodzie, fprintf (x, 0) służy do wysyłania danych szeregowych z MATLAB do szeregowego Arduino. W tej części wysyłamy '0' do portu szeregowego Arduino i jeśli sprawdzisz kod Arduino, zobaczysz, że Arduino wyłączy diodę LED, ustawiając jej 13- ty pin LOW, gdy otrzyma '0' na swoim porcie szeregowym.
globalny x; fprintf (x, 0);
Po zakończeniu kodowania MATLAB GUI i skonfigurowaniu sprzętu zgodnie ze schematem obwodu, wystarczy kliknąć przycisk Uruchom, aby uruchomić edytowany kod w pliku.m.
MATLAB może odpowiedzieć kilka sekund, nie klikaj żadnego przycisku GUI, dopóki MATLAB nie pokaże komunikatu ZAJĘTY, który możesz zobaczyć w lewym dolnym rogu ekranu, jak pokazano poniżej,
Gdy wszystko będzie gotowe, kliknij przycisk LED-ON i LED-OFF, aby włączyć lub wyłączyć diodę LED. Po naciśnięciu LED ON , 13 th pinów Arduino idzie wysokie i dioda podłączona do tej PIN rozpoczyna świecące, a po naciśnięciu przycisku LED-OFF , 13 th pinów Arduino idzie niska, co sprawia, że diody LED, aby wyłączyć.
Możesz obejrzeć poniższe wideo, aby zrozumieć cały proces wysyłania danych szeregowych z MATLAB do Arduino za pomocą GUI MATLAB.