Skip to content

Repository files navigation

Air Control

Controlador para aire lavado basado en un termostato comercial, adaptado para la placa JC3248W535 (ESP32-S3 + panel AXS15231B QSPI 320x480) usando ESP-IDF + LVGL 9.5.

Características

  • UI de termostato en pantalla completa (320x480), fondo oscuro con acento azul.
  • Sistema: switch ON/OFF con indicador ACTIVO/APAGADO y barra de nivel de agua.
  • Bomba: copo de nieve que alterna BOMBA ACTIVA (azul) / DETENIDA (gris). Solo se activa cuando el sistema está encendido.
  • Velocidad: botones A (ALTO) / B (BAJA), disponibles con el sistema activo.
  • Demo: temperatura, nivel de agua, estado y reloj simulados (timers LVGL).
  • Touch capacitivo AXS15231B por I2C con las coordenadas mapeadas 1:1.

Hardware

Placa JC3248W535:

Señal Pin
LCD CS 45
LCD SCK 47
LCD D0–D3 21, 48, 40, 39
Backlight 1
Touch SDA 4
Touch SCL 8
Touch RST 12
Touch INT 11
  • Display: AXS15231B, QSPI, 320x480, RGB565 (big-endian en el cable).
  • Touch: AXS15231B, I2C addr 0x3B a 400 kHz.
  • Flash 16 MB QIO @ 80 MHz, PSRAM 8 MB OPI @ 80 MHz.

Requisitos

  • ESP-IDF v5.4+ (probado con un clon reciente en ~/esp/esp-idf).
  • Python 3 y Git.

Compilar y flashear

source ~/esp/esp-idf/export.sh
idf.py set-target esp32s3
idf.py build
idf.py flash

Monitorear:

idf.py monitor

Nota: si idf.py monitor falla con "requires standard input TTY", usa pyserial directo: python3 -c "import serial,time; s=serial.Serial('/dev/ttyACM0',115200)".

Dependencias

Gestionadas por idf.py (ver main/idf_component.yml):

  • espressif/esp_lvgl_port >= 2.0.0
  • lvgl/lvgl >= 9.1.0

Estructura

main/
  main.c          UI, driver de display/touch, timers
  snow.c          Imágenes del copo de nieve (96x96 ARGB8888) generadas desde los PNG
  fa_solid.c      Iconos Font Awesome Solid
  idf_component.yml
CMakeLists.txt
partitions.csv    Partición factory (app 4 MB)
sdkconfig.defaults

Los PNG originales del copo (copo-de-nieve-Azul.png, copo-de-nieve-Gris.png) se convierten a datos de píxeles ARGB8888 de 96x96 para main/snow.c (recorte del contenido + resize Lanczos + centrado).

Notas de implementación

  • El protocolo QSPI del AXS15231B replica el demo de Arduino_GFX: opcodes 0x02 (cmd) / 0x32 (RAMWRC), y el flush siempre escribe la ventana completa con CASET + RASET + RAMWR antes del burst.
  • El read del touch requiere write con STOP + read separado (un repeated-start devuelve ceros).
  • ORIENTATION_TEST=1 dibuja un patrón rojo/verde para verificar la orientación del panel (idf.py build -DORIENTATION_TEST=1).

About

Controlador para aire lavado basado en termostato comercial (ESP32-S3 + AXS15231B + LVGL 9.5)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages