lunes, 4 de abril de 2011

comunicacion CDC con pinguino y processing

Este es el enlace original del blog oficial de pinguino
http://jpmandon.blogspot.com/2010/11/pinguino-cdc-and-processing.html

En Linux el modulo RXTXbin no reconoce /dev/ttyACM0 que es como se detecta pinguino con CDC.
Para que la reconozca como dispositivo de comunicación serial se crea un enlace simbólico desde la terminal

sudo ln -s /dev/ttyACM0 /dev/ttyS20

Este es el codigo de que se descarga a pinguino, hice unas modificaciones al original, esta compilado con la version de pinguino beta 9-05



// Pinguino cdc with processing
// Jean-Pierre Mandon 2010
// Modificado por Julio Fabio De La Cruz G


unsigned char i;


unsigned char receivedbyte;
unsigned char rxstr[64];


void setup(){
   for (i=0;i<4;i++){
      pinMode(i,OUTPUT);
      digitalWrite(i,LOW);
   }
}
void loop(){
   receivedbyte=CDC.read(rxstr);
   if (receivedbyte>0)
      rxstr[receivedbyte]=0;
   if(rxstr[0]=='S')
      digitalWrite(0,HIGH);
   if(rxstr[0]=='R')
      digitalWrite(0,LOW);
}



Este es el codigo en processing



import processing.serial.*;

Serial myPort;
String port[];
int i;

void setup(){
   port=Serial.list();
   println(port[0]);
   myPort=new Serial(this,port[0],115200);
}

void draw(){
   for (i=0;i<4;i++){
      myPort.write("S"+str(i));
      delay(50);
      myPort.write("R"+str(i));
      delay(50);
   }
}

void stop(){
   myPort.stop();
}

12 comentarios:

  1. buen dia profesor julio estoy intentando configurar el pinguino para que me sirva como un ouerto serial virtual en w7 pero no he podido lograrlo, eh progrado el pinguino con el codigo de mas arriba y corro el programa para processing pero no pasa nada, me gustaria saber si esos codigos son solo para linux o si hay alguna forma de hacerlo en windows muchas gracias por la ayuda que usted me pueda brindar

    ResponderEliminar
  2. Yo tambien trate de configurarlo para windows 7 y nada desisti de eso, segun la busqueda que realice hay muchos problemas para la configuracion en modo CDC para windows 7. No solo para pinguino sino en general para los integrados 25f50 y 45f50 cuando se configuran en modo cdc. También tuvimos problemas con los convertidores de usb a serial sobre windows 7.
    En la institución la parte de interfaces con el computador la estamos ya trabajando en linux. Si desean puedo hacerles llegar el livecd de ubuntu que personalizamos para realizar este tipo de aplicaciones.

    ResponderEliminar
  3. Que pena con usted profesor julio por la demora en mi respuesta y si el livecd de ubuntu es el sistema operativo estaria muy agradecido si me lo facilita por medio del profesor fernando bravo, pues estoy interesado en tener una buena version de OS de linux.
    muchas gracias por la atencion aprestada

    ResponderEliminar
  4. Hola Julio muy buen aporte, quisiera saber si has podido establecer correctamente la comunicacion cdc con processing en windows 7, o como podria controlar un servomotor de la forma que presentas aqui muchas gracias.

    ResponderEliminar
    Respuestas
    1. Si ya logre la comunicación CDC en windows 7.
      En windows probé la comunicación con varias versiones de processing y no funciona (en Linux sin problema).
      Pero probando con el hyperterminal y lazarus funciona correctamente.
      Para mostrar como instale el controlador en windows 7 haré entonces una nueva publicación con un vídeo.
      Pinguino tiene una libreria para el manejo de servos que se utiliza igual que en arduino.
      Lo que tendrías que hacer es combinar los dos códigos, es decir que la posición del servo la envías serialmente, en el ejemplo que doy tendrías que guardar el dato que envías en la variable pos.
      int pos;
      void setup(void){
      servo.attach(0); //servo en el terminal 0
      pos = 30;
      }
      void loop(void){
      servo.write(0,0);//mover servo del terminal 0 en la posición 0
      delay(100);
      servo.write(0,pos);//mover servo del terminal 0 a la posición pos
      delay(100);
      }

      Eliminar
    2. Muchas gracias, si de echo yo trabajo con la libreria hypermedia aquí un ejemplo por si quieres verlo http://www.youtube.com/watch?v=5ou4RKVyZ_4, pero controlo directamente pinguino desde processing es decir todo lo hago en processing, entonces e tratado de enviar y recibir datos pinguino-processing y no lo logro, entonces si tienes algo hecho, me gustaría verlo, agradezco tu colaboración y gracias por responder.

      Nota: al tratar de hacer la comunicacion cdc se traba processing.

      Eliminar
    3. Perdon la pregunta era, comunicacion puerto serie para los servos.

      Eliminar
    4. Profe julio e revisado el articulo que publico sobre la comunicacion CDC, muy interesante pero a la hora de ejecutar los ejemplos no obtengo resultados,(al parecer soy le mas interesado en el tema), sigo paso a paso lo que dice el articulo trabajo en windows 7 64 bits, si lograra esa comunicacion podria hacer maravillas con pinguino, profe por favor si me pudiera colaborar le agradeceria inmensamente.

      Gracias

      Eliminar
    5. Buenas noches Ricardo:
      Acabo de hacer una nueva publicación de como hice la instalación en windows 7 y precisamente a 64 bits.
      Me gustaría tu realimentación al respecto de como te va con la instalación pues seria la segunda en probarse, yo no he realizado mas pruebas al respecto.
      Las pruebas que estoy haciendo actualmente son en Linux, sobre todo por el interés actual en el desarrollo de aplicaciones en Android.

      Eliminar
    6. Aquí esta el enlace de la publicación
      http://micropinguino.blogspot.com/2013/09/comunicacion-cdc-en-windows-con-pinguino.html

      Eliminar
    7. Ví tu aplicación y me pareció muy buena.
      También puede ser una opción para lo que deseas el comunicarse con pinguino directamente por usb y no en modo cdc.
      Buscare el ejemplo que hice desde processing y haré una publicación al respecto. En el blog de pinguino esta el ejemplo, pero en el código falta una instrucción y por eso no funciona.

      Eliminar
    8. Buenas noches julio, e probado instalando el driver y reconoce el puerto muy bien tanto en 64 como 32 bits, muchas gracias por colaborarme y te cuento que aun sigo con la investigacion de comunicacion, empece por controlar el pinguino directamente desde python, y ahora probar codigos hasta llegar a lo esperado, si logro alguna cosa te la pondre aqui bueno. Nuevamente muchas gracias por tu cloaboracion.

      Eliminar