- Požadované komponenty
- Kruhový diagram
- Sériová komunikace pomocí příkazového okna MATLAB
- Sériová komunikace pomocí MATLAB GUI
MATLAB je univerzální software, který lze použít pro širokou škálu aplikací. V předchozích výukových programech MATLAB jsme vysvětlili, jak používat MATLAB k ovládání stejnosměrného motoru, servomotoru a domácích spotřebičů. Tady v tomto kurzu se naučíme, jak používat MATLAB pro sériovou komunikaci. Pro přijímací konec sériové komunikace zde používáme Arduino.
Existují dva způsoby, jak nastavit sériovou komunikaci mezi MATLAB a Arduino, jeden používá příkazové okno a druhý používá MATLAB GUI. Arduino kód pro obě metody zůstane stejný. Pokud jste v MATLABu nováčci, doporučujeme začít s jednoduchým LED blikajícím programem v MATLABu a naučit se základní terminologii používanou v MATLABu.
Požadované komponenty
- Notebook nainstalovaný v MATLABu (preference: verze R2016a nebo vyšší)
- Arduino UNO
- LED (libovolná barva)
- Rezistor (330 ohmů)
Kruhový diagram
Výše uvedené schéma zapojení zůstane stejné pro oba způsoby navázání sériové komunikace mezi MATLAB a Arduino.
Sériová komunikace pomocí příkazového okna MATLAB
Jedná se o jednoduchý způsob nastavení sériové komunikace mezi Arduino a MATLAB. Zde jednoduše pošleme data z MATLABu do Arduina sériově pomocí příkazového okna a poté Arduino načte příchozí sériová data. Pak lze tato sériově přenášená data použít k ovládání čehokoli připojeného k Arduinu. Zde jsme k Arduinu připojili LED, která se bude zapínat a vypínat podle sériově přijímaných dat Arduino.
Nejprve nahrajte daný kód Arduina do Arduino UNO a poté začněte kódovat v okně editoru MATLAB. Chcete-li otevřít nový editorský skript, klikněte na „ Nový skript“, jak je znázorněno na následujícím obrázku:
Poté zkopírujte a vložte níže uvedený kompletní kód MATLAB do okna editoru pro sériovou komunikaci mezi MATLAB a Arduino.
% MATLAB kód pro sériovou komunikaci mezi Arduino a MATLAB x = serial ('COM18', 'BAUD', 9600); fopen (x); go = true; while go a = input ('Stiskněte 1 pro zapnutí LED & 0 pro vypnutí:'); fprintf (x, a); if (a == 2) go = false; konec konec
V daném kódu se níže uvedený příkaz používá k definování sériové komunikace v MATLABu. Ujistěte se, že číslo portu COM je číslo portu, ke kterému je Arduino připojeno, a přenosová rychlost by měla být nastavena stejně v kódech Arduino i MATLAB.
x = serial ('COM18', 'BAUD', 9600);
Chcete-li otevřít sériový port, použijte níže uvedený příkaz, fopen (x);
Níže uvedený příkaz se používá k sériovému odesílání dat z MATLABu do Arduina, kde x je pro volání seriálu a a je hodnota zadaná uživatelem.
fprintf (x, a);
Funkci while jsme použili k vytvoření nekonečné smyčky a kdykoli uživatel zadá číslo '2', smyčka se přeruší.
while go a = input ('Stiskněte 1 pro zapnutí LED & 0 pro vypnutí:'); fprintf (x, a); if (a == 2) go = false; konec konec
Po dokončení programování skriptu editoru MATLAB klikněte na ' RUN ' pro spuštění programu, jak je znázorněno na následujícím obrázku,
MATLABu trvá několik sekund zpracování kódu a zahájení sériové komunikace, počkejte, až MATLAB zobrazí zprávu „BUSY“ v levém dolním rohu obrazovky softwaru, jak je znázorněno na následujícím obrázku.
Nyní uvidíte příkazové okno pro odeslání vstupu uživatele, nastavili jsme výchozí zprávu, 'Stiskněte 1 pro zapnutí LED a 0 pro vypnutí:'
Pošlete '1' pro zapnutí LED, '0' pro vypnutí LED a '2' pro přerušení provozu. Můžete nastavit libovolné číslo pro jakýkoli úkol, vše, co musíte udělat, je pouze odpovídajícím způsobem změnit kód Arduino. Na konci je uveden kompletní Arduino kód.
Níže si můžete prohlédnout video, abyste pochopili kompletní proces odesílání sériových dat z MATLABu do Arduina pomocí příkazového okna.
Sériová komunikace pomocí MATLAB GUI
Pro demonstraci sériové komunikace pomocí grafického uživatelského rozhraní MATLAB vytvoříme pomocí MATLABu dvě grafická tlačítka pro zapnutí a vypnutí LED připojené k Arduinu. Data budou posílána sériově z MATLABu do Arduina po kliknutí na tato tlačítka pro zapnutí a vypnutí LED. Arduino bude obsahovat kód pro příjem sériových dat z MATLABu a ovládání LED podle přijatých sériových dat. Arduino kód zůstane stejný jako ten předchozí, rozdíl je pouze v tom, že jsme dříve posílali sériová data '1' a '0' přes příkazové okno MATLABu a nyní budou stejná data zasílána na cinkání na dvou grafických tlačítkách.
Chcete-li spustit grafické uživatelské rozhraní, zadejte do příkazového okna následující příkaz
průvodce
Otevře se vyskakovací okno a poté vyberte nové prázdné grafické uživatelské rozhraní, jak je znázorněno na následujícím obrázku,
Nyní vyberte dvě tlačítka pro zapnutí a vypnutí LED, jak je znázorněno níže,
Chcete-li změnit velikost nebo změnit tvar tlačítek, jednoduše na něj klikněte a budete moci přetáhnout rohy tlačítka. Poklepáním na tlačítko můžete změnit barvu, řetězec a značku konkrétního tlačítka. Upravili jsme dvě tlačítka, jak je znázorněno na následujícím obrázku.
Tlačítka můžete upravit podle svého výběru. Když to nyní uložíte, vygeneruje se kód v okně editoru MATLABu. Upravte tento kód podle úkolu, který chcete provést pomocí Arduina pomocí grafického uživatelského rozhraní MATLAB. Níže jsme tedy upravili kód MATLABu. Další informace o příkazovém okně, okně editoru atd. Najdete v tutoriálu Začínáme s MATLABem.
Kompletní kód MATLAB pro navázání sériové komunikace mezi MATLAB a Arduino je uveden na konci tohoto projektu. Dále zde uvádíme soubor GUI (.fig) a soubor kódu (.m) ke stažení (klikněte pravým tlačítkem na odkaz a poté vyberte možnost „Uložit odkaz jako…“), pomocí které můžete přizpůsobit tlačítka podle svého požadavku. Níže uvádíme několik vylepšení, která jsme provedli pro ovládání LED připojené k Arduinu.
Zkopírujte a vložte níže uvedený kód na řádek č. 74 k nastavení sériového portu a přenosové rychlosti.
vymazat vše; globální x; x = serial ('COM18', 'BAUD', 9600); % Ujistěte se, že přenosová rychlost a port COM jsou % stejné jako v Arduino IDE fopen (x);
kde fopen (x) se používá k otevření sériového portu pro sériovou komunikaci.
Když se posunete dolů, uvidíte, že pro obě tlačítka v grafickém uživatelském rozhraní jsou vytvořeny dvě funkce. Nyní napište kód do obou funkcí podle úkolu, který chcete provést kliknutím.
Ve funkci tlačítka LED-ON zkopírujte a vložte níže uvedený kód těsně před koncem funkce, aby se rozsvítila LED. Jak vidíte v níže uvedeném kódu, fprintf (x, 1) se používá k odesílání sériových dat z MATLABu na sériové Arduino. Zde jsme se vysílá ‚1‘na Arduino seriálu a pokud si zkontrolovat Arduino kód, zjistíte, že Arduino bude svítit LED tím, že jeho 13 th pin vysoké, když obdrží ‚1‘na svém sériovém portu.
globální x; fprintf (x, 1);
Ve funkci tlačítka LED-OFF zkopírujte a vložte níže uvedený kód těsně před koncem funkce, abyste LED zhasli. Jak vidíte v níže uvedeném kódu, fprintf (x, 0) se používá k odesílání sériových dat z MATLABu na sériové Arduino. V této části jsme vysílajícím ‚0‘na Arduino seriálu a pokud si zkontrolovat Arduino kód, zjistíte, že Arduino vypne LED tím, že jeho 13 th pin nízká, když obdrží ‚0‘na svém sériovém portu.
globální x; fprintf (x, 0);
Po dokončení kódování grafického uživatelského rozhraní MATLAB a nastavení hardwaru podle schématu zapojení stačí kliknout na tlačítko spuštění a spustit upravený kód v souboru.m.
MATLABu může trvat několik sekund, než odpoví, neklikejte na žádné tlačítko grafického uživatelského rozhraní, dokud MATLAB nezobrazí indikaci BUSY, kterou můžete vidět v levém dolním rohu obrazovky, jak je znázorněno níže,
Když je vše připraveno, klikněte na LED-ON a LED-OFF tlačítko pro zapnutí a vypnutí LED. Stisknete-li LED ON tlačítkem , 13 th kolík Arduino jde vysoká a LED připojená k tomuto PIN začne zářící, a při stisknutí tlačítka LED-OFF , 13 th kolík Arduino jde nízký díky němuž LED vypnout.
Níže si můžete prohlédnout video, abyste pochopili kompletní proces odesílání sériových dat z MATLABu do Arduina pomocí MATLAB GUI.