Taula de continguts:

NODEMCU LUA ESP8266 Amb MCP23008 IC d'expansió de port de 8 bits: 6 passos
NODEMCU LUA ESP8266 Amb MCP23008 IC d'expansió de port de 8 bits: 6 passos

Vídeo: NODEMCU LUA ESP8266 Amb MCP23008 IC d'expansió de port de 8 bits: 6 passos

Vídeo: NODEMCU LUA ESP8266 Amb MCP23008 IC d'expansió de port de 8 bits: 6 passos
Vídeo: #137 Еженедельный обзор #36 — Новые продукты от производителей 2024, Desembre
Anonim
NODEMCU LUA ESP8266 Amb MCP23008 IC de port d’expansió de 8 bits
NODEMCU LUA ESP8266 Amb MCP23008 IC de port d’expansió de 8 bits

El MCP23008 és un expansor d'E / S de 8 bits amb interfície sèrie i funciona entre 1,8 i 5,5 volts, de manera que és ideal per a ESP8266, Arduino, Raspberry Pi, xips PIC i molt més.

Si heu vist el meu altre Instructable a l'MCP23017, potser us preguntareu per què també en faig un per a l'MCP23008, ja que realment és una versió més petita del mateix.

Els motius són que els seus registres són diferents tant pel que fa al nom com al número i m'agradaria mostrar com s'utilitza un mòdul de biblioteca preparat. No tothom és hàbil quan s’utilitza NodeMCU lua, així que m’agradaria mostrar aquest aspecte de la programació i també com utilitzar l’MCP23008.

La biblioteca i els programes estan disponibles a github.com.

El full de dades del MCP23008 està disponible a Microchip.

Pas 1: cablejar l'MCP23008

Cablatge de l'MCP23008
Cablatge de l'MCP23008

L’IC MCP23008 té un disseny senzill i la realització d’una placa és realment senzilla. També podeu configurar el circuit en una taula de pa.

Fixa les connexions al meu tauler

  • Pin 18 (VDD) a 3v3
  • Pin 9 (VSS) a GND
  • Pin 7 (NC) a GND (no és necessari)
  • Pin 1 (SCL) a ESP GPIO2
  • Pin 2 (SDA) a ESP GPIO0
  • Pin 5 (A0) a GND
  • Pin 4 (A1) a GND
  • Pin 3 (A2) a GND
  • Pin 6 (RESET) a 3v3

Connecteu els pins per llegir-los a Gnd al port A (pins 10 - 17)

Nota: aquí tots els pins d’adreça estan connectats a Gnd per utilitzar l’MCP23008 a l’adreça 0x20 al bus d’adreces I2C.

Si utilitzeu l'adreça 0x21, A0 estaria connectat a 3,3 V, amb A1 i A2 connectats a Gnd.

De la mateixa manera, si s'utilitza l'adreça 0x22, A1 hauria de connectar-se a 3,3V amb A0 i A2 connectats a Gnd.

etc …

Pas 2: construir una junta

Construir una junta
Construir una junta

Vaig utilitzar un tauler de tires Vero de 25 mm x 64 mm (9 files x 25 forats) per construir el meu tauler. És una mica ajustat, però com que la majoria dels passadors que necessiteu es troben a banda i banda del CI, és adequat per al que ha de fer.

He utilitzat 8 pins i 8 endolls de capçalera per al port A, de manera que puc connectar els meus mòduls i altres cables per a diferents projectes. He afegit pins Gnd i 3.3V addicionals, ja que trobo que sempre en falten quan connecteu mòduls junts.

Pas 3: utilitzar un mòdul de biblioteca

Utilització d’un mòdul de biblioteca
Utilització d’un mòdul de biblioteca

Els mòduls de biblioteca normalment contenen una selecció de subrutines, funcions i variables a les quals pot accedir un altre programa. El programa en si no s’executa, però el programa que fa trucades pot accedir a les seves funcions. Vol dir que podeu tenir les vostres subrutines a la biblioteca i trucar-les sempre que les necessiteu, fent un petit programa de trucades. Es fa més valuós si teniu molts programes diferents que utilitzen les mateixes subrutines, no cal incloure-les a tots els programes.

Nota: cal carregar el programa mcp23008.lua a la memòria ESP8266 com la resta de programes.

He inclòs els programes github.com aquí, així com un programa senzill (test.lua) per demostrar que la biblioteca funciona.

Hi ha almenys dues maneres d’incloure la biblioteca al vostre programa.

require ("mcp23008")

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

o bé

mcp = require ("mcp23008")

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

Tots dos anteriors fan el mateix, però el segon mètode us permet utilitzar la vostra pròpia variable en lloc del nom del programa.

Pas 4: Programa Kitt Car

Programa Kitt Car
Programa Kitt Car

He inclòs el programa KittCar23008.lua i KittLib.lua que utilitza la biblioteca per mostrar les diferències en com escriure programes d'aquesta manera. Tots dos programes fan el mateix.

El connector de 8 LED està disponible a Ebay com a kit i es coneix com a kit de bricolatge LED de llum d’aigua que flueix de 8 canals, 99p de la Xina. Ho heu de soldar vosaltres mateixos.

Nota: Si teniu un problema en intentar executar el programa KittLib.lua, proveu de connectar el pin RESET MCP23008 a Gnd momentàniament. Sé que això donarà un curtcircuit directe (ja que està connectat a 3,3V) i haureu de restablir tota la resta. També funciona connectant-se a Gnd mitjançant una resistència de 10 ohms, probablement una millor manera de fer-ho.

També vaig trobar que KittLib.lua funcionaria sense problemes després d’executar test.lua (No em pregunteu per què?)

He provat diverses maneres de resoldre el problema del programa KittLib.lua, però fins ara no he trobat cap raó lògica per què es bloqueja. Algú té alguna idea?

No he escrit tots aquests programes jo mateix, de manera que no sóc capaç de dir per què hi ha un problema, tot i que, després d’haver analitzat la codificació, no sembla que hi hagi res evidentment erroni.

Pas 5: LED de 7 segments

LED de 7 segments
LED de 7 segments

Com amb el programa KittCar.lua anterior, he inclòs un programa independent i dependent de la biblioteca per conduir una pantalla LED de 7 segments.

Una vegada més, tots dos programes fan el mateix, però demostren com utilitzar un mòdul de biblioteca escrit per vosaltres mateixos o per algú altre.

Pas 6: Conclusió

Conclusió
Conclusió

He intentat demostrar com s'utilitzen mòduls de codi dins de l'entorn Lua i aplicar-los a un CI específic al mateix temps.

Tot i que he tingut problemes per fer-ho, crec que n’hi ha prou per mostrar el funcionament d’aquests mòduls i demostrar una aplicació de la vida real.

Recomanat: