- Súčasti sú povinné
- Schéma zapojenia
- Sériová komunikácia pomocou príkazového okna MATLAB
- Sériová komunikácia pomocou MATLAB GUI
MATLAB je všestranný softvér, ktorý je možné použiť na najrôznejšie aplikácie. V predchádzajúcich tutoriáloch MATLABu sme vysvetlili, ako používať MATLAB na ovládanie jednosmerného motora, servomotora a domácich spotrebičov. Tu v tomto výučbe sa naučíme, ako používať MATLAB na sériovú komunikáciu. Na príjem sériovej komunikácie sme tu pomocou Arduina.
Existujú dva spôsoby nastavenia sériovej komunikácie medzi MATLABom a Arduinom, jeden používa príkazové okno a druhý používa MATLAB GUI. Arduino kód pre obidve metódy zostane rovnaký. Ak ste v MATLABe nováčikom, odporúčame vám začať s jednoduchým programom blikania LED pomocou MATLABu a osvojiť si základnú terminológiu používanú v MATLABe.
Súčasti sú povinné
- Notebook nainštalovaný v systéme MATLAB (preferencia: R2016a alebo vyššia verzia)
- Arduino UNO
- LED (ľubovoľná farba)
- Rezistor (330 ohmov)
Schéma zapojenia
Vyššie uvedená schéma zapojenia zostane rovnaká pre obidva spôsoby nadviazania sériovej komunikácie medzi programami MATLAB a Arduino.
Sériová komunikácia pomocou príkazového okna MATLAB
Toto je jednoduchý spôsob nastavenia sériovej komunikácie medzi Arduino a MATLAB. Tu jednoducho pošleme dáta z MATLABu do Arduina sériovo pomocou príkazového okna a potom Arduino načíta prichádzajúce sériové dáta. Potom môžu byť tieto sériovo prenášané dáta použité na riadenie všetkého pripojeného k Arduinu. Tu sme pripojili k Arduinu LED, ktorá sa bude zapínať a vypínať podľa sériovo prijatých údajov Arduino.
Najskôr nahrajte daný Arduino kód do Arduino UNO a potom začnite kódovať v okne editora MATLAB. Ak chcete otvoriť nový editorský skript, kliknite na položku „ Nový skript“, ako je to znázornené na obrázku nižšie:
Potom skopírujte a vložte nižšie uvedený kompletný kód MATLABu do okna editora pre sériovú komunikáciu medzi MATLABom a Arduinom.
% MATLAB kód pre sériovú komunikáciu medzi Arduino a MATLAB x = sériový ('COM18', 'BAUD', 9600); fopen (x); ísť = pravda; while go a = input ('Stlačením 1 zapnete LED a 0 vypnete:'); fprintf (x, a); if (a == 2) go = false; koniec koniec
V danom kóde sa nižšie uvedený príkaz používa na definovanie sériovej komunikácie v MATLABe. Uistite sa, že číslo com portu je číslo portu, na ktorý je Arduino pripojené, a prenosová rýchlosť by mala byť nastavená rovnako v kódoch Arduina aj MATLABu.
x = serial ('COM18', 'BAUD', 9600);
Ak chcete otvoriť sériový port, použite nasledujúci príkaz, fopen (x);
Nasledujúci príkaz sa používa na sériové zasielanie dát z MATLABu do Arduina, kde x je na volanie sériového čísla a a je hodnota zadaná používateľom.
fprintf (x, a);
Funkciu while sme použili na vytvorenie nekonečnej slučky a kedykoľvek užívateľ zadá číslo '2', slučka sa pretrhne.
while go a = input ('Stlačením 1 zapnete LED a 0 vypnete:'); fprintf (x, a); if (a == 2) go = false; koniec koniec
Po dokončení programovania skriptu editora MATLAB kliknite na „ RUN “, aby ste spustili program, ako je znázornené na nasledujúcom obrázku,
Programu MATLAB trvá spracovanie kódu a zahájenie sériovej komunikácie niekoľko sekúnd. Počkajte, kým sa v ľavom dolnom rohu obrazovky softvéru zobrazí správa „BUSY“, ako je to znázornené na nasledujúcom obrázku.
Teraz uvidíte príkazové okno na odoslanie vstupu používateľa, nastavili sme predvolenú správu, 'Stlačením 1 zapnete LED a 0 vypnutím:'
Pošlite '1' na rozsvietenie LED, '0' na vypnutie LED a '2' na prerušenie operácie. Pre každú úlohu môžete nastaviť ľubovoľné číslo, stačí len zodpovedajúcim spôsobom zmeniť kód Arduino. Na konci je uvedený kompletný Arduino kód.
Môžete si pozrieť video nižšie, aby ste pochopili celý proces odosielania sériových údajov z MATLABu do Arduina pomocou príkazového okna.
Sériová komunikácia pomocou MATLAB GUI
Na demonštráciu sériovej komunikácie pomocou MATLAB GUI vytvoríme pomocou MATLABu dve grafické tlačidlá na zapnutie a vypnutie LED pripojenej k Arduinu. Dáta sa budú odosielať sériovo z MATLABu do Arduina po kliknutí na tieto tlačidlá, čím sa zapne a vypne LED. Arduino bude obsahovať kód na príjem sériových údajov z MATLABu a riadenie LED podľa prijatých sériových údajov. Arduino kód zostane rovnaký ako predchádzajúci, rozdiel je iba v tom, že predtým sme prostredníctvom príkazového okna programu MATLAB odosielali sériové údaje „1“ a „0“ a teraz sa rovnaké údaje budú odosielať po cinknutí na dvoch grafických tlačidlách.
Ak chcete spustiť grafické používateľské rozhranie, zadajte do príkazového okna nasledujúci príkaz
sprievodca
Otvorí sa vyskakovacie okno a potom vyberte nové prázdne grafické používateľské rozhranie, ako je to znázornené na obrázku nižšie,
Teraz zvoľte dve tlačidlá na zapnutie a vypnutie LED, ako je to znázornené nižšie,
Ak chcete zmeniť veľkosť alebo zmeniť tvar tlačidiel, stačí na ne kliknúť a budete môcť ťahať za rohy tlačidla. Dvojitým kliknutím na tlačidlo môžete zmeniť farbu, reťazec a značku konkrétneho tlačidla. Prispôsobili sme dve tlačidlá, ako je znázornené na nasledujúcom obrázku.
Tlačidlá môžete prispôsobiť podľa vlastného výberu. Keď to teraz uložíte, vygeneruje sa kód v okne editora MATLABu. Upravte tento kód podľa úlohy, ktorú chcete vykonať pomocou Arduina pomocou grafického používateľského rozhrania MATLAB. Takže nižšie sme upravili kód MATLABu. Viac informácií o príkazovom okne, okne editora atď. Sa dozviete v príručke Začíname s programom MATLAB.
Kompletný kód MATLABu na nadviazanie sériovej komunikácie medzi MATLABom a Arduinom je uvedený na konci tohto projektu. Ďalej sem zahrňujeme súbor GUI (.fig) a súbor kódu (.m) na stiahnutie (kliknite pravým tlačidlom myši na odkaz a potom vyberte možnosť „Uložiť odkaz ako…“), pomocou ktorého si môžete prispôsobiť tlačidlá podľa svojich požiadaviek. Ďalej uvádzame niekoľko vylepšení, ktoré sme vykonali pre ovládanie LED spojenej s Arduino.
Skopírujte a vložte nasledujúci kód do riadku č. 74 nastavenie sériového portu a prenosovej rýchlosti.
zmazať všetko; globálne x; x = serial ('COM18', 'BAUD', 9600); % Uistite sa, že prenosová rýchlosť a port COM sú % rovnaké ako v Arduino IDE fopen (x);
kde fopen (x) sa používa na otvorenie sériového portu pre sériovú komunikáciu.
Po rolovaní nadol uvidíte, že pre obe tlačidlá v grafickom používateľskom rozhraní sú vytvorené dve funkcie. Teraz napíšte kód do oboch funkcií podľa úlohy, ktorú chcete vykonať po kliknutí.
Vo funkcii tlačidla LED-ON skopírujte a vložte nasledujúci kód tesne pred koncom funkcie, aby sa rozsvietila LED. Ako vidíte v nasledujúcom kóde, fprintf (x, 1) sa používa na zasielanie sériových údajov z MATLABu do série Arduino. Tu sme sa vysiela, 1 'na Arduino seriálu a keď si skontrolovať Arduino kód, zistíte, že Arduino bude svietiť LED tým, že jeho 13 th pin vysoké, keď dostane, 1' na svojom sériovom porte.
globálne x; fprintf (x, 1);
Vo funkcii tlačidla LED-OFF skopírujte a vložte nasledujúci kód tesne pred koncom funkcie, aby sa LED vypla. Ako vidíte v nasledujúcom kóde, fprintf (x, 0) sa používa na zasielanie sériových údajov z MATLABu do série Arduino. V tejto časti sme vysielajúcim, 0 'na Arduino seriálu a keď si skontrolovať Arduino kód, zistíte, že Arduino vypne LED tým, že jeho 13 th pin nízka, keď dostane, 0' na svojom sériovom porte.
globálne x; fprintf (x, 0);
Po dokončení programovania grafického používateľského rozhrania MATLAB a nastavení hardvéru podľa schémy zapojenia stačí kliknúť na tlačidlo spustenia a spustiť upravený kód v súbore.m.
MATLABu môže trvať niekoľko sekúnd, kým odpovie, neklikajte na žiadne tlačidlo grafického používateľského rozhrania, kým MATLAB nezobrazí údaj BUSY, ktorý vidíte v ľavom dolnom rohu obrazovky, ako je to znázornené nižšie,
Keď je všetko pripravené, kliknite na tlačidlo LED-ZAPNUTÉ a LED-VYPNUTÉ na zapnutie a vypnutie LED. Ak stlačíte LED ON tlačidlom , 13 th kolík Arduino ide vysoká a LED pripojené k tomuto PIN začne žiariace, a pri stlačení tlačidla LED-OFF , 13 th kolík Arduino ide nízky vďaka ktorému LED vypnúť.
Môžete si pozrieť video nižšie, aby ste pochopili celý proces odosielania sériových údajov z MATLABu do Arduina pomocou MATLAB GUI.