jueves, 19 de enero de 2023

Arduino - Comunicacion con wxpython

  Página principal

Arduino
Comunicacion con wxpython

En un anterior artículo había realizado una comunicación con el arduino empleando python en consola.
Ahora utilizo wxpython como inteface gráfica.


Para que se ejecute debemos tener instalado algunos paquetes:
apt-get install python3-wxgtk4.0 python3-serial

y añadir nuestro usuario a dialout
/sbin/usermod -a -G dialout usuario




El programa de arduino es sencillo.
// * seta43.duckdns.org

#include <Wire.h>
#include "ATH20.h"

ATH20 ATH;

int contador;

void setup()
{
  Serial.begin(9600); 
  while (!Serial); 
  Serial.println("ATH20 DEMO");
  ATH.begin();
}


void loop()
{
 float humi, temp;

  Serial.print(contador); 
 
  int ret = ATH.getSensor(&humi, &temp);
  if(ret)     // GET DATA OK
    {
        Serial.print(" - Humedad= ");
        Serial.print(humi*100);
        Serial.print(" %  Temperatura= ");
        Serial.print(temp); Serial.println("ºC");
    }
    else        // GET DATA FAIL
    {
        Serial.println("GET DATA FROM ATH20 FAIL");
    }
 
  delay(1500);

  contador++;
}




En la parte del ordenador con la librería wxpython, se complica un poco.
He utilizado dos formas de leer desde el puerto serie: mediante Timer e Hilos.
Mediante Timer la aplicación lee cada 200mS el puerto serie, y lo muestra en pantalla.
Para el segundo caso utilizamos Hilos (Thread), segundo programa en paralelo.
En un principio había representado directamente los datos desde el segundo hilo a la interface gráfica del primer hilo. Pero después de algunas prueba, y de aleatorias lecturas, algo fallaba y se bloqueaba el primer hilo. Al final utilicé un timer en el primer hilo para representar los datos que mandaba el segundo hilo.

Podría haber realizado un buscador automático de la puerto donde está el arduino, pero he preferido realizarlo manualmente para practicar con wxpython.


Espero que este ejemplo os sirva en vuestros proyectos.

PROGRAMA Y LIBRERÍAS


Saludos.
Juan Galaz


Bibliografía:


../pyleca/pyleca.html


No hay comentarios:

Publicar un comentario