Arduino sobre Ubuntu

Arduino IDE no se encuentra en los repositorios oficiales de Ubuntu, al menos en su última versión, por lo que tenemos que utilizar la web oficial del Proyecto para conseguir este IDE.

Actualmente existen dos versiones de Arduino IDE, una versión que corresponde a la rama 1.8.x y otra rama que corresponde con la versión 1.0.x. La diferencia entre ambas versiones radica en los modelos de placas que soportan: si descargamos la versión 1.8.x de Arduino IDE podemos cambiar en cualquier momento de placa y esta versión lo soportará ( si escogemos la versión 1.0.x hemos de cambiar el programa si cambiamos a una placa moderna, pues la rama 1.0.6 no soporta las placas de Arduino más modernas).

Una vez que hemos descargado el paquete de Arduino IDE desde aquí, descomprimimos el archivo comprimido en cualquier carpeta de nuestra home (mejor hacerlo ena Home y no en Descargas para evitar problemas cuando realizamos limpiezas en el futuro).

En el paquete que hemos descomprimido aparecerán varios archivos e incluso dos ejecutables, uno de ellos llamado Arduino-Builder, pero estos archivos ejecutables no seráa necesario para instalar Arduino IDE en nuestro Ubuntu

Una vez descomprimidos los archivos necesitaremos abrir una terminal en la carpeta donde están todos estos archivos, y desde la consola escribimos lo siguiente:

sudo chmod +x install.sh

Esta orden hará que el archivo de instalación pueda ejecutarse sin tener que ser root. Ahora ejecutamos en la terminal lo siguiente:

./install.sh

Puede que tenga problemas para ejecutar el instalable por los permisos, por lo que si fuese el caso solo tiene que escribir

sudo ./install.sh

Esto hará finalmente que comience la instalación de Arduino IDE en nuestro Ubuntu.

Tras seguir las instrucciones tendremos Arduino IDE instalado en nuestro Ubuntu y unacceso directo en nuestro escritorio. En este caso da igual la versión de Ubuntu que tengamos pues funciona con las últimas 10 versiones de Ubuntu que han sido lanzadas (versiones LTS incluidas).

Problemas con los puertos

Para los que esten aconstumbrados a usar el ide de Arduino sobre Windows , puede que les resulte extraño en la combinación Arduino-Ubuntu donde los puertos virtuales no se muestran del mismo modo, y con esto se desembocan en nuevos problemas, que como vamos a vers son facilmente resolubles.

COM1 es una designación de Windows (TM): se verá como/dev/ttyACM0,/dev/ttyUSB0 o similar en Linux.

El puerto atenuado tiende a significar que no ha configurado primero el tipo de placa: revise la configuración en arduino Menú Herramientas y configure la placa en ‘Uno’, también debería ver la habilitación de ‘puerto’ y el autocompletado.

puerto

El primer problema puede ser que el puerto Serial se encontraba deshabilitado, al momento de ingresar al IDE Arduino no detecta el puerto a pesar de encontrarse conectada la placa a la PC.Al acceder a  Herramientas/ Puerto Serial aparece como deshabilitado y esto NO permitirá que descarguemos nuestro código a la placa. Esto es debido a que el sistema no tiene permisos suficientes para poder establecer una comunicación a travez del puerto USB.

En linux, al conectar un USB le asigna un formato del tipo ttyACM0 o similar y esto se encuentra en la ubicación /dev.

Lo primero que tenemos que hacer es revisar como asigna el sistema operativo los puertos.Vamos abrir una terminal de ubuntu y antes de conectar el Arduino ejecutaremos el siguiente comando.

ls -l /dev | grep ACM

Si no hay ningún dispositivo conectado, no aparecerá ningún resultado. En caso contrario aparecerá asignado con algún nombre.

Ahora conectamos el arduino a la placa y ejecutamos el mismo comando.

Deberá aparecer una linea similar a

crw-rw—- 1 root dialout 166, 0 sep 25 14:42 ttyACM0

En este caso dice que solo el usuario root puede acceder al puerto.

Por lo tanto procedemos a brindarle permisos para los usuarios normales del sistema, ejecutamos e lo siguiente:

sudo chmod 777 /dev/ttyACM0

Donde ttyACM0 es el nombre que nos dio en el primer comando, este puede ser ttyACM1. Al ejecutar este comando les pedirá la contraseña del sistema. Para asegurarnos que ha cambiado los permisos ejecutamos de nuevo:

ls -l /dev | grep ACM

El resultado debe ser similar a:

crwxrwxrwx 1 root dialout 166, 0 sep 25 14:42 ttyACM0

El cambio que notaremos esta en las primeras letras del mensaje de respuesta:

Antes: crw-rw—- 1 root dialout 166, 0 sep 25 14:42 ttyACM0

Ahora: crwxrwxrwx 1 root dialout 166, 0 sep 25 14:42 ttyACM0

Esto ya indica que los demas usuarios tienen acceso al puerto ttyACM0 y por tanto no deberia dar problemas el ide de Arduino para reconocer la placa por el puerto.

Comando dmesg

En el caso de que pueda intentar iniciar sesión en Tools-> Port si existe un puerto que no sea /dev/ttyS0. Intente jugar con estas opciones. Finalmente, buscando en dmesg también puede averiguar qué puerto se ha ubicado para arduino.

Finalmente, otro enfoque es desconectar su arduino, volver a enchufarlo y escribir el siguiente comando:

dmesg | tail

Para registrar el último evento como el que ocurre cuando arduino se conecta a un puerto usb. El comando anterior le mostrará el puerto correcto.

Para obtener mejores resultados, puede usar lo siguiente:

  dmesg | tail -f

Y conecte y desconecte continuamente el arduino del puerto usp hasta que vea cualquier mensaje relacionado con arduino. El parámetro -f permite mostrar en tiempo real los nuevos registros.

Si todo va mal

Si su cuenta de usuario probablemente no tiene permiso para usar el puerto serie y no consigue resolver el problema hay aun dos formas de abordar esto:

  • Más fácil, pero no aconsejable: Ejecute Arduino IDE como root (por ejemplo, inicie desde la línea de comando usando Sudo).
  • La segunda forma más recomendable de hacerlo es agregar su usuario al grupo dialout, que tiene permiso para usar el puerto serie. Use el comando Sudo adduser $USER dialout. Sin embargo, deberá cerrar sesión y volver a iniciarla para que surta efecto (o intente esto ). Para enumerar grupos de usuarios actuales, use groups o id -Gn.

Una vez hecho esto, cuando seleccione el puerto serie correcto (como otros han mencionado, tal vez /dev/ttyUSB0), debería poder escribir, permitiéndole programar el Arduino.

sudo chmod a+rw /dev/ttyACM0  

o

sudo chmod a+rw /dev/ttyUSB0

Espero que se ha de utilidad este post, si tienen algún comentario o duda pueden dejarlo en los comentarios.

Un comentario sobre “Arduino sobre Ubuntu

  1. Hola:
    He seguido los pasos bien, hasta llegar a «ls -l /dev | grep ACM» que nunca me devuelve nada, ni antes, ni después de conectar la placa.
    De echo, al abrir el IDE de Arduino, e ir al menú «Herramientas», la opción «Puertos» ya aparece inhabilitada, está en gris, no funciona, es como que el IDE no tiene acceso a ningún puerto, de nada, simplemente para el IDE no hay puerto alguno.
    Al hacer «sudo dmesg | tail» el hardward aparece:

    «[ 3508.489424] usb 3-6: new full-speed USB device number 8 using xhci_hcd
    [ 3508.638852] usb 3-6: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice= 2.54
    [ 3508.638867] usb 3-6: New USB device strings: Mfr=0, Product=2, SerialNumber=0
    [ 3508.638873] usb 3-6: Product: USB2.0-Serial
    [ 3508.640874] ch341 3-6:1.0: ch341-uart converter detected
    [ 3508.641561] usb 3-6: ch341-uart converter now attached to ttyUSB0
    [ 3509.190139] input: BRLTTY 6.4 Linux Screen Driver Keyboard as /devices/virtual/input/input27
    [ 3509.370201] usb 3-6: usbfs: interface 0 claimed by ch341 while ‘brltty’ sets config #1
    [ 3509.370798] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0
    [ 3509.370826] ch341 3-6:1.0: device disconnected»

    Aunque al final dice que se desconectó.

    Al hacer: «sudo adduser $USER dialout» me dice «El usuario `usuario’ ya es un miembro de `dialout’.»

    Gracias

Deja una respuesta