Desarrollo de Solución:
Microcontrolador:
Se desarrolla un programa en la IDE de Arduino para programar el microcontrolador ESP32, en donde se genera el servicio, para que un cliente se conecte y el sistema embebido envíe la información. La condición en el código es que, si hay un cliente conectado, este le envíe la información mediante un archivo JSON cada 500 milisegundos. El código implementado considera un sensor de temperatura LM35 conectado al pin 35 (definido como entrada), un LED conectado al pin 2 (definido como entrada) y un pulsador definido en el pin 19 (definido como entrada), el cual al ser presionado genera una interrupción que prende el LED y cambia el estado de este en un string a apagado. Cuando se prende el microcontrolador este automáticamente intenta conectarse a la red establecida en el código y una vez conectado, este genera una dirección IP en donde se levanta el servicio para que un cliente se conecte. Es de relevancia tener en cuenta que IP es a la que se hace envío de la información, esto mirando desde la terminal serial del IDE de Arduino. En la interfaz de conexión generada en QT se ingresa la IP y el puerto, este último definido en el código, para este caso el 80, dado que es un puerto predeterminado para paquetes HTTP.
Interfaz Gráfica:
Se desarrolla una interfaz gráfica en QT creator que es la clase ESP32Socket que hereda de la clase QMainWindow, para crear la versión ui. La clase ESP32Socket, es donde se implementa el socket para obtener el archivo JSON enviado, que por lo tanto debe implementar la forma de leer el JSON generado por el microcontrolador. Esto quiere decir que se debe saber a priori que información se manda por el JSON. Si bien, la clase descrita anteriormente, es la que genera la conexión en la IP y puerto correspondiente, se pide al usuario mediante la clase EstablecerConexion.ui, la que mediante la clase EstablecerConexion.cpp entrega la información necesaria para poder generar la conexión. En esta ventana emergente se pregunta la IP y el puerto para generar una conexión. Una vez establecida la conexión este recibe la información y luego se desconecta. Con esto se actualiza la interfaz gráfica, con la información adquirida.
EJEMPLO:
Se Levanta el servicio en microcontrolador a la espera de un cliente:
Se abre interfaz grafica ejecutando programa en QT: Está no tiene datos en la interfaz:
Se abre interfaz para conectar a la IP 192.168.43.131 puerto 80 para la conexión
establecida en el microcontrolador:
En terminal Serial de Arduino es notificado el cliente, se envía la información
y se desconecta el cliente:
Finalmente se actualizan los datos de la Interfaz gráfica:
IMPORTANTE: por falla en word al generar los htm, los
botones con los cuales se redirige a las demás páginas están desfasados, es
decir que por ejemplo para acceder a
casos de uso no se debe apretar
directamente el botón correspondiente, sino que el espacio vacío entre casos de
uso y diagramas UML así respectivamente para cada
botón. El botón inicio es el único
que funciona como se espera.