🛠 Control avanzado de E/S y gestión de energía en M5Stamp Timer Power 2
Objetivos
Aprender a configurar los 5 E/S programables (GPIO, ADC, PWM) del M5Stamp Timer Power 2 para interfaz con sensores o pantallas. Comprender la interacción entre las salidas de potencia (3V3_DCDC_OUT, 3V3_LDO_OUT) y la lógica del microcontrolador PY32L020. Optimizar el consumo de energía aprovechando los modos de sueño profundo (6.72uA apagado, 12.27uA en espera) con despertar por interrupción.
Materiales Necesarios
- Módulo M5Stamp Timer Power 2 (SKU S021)
- Cable de programación USB-C
- Sensor analógico (ej: termistor) o digital (ej: botón pulsador)
- LED RGB o pequeña pantalla OLED
- Fuente de alimentación DC 5V o batería LiPo 3.7V
- Software Arduino IDE o M5Burner
Pasos
- Configuración del Entorno: Instale el soporte PY32L020 en Arduino IDE. Seleccione la placa « M5Stamp Timer Power 2 » y el puerto serie correcto.
- Inicialización de Salidas de Potencia: Antes de usar los E/S, habilite los rieles de voltaje si es necesario mediante registros internos o pines dedicados. Tenga en cuenta que
3V3_DCDC_OUTproporciona 0.6A mientras que3V3_LDO_OUTofrece 0.4A. Asegúrese de que la carga total no exceda estos límites. - Configuración de GPIO: Los 5 E/S están multiplexados. Para un botón, configure un pin como
INPUT_PULLUP. Para un LED, useOUTPUT. Para un sensor analógico, seleccione el canal ADC apropiado.
// Ejemplo de configuración GPIO
pinMode(IO_PIN_BTN, INPUT_PULLUP);
pinMode(IO_PIN_LED, OUTPUT);
analogReadResolution(12); // Si es compatible
- Implementación de PWM: Use un pin compatible con PWM para controlar el brillo del LED o la velocidad del motor. Verifique la frecuencia predeterminada del temporizador PY32L020.
analogWrite(IO_PIN_PWM, 128); // 50% ciclo de trabajo
- Gestión de Interrupciones y Sueño: Configure un pin para modo de interrupción por flanco descendente. Antes de entrar en sueño, guarde los estados de E/S y deshabilite los relojes innecesarios.
attachInterrupt(digitalPinToInterrupt(IO_PIN_BTN), wakeCallback, FALLING);
// Código para entrar en modo Deep Sleep
py32l020_enter_sleep();
- Lectura de Datos: Lea los valores ADC o los estados GPIO después del despertar. El despertar puede ser programado (temporizador) o externo (IRQ). El consumo en espera es entonces de 12.27uA a 4.2V.
Verificación
- Mida el voltaje en
EXT_5V_INOUTpara confirmar la alimentación. - Verifique que el LED se encienda/apague según los comandos PWM.
- Use un multímetro para medir la corriente en modo apagado (esperado ~6.72uA).
- Presione el botón para verificar el despertar del módulo.
Para Ir Más Allá
Explore la comunicación I2C (dirección 0x6E) para leer los parámetros del chip M5PM1. Ajuste la corriente de carga (650mA o 180mA) mediante pines dedicados para optimizar la vida útil de la batería. Pruebe la estabilidad de las salidas PY_3V3 bajo carga variable para evitar caídas de tensión.