- Komponenter kreves
- Kretsdiagram
- Seriekommunikasjon ved hjelp av MATLAB kommandovindu
- Seriekommunikasjon ved hjelp av MATLAB GUI
MATLAB er allsidig programvare som kan brukes til mange forskjellige applikasjoner. I tidligere opplæringsprogrammer for MATLAB har vi forklart hvordan du bruker MATLAB til å kontrollere likestrømsmotor, servomotor og husholdningsapparater. Her i denne veiledningen vil vi lære hvordan du bruker MATLAB til seriell kommunikasjon. For å motta slutten av seriell kommunikasjon bruker vi Arduino.
Det er to måter å konfigurere seriell kommunikasjon mellom MATLAB og Arduino, den ene bruker kommandovinduet og den andre bruker MATLAB GUI. Arduino-koden for begge metodene forblir den samme. Hvis du ikke er fersk på MATLAB, anbefales det å komme i gang med et enkelt LED-blinkprogram med MATLAB og lære den grunnleggende terminologien som brukes i MATLAB.
Komponenter kreves
- MATLAB installert bærbar PC (preferanse: R2016a eller høyere versjoner)
- Arduino UNO
- LED (hvilken som helst farge)
- Motstand (330 ohm)
Kretsdiagram
Ovennevnte kretsskjema vil forbli det samme for begge måtene å etablere seriell kommunikasjon mellom MATLAB og Arduino.
Seriekommunikasjon ved hjelp av MATLAB kommandovindu
Dette er den enkle metoden for å sette opp seriell kommunikasjon mellom Arduino og MATLAB. Her vil vi ganske enkelt sende dataene fra MATLAB til Arduino serielt ved hjelp av kommandovinduet, og deretter lese Arduino innkommende serielle data. Deretter kan disse serielt overførte dataene brukes til å kontrollere alt som er koblet til Arduino. Her har vi koblet en LED til Arduino, som vil bli slått av og på i henhold til de serielt mottatte dataene fra Arduino.
Først laster du opp den gitte Arduino-koden i Arduino UNO og begynner deretter kodingen i MATLAB Editor-vinduet. For å åpne et nytt redigeringsskript, klikk på ' Nytt skript' som vist i bildet nedenfor:
Kopier og lim deretter inn den komplette MATLAB-koden nedenfor i redigeringsvinduet for seriell kommunikasjon mellom MATLAB og Arduino.
% MATLAB-kode for seriell kommunikasjon mellom Arduino og MATLAB x = seriell ('COM18', 'BAUD', 9600); fopen (x); gå = sant; mens gå a = inngang ('Trykk 1 for å slå PÅ LED og 0 for å slå AV:'); fprintf (x, a); hvis (a == 2) go = false; slutten slutten
I den gitte koden brukes kommandoen nedenfor for å definere seriell kommunikasjon i MATLAB. Forsikre deg om at portnummeret er portnummeret som Arduino er koblet til, og at overføringshastigheten skal være den samme i begge kodene til Arduino og MATLAB.
x = seriell ('COM18', 'BAUD', 9600);
For å åpne seriell port, bruk kommandoen nedenfor, fopen (x);
Kommandoen nedenfor brukes til å sende data fra MATLAB til Arduino serielt, hvor x er for å ringe seriell og a er verdien som er angitt av brukeren.
fprintf (x, a);
Vi har bruk mens funksjon for å lage en uendelig sløyfe, og når brukeren skriver inn tallet '2', vil sløyfen bryte.
mens gå a = inngang ('Trykk 1 for å slå PÅ LED og 0 for å slå AV:'); fprintf (x, a); hvis (a == 2) go = false; slutten slutten
Etter å ha fullført kodingen av MATLAB-redigeringsskriptet, klikk på ' KJØR ' for å kjøre programmet ditt som vist i bildet nedenfor,
MATLAB tar noen sekunder å behandle koden og starte seriekommunikasjonen, vent til MATLAB viser 'BUSY' -meldingen nederst til venstre på programvareskjermen, som vist på bildet nedenfor.
Nå vil du se kommandovinduet for sending av brukerinndata, vi har satt standardmeldingen, 'Trykk 1 for å slå PÅ LED og 0 for å slå AV:'
Send '1' for å slå på LED-en, '0' for å slå AV LED-en og '2' for å avbryte driften. Du kan angi hvilket som helst tall for enhver oppgave, alt du trenger å gjøre er å bare endre Arduino-koden tilsvarende. Komplett Arduino-kode er gitt på slutten.
Du kan sjekke ut videoen nedenfor for å forstå den komplette prosessen med å sende serielle data fra MATLAB til Arduino ved hjelp av kommandovinduet.
Seriekommunikasjon ved hjelp av MATLAB GUI
For å demonstrere seriekommunikasjonen ved hjelp av MATLAB GUI, vil vi lage to grafiske knapper ved hjelp av MATLAB for å slå på og av LED-en som er koblet til Arduino. Data vil bli sendt serielt fra MATLAB til Arduino ved å klikke på disse knappene for å slå på og av LED. Arduino vil inneholde koden for å motta seriell data fra MATLAB og kontrollere LED i henhold til mottatte serielle data. Arduino-koden vil forbli den samme som den forrige, bare forskjellen er at vi tidligere sendte seriell data '1' og '0' gjennom kommandovinduet til MATLAB, og nå vil de samme dataene bli sendt på klinking på to grafiske knapper.
For å starte GUI, skriv kommandoen nedenfor i kommandovinduet
guide
Et popup-vindu åpnes, og velg deretter nytt tomt GUI som vist i bildet nedenfor,
Velg nå to trykknapper for å slå PÅ og AV LED, som vist nedenfor,
For å endre størrelse eller endre formen på knappene, klikker du bare på den så vil du kunne dra hjørnene på knappen. Ved å dobbeltklikke på trykknappen kan du endre farge, streng og merke på den aktuelle knappen. Vi har tilpasset to knapper som vist på bildet nedenfor.
Du kan tilpasse knappene etter eget valg. Nå når du lagrer dette, genereres en kode i Editor-vinduet til MATLAB. Rediger denne koden i henhold til oppgaven du vil utføre av Arduino ved hjelp av MATLAB GUI. Så nedenfor har vi redigert MATLAB-koden. Du kan lære mer om kommandovindu, redigeringsvindu osv. I Komme i gang med MATLAB-opplæringen.
Komplett MATLAB-kode for etablering av seriell kommunikasjon mellom MATLAB og Arduino er gitt på slutten av dette prosjektet. Videre inkluderer vi GUI-filen (.fig) og kodefilen (.m) her for nedlasting (høyreklikk på lenken og velg deretter "Lagre lenke som…"), ved hjelp av hvilken du kan tilpasse knappene etter behov. Nedenfor er noen justeringer vi gjorde for å kontrollere LED-en som er koblet til Arduino.
Kopier og lim inn koden nedenfor på linje nr. 74 for å sette opp seriell port og baudrate.
slett alt; global x; x = seriell ('COM18', 'BAUD', 9600); % Forsikre deg om at baudrate og COM-port er % den samme som i Arduino IDE fopen (x);
der fopen (x) brukes til å åpne den serielle porten for seriell kommunikasjon.
Når du blar nedover, vil du se at det er to funksjoner opprettet for begge knappene i GUI. Skriv nå koden i begge funksjonene i henhold til oppgaven du vil utføre ved å klikke.
I LED-ON- knappens funksjon, kopier og lim inn koden nedenfor rett før slutten av funksjonen for å slå PÅ LEDen. Som du ser i koden nedenfor, brukes fprintf (x, 1) til å sende serielle data fra MATLAB til Arduino serial. Her sender vi '1' til Arduino seriell og hvis du sjekker Arduino kode, vil du finne at Arduino lyser LED ved å gjøre sin 13 th pin high, når den mottar '1' på sin serieport.
global x; fprintf (x, 1);
I LED-OFF- knappens funksjon, kopier og lim inn koden nedenfor rett før slutten av funksjonen for å slå AV LED. Som du ser i koden nedenfor, brukes fprintf (x, 0) til å sende serielle data fra MATLAB til Arduino serial. I denne delen, vi sender '0' til Arduino seriell og hvis du sjekker Arduino kode, vil du finne at Arduino vil slå av LED ved å gjøre sin 13 th pin LAV, når den mottar '0' på serieport.
global x; fprintf (x, 0);
Etter å ha fullført MATLAB GUI-koding og konfigurere maskinvaren i henhold til kretsskjema, klikker du bare på Run-knappen for å kjøre den redigerte koden i.m-filen.
MATLAB kan ta noen sekunder å svare, ikke klikk på noen GUI-knapp før MATLAB viser OPPTAGEN indikasjon, som du kan se i nederste venstre hjørne av skjermen som vist nedenfor,
Når alt er klart, klikker du på LED-PÅ og LED-AV-knappen for å slå PÅ og AV LED. Når du trykker på LED-ON-knappen , 13 th pin av Arduino går høyt og LED koblet til denne PIN starter glødende, og når du trykker på LED-OFF knapp , 13 th pin av Arduino går LAV som gjør LED for å slå av.
Du kan sjekke ut videoen nedenfor for å forstå den komplette prosessen med å sende serielle data fra MATLAB til Arduino ved hjelp av MATLAB GUI.