Published December 15, 2025 | Version 0.2

Graphical User Interface (GUI) for a motion-tracking and environmental control system for quantifying Gromphadorhina Portentosa locomotion behavior

  • 1. ROR icon Universidad de las Américas Puebla

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.ui con 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_s iniciando 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_00 a px_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

  1. Conectar el ESP32 al puerto serial configurado.

  2. Conectar dos receptores Logitech M170.

  3. Ejecutar la aplicación.

  4. Configurar duración de prueba en minutos (time) y presionar START.

  5. 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 de bh1750, sht45 y bme680. 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)

Software

Programming language
Python , C++ , C
Development Status
Active