stick_imu.py
Le firmware MicroPython M5Stack tourne sur le Plus2 : imu.accel() et lcd.text suffisent pour un inclinomètre scripté. En mode disque, on itère au drag-and-drop sans toolchain.
Matériel requis
Un M5StickC Plus2 (ESP32-PICO-V3-02, écran 135×240, boutons A/B/C, buzzer passif G2, IR + LED rouge G19, IMU MPU6886, micro, batterie 200 mAh). Aucun (firmware MicroPython M5Stack flashé).
Branchement
Aucun câblage. Flash via esptool/M5Launcher, copie de main.py en mode disque USB.
Fonctionnement
Le module imu encapsule le MPU6886 et renvoie les trois axes en g ; le dessin lcd efface la zone puis redessine (pas de framebuffer). Le cercle suit la gravité. Dans l'Arduino IDE (paquet esp32), carte « M5StickCPlus2 » ; bibliothèque « M5StickCPlus2 » ou M5Unified. Sur la v2 sans PMIC, maintenez le bouton C > 2 s pour allumer ; HOLD (G4) maintient l'alimentation.
Pour aller plus loin
Ajoutez le buzzer (module speaker) pour un niveau à bulle sonore, ou loguez l'activité en fichier .csv.
stick_imu.py
# MicroPython M5StickC : IMU + ecran sans Arduino IDE.
# Firmware « M5StickC » (base M5Stack) flash sur le Plus2.
from m5stack import lcd, imu
import time
lcd.clear()
lcd.text(10, 10, "IMU MicroPython", lcd.WHITE, 3)
while True:
ax, ay, az = imu.accel() # en g, tuple
roll = int(180 * ay / 9.81) # approximation petits angles
pitch = int(180 * ax / 9.81)
lcd.rect(0, 60, 240, 80, lcd.BLACK, lcd.BLACK)
lcd.text(10, 66, "ax=%+.2f ay=%+.2f" % (ax, ay), lcd.GREEN, 3)
lcd.text(10, 96, "roll=%+d pitch=%+d" % (roll, pitch), lcd.CYAN, 2)
# fleche vers le bas = gravite
x = 120 + max(-100, min(100, int(ax * 100)))
y = 120 + max(0, min(14, int(ay * 14)))
lcd.circle(x, y, 5, lcd.RED, lcd.RED)
time.sleep_ms(80)