Modifications

Sauter à la navigation Sauter à la recherche
5 254 octets ajoutés ,  28 novembre 2018 à 12:15
Ligne 1 : Ligne 1 : −
{{traduction}}
+
== Introduction ==
 +
MOD-MAG utilise un MAG3110 de FreeScale/NXP. Le MAG3110 est un magnétomètre 3 axes. Il utilise une source d'alimentation de 1.95V à 3.6V et communique par l'intermédiaire du bus I2C. Les donnés sont envoyées sur le bus I2C en utilisant le complément en deux (donc signés). La gamme de valeur évolue entre -30000 à +30000 pour la gamme de ±1000µT (micro Tesla).
 +
 
 +
Ce senseur permet de détecter rapidement des champs magnétiques dans le voisinage. Les données peuvent être utilisées pour créer une boussole digitale ou détecter le champ magnétique de transformateurs électriques!
 +
 
 +
L'avantage du module MOG-MAG est qu'il expose un port UEXT facilitant les raccordements.
 +
 
 +
[[Fichier:MOD-MAG3110.png]]
 +
 
 +
Le MAG3110 équipe également différents breakout comme celui de SparkFun ci-dessous.
 +
 
 +
[[Fichier:MICROPYTHON-MOD-MAG3110-02.png]]
   −
== Introduction ==
+
Cette carte:
 +
* Utilise le '''bus I2C'''
 +
* Propose une lecture de champs magnétiques
 +
* Un connecteur UEXT pour faciliter le raccordement
    
== Matériel utilisé ==
 
== Matériel utilisé ==
Ligne 43 : Ligne 57 :     
== Raccordements ==
 
== Raccordements ==
 +
Les raccordements sont effectués comme suit:
 +
 +
[[Fichier:MICROPYTHON-MAG3110-20.png|640px]]
 +
 +
* La carte MOD-MAG (MAG3110) est branché sur l'UEXT Splitter.
 +
 +
{{ambox-stop|text=Attention: ne pas appliquer plus de 5V sur la carte d'évaluation ESP8266-EVB}}
 +
 +
Le raccordement du '''convertisseur USB-Série''' est identique à celui décrit dans le [[ESP8266-DEV|tutoriel ESP8266-DEV sous MicroPython]].
 +
 +
Etant donné que le l'ESP8266-DEV (et donc ESP8266-EVB) ne disposent pas de convertisseur USB-Série, il sera donc nécessaire d'utiliser {{pl|144|un câble console}} (USB-Série-TTL) pour communiquer avec la carte ESP8266.
    
== Flasher MicroPython ==
 
== Flasher MicroPython ==
Ligne 50 : Ligne 75 :     
== Bibliothèque mag3110 ==
 
== Bibliothèque mag3110 ==
 +
Avant d'utiliser le script d'exemple, il est nécessaire de transférer la '''bibliothèque mag3110''' sur votre carte MicroPython.
 +
 +
La [https://github.com/mchobby/esp8266-upy/tree/master/modmag bibliothèque '''mag3110''' et sa documentation] sont disponibles dans le [https://github.com/mchobby/esp8266-upy GitHub esp8266-uPy].
 +
 +
{{download-box|Télécharger la bibliothèque ESP8266-uPy|https://github.com/mchobby/esp8266-upy/archive/master.zip}}
 +
 +
Puis:
 +
* Copier le fichier {{fname|mag3110.py}} sur la carte MicroPython.
 +
 +
Vous pouvez également transférer le script de test {{fname|test.py}} et {{fname|testcal.py}} sur la carte MicroPython.
    
== Code ==
 
== Code ==
Ligne 62 : Ligne 97 :  
En adaptant le code (et les raccordements du bus I2C), vous pourriez tout aussi facilement faire fonctionner des cartes ESP8266 comme {{pl|67|Feather ESP8266 Huzza}} ou {{cl|121|Wemos D1}} ou même {{pl|570|MicroPython Pyboard}}.
 
En adaptant le code (et les raccordements du bus I2C), vous pourriez tout aussi facilement faire fonctionner des cartes ESP8266 comme {{pl|67|Feather ESP8266 Huzza}} ou {{cl|121|Wemos D1}} ou même {{pl|570|MicroPython Pyboard}}.
   −
=== Exemple Simple ===
+
=== Exemple: lecture brute ===
 +
L'exemple suivant fait une lecture des données brutes (en mode RAW) du magnétomètre et les affiches dans la session REPL.
 +
 
 +
Les données sont retournée par la méthode {{fname|read()}} sous la forme d'un tuple (x,y,z).
 +
 
 +
<syntaxhighlight lang="python">from time import sleep
 +
from mag3110 import MAG3110, DR_OS_1_25_32
 +
 
 +
i2c = I2C( sda=Pin(2), scl=Pin(4) )
 +
mag = MAG3110( i2c )
 +
 
 +
print( "CHIP ID: %s" % mag.who_am_i() )
 +
 
 +
# Fixer le débit de donnée à 1.25 Hz et l'oversampling à 32 fois
 +
mag.setDR_OS( DR_OS_1_25_32 )
 +
# Active le senseur
 +
mag.start()
 +
 
 +
while True:
 +
# Attendre qu'une donnée soit disponible
 +
if mag.data_ready:
 +
# Lecture du tuple (x,y,z)
 +
xyz = mag.read()
 +
print( 'x,y,z = %s,%s,%s ' % xyz )
 +
 
 +
print( "That's the end folks")
 +
</syntaxhighlight>
 +
 
 +
=== Exemple: Calibration & Orientation ===
 +
Contenu de l'exemple est disponible dans {{fname|testcal.py}}.
 +
 
 +
Ce dernier démontre l'utilisation de la phase de calibration et correction avec l'offset utilisateur.
 +
 
 +
Une fois la calibration terminée, le script indique l'angle d'orientation par rapport le Nord magnétique.
 +
 
 +
La calibration prend place au démarrage du script. Une fois la calibration terminée, le script indique le Nord.
 +
 
 +
{{ambox|text= '''POUR CALIBRER:''' faire tourner le senseur sur 360 degrés. Le mode de calibration s'interrompt entre 5 à 10 secondes.}}
 +
 
 +
<syntaxhighlight lang="python">from time import sleep
 +
from mag3110 import MAG3110, DR_OS_1_25_32
 +
 
 +
i2c = I2C( sda=Pin(2), scl=Pin(4) )
 +
mag = MAG3110( i2c )
 +
 
 +
print( "CHIP ID: %s" % mag.who_am_i() )
 +
 
 +
# Fixer le débit de donnée à 1.25 Hz et l'oversampling à 32 fois
 +
#  mag.setDR_OS( DR_OS_1_25_32 )
 +
 
 +
# Activer le senseur
 +
mag.start()
 +
 +
while True:
 +
# Pas encore calibré ?
 +
if not mag.is_calibrated:
 +
# Pas en cours de calibration ?
 +
if not mag.is_calibrating:
 +
print( "Démarrer le mode de calibration!")
 +
mag.enter_calibration()
 +
else:
 +
    # collecter des données de calibration
 +
mag.step_calibration()
 +
else:
 +
print( "Calibré" )
 +
break
 +
 
 +
# Afficher les infos durant la calibration
 +
#  (x,y,z) tuple
 +
# xyz = mag.read()
 +
# print( xyz )
 +
 +
print( 'Offset utilisateur = %s,%s,%s' % mag.user_offset() )
 +
#mag.setDR_OS( DR_OS_1_25_32 )
 +
while True:
 +
    if mag.data_ready:
 +
        print( 'x,y,z = %s,%s,%s ' % mag.read() )
 +
        heading = mag.heading()
 +
        print( 'Direction Nord = ', heading )
 +
        print( '-'*40 )
 +
        sleep( 3 )
 +
 
 +
print( "That's the end folks")</syntaxhighlight>
 +
 
 +
Contenu de l'exemple est disponible dans {{fname|testcal.py}}.
 +
 
 +
=== Exemple: autres ===
 +
La [https://github.com/sparkfun/SparkFun_MAG3110_Breakout_Board_Arduino_Library bibliothèque MAG3110 Arduino proposé par Sparkfun] propose d'autres exemples comme:
 +
* La magnitude
 +
* Bousolle digitale
 +
* Lecture MicroTesla (extra)
 +
* Le déclenchement de mesure (mode triggered)
   −
=== Exemple Float ===
+
Le temps manquant, je n'ai pu faire le portage de ces exemples (et code bibliothèque correspondant) sous MicroPython. N'hésitez pas à nous contacter sur MC Hobby en cas de besoin ou partage de participation.
    
== Où acheter ==
 
== Où acheter ==
29 917

modifications

Menu de navigation