🛠 Maîtrise avancée des E/S et de la gestion d'énergie sur M5Stamp Timer Power 2

M5Stamp Timer Power 2 (PY32L020) · avance · Ce tutoriel explique comment configurer les 5 IO programmables pour l'acquisition de données et le contrôle de périphériques tout en minimisant la consommation grâce aux modes veille profonds du PY32L

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

Étapes

  1. 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.
  2. 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_OUT fournit 0.6A tandis que 3V3_LDO_OUT offre 0.4A. Assurez-vous que la charge globale ne dépasse pas ces limites.
  3. Configuration des GPIO : Les 5 IO sont multiplexés. Pour un bouton, configurez une broche en INPUT_PULLUP. Pour une LED, utilisez OUTPUT. 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é
  1. 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
  1. 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();
  1. 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

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

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels