MicroPython: Utiliser un MCP23017 sur ESP8266
Cela fait un moment que nous avions préparé une entrée sur le projet GitHub esp8266-upy pour le support du MCP23017 sur un ESP8266 sous MicroPython.
A propos du MCP23017
Le MCP23017 est GPIO Extender, il permet d'ajouter 16 I/O digitale! Sur un ESP8266 (Wemos ESP8266, Feather ESP8266 ou autres ESP8266), qui en a si peu, c'est une véritable aubaine!
Le MCP23017 est capable d'activer des résistances pull-up interne, ce qui est très pratique lorsque l'on utilise l'I/O en entrée avec un bouton.
Vous pourrez donc lire des entrées, commander des LED ou du matériel comme un L293 ou ULN2803... bref réaliser plein de choses utiles.
Brancher un MCP23017 sur ESP8266
Le code
Notre GitHub contient une bibliothèque MCP23xxx adaptée pour fonctionner sur une MicroPython standard.
Commander une sortie se fait comme suit
Utiliser une entrée
Il est même possible de lire plusieurs entrées en même temps (voir la page sur GitHub).
Jusqu'à 144 Entrées/Sorties
Le MCP23017 dispose de 3 broches d'adresses, ce qui permet d'utiliser plusieurs MCP23017 en même temps sur le même bus I2C.
L'adresse par défaut du MCP2307 est 0x20... En utilisant la table d'adressage, il est possible d'indiquer l'adresse du module sur le bus (par ex: 0x26) en créant l'objet MCP23017. Par exemple:
3 bits d'adresses représentent 9 possibilités différentes, donc un total de 9 x 16 GPIO = 144 I/O... qui à dit que l'ESP8266 avait peut d'entrées/sorties :-)
Où acheter
MC Hobby propose le matériel documenté sur son WebShop (shop.mchobby.be).
A propos du MCP23017
Le MCP23017 est GPIO Extender, il permet d'ajouter 16 I/O digitale! Sur un ESP8266 (Wemos ESP8266, Feather ESP8266 ou autres ESP8266), qui en a si peu, c'est une véritable aubaine!
Le MCP23017 est capable d'activer des résistances pull-up interne, ce qui est très pratique lorsque l'on utilise l'I/O en entrée avec un bouton.
Vous pourrez donc lire des entrées, commander des LED ou du matériel comme un L293 ou ULN2803... bref réaliser plein de choses utiles.
Brancher un MCP23017 sur ESP8266
MCP23017 sur ESP8266 - Source: ce projet GitHub de shop.mchobby.be |
Notre GitHub contient une bibliothèque MCP23xxx adaptée pour fonctionner sur une MicroPython standard.
Commander une sortie se fait comme suit
from time import sleep from machine import I2C, Pin from mcp230xx import MCP23017 # Création bus I2C et MCP23017 i2c = I2C( sda=Pin(4), scl=Pin(5), freq=20000 ) mcp = MCP23017( i2c=i2c ) # Configurer les broches 0 et 1 en sortie mcp.setup( 0, Pin.OUT ) mcp.setup( 1, Pin.OUT ) for i in range( 10 ): # Activer sortie 0 mcp.output( 0, True ) sleep( 0.5 ) mcp.output( 1, True ) sleep( 0.5 ) # Désactiver sortie 1 mcp.output( 0, False ) sleep( 0.5 ) mcp.output( 1, False ) sleep( 0.5 )
Utiliser une entrée
from machine import I2C, Pin from mcp230xx import MCP23017 # Création bus I2C et MCP23017 i2c = I2C( sda=Pin(4), scl=Pin(5), freq=20000 ) mcp = MCP23017( i2c=i2c ) # controle de quelques broches en sortie pins = [10, 11, 12, 13, 14, 15] valeurs = {} for pin_num in pins: mcp.setup( pin_num, Pin.OUT ) valeurs[pin_num] = True # activer toutes les broches en une seule opération mcp.output_pins( valeurs )
Il est même possible de lire plusieurs entrées en même temps (voir la page sur GitHub).
Jusqu'à 144 Entrées/Sorties
Le MCP23017 dispose de 3 broches d'adresses, ce qui permet d'utiliser plusieurs MCP23017 en même temps sur le même bus I2C.
Lignes d'adresses du MCP23017 |
MPC23017( i2c, address=0x26 )
3 bits d'adresses représentent 9 possibilités différentes, donc un total de 9 x 16 GPIO = 144 I/O... qui à dit que l'ESP8266 avait peut d'entrées/sorties :-)
Tutoriel
Voir la page du GitHub dédicacé au MCP23017 sous MicroPython. La page contient d'autres informations utiles.
Voir la page du GitHub dédicacé au MCP23017 sous MicroPython. La page contient d'autres informations utiles.
Où acheter
MC Hobby propose le matériel documenté sur son WebShop (shop.mchobby.be).
Écrire un commentaire