Inicio > Pinguino > Comunicación USB CDC (Pinguino + GNU/Linux)

Comunicación USB CDC (Pinguino + GNU/Linux)

Desde que trabajo con Microcontroladores, algo constante en la mayoria de mis proyectos ha sido la comunicacion con un PC, para analisis de datos, este tipo de comunicación tradicionalmente requiere de un conversion de UART a USB, como este:

Que van conectados al puerto UART del MicroControlador, pero esto genera 2 problemas:

  1. Una pieza de Hardware Adicional Costosa (El Cable)
  2. Perder el Puerto UART nativo del MicroControlador, que podriamos usar para otras cosas.

Y bueno pensando en opciones, recorde que Pinguino, posee una unas muy buenas librerias para comunicacion CDC, communications device class, lo que viene a darle a nuestro pinguino la habilidad de comunicarse de forma serial, pero nativamente via usb, sin hardware adicional mas que un simple cable usb…

Vamos a la accion:

Codigo Ejemplo:

/*
Pruebas de Comunicación CDC usando Pinguino
*/
u16 n=0;

void setup(){
}

void loop(){
CDC.printf("%u\n", n++);
delay(100);
}

Con este simple codigo estaremos monstrado una seria de numeros… Pero ahora el problema es que Puerto toma Pinguino para la comunicación?

Lo primero que deben saber es que se conecta a un puerto ttyACM* para saber cual, solamente deben escribir esto:

ls -la /dev/ttyACM*

en mi caso arroja este resultado

crw-rw---- 1 root dialout 166, 0 2012-02-02 23:24 /dev/ttyACM0

lo que me indica que esta conectado al ACM0. Ahora lo primero es dar permisos de escritura a ese puerto:

sudo chmod 777 /dev/ttyACM0

Creamos un enlace simbolico, ALTAMENTE RECOMENDADO…

sudo ln -s /dev/ttyACM0 /dev/Pinguino

Ahora simplemente abrimos cutecom y en puerto señalamos /dev/Pinguino

Anuncios
  1. Carlos
    29 abril, 2012 en 9:55 PM

    yo no tengo ningun /dev/ttyACM

    • 29 abril, 2012 en 10:38 PM

      Por favor podrias publicar el resultado de:
      ls /dev/tty*

      cuando esta conectado y cuando no esta conectado tu pinguino… Puedes grabar codigo normalmente en tu pinguino..

  2. heke
    8 agosto, 2012 en 2:05 PM

    Muchas gracias por la explicacion, llevaba muchos dias intentando hacer que esto funcionara y me volvia loco con los dev/tty

    Con tu explicacion a sido coser y cantar, ya recibo los datos por usb del pinguino.

    Infinitamente agradecido.

    Un saludo.

  3. Juan Martin
    25 agosto, 2012 en 9:51 PM

    Gracias, muy interesante. Lo unico que puedo sugerir es que es mejor agregar al user de linux en el grupo “dialout” para no cambiar los permisos del dispositivo a 777. Saludos

  4. 6 febrero, 2015 en 11:22 PM

    Excelente, sencilla y concreta explicación…
    Un consulta, tengo un PIC18F2550 (bootloader v2) y funciona bien, logra reconocer el /dev/ttyACM0 y realizar las pruebas con cdc.
    Pero tengo otro pic18F4550 (bootloader v4.14) y este no logra reconocer el /dev/ttyACM*,
    Existe alguna diferencia entre estos pic y el puerto ttyACM…?

    • 17 febrero, 2015 en 10:59 AM

      No deberia exisitr, son en tan similares, que comparten la hoja tecnica, yo te invitaria a verificar las versiones de los bootloaderes que estas instalando y volver a programarlos ya que al menos en mi caso siempre uso la version 4.x y nunca me ha dado problemas con los 4550

  1. 24 marzo, 2012 en 9:10 AM

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: