🛠 MicroPython sur Pico 2 : moniteur de tension VSYS
Objectifs
Installer MicroPython spécifique RP2350 sur la Pico 2, utiliser le REPL Thonny, et exploiter les broches système propres à la Pico 2 : GP29 = VSYS/3 pour surveiller une batterie, GP23 = mode SMPS pour un ADC plus propre, GP24 = détection VBUS.
Matériel
- 1 × Raspberry Pi Pico 2
- Câble micro-USB data ; Thonny ≥ 4.1 (ou mpremote)
- Firmware : UF2
RPI_PICO2de MicroPython ≥ v1.24.0 (support RP2350 ARM et RISC-V) — un build RP2040 refusera de s'installer - Optionnel : batterie Li-ion sur VSYS (1,8–5,5 V acceptés grâce au buck-boost RT6150)
Code complet
# main.py — moniteur VSYS + LED d'alerte, Pico 2 / MicroPython >= 1.24
import time
from machine import Pin, ADC
led = Pin(25, Pin.OUT) # LED utilisateur GP25 (confirmee datasheet)
smps = Pin(23, Pin.OUT) # GP23 : niveau haut = SMPS en mode PWM
smps.value(1) # moins de ripple -> ADC plus stable
vsys = ADC(3) # ADC3 = VSYS/3 (GP29, diviseur interne)
vbus = Pin(24, Pin.IN) # GP24 : presence USB
def lire_vsys:
total = 0
for _ in range(16): # moyenne grossiere anti-bruit
total += vsys.read_u16
time.sleep_us(100)
return total / 16 / 65535 * 3.3 * 3 # 16 bits -> tension, x3 divider
while True:
v = lire_vsys
led.value(v < 3.6) # alerte batterie faible
print("VSYS = %.2f V USB = %d" % (v, vbus.value))
time.sleep_ms(500)
Vérification attendue
Sous Thonny, le REPL affiche les valeurs toutes les 500 ms. En branchant l'USB, USB = 1 et VSYS ≈ 5 V ; sur batterie 3,7 V, on lit ≈ 3,7 V et la LED reste éteinte tant que V > 3,6 V.
Erreurs fréquentes
- Flasher un UF2 « pico » classique : le RP2350 n'est supporté qu'à partir de MicroPython 1.24.0 (26 octobre 2024), vérifier le nom RPI_PICO2.
- Oublier le facteur /3 du diviseur interne VSYS : la tension affichée est divisée par trois.
- GP29 possède une diode de découplage vers 3V3 : ne jamais y appliquer une tension externe, c'est une mesure interne uniquement.
- Le mode économie d'énergie du SMPS (GP23 bas) augmente le ripple sur la référence ADC : garder GP23 haut pour des mesures stables.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-interruption.pyPythonpwm-servo.pyPythonlecture-adc.pyPythonneopixel.pyPythonoled-i2c.pyPython