🛠 Gestión avanzada de E/S GPIO con UEXT-CH390
Objetivos
Este tutorial tiene como objetivo dominar la interfaz de periféricos físicos (GPIO) con el módulo UEXT-CH390 para crear un nodo IoT completo. A diferencia de las soluciones inalámbricas, el Ethernet cableado ofrece latencia predecible y estabilidad superior, ideal para sistemas de control industrial o domótica crítica. Configuraremos los pines GPIO del microcontrolador anfitrión para leer un sensor analógico o digital y controlar una pantalla, transmitiendo estos datos a través de la pila de red CH390. El enfoque está en el manejo de interrupciones y la sincronización entre tareas de tiempo real (GPIO) y tareas de red (TCP/IP), utilizando el controlador específico RP2040 o el SDK ESP-IDF.
Material Necesario
- Módulo UEXT-CH390 (Olimex)
- Microcontrolador compatible: Raspberry Pi Pico (RP2040) o ESP32-S3
- Sensor de temperatura/humedad (ej. DHT22) o potenciómetro (analógico)
- Pantalla OLED I2C o LED de estado
- Cables de conexión UEXT y jumpers
- Fuente de alimentación estable de 3.3V
- Entorno de desarrollo: ESPHome 2026.9.0+ o SDK Raspberry Pi Pico (C/C++)
Pasos
- Conexión física: Conecte el módulo UEXT-CH390 al puerto UEXT de la placa anfitriona. Asegúrese de que los pines SPI (MOSI, MISO, CLK, CS) estén correctamente mapeados. Para el Pico, use los pines predeterminados GP2-GP5 si no se configuran de otra manera. Tenga en cuenta que el módulo funciona en modo SPI 0 o 3.
- Configuración de red: En su código (ESPHome o C++), inicialice el controlador CH390. Active DHCP para obtener una dirección IP. Verifique que la dirección MAC de fábrica sea reconocida.
- Inicialización de GPIO: Configure los pines de su sensor como entradas (con pull-up/down si es necesario) y los pines de la pantalla como salidas. Para un sensor analógico, habilite el ADC correspondiente.
- Implementación de lógica: Cree una tarea periódica (ej. cada segundo) que lea el valor del sensor. Aplique un filtro digital (promedio móvil) para reducir el ruido.
- Transmisión de red: Formatee los datos leídos en JSON o protocolo MQTT. Use las API de red del controlador CH390 para enviar paquetes. Asegúrese de que las operaciones GPIO no bloqueen la pila de red; use interrupciones o tareas RTOS dedicadas si es necesario.
- Control local: Agregue lógica para accionar la pantalla o LED basado en umbrales críticos detectados, garantizando una reacción local incluso si la red está caída.
Verificación
Conecte la placa a la red mediante un cable RJ45. Abra una interfaz web local o terminal MQTT para observar la recepción de datos. Verifique la estabilidad de la conexión desconectando/reconectando brevemente el cable Ethernet para probar la reconexión automática. Asegúrese de que los valores de los sensores cambien en tiempo real en la interfaz remota.
Para ir más allá
Explore la integración con Home Assistant mediante el descubrimiento automático. Optimice el consumo de energía durmiendo los GPIO inactivos. Pruebe la robustez de la red inyectando perturbaciones electromagnéticas, aprovechando la mejor inmunidad del Ethernet cableado frente al Wi-Fi.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
esp32-ch390-lwip-station.inoC++rp2040-pico-ch390-micropython.pyPythonesp32-ch390-udp-sensor-gateway.inoC++esp32-ch390-web-server-local.inoC++rp2040-ch390-iot-home-assistant.inoYAMLrp2040-lwip-ethernet-ping-6.inoC/C++ (Raspberry Pi Pico SDK)