- Komponenter, der kræves
- Kredsløbsdiagram
- Seriel kommunikation ved hjælp af MATLAB kommandovindue
- Seriel kommunikation ved hjælp af MATLAB GUI
MATLAB er alsidig software, der kan bruges til mange forskellige applikationer. I tidligere tutorials af MATLAB har vi forklaret, hvordan man bruger MATLAB til at styre jævnstrømsmotor, servomotor og husholdningsapparater. Her i denne vejledning lærer vi, hvordan man bruger MATLAB til seriel kommunikation. Til den modtagende ende af seriel kommunikation bruger vi her Arduino.
Der er to måder at konfigurere seriel kommunikation mellem MATLAB og Arduino, den ene bruger kommandovinduet og den anden bruger MATLAB GUI. Arduino-koden for begge metoder forbliver den samme. Hvis du er ny hos MATLAB, anbefales det at komme i gang med et simpelt LED-blinkprogram med MATLAB og lære den grundlæggende terminologi, der bruges i MATLAB.
Komponenter, der kræves
- MATLAB installeret bærbar computer (præference: R2016a eller nyere versioner)
- Arduino UNO
- LED (enhver farve)
- Modstand (330 ohm)
Kredsløbsdiagram
Ovenstående kredsløbsdiagram forbliver den samme for begge måder at etablere seriel kommunikation mellem MATLAB og Arduino.
Seriel kommunikation ved hjælp af MATLAB kommandovindue
Dette er den enkle metode til opsætning af seriel kommunikation mellem Arduino og MATLAB. Her sender vi simpelthen dataene fra MATLAB til Arduino serielt ved hjælp af kommandovinduet, og derefter læser Arduino de indgående serielle data. Derefter kan disse serielt transmitterede data bruges til at kontrollere alt, der er forbundet med Arduino. Her har vi tilsluttet en LED til Arduino, der vil blive tændt og slukket i henhold til de serielt modtagne data fra Arduino.
Upload først den givne Arduino-kode i Arduino UNO og start derefter kodningen i MATLAB Editor-vinduet. For at åbne et nyt editor script, klik på ' New Script' som vist i billedet nedenfor:
Kopier og indsæt derefter nedenstående komplette MATLAB-kode i editorvinduet til seriel kommunikation mellem MATLAB og Arduino.
% MATLAB-kode til seriel kommunikation mellem Arduino og MATLAB x = seriel ('COM18', 'BAUD', 9600); fopen (x); gå = sandt; mens go a = input ('Tryk 1 for at tænde LED & 0 for at slukke:'); fprintf (x, a); hvis (a == 2) go = false; slutningen slutningen
I den givne kode bruges nedenstående kommando til at definere den serielle kommunikation i MATLAB. Sørg for, at portportnummeret er det portnummer, som Arduino er tilsluttet, og at baudhastigheden skal indstilles ens i begge koder for Arduino og MATLAB.
x = seriel ('COM18', 'BAUD', 9600);
Brug nedenstående kommando for at åbne seriel port, fopen (x);
Nedenstående kommando bruges til at sende data fra MATLAB til Arduino serielt, hvor x er til kald til seriel og a er den værdi, der er indtastet af brugeren.
fprintf (x, a);
Vi har brug mens funktionen til at oprette en uendelig sløjfe, og når brugeren indtaster nummeret '2', vil sløjfen bryde.
mens go a = input ('Tryk 1 for at tænde LED & 0 for at slukke:'); fprintf (x, a); hvis (a == 2) go = false; slutningen slutningen
Efter at have afsluttet kodning af MATLAB editor script, klik på ' KØR ' for at køre dit program som vist i billedet nedenfor,
MATLAB tager få sekunder at behandle koden og starter den serielle kommunikation, vent indtil MATLAB viser 'OPTAGET' besked i nederste venstre hjørne af softwareskærmen, som vist i billedet nedenfor.
Nu vil du se kommandovinduet til afsendelse af brugerinput, vi har indstillet standardmeddelelsen, 'Tryk på 1 for at tænde LED og 0 for at slukke:'
Send '1' for at tænde lysdioden, '0' for at slukke for LED og '2' for at afbryde handlingen. Du kan indstille et hvilket som helst nummer til enhver opgave, alt hvad du skal gøre er bare at ændre Arduino-koden i overensstemmelse hermed. Komplet Arduino-kode gives i slutningen.
Du kan tjekke videoen nedenfor for at forstå den komplette proces med at sende serielle data fra MATLAB til Arduino ved hjælp af kommandovinduet.
Seriel kommunikation ved hjælp af MATLAB GUI
For at demonstrere seriel kommunikation ved hjælp af MATLAB GUI opretter vi to grafiske knapper ved hjælp af MATLAB til at tænde og slukke for LED'en, der er tilsluttet Arduino. Data sendes serielt fra MATLAB til Arduino ved at klikke på disse knapper for at tænde og slukke for LED. Arduino vil indeholde koden til modtagelse af serielle data fra MATLAB og styring af LED'en i henhold til de modtagne serielle data. Arduino-koden forbliver den samme som den foregående, den eneste forskel er, at vi tidligere sendte serielle data '1' og '0' gennem MATLABs kommandovindue, og nu sendes de samme data, når de klinker på to grafiske knapper.
For at starte GUI skal du skrive nedenstående kommando i kommandovinduet
guide
Et popup-vindue åbnes, og vælg derefter en ny tom GUI som vist i billedet nedenfor,
Vælg nu to trykknapper til at tænde og slukke for LED'en, som vist nedenfor,
For at ændre størrelse eller ændre formen på knapperne skal du bare klikke på den og du vil kunne trække hjørnerne på knappen. Ved at dobbeltklikke på trykknappen kan du ændre farve, streng og tag på den pågældende knap. Vi har tilpasset to knapper som vist på billedet nedenfor.
Du kan tilpasse knapperne efter eget valg. Når du nu gemmer dette, genereres en kode i Editor-vinduet i MATLAB. Rediger denne kode i henhold til den opgave, du vil udføre af din Arduino ved hjælp af MATLAB GUI. Så nedenfor har vi redigeret MATLAB-koden. Du kan lære mere om kommandovindue, editorvindue osv. I Kom godt i gang med MATLAB-vejledning.
Komplet MATLAB-kode til oprettelse af seriel kommunikation mellem MATLAB og Arduino er givet i slutningen af dette projekt. Desuden inkluderer vi GUI-filen (.fig) og kodefilen (.m) her til download (højreklik på linket, og vælg derefter "Gem link som…"), ved hjælp af hvilket du kan tilpasse knapperne efter dine behov. Nedenfor er nogle tweaks, vi gjorde for at kontrollere LED'en forbundet med Arduino.
Kopier og indsæt nedenstående kode på linjenr. 74 for at indstille den serielle port og baudrate.
Slet alt; global x; x = seriel ('COM18', 'BAUD', 9600); % Sørg for, at baudhastigheden og COM-porten er % den samme som i Arduino IDE fopen (x);
hvor fopen (x) bruges til at åbne den serielle port til seriel kommunikation.
Når du ruller nedad, vil du se, at der er to funktioner oprettet for begge knapper i GUI. Skriv nu koden i begge funktioner i henhold til den opgave, du vil udføre ved klik.
I LED-ON- knappens funktion skal du kopiere og indsætte nedenstående kode lige inden afslutningen af funktionen for at tænde LED'en. Som du ser i nedenstående kode, bruges fprintf (x, 1) til at sende serielle data fra MATLAB til Arduino serielle. Her sender vi '1' til Arduino serielle og hvis du tjekker Arduino kode, vil du opdage, at Arduino vil gløde LED ved at gøre sin 13 th pin HØJ, når den modtager '1' på sin serielle port.
global x; fprintf (x, 1);
I LED-OFF-knapens funktion skal du kopiere og indsætte nedenstående kode lige inden funktionens afslutning for at slukke for LED'en. Som du ser i nedenstående kode bruges fprintf (x, 0) til at sende serielle data fra MATLAB til Arduino-serier. I denne del, vi sender '0' til Arduino serielle og hvis du tjekker Arduino kode, vil du opdage, at Arduino vil slukke for LED ved at gøre sin 13 th pin LOW, når den modtager '0' på sin serielle port.
global x; fprintf (x, 0);
Efter at have afsluttet med MATLAB GUI-kodning og opsætning af hardwaren i henhold til kredsløbsdiagram, skal du bare klikke på knappen Run for at køre den redigerede kode i.m-filen.
MATLAB kan tage et par sekunder at svare, klik ikke på nogen GUI-knap, før MATLAB viser BUSY-indikation, som du kan se i nederste venstre hjørne af skærmen som vist nedenfor,
Når alt er klar, skal du klikke på knappen LED-ON og LED-OFF for at tænde og slukke for LED'en. Når du trykker LED-ON knap , 13 th pin af Arduino går højt og LED tilsluttet til denne PIN begynder glødende, og når du trykker LED-OFF-knap , 13 th pin af Arduino går LOW, som gør LED til at slukke.
Du kan tjekke videoen nedenfor for at forstå den komplette proces med at sende serielle data fra MATLAB til Arduino ved hjælp af MATLAB GUI.