🛠 Maîtrise avancée des E/S et de la gestion d'énergie sur M5Stamp Timer Power 2
Objectifs
Apprendre à configurer les 5 IO programmables (GPIO, ADC, PWM) du M5Stamp Timer Power 2 pour interfacer des capteurs ou affichages. Comprendre l'interaction entre les sorties de puissance (3V3_DCDC_OUT, 3V3_LDO_OUT) et la logique du microcontrôleur PY32L020. Optimiser la consommation en exploitant les modes arrêt (6.72uA) et veille (12.27uA) avec réveil par interruption.
Matériel nécessaire
- Module M5Stamp Timer Power 2 (SKU S021)
- Câbles de programmation USB-C
- Capteur analogique (ex: thermistance) ou numérique (ex: bouton-poussoir)
- LED RGB ou petit écran OLED
- Alimentation DC 5V ou batterie LiPo 3.7V
- Logiciel Arduino IDE ou M5Burner
Étapes
- Configuration de l'environnement : Installez le support du PY32L020 dans Arduino IDE. Sélectionnez la carte « M5Stamp Timer Power 2 » et le port série correspondant.
- Initialisation des sorties de puissance : Avant d'utiliser les IO, activez les rails de tension si nécessaire via les registres internes ou les broches dédiées. Notez que
3V3_DCDC_OUTfournit 0.6A tandis que3V3_LDO_OUToffre 0.4A. Assurez-vous que la charge globale ne dépasse pas ces limites. - Configuration des GPIO : Les 5 IO sont multiplexés. Pour un bouton, configurez une broche en
INPUT_PULLUP. Pour une LED, utilisezOUTPUT. Pour un capteur analogique, sélectionnez le canal ADC approprié.
// Exemple de configuration GPIO
pinMode(IO_PIN_BTN, INPUT_PULLUP);
pinMode(IO_PIN_LED, OUTPUT);
analogReadResolution(12); // Si supporté
- Implémentation du PWM : Utilisez une broche compatible PWM pour contrôler la luminosité d'une LED ou la vitesse d'un moteur. Vérifiez la fréquence par défaut du timer PY32L020.
analogWrite(IO_PIN_PWM, 128); // 50% duty cycle
- Gestion des interruptions et veille : Configurez une broche en mode interruption sur front descendant. Avant d'entrer en veille, sauvegardez l'état des IO et désactivez les horloges inutiles.
attachInterrupt(digitalPinToInterrupt(IO_PIN_BTN), wakeCallback, FALLING);
// Code pour entrer en mode Deep Sleep
py32l020_enter_sleep();
- Lecture des données : Lisez la valeur ADC ou l'état GPIO après le réveil. Le réveil peut être programmé (timer) ou externe (IRQ). La consommation en veille est alors de 12.27uA à 4.2V.
Vérification
- Mesurez la tension sur
EXT_5V_INOUTpour confirmer l'alimentation. - Vérifiez que la LED s'allume/éteint selon la commande PWM.
- Utilisez un multimètre pour mesurer le courant en mode arrêt (attendu ~6.72uA).
- Appuyez sur le bouton pour vérifier le réveil du module.
Pour aller plus loin
Explorez la communication I2C (adresse 0x6E) pour lire les paramètres de la puce M5PM1. Ajustez le courant de charge (650mA ou 180mA) via les broches dédiées pour optimiser la durée de vie de la batterie. Testez la stabilité des sorties PY_3V3 sous charge variable pour éviter les chutes de tension.
Autres tutoriels pour cette carte
- Premier branchement et mise en route du M5Stamp Timer Power 2
- Contrôler les GPIO avec le M5Stamp Timer Power 2
- Automatisation simple avec le M5Stamp Timer Power 2
- M5Stamp Timer Power 2 : Premier branchement et mise en route
- Configurer les E/S du M5Stamp Timer Power 2
- Automatisation Domotique avec M5Stamp Timer Power 2