sábado, 19 de diciembre de 2020

Temp2LCD (Gambas + Arduino)

Como muestra el video se trata de una pequeña aplicación hecha en Gambas y un sketch para el Arduino.

Para este ejemplo estaré usando un Arduino UNO.

La aplicación transmite las temperaturas del CPU y el GPU hacia el Arduino vía el puerto USB.
Para que funcione correctamente es necesario tener instalado lm-sensors y nvidia-smi.

Por el momento la aplicación solo funciona con tarjetas NVIDIA.

Para obtener la temperatura del CPU la aplicación utiliza un script que encontré en https://stackoverflow.com/questions/50686262/how-to-get-average-cpu-temperature-from-bash.
Lo interesante del script es que devuelve un promedio de temperatura de todos los cores disponibles. Alteré levente el script para que solo devuelva el valor numérico y la unidad en grados celsius.
Hay muchos comentarios en el código fuente del programa por si les interesa ver como funciona paso a paso.
Respecto del sketch del Arduino, es bastante sencillo. Recibe la información enviada por la aplicación y la muestra en un display LCD (16x2) conectado de la siguente manera:

LCD PIN Arduino
VCC 5V
GND GND
SCL A5
SDA A4

También hay conectado un LED en el Pin 13 (recuerden que este pin ya cuenta con una resistencia). Se puede prescindir del mismo. El led se enciende cada vez que se produce el evento Serial.available(), por lo que se encenderá cuando reciba o envíe información.
El sketch también reenvía los datos recibidos a la aplicación. Me fué bastante útil esto para observar como era transmitida la información, por eso lo dejé.
Tuve al algunos problemas al principio, la información no llegaba correctamente al Arduino y los ejemplos que encontraba en internet no eran de mucha utilidad.
Leyendo algunas entradas en el el sitio de Arduino me pareció que la solución más sencilla era enviar desde la aplicación toda la información seguida de la cadena ‘\n’ y recibir la información en el Arduino utilizando el evento Serial.readStringUntil(‘\n’).

Espero que tanto la aplicación y el stetch les sirvan de ejemplo si están investigando o quieren observan como es la comunicación entre el Arduino y la PC.
Seguramente estaré haciendo más aplicaciones parecidas probando a la inversa (recibir información del Arduino).

Dejo el link al repositorio de GitHub para bajar el instalador en formato debian, el código fuente del programa y el sketch para Arduino:
https://github.com/mcattani/temp2lcd

Saludos y si les interesó por favor dejen un comentario!.

No hay comentarios.:

Publicar un comentario