How to read data from Arduino to Matlab through serial port

Hello, in this post I will explain how to read in Matlab data received with Arduino through the USB port.

To explain how to read the data from our Arduino in Matlab I have relied on the project: “Distance measuring with the module US-100 or HC-SR04 for Arduino”, once loaded into our Arduino we can run the Matlab code described below:

%Delete previous connections
delete(instrfind({'Port'},{'/dev/tty.usbmodem621'}));
%Create a serial connection
s = serial('/dev/tty.usbmodem621','BaudRate',9600,'Terminator','CR/LF');
warning('off','MATLAB:serial:fscanf:unsuccessfulRead');
%Open Port
fopen(s);
%Initialize the variables
Nvalues=100; %Number of values ​​we want to read
m1=zeros(1,Nvalues);
i=1;
k=0;
 
while k<Nvalues
%Read the serial port
a = fscanf(s,'%f.%f')';
m1(i)=a(1);
%Draw the figure
figure(1);
plot(m1);
%Increment the counter
i=i+1;
k=k+1;
end

 

In my case the port that I am reading is / dev/tty.usbmodem621 (Mac OS) on Windows the port must have a name like COM4, substitute the port in the program for the one we are using in each case. To see in what port we have Arduino connected we can open the Arduino program and click on Tools/Serial Port/. The functions that enable serial communication in Arduino are:

//Sets the serial port transmission
void setup(){
Serial.begin(9600);
}
//Prints by serial port the variable in parentheses and
//continues in a newline
void loop(){
Serial.println();
}

6 thoughts on “How to read data from Arduino to Matlab through serial port

  1. Daniel

    Hola como estas quisiera k me ayudes con una adquision de datos de un sensor dallas 18b20 porfa k no se ocmo hacerlo en matlab

  2. Chris Amaya

    Se me olvidaba, la comunicación entre Matlab y Arduino es por medio del puerto serial virtual.

  3. Chris Amaya

    Hola, tengo un proyecto en el cual necesito enviar datos de Matlab a Arduino, aparentemente manda el dato, pero no se como leerlo en Arduino, me podrías guiar y ayudarme en eso. Gracias!

    1. javiersb Post author

      Aún no he investigado como mandar datos de Matlab a Arduino, pero tengo pensado escribir proximamente sobre ese tema.

  4. Antonio

    Hola,

    el tutorial que muestras me parece muy bueno y sencillo para la gente (como yo) que está comenzando. Te quería preguntar que versión de Matlab utilizas, porque yo utilizo la versión R2008b y el comando “serial” me da un error porque dice que no es soportado por el S.O. de Mac.

    Muchas gracias,
    un saludo.

    Antonio Jesús

    1. javiersb Post author

      Hola, creo que en su momento utilice la versión 2011 de Matlab, también para Mac y no recuerdo haber tenido problemas para usar la comunicación serie pero no puedo asegurartelo porque ahora no lo tengo instalado.

      Un saludo.

Comments are closed.