- Components necessaris
- Esquema de connexions
- Comunicació en sèrie mitjançant la finestra d'ordres MATLAB
- Comunicació en sèrie mitjançant MATLAB GUI
MATLAB és un programari versàtil que es pot utilitzar per a una gran varietat d'aplicacions. En tutorials anteriors de MATLAB, hem explicat com utilitzar MATLAB per controlar el motor de corrent continu, el servomotor i els electrodomèstics. Aquí, en aquest tutorial, aprendrem a utilitzar MATLAB per a la comunicació en sèrie. Per al final de recepció de la comunicació en sèrie, estem aquí utilitzant Arduino.
Hi ha dues maneres de configurar la comunicació en sèrie entre MATLAB i Arduino, una utilitza la finestra d’ordres i l’altra utilitza MATLAB GUI. El codi Arduino per als dos mètodes seguirà sent el mateix. Si no coneixeu MATLAB, és recomanable començar amb un senzill programa de parpelleig LED amb MATLAB i aprendre la terminologia bàsica utilitzada a MATLAB.
Components necessaris
- Portàtil instal·lat per MATLAB (preferència: R2016a o versions superiors)
- Arduino UNO
- LED (qualsevol color)
- Resistència (330 ohm)
Esquema de connexions


El diagrama de circuits anterior seguirà sent el mateix per a les dues formes d’establir una comunicació en sèrie entre MATLAB i Arduino.
Comunicació en sèrie mitjançant la finestra d'ordres MATLAB
Aquest és el mètode senzill per configurar la comunicació en sèrie entre Arduino i MATLAB. Aquí simplement enviarem les dades de MATLAB a l’Arduino de manera seriosa mitjançant la finestra d’ordres i després Arduino llegirà les dades de sèrie entrants. A continuació, aquestes dades transmeses en sèrie es poden utilitzar per controlar qualsevol cosa connectada a l'Arduino. Aquí hem connectat un LED a Arduino, que s’encendrà i s’apagarà segons les dades rebudes en sèrie per l’Arduino.
Primer, carregueu el codi Arduino donat a Arduino UNO i després comenceu a codificar a la finestra de l’editor MATLAB. Per obrir un nou script d'editor, feu clic a " Nou script" , tal com es mostra a la imatge següent:

A continuació, copieu i enganxeu el codi complet MATLAB següent a la finestra de l'editor per a la comunicació en sèrie entre MATLAB i Arduino.
% Codi MATLAB per a la comunicació en sèrie entre Arduino i MATLAB x = serial ('COM18', 'BAUD', 9600); fopen (x); anar = cert; mentre vagi a = input ('Premeu 1 per activar el LED i 0 per apagar:'); fprintf (x, a); if (a == 2) go = false; fi final

Al codi indicat, s'utilitza l'ordre següent per definir la comunicació en sèrie a MATLAB. Assegureu-vos que el número de port de com sigui el número de port al qual està connectat Arduino i que la velocitat en bauds s’hagi d’establir igual als codis d’ Arduino i MATLAB.
x = sèrie ("COM18", "BAUD", 9600);
Per obrir el port sèrie utilitzeu l'ordre següent, fopen (x);
L'ordre següent s'utilitza per enviar dades de MATLAB a Arduino de manera seriosa, on x serveix per trucar a sèrie i a és el valor introduït per l'usuari.
fprintf (x, a);
Tenim la funció use mentre es crea un bucle infinit i sempre que l'usuari introdueix el número '2' el bucle es trencarà.
mentre vagi a = input ('Premeu 1 per activar el LED i 0 per apagar:'); fprintf (x, a); if (a == 2) go = false; fi final
Després de completar la codificació de l'script de l'editor MATLAB, feu clic a " RUN " per executar el programa tal com es mostra a la imatge següent,

MATLAB triga uns quants segons a processar el codi i iniciar la comunicació en sèrie, espereu fins que MATLAB mostri el missatge "BUSY" a l'extrem inferior esquerre de la pantalla del programari, tal com es mostra a la imatge següent.

Ara, veureu la finestra d’ordres per enviar l’entrada de l’usuari, hem definit el missatge per defecte, "Premeu 1 per activar el LED i 0 per apagar:"

Envieu "1" per encendre el LED, "0" per apagar el LED i "2" per interrompre l'operació. Podeu configurar qualsevol número per a qualsevol tasca, només cal que canvieu el codi Arduino en conseqüència. Al final es dóna un codi Arduino complet.

Podeu veure el vídeo següent per entendre el procés complet d’ enviament de dades de sèrie des de MATLAB a Arduino mitjançant la finestra d’ordres.
Comunicació en sèrie mitjançant MATLAB GUI
Per demostrar la comunicació en sèrie mitjançant MATLAB GUI, crearem dos botons gràfics amb MATLAB per encendre i apagar el LED connectat a l'Arduino. Les dades s’enviaran en sèrie des de MATLAB a Arduino en fer clic en aquests botons per encendre i apagar el LED. Arduino contindrà el codi per rebre dades de sèrie de MATLAB i controlar el LED segons les dades de sèrie rebudes. El codi Arduino seguirà sent el mateix que l'anterior, l'única diferència és que, anteriorment, enviavem dades de sèrie '1' i '0' a través de la finestra d'ordres de MATLAB, i ara s'enviaran les mateixes dades fent clic en dos botons gràfics.
Per iniciar la GUI, escriviu l'ordre següent a la finestra d'ordres
guia
S'obrirà una finestra emergent i, a continuació, seleccioneu una nova interfície gràfica en blanc com es mostra a la imatge següent.

Ara trieu dos polsadors per encendre i apagar el LED, com es mostra a continuació,

Per canviar la mida o canviar la forma dels botons, només cal que hi feu clic i podreu arrossegar les cantonades del botó. Fent doble clic al botó, podeu canviar el color, la cadena i l’etiqueta d’aquest botó en particular. Hem personalitzat dos botons com es mostra a la imatge següent.


Podeu personalitzar els botons segons la vostra elecció. Ara, quan el deseu, es generarà un codi a la finestra Editor de MATLAB. Editeu aquest codi segons la tasca que vulgueu fer amb el vostre Arduino mitjançant la GUI de MATLAB. Per tant, a continuació hem editat el codi MATLAB. Podeu obtenir més informació sobre la finestra d'ordres, la finestra de l'editor, etc. a Introducció al tutorial MATLAB.
El codi MATLAB complet, per establir la comunicació en sèrie entre MATLAB i Arduino, es dóna al final d’aquest projecte. A més, incloem el fitxer GUI (.fig) i el fitxer de codi (.m) aquí per descarregar (feu clic dret a l'enllaç i seleccioneu "Desa l'enllaç com…"), amb el qual podeu personalitzar els botons segons el vostre requisit. A continuació es mostren alguns ajustaments que vam fer per controlar el LED connectat amb Arduino.
Copieu i enganxeu el codi següent a la línia núm. 74 per configurar el port sèrie i la velocitat de transmissió.
netejar-ho tot; x global; x = sèrie ("COM18", "BAUD", 9600); % Assegureu-vos que la velocitat de transmissió i el port COM són % iguals que a Arduino IDE fopen (x);

on, fopen (x) s'utilitza per obrir el port sèrie per a la comunicació en sèrie.
Quan desplaceu-vos cap avall, veureu que hi ha dues funcions creades per als dos botons de la GUI. Ara escriviu el codi a les dues funcions segons la tasca que vulgueu fer en fer clic.
A la funció del botó LED-ON , copieu i enganxeu el codi següent just abans de finalitzar la funció per encendre el LED. Com veieu al codi següent, fprintf (x, 1) s'utilitza per enviar dades de sèrie des de MATLAB a Arduino serial. Aquí estem enviant '1' a la sèrie Arduino i, si comproveu el codi Arduino, trobareu que Arduino encendrà el LED fent que el seu número 13 sigui PIN ALT quan rebi '1' al seu port sèrie.
x global; fprintf (x, 1);

A la funció del botó LED-OFF , copieu i enganxeu el codi següent just abans de finalitzar la funció per apagar el LED. Com veieu al codi següent, fprintf (x, 0) s’utilitza per enviar dades de sèrie des de MATLAB a Arduino serial. En aquesta part, estem enviant '0' a la sèrie Arduino i, si comproveu el codi Arduino, trobareu que Arduino apagarà el LED fent que el seu número 13 sigui PIN BAIX, quan rebi '0' al seu port sèrie.
x global; fprintf (x, 0);

Després de completar amb la codificació GUI MATLAB i configurar el maquinari segons el diagrama de circuits, només cal que feu clic al botó d'execució per executar el codi editat al fitxer.m.

MATLAB pot trigar uns quants segons a respondre, no feu clic a cap botó GUI fins que MATLAB mostri la indicació BUSY, que podeu veure a l'extrem inferior esquerre de la pantalla, tal com es mostra a continuació.

Quan tot estigui a punt, feu clic al botó LED-ON i LED-OFF per encendre i apagar el LED. Quan es pressiona LED-ON , el 13 º pin de Arduino passa a ALT i el LED connectat a aquest PIN comença a brillar intensament, i quan es prem el botó OFF-LED , 13 º pin d'Arduino passa a SOTA que fa que el LED s'apagui.
Podeu consultar el vídeo següent per entendre el procés complet d’ enviament de dades de sèrie des de MATLAB a Arduino mitjançant la GUI de MATLAB.
