PySerial Python Arduino comunicación serial

En primer lugar, para este tutorial de PySerial vamos a hacer uso de un Arduino, en este caso seleccionamos el UNO. La comunicación se hará de tal manera que el programa en Python sea el maestro, esto es, que Python solicite la información al serial de Arduino y que este responda con los datos solicitados.

Serial Arduino

En primer lugar, es importante mencionar que las configuraciones del serial de Arduino deben de ser las misma que las de Python PySerial.

Para el código de Arduino, lo más importante, es que vamos a evaluar dentro del loop la función SerialEvent(), la cual revisa que se tengan datos en el puerto serial, y si hay datos, lee toda la cadena de caracteres y posteriormente los concatena para formar la palabra leída.

Posteriormente, con el método o función indexOf que pertenece al tipo de datos String, podemos encontrar el índice donde se encuentra dicha cadena de caracteres, en este caso «getValue». Si la cadena no se encuentra con el indexOf, el método retornará -1.

A continuación, generamos nuestro numero dummy o dato aleatorio y lo insertamos en el String json_data donde lo concatenamos. Aquí no estamos usando ninguna biblioteca de Json para simplificar el código, pero Arduino cuenta ya con una biblioteca especifica por si requieres una manipulación mas detallada.

Podemos probar este programa desde la terminal del Arduino escribiendo «getValue» y dando Enter para revisar si el Arduino me retorna la cadena Json correspondiente. Esto luego lo hará Python con PySerial.

Código Arduino

A continuación se muestra el código y figura de ejemplo de la etapa de Arduino.

PySerial

PySerial Python

Ahora, vamos a revisar la configuración del modulo PySerial para Python. En primer lugar, tenemos que importar la biblioteca serial. Cabe señalar que para este código además usaremos las bibliotecas time y json.

Para configurar el puerto serial solo hay que crear el objeto serial. Este lo vamos a crear con la instrucción serial.Serial() los parámetros de entrada que configuraremos como indispensables son el puerto y la velocidad de transmisión.

Para configurar el puerto, solo tienes que seleccionar el COM en Windows o el ttyUSB en Linux. La manera más sencilla de revisar en que puerto esta el Arduino es en el programa de Arduino en la selección del puerto, ya que solo se habilitara el o los puertos disponibles. Para la velocidad se tiene que configurar la misma que en el Arduino, en este caso nosotros seleccionamos 115200.

Para la escritura del serial, solo usamos la función write y como parámetro de entrada ponemos la cadena de caracteres donde la codificamos con el metodo .encode(‘utf-8’). La función retorna los bytes escritos en el puerto, solo que en este ejemplo no estamos usando dicho parámetro.

Para la lectura con PySerial, hacemos uso del método .readline(), el cual retorna los caracteres disponibles en el puerto serial de la computadora. Cabe señalar que así como se codifica la cadena para el puerto serial, tenemos que decodificar la misma cadena leída con la función .decode(‘utf-8’).

Por ultimo, como estamos trabajando con un formato json, con la función if, revisamos si tenemos el caracter de entrada y de salida «{» y «}«. Posteriormente, borramos los posibles caracteres extras que se puedan introducir, usualmente si se envía el dato desde Arduino y usas el println envía el LN y el CR como \r\n. Con este comando sacamos un sub string para quitar ese extra.

Finalmente, aplicamos el json.loads para convertir una cadena en formato de String a formato Json. Con esto podemos hacer uso de la cadena en su forma json de manera formal.

Código PySerial Python

A continuación se muestra el código y figura de ejemplo de la etapa de Python PySerial.

Atención

Finalmente, te recordamos visitar nuestros tutoriales relacionados con la programación en Python, Matplotlib y la electrónica como, While en Python, Set en Python, Tuples en Python y más.

En conclusión, si te gusto este tutorial, favor de dejar un comentario, lo agradeceremos mucho. Después de todo, te recomendamos visitar nuestra pagina principal para que veas los nuevos tutoriales en HETPRO. Tenemos tutoriales de ArduinoPCBsprogramación y muchos más. En conclusión, esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivar 4.0 Internacional.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *