Archivo de la etiqueta: puerto serie

Como descubrir el puerto arduino con Python

[singlepic id=20 w=320 h=240 float=right]Cuando desconecto y vuelvo a conectar el Arduino (Arduino Uno R3), el Ubuntu dependiendo si se ha enterado o no que lo he desconectado, al volver a conectarlo me lo instala en otro puerto, con lo que tengo que decirle al programa cual es el nuevo puerto. Para solucionar esto y aprovechando la librería PySerial y la función “try”, podemos descubrir donde esta instalado el puerto Arduino. Para ello solo tenemos que probar los puertos que posiblemente pueda estar utilizando el Arduino. Si al intentar abrir el puerto arduino nos da error, eso es que el Arduino no esta instalado en ese puerto. Gracias a la función “try”, controlamos ese error que se ha producido y podemos seguir con el funcionamiento normal de nuestro programa. Cuando al abrir el puerto no nos da error, eso quiere decir que en ese puerto hay algún dispositivo instalado. si solo tenemos el Arduino instalado ya tendremos el puerto Arduino y podemos salir del bucle y guardar el puerto.

Descubrir el puerto arduino

Código de ejemplo en Python:

Aunque este código es de Python, el portarlo a cualquier otro lenguaje es muy sencillo, por lo básico de su planteamiento, lo único que podrida complicar el código seria las funciones que se tengan que utilizar para la apertura del puerto serie, por lo demás, el resto de funciones están disponibles en cualquier lenguaje.

Leer el puerto serie de Arduino con Python y PySerial

[singlepic id=20 w=320 h=240 float=right]Desde hace ya un tiempo he hoy buenos comentarios sobre Python y lo “fácil” que es programar con él, su potabilidad entre sistemas, etc. Me he puesto ha ello, y la verdad es que es muy fácil programar con él, después de un rato, se le coge el tranquillo a esa forma tan peculiar de escribir el código que tiene, solo utilizando tabulación, sin puntos y comas, llaves o cualquier otra forma de indicar el inicio y el fin de las lineas,  a la declaración de las variables, mejor dicho a la no declaración, la formar de trabajar con las funciones, etc. En general es un lenguaje muy fácil de trabajar y encima puedes hacer verdaderas locuras con el. Me ha recordado mucho al Basic que aprendí ya hace muchas lunas.

Para empezar, que mejor que trabajar con Arduino. Lo primero que he hecho es leer del puerto serie la información que escribe el Arduino.

Para el Arduino solo le he metido un código muy simple, genera un numero aleatorio, de -100 a 100,  y lo escribe en el puerto serie.

Codigo para Arduino

Y en Python lo que he hecho es aprovechar la librería PySerial que hay para Python para leer el puerto y leer los datos que escribe el Arduino.  Para instalar la librería PySerial es muy fácil, solo tenemos que seguir los pasos que hay en la propia pagina de PySerial.

El código en Python es muy simple, este mismo código en Java, me llevo bastante tiempo pelearme con la librería RxTx, en cambio en Python es tan sencillo como escribir el siguiente código.

Código Pytho

Después de este código tan simple, ya tenemos un programa que nos lee los datos del puerto serie y lo muestra en pantalla. Esto con cualquier otro lenguaje te lleva un buen rato. Esto no me ha llevado mas de media hora de buscar por internet como se programa en Python y como funciona la libreria PySerial.

Que opinas de ello???

Como manejar el puerto serie en c#

[singlepic id=2 w=320 h=240 float=right]Para manejar el puerto serie en C# es una tarea relativamente sencilla, esto por permitirá conectarnos a infinidad de dispositivos electrónicos que utilizan este medio para comunicarse con el ordenador. La forma mas habitual de conectar nuestro programa con cualquier dispositivo electrónico (Arduino, …, etc.) suele ser mediante el puerto serie, ya sea por el tradicional RS232 o un puerto USB que funciona como un puerto serie. Para poder conectar nuestros programas hechos en c# con estos dispositivos, este nos facilita un control para poder realizar este tipo de comunicaciones. Este control es el “SerialPort”. Para poder utilizarlo tenemos dos maneras, 1º arrastrándolo desde la barra de controles hasta nuestro programa o, la otra forma de crearlo es desde nuestro propio código C#. Como la primera es obvio lo que hay que hacer, paso a explicar la segunda forma.

Inicialización del control Serial Port por código en C#.

Lo primero que tenemos que hacer es añadir un nuevo “using” para agregar todos objetos relacionados con el manejo de puertos, System.IO.Ports, una vez que ya tengamos esto insertado en nuestro codigo, ya podemos pasar ha definir la variable que contendrá nuestro control Serial Port, de la siguiente manera.

De esta forma creamos el objeto “spPuertoSerie”, que le hemos paso como parametros:

  • Nombre del puerto: el puerto al que nos queremos conectar, en el ejemplo “COM1”.
  • Velocidad de transmisión: la velocidad de trasmisión.
  • Paridad: Sirve para verificar si hay errores en la transmisión. Existen cuatro tipos posibles de paridad: par (even), impar (odd), marcada (mark) y espaciada (space). También esta permitido no usar paridad (none), como en el ejemplo.
  • Bits de datos: Es la cantidad de datos que se van ha enviar en cada paquete. Este valor puede ser 5, 7 u 8. Valor más habitual es el 8.
  • Bits de parada: Indica el final del paquete, Los valores permitidos son 1, 1.5 o 2. También vale para la sincronización de la comunicación.

También podemos crear nuestro objeto de una manera mas sencilla, si no conocemos los parámetros de la comunicación.

Para pasar los parámetros lo podemos hacer de esta otra forma:

Después de tener ya creado nuestro objeto que se va ha encargar de la comunicación, solo falta abrir la comunicación de la siguiente manera.

Parta cerrar la comunicación del puerto serie lo haremos de la siguiente forma.

Y con esto ya tenemos resuelto el problema de la comunicación con los dispositivos mediante el puerto serie. Ahora solo queda la recepción y envió de los datos. Pero eso sera en otro post.

Espero que te sirva de ayuda.