Comunicación serial Arduino - Scilab - Ing. Roberto Barragán

Comunicación serial Arduino - Scilab
Universidad de Guadalajara - CUCEI
I7292 - Sistemas de Medición
Ing. Roberto C. Barragán
En este documento se darán las indicaciones para poder realizar una comunicación serial (puerto USB)
entre la computadora y algún otro dispositivo externo, que en este caso será un Arduino. Antes de
comenzar será necesario que se familiaricen con los siguientes temas:
Scripts - Introducción a Scilab, Cap. 4, pag. 22,23.
Órdenes y control de flujo - Introducción Scilab, Cap. 4, pags. 27-30.
Modulos ATOMS en Scilab
Lo primero que tienen que hacer es instalar la herramienta de comunicación serial en Scilab, para hacer
esto necesitamos estar conectados a internet. Sigan los siguientes pasos:
1. Abrir Scilab.
2. Dar clic en Applications/Module manager - ATOMS.
3. Se abrirá una ventana con nombre “Main categories - ATOMS”, en la lista del lado izquierdo buscamos la carpeta con nombre Signal Processing. Seleccionamos la herramienta Serial Communication
Toolbox y damos clic en Install.
4. Una vez instalado cerramos Scilab por completo y lo volvemos abrir. Si la herramienta ha sido
instalada correctamente en la consola de Scilab aparecera un mensaje que dice “Start Serialport”.
Programación para la comunicación serial
El siguiente código puede ejecutarse desde la consola de Scilab. Sin embargo, resulta más práctico utilizarlo
mediante scripts de programación dentro del mismo Scilab. Sino tienes idea de lo que se está hablando,
es porque no leı́ste acerca de los temas que se mencionan al inicio del documento, te sugiero que los leas.
Script con el código para la comunicación con el puerto serial.
clear;
clc;
clf;
// Borra todas las variables.
// Limpia la consola de Scilab.
// Cierra cualquier grafica de Scilab.
n=200;
// Numero de datos que se quieren almacenar.
h=openserial(’COM4’,"9600,n,8,2");
iniciar = input("Pulse 1 para iniciar: ")
i = iniciar;
while i < n
data(i) = strtod(readserial(h));
if data(i) == %nan
then data(i = data(i-1));
end
plot(i,data(i),’b-o’);
drawnow();
xpause(100000);
i=i+1;
end
closeserial(h)
// Abre el puerto de comunicacion serial.
// Captura la informacion ingresada en el teclado.
// Recepcion del dato.
// Verifica que el dato sea un numero.
// Si data(i) no es numero asigna el valor anterior.
// Grafica el ultimo dato recibido.
// Retardo en microsegundos.
// Cierra el puerto de comunicacion serial.