ESP8266 sous MicroPython : Utilisation des cartes MOD-IO (connecteur UEXT)
Il y a une quinzaine de jours, nous publions l'article "MicroPython sur ESP8266-EVB d'Olimex" qui expliquait comment exploiter le relais et le bouton de la carte ESP8266-EVB.
Nous allons maintenant nous pencher sur le connecteur UEXT et cartes d'extensions UEXT.
Le connecteur UEXT et carte d'extension
L'intérêt de la carte ESP8266-EVB c'est justement son port UEXT, un connecteur IDC 10 broches, qui transporte le bus I2C, bus SPI et interface série (connexion asynchrone).
Grâce à ce mapping entre port UEXT et ESP8266, nous pouvons envisager de contrôler des cartes d'extension UEXT sous MicroPyhton sans avoir a réaliser un quelconque raccordement :-)
Le code est compatible avec toutes les plateformes MicroPython sous 3.3V. Il suffit de connecter le bus I2C sur les bonnes broches du connecteur UEXT.
Carte MOD-IO
MOD-IO est une carte de développement permettant d'ajouter des entrées analogiques et digitales sur n'importe quelles cartes disposant d'un connecteur UEXT ou Bus I2C. La carte dispose de 4 relais, 4 entrées digitales opto-isolées, 4 entrée analogique (3.3v Max). Hormis les 3 entrées analogiques, la carte MOD-IO est compatible avec le standard industriel en 24 Volts.
Les cartes MOD-IO sont chaînables et adressables. Cela signifie
que vous pouvez connecter plusieurs cartes MOD-IO ensembles!
Grâce à la connexion UEXT, le raccordement est enfantin!
Très pratique pour un apprentissage scolaire.
Bibliothèque MOD-IO
Pour commander facilement cette carte depuis MicroPython, nous avons écrit une bibliothèque nommée modio.
Celle-ci est disponible sur la page GitHub dédiée au MODIO sous MicroPython.
Téléchargez simplement le fichier modio.py sur votre MicroContrôleur MicroPython.
Tester la carte MOD-IO sous MicroPython
Connecter plusieurs MOD-IO
Il est possible de connecter plusieurs carte MOD-IO ensembles. Il faut cependant changer l'adresse de chaque carte pour qu'elle ne rentre pas en conflit avec les autres cartes. La carte MOD-IO retient son adresse I2C dans l'EEPROM. Cette adresse est donc configurable à l'aide d'une fonction.
L'exemple suivant montre comment passer de l'adresse 0x58 à 0x22.
A noter que le changement est immédiat, si bien que la carte ne renvoi pas de ACK sous l'adresse 0x58 mais 0x22 (ce qui se traduit par une erreur de transmission... mais l'adresse est belle et bien changée).
Tutoriels et GitHub
Vous trouverez de nombreuses autres informations dans le tutoriel et dans les fiches produits ci-dessous.
Nous allons maintenant nous pencher sur le connecteur UEXT et cartes d'extensions UEXT.
ESP8266-EVB d'Olimex |
L'intérêt de la carte ESP8266-EVB c'est justement son port UEXT, un connecteur IDC 10 broches, qui transporte le bus I2C, bus SPI et interface série (connexion asynchrone).
Mapping UEXT sur ESP8266 |
Le code est compatible avec toutes les plateformes MicroPython sous 3.3V. Il suffit de connecter le bus I2C sur les bonnes broches du connecteur UEXT.
Carte MOD-IO
MOD-IO est une carte de développement permettant d'ajouter des entrées analogiques et digitales sur n'importe quelles cartes disposant d'un connecteur UEXT ou Bus I2C. La carte dispose de 4 relais, 4 entrées digitales opto-isolées, 4 entrée analogique (3.3v Max). Hormis les 3 entrées analogiques, la carte MOD-IO est compatible avec le standard industriel en 24 Volts.
La carte MOD-IO |
Grâce à la connexion UEXT, le raccordement est enfantin!
Très pratique pour un apprentissage scolaire.
Brancher la carte MOD-IO, UEXT Splitter et ESP8266-EVB ensembles |
Pour commander facilement cette carte depuis MicroPython, nous avons écrit une bibliothèque nommée modio.
Celle-ci est disponible sur la page GitHub dédiée au MODIO sous MicroPython.
Téléchargez simplement le fichier modio.py sur votre MicroContrôleur MicroPython.
Tester la carte MOD-IO sous MicroPython
# Utilisation du MOD-IO d'Olimex avec un ESP8266 sous MicroPython # # Shop: http://shop.mchobby.be/product.php?id_product=1408 # GitHub: https://github.com/mchobby/esp8266-upy/tree/master/modio from machine import I2C, Pin from time import sleep_ms from modio import MODIO # Bus I2C sur le connecteur UEXT i2c = I2C( sda=Pin(2), scl=Pin(4) ) brd = MODIO( i2c ) # Adresse par défaut=0x58 # === Lire les entrées analogiques =========================== for input_index in range( 4 ): print( 'Analogique %s : %s Volts' %( input_index,brd.analogs[input_index] ) ) brd.analogs.raw = True for input_index in range( 4 ): print( 'Analogique %s : %s of 1023' %( input_index,brd.analogs[input_index] ) ) print( 'Lire toutes les entrées analogiques, mode RAW, en une seule opération' ) print( brd.analogs.states ) print( 'Lire les tensions, en VOLTS, de toutes les entrée analogiques en une seule opération' ) brd.analogs.raw = False # Réactiver la conversion en tension print( brd.analogs.states ) # === Lire les entrées Opto-Isolées ========================= print( 'Lire toutes les entrées Opto-Isolées' ) print( brd.inputs.states ) print( 'Lire la 3ieme entrée Opto-Isolée' ) # Python donc indexé à partir de 0! print( brd.inputs[2] ) # === RELAIS ====================================== # Activer les relais REL1 et REL3 (Python donc indexé à 0) print( 'Modifier les relais par index' ) brd.relais[0] = True brd.relais[2] = True print( 'Etat des Relais[0..3] : %s' % brd.relais.states ) sleep_ms( 2000 ) # Eteindre tous les relais brd.relais.states = False print( 'Commander un relais à la fois') for irelay in range( 4 ): print( ' relais %s' % (irelay+1) ) brd.relais[irelay] = True # Activer sleep_ms( 1000 ) brd.relais[irelay] = False # Désactiver sleep_ms( 500 ) print( 'Mettre tous les relais à jour en une seule opération' ) brd.relais.states = [True, True, False, True] sleep_ms( 2000 ) print( 'Activer tous les relais' ) brd.relais.states = True sleep_ms( 2000 ) print( 'Désactiver tous les relais' ) brd.relais.states = False print( "That's the end folks")
Connecter plusieurs MOD-IO
Il est possible de connecter plusieurs carte MOD-IO ensembles. Il faut cependant changer l'adresse de chaque carte pour qu'elle ne rentre pas en conflit avec les autres cartes. La carte MOD-IO retient son adresse I2C dans l'EEPROM. Cette adresse est donc configurable à l'aide d'une fonction.
L'exemple suivant montre comment passer de l'adresse 0x58 à 0x22.
# Modifier l'adresse de MOD-IO d'Olimex vers 0x22 # # Shop: http://shop.mchobby.be/product.php?id_product=1408 # GitHub: https://github.com/mchobby/esp8266-upy/tree/master/modio from machine import I2C, Pin from modio import MODIO i2c = I2C( sda=Pin(2), scl=Pin(4) ) brd = MODIO( i2c, addr=0x58 ) brd.change_address( 0x22 )
A noter que le changement est immédiat, si bien que la carte ne renvoi pas de ACK sous l'adresse 0x58 mais 0x22 (ce qui se traduit par une erreur de transmission... mais l'adresse est belle et bien changée).
Tutoriels et GitHub
Vous trouverez de nombreuses autres informations dans le tutoriel et dans les fiches produits ci-dessous.
- Tutoriel MOD-IO (Wiki MCHobby, Français)
Utiliser le module I2C MOD-IO sous MicroPython (via port UEXT). - MOD-IO GitHub landing page (GitHub ESP8266-upy)
- ESP8266 MicroPython drivers (GitHub)
- Le ESP8266-EVB utilisé dans ce tutoriel pour faciliter le raccordement. Pourrait fonctionner avec un Feather ESP8266 avec le raccordement adéquat.
- Le ESP8266-DEV module équipant la carte ESP8266-EVB.
- Le module MOD-IO
- Le module UEXT Splitter
- La La gamme IoT/ESP8266 disponible chez MC Hobby
- Un Convertisseur USB-Série TLL
Écrire un commentaire