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 45 : |
Ligne 59 : |
| Les raccordements sont effectués comme suit: | | Les raccordements sont effectués comme suit: |
| | | |
− | [[Fichier:MICROPYTHON-MAG3110-20.jpg|640px]] | + | [[Fichier:MICROPYTHON-MAG3110-20.png|640px]] |
| | | |
| * La carte MOD-MAG (MAG3110) est branché sur l'UEXT Splitter. | | * La carte MOD-MAG (MAG3110) est branché sur l'UEXT Splitter. |
Ligne 61 : |
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 73 : |
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 == |