Using "serial" to connect to an Arduino

2 visualizaciones (últimos 30 días)
Thomas Ibbotson
Thomas Ibbotson el 4 de En. de 2012
Respondida: Bagus Tris Atmaja el 7 de Feb. de 2015
I got an Arduino for xmas, and I'm trying to talk to it from MATLAB (R2012a prerelease) via the serial interface. I'm not having any luck at the moment, I can talk to it from python no problem. Here's what I've got:
>> s = serial('/dev/ttyACM0', 'BaudRate', 9600);
>> fopen(s)
Error using serial/fopen (line 72)
Open failed: Port: /dev/ttyACM0 is not available. Available ports: /dev/ttyS0.
Use INSTRFIND to determine if other instrument objects are connected to the requested device.
But in ipython:
In [1]: import serial
In [2]: s = serial.Serial('/dev/ttyACM0', 9600)
In [3]: s.readline()
Out[3]: '408\r\n'
I've tried '/dev/ttyS0' and made sure I closed old connections, but I still get this error. I've run out of ideas, anyone have suggestions?
  1 comentario
Thomas Ibbotson
Thomas Ibbotson el 4 de En. de 2012
Forgot to point out that I'm on 64-bit linux (Ubuntu 11.10)

Iniciar sesión para comentar.

Respuesta aceptada

Thomas Ibbotson
Thomas Ibbotson el 5 de En. de 2012
I found the following solution on the newsgroup:
Hi Patrick
You can use /dev/ttyACM0 but you need to let the library know that you will be using it. To specify the ports on your system, create a java.opts file in the directory you start MATLAB from with the following line in it:
-Dgnu.io.rxtx.SerialPorts=/dev/ttyS0:/dev/ttyS1:/dev/USB0:/dev/ttyACM0
After you restart MATLAB, the port should be found:
>> instrhwinfo('serial')
ans =
AvailableSerialPorts: {2x1 cell}
JarFileVersion: 'Version 2.7.0'
ObjectConstructorName: {2x1 cell}
SerialPorts: {2x1 cell}
>> ans.AvailableSerialPorts
ans =
'/dev/ttyS0'
'/dev/ttyACM0'
Another option is to create a symbolic link from /dev/ttyS101 to
/dev/ttyACM0. The port should be enumerated as ttyS101 then.

Más respuestas (4)

Walter Roberson
Walter Roberson el 4 de En. de 2012
Is ttyACM0 a virtual USB port? If so then the device needs to be connected when you start MATLAB, as MATLAB only scans the device table once.
  1 comentario
Thomas Ibbotson
Thomas Ibbotson el 4 de En. de 2012
Yes, the device was connected when MATLAB started.

Iniciar sesión para comentar.


Jan
Jan el 19 de Abr. de 2012
i got the same problem. using ubuntu 11.10 and matlab 2010b with arduino ide 1.0
in which folder do i have to put the java.opts file?
/usr/local/MATLAB/R2010b/ ?
  2 comentarios
Thomas Ibbotson
Thomas Ibbotson el 19 de Abr. de 2012
You could add the java.opts file to /usr/local/MATLAB/R2010b/matlab/bin/glnxa64/ if you have write permissions there.
Alternatively you can put it in the MATLAB startup directory i.e. the directory MATLAB returns from 'pwd' before any other code is run (which is the directory you were in when you called the command from if you launch MATLAB from the prompt, or if you've set up a desktop launcher for MATLAB, it is usually your home directory).
Thomas Ibbotson
Thomas Ibbotson el 19 de Abr. de 2012
I assumed you're on 64-bit linux, if it's 32-bit then the directory will be glnx86. In any case you can find out from MATLAB which architecture you are using from the command:
computer('arch')

Iniciar sesión para comentar.


Jan
Jan el 19 de Abr. de 2012
ok, thank you! it s working :)

Bagus Tris Atmaja
Bagus Tris Atmaja el 7 de Feb. de 2015
I have same problem with Matlab 2013 in Ubuntu 14.04. When I try fnd info from serial port, it is live,
>> instrhwinfo('serial')
ans =
AvailableSerialPorts: {'/dev/ttyS101'}
JarFileVersion: 'Version 3.3'
ObjectConstructorName: {'serial('/dev/ttyS101');'}
SerialPorts: {'/dev/ttyS101'}
but, when I connect it with arduino (using ArduinoIO package),
>> a=arduino('/dev/ttyS101');
Attempting connection .............
Warning: Unsuccessful read: A timeout occurred before the Terminator was reached.
Error using arduino (line 104)
Connection unsuccessful, please make sure that the board is powered on, running a
sketch provided with the package, and connected to the indicated serial port. You
might also try to unplug and re-plug the USB cable before attempting a
reconnection.
Any idea? I guess the error from ArduioIO package

Categorías

Más información sobre MATLAB Support Package for Arduino Hardware en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by