🛠 Boussole numérique avec le magnétomètre
Objectifs
Transformer la micro:bit V2 en boussole en utilisant le magnétomètre du capteur combiné (LSM303 ou FXOS8700CQ, sur le bus I²C interne). Vous apprendrez à lire compass.heading, à calibrer le capteur et à afficher un cap en degrés.
Matériel
- 1 carte micro:bit V2
- 1 câble micro-USB
- Éloigner métaux, aimants et enceintes Bluetooth du lieu de mesure
Code complet
from microbit import *
# Calibration : incliner la carte dans les 6 directions
# jusqu'à ce que la croix se referme (si pas déjà calibrée)
if not compass.calibration_level:
display.show("C")
while compass.calibration_level < 10:
sleep(100)
display.show(Image.YES)
while True:
cap = compass.heading # 0..359 degrés
if cap < 22.5 or cap >= 337.5:
bss = "N"
elif cap < 67.5:
bss = "NE"
elif cap < 112.5:
bss = "E"
elif cap < 157.5:
bss = "SE"
elif cap < 202.5:
bss = "S"
elif cap < 247.5:
bss = "SO"
elif cap < 292.5:
bss = "O"
else:
bss = "NO"
display.scroll(str(cap), delay=40)
display.show(bss)
sleep(500)
compass.heading renvoie l'angle entre l'axe y de la carte et le nord magnétique. Le magnétomètre partage l'I²C interne (P19/P20) avec le capteur de mouvement : il est fortement déconseillé de réutiliser ces broches.
Vérification attendue
Après calibration (mouvements en « huit » ou dans les 6 axes), le cap affiché suit votre rotation : environ 0° vers le nord magnétique, 90° vers l'est. Les points cardinaux N/NE/E… défilent correctement.
Erreurs fréquentes
- Ne pas calibrer près d'un bureau métallique ou d'un haut-parleur : le cap reste faux même après recalibrage.
- Confondre nord magnétique et nord géographique (déclinaison locale de plusieurs degrés).
- Le cap saute de 350 à 10 : normal au voisinage du nord, gérez le passage à 360 dans vos comparaisons.
- Utiliser P19/P20 pour un autre I²C : vous coupez le capteur embarqué.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
coeur.pyMicroPythonboutons.pyMicroPythonpodometre.pyMicroPythonlumiere.pyMicroPythonmusique.pyMicroPythonradio_ping.pyMicroPython