Table des matières:

NODEMCU LUA ESP8266 avec IC d'extension de port 8 bits MCP23008 : 6 étapes
NODEMCU LUA ESP8266 avec IC d'extension de port 8 bits MCP23008 : 6 étapes

Vidéo: NODEMCU LUA ESP8266 avec IC d'extension de port 8 bits MCP23008 : 6 étapes

Vidéo: NODEMCU LUA ESP8266 avec IC d'extension de port 8 bits MCP23008 : 6 étapes
Vidéo: How to Use ESP8266 NodeMCU with 16x2 LCD i2C Display 2024, Novembre
Anonim
NODEMCU LUA ESP8266 avec IC d'extension de port 8 bits MCP23008
NODEMCU LUA ESP8266 avec IC d'extension de port 8 bits MCP23008

Le MCP23008 est un extenseur d'E/S 8 bits avec interface série et fonctionne entre 1,8 et 5,5 volts, il est donc idéal pour l'ESP8266, Arduino, Raspberry Pi, les puces PIC et plus encore.

Si vous avez vu mon autre Instructable sur le MCP23017, vous vous demandez peut-être pourquoi j'en fais également un pour le MCP23008, car c'est vraiment une version plus petite de la même chose.

Les raisons sont que ses registres sont différents à la fois en nom et en nombre et je voudrais montrer comment utiliser un module de bibliothèque prêt à l'emploi. Tout le monde n'est pas apte à utiliser NodeMCU lua, j'aimerais donc montrer cet aspect de la programmation ainsi que comment utiliser le MCP23008.

La bibliothèque et les programmes sont disponibles sur github.com.

La fiche technique du MCP23008 est disponible auprès de Microchip.

Étape 1: Câblage du MCP23008

Câblage du MCP23008
Câblage du MCP23008

Le circuit intégré MCP23008 est d'une configuration simple et la construction d'une carte est vraiment facile pour lui. Vous pouvez également installer le circuit sur une planche à pain.

Pin connexions sur ma carte

  • Broche 18 (VDD) à 3v3
  • Broche 9 (VSS) à GND
  • Broche 7 (NC) à GND (pas nécessaire)
  • Broche 1 (SCL) vers ESP GPIO2
  • Broche 2 (SDA) vers ESP GPIO0
  • Broche 5 (A0) à GND
  • Broche 4 (A1) à GND
  • Broche 3 (A2) à GND
  • Broche 6 (RESET) à 3v3

Connectez les broches à lire à Gnd sur le port A (broches 10 - 17)

Remarque: ici toutes les broches d'adresse sont connectées à Gnd pour utiliser le MCP23008 à l'adresse 0x20 sur le bus d'adresse I2C.

Si vous utilisiez l'adresse 0x21, A0 serait connecté à 3,3 V, avec A1 et A2 connectés à Gnd.

De même, si vous utilisez l'adresse 0x22, A1 devrait être connecté à 3,3 V avec A0 et A2 connectés à Gnd.

etc…

Étape 2: Construire une planche

Construire un tableau
Construire un tableau

J'ai utilisé une planche Vero de 25 mm x 64 mm (9 rangées x 25 trous) pour construire ma planche. C'est un peu serré, mais comme la plupart des broches dont vous avez besoin se trouvent de chaque côté du circuit intégré, cela convient à ce qu'il doit faire.

J'ai utilisé 8 broches et 8 prises d'en-tête pour le port A afin de pouvoir brancher mes différents modules ainsi que d'autres câblages pour différents projets. J'ai ajouté des broches Gnd et 3.3V supplémentaires car je trouve qu'il y en a toujours une pénurie lors de la connexion de modules ensemble.

Étape 3: Utilisation d'un module de bibliothèque

Utilisation d'un module de bibliothèque
Utilisation d'un module de bibliothèque

Les modules de bibliothèque contiennent normalement une sélection de sous-routines, de fonctions et de variables accessibles par un autre programme. Le programme lui-même ne s'exécute pas, mais ses fonctions sont accessibles par le programme appelant. Cela signifie que vous pouvez avoir vos sous-routines dans la bibliothèque et les appeler chaque fois que vous en avez besoin, en créant un petit programme d'appel. Cela devient plus utile si vous avez de nombreux programmes différents utilisant les mêmes sous-programmes, vous n'avez pas besoin d'inclure les sous-programmes dans chaque programme.

Remarque: le programme mcp23008.lua doit être chargé dans la mémoire ESP8266 comme les autres programmes.

J'ai inclus les programmes github.com ici ainsi qu'un programme simple (test.lua) pour montrer que la bibliothèque fonctionne.

Il existe au moins 2 façons d'inclure la bibliothèque dans votre programme.

exiger ("mcp23008")

mcp23008.begin (0x0, gpio2, gpio0, i2c. SLOW)

ou

mcp = exiger ("mcp23008")

mcp.begin (0x0, gpio2, gpio0, i2c. SLOW)

Les deux méthodes ci-dessus font la même chose, mais la deuxième méthode vous permet d'utiliser votre propre variable au lieu du nom du programme.

Étape 4: Programme Kitt Car

Programme de voitures de Kitt
Programme de voitures de Kitt

J'ai inclus le programme KittCar23008.lua et KittLib.lua qui utilise la bibliothèque pour montrer les différences dans la façon d'écrire des programmes de cette façon. Les deux programmes font la même chose.

Le plug in 8 LED est disponible sur Ebay sous forme de kit et est connu sous le nom de kit DIY LED Flowing Water Light à 8 canaux, 99p de Chine. Vous devez le souder vous-même.

Remarque: si vous rencontrez un problème en essayant d'exécuter le programme KittLib.lua, essayez de connecter momentanément la broche RESET du MCP23008 à Gnd. Je sais que cela donnera un court-circuit direct (car il est connecté à 3,3 V) et vous devez réinitialiser tout le reste. Cela fonctionne également en se connectant à Gnd via une résistance de 10 ohms, probablement une meilleure façon de le faire.

J'ai également découvert que KittLib.lua fonctionnerait sans problème après avoir exécuté test.lua (ne me demandez pas pourquoi ?)

J'ai essayé différentes manières de résoudre le problème du programme KittLib.lua, mais jusqu'à présent, je ne trouve aucune raison logique expliquant pourquoi il se bloque. Est-ce que quelqu'un a des idées?

Je n'ai pas écrit tous ces programmes moi-même, donc je ne suis pas en mesure de dire pourquoi il y a un problème, bien qu'après avoir examiné le codage, il ne semble pas y avoir quoi que ce soit d'anormal.

Étape 5: LED 7 segments

LED 7 segments
LED 7 segments

Comme pour le programme KittCar.lua ci-dessus, j'ai inclus un programme autonome et un programme dépendant de la bibliothèque pour piloter un écran LED à 7 segments.

Encore une fois, les deux programmes font la même chose, mais montrent comment utiliser un module de bibliothèque écrit par vous-même ou par quelqu'un d'autre.

Étape 6: Conclusion

Conclusion
Conclusion

J'ai essayé de montrer comment utiliser des modules de code dans l'environnement Lua et de l'appliquer à un IC spécifique en même temps.

Même si j'ai eu un problème à faire cela, je pense qu'il y a assez pour montrer comment ces modules fonctionnent ainsi que pour démontrer une application réelle.

Conseillé: