Graphical User Interface (GUI) for a motion-tracking and environmental control system for quantifying Gromphadorhina Portentosa locomotion behavior
Description
Este repositorio contiene una aplicación de escritorio en Python (PyQt5) para adquisición, visualización y registro de datos provenientes de un sistema de sensores conectado a un ESP32 (vía puerto serial) y dos dispositivos Logitech M170 (vía HID). La interfaz gráfica se carga desde un archivo .ui y permite ejecutar “pruebas” temporizadas, visualizar señales en tiempo real y exportar los datos a archivos CSV para su análisis posterior.
Funcionalidades principales
-
Interfaz gráfica (PyQt5 + Qt Designer): carga de
main.uicon controles para configurar parámetros del sistema (setpoint y canales UV/RGB) y un botón START para iniciar pruebas. -
Lectura de sensores por Serial (ESP32): recepción de tramas en formato JSON mediante
pyserial. -
Visualización en tiempo real (pyqtgraph):
-
Temperatura promedio vs. tiempo.
-
Iluminación (lux) vs. tiempo.
-
Trayectoria XY para dos mouses (posición integrada).
-
-
Mapa térmico (AMG8833): reconstrucción de matriz 8×8 a partir de 64 píxeles, interpolación y coloreado (OpenCV), mostrado como heatmap en la GUI.
-
Tracking con dos mouses HID: lectura en hilos independientes de reportes HID, acumulando desplazamientos (dx, dy) con factores de escala configurables.
-
Modo de prueba temporizada:
-
La duración se define en minutos mediante el input
time. -
Al presionar START, comienza una prueba y se registra el tiempo relativo
t_siniciando en 0. -
Al finalizar, se muestra un mensaje de confirmación de finalización exitosa.
-
Exportación a CSV
Durante una prueba, la aplicación guarda un archivo CSV que incluye:
-
Tiempo relativo desde el inicio (
t_s) y tiempo absoluto del PC. -
Timestamp del ESP32 (si está disponible).
-
Variables ambientales: temperatura promedio, iluminación (lux1, lux2 y promedio), humedad por sensor (SHT45 y BME680) y presión.
-
Posiciones integradas de los dos mouses.
-
La matriz térmica completa 8×8 del AMG8833 (64 columnas
px_00apx_63).
Los archivos se almacenan automáticamente en una carpeta de pruebas dentro de Documents/CONTROLSYSTEM/tests, con nombre basado en fecha y hora.
Requisitos
-
Python 3.x
-
PyQt5
-
pyqtgraph
-
numpy
-
opencv-python
-
pyserial
-
hidapi (paquete
hid)
Uso general
-
Conectar el ESP32 al puerto serial configurado.
-
Conectar dos receptores Logitech M170.
-
Ejecutar la aplicación.
-
Configurar duración de prueba en minutos (
time) y presionar START. -
Al finalizar, se genera un CSV con los datos completos de la prueba.
Nota: La aplicación espera que el ESP32 envíe datos en JSON incluyendo
amg8833.pixels(64 valores), y opcionalmente lecturas debh1750,sht45ybme680. La escritura al CSV se realiza cuando se recibe una matriz térmica completa.
Si quieres, también puedo adaptarte esta descripción al formato típico de Zenodo con: Title, Abstract, Keywords, Funding, Related identifiers, y Notes.
¡¡¡IMPORTANT!!!
This GUI needs serial data comming from an ESP32 with the thermal camera, LEDs, environmental sensors and the Peltier thermoelectric modules for working properly.
Files
Files
(49.6 kB)
| Name | Size | Download all |
|---|---|---|
|
md5:792de49f4fd83efc9c5b6f5325252e16
|
33.2 kB | Download |
|
md5:e125ec55a5a7cfe2c748805978490a50
|
16.4 kB | Download |
Additional details
Related works
- Is new version of
- Software: 10.5281/zenodo.16888053 (DOI)