Sommario:

NODEMCU LUA ESP8266 con MCP23008 8 bit Port Expander IC: 6 passaggi
NODEMCU LUA ESP8266 con MCP23008 8 bit Port Expander IC: 6 passaggi

Video: NODEMCU LUA ESP8266 con MCP23008 8 bit Port Expander IC: 6 passaggi

Video: NODEMCU LUA ESP8266 con MCP23008 8 bit Port Expander IC: 6 passaggi
Video: Interface ESP32 with the PCF8575 I/O Port Expander 2024, Dicembre
Anonim
NODEMCU LUA ESP8266 Con MCP23008 8 Bit Port Expander IC
NODEMCU LUA ESP8266 Con MCP23008 8 Bit Port Expander IC

L'MCP23008 è un espansore I/O a 8 bit con interfaccia seriale e opera tra 1,8 e 5,5 volt, quindi è ideale per ESP8266, Arduino, Raspberry Pi, chip PIC e altro ancora.

Se hai visto il mio altro Instructable sull'MCP23017, ti starai chiedendo perché ne sto facendo uno anche per l'MCP23008, poiché è davvero una versione più piccola della stessa cosa.

Le ragioni sono che i suoi registri sono diversi sia nel nome che nel numero e vorrei mostrare come utilizzare un modulo di libreria già pronto. Non tutti sono esperti nell'uso di NodeMCU lua, quindi vorrei mostrare questo aspetto della programmazione e come utilizzare l'MCP23008.

La libreria e i programmi sono disponibili su github.com.

La scheda tecnica per l'MCP23008 è disponibile presso Microchip.

Passaggio 1: cablaggio dell'MCP23008

Cablaggio dell'MCP23008
Cablaggio dell'MCP23008

L'IC MCP23008 ha un layout semplice e costruire una scheda è davvero facile. Puoi anche impostare il circuito su una breadboard.

Pin Connections sulla mia scheda

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

Collegare i pin da leggere a Gnd sulla Porta A (pin 10 - 17)

Nota: qui tutti i pin di indirizzo sono collegati a Gnd per utilizzare l'MCP23008 all'indirizzo 0x20 sul bus di indirizzo I2C.

Se stavi usando l'indirizzo 0x21, allora A0 sarebbe collegato a 3,3 V, con A1 e A2 collegati a Gnd.

Allo stesso modo, se si utilizza l'indirizzo 0x22, allora A1 dovrebbe essere collegato a 3.3V con A0 e A2 collegati a Gnd.

eccetera…

Passaggio 2: costruzione di una tavola

Costruire una tavola
Costruire una tavola

Ho usato una tavola da 25 mm x 64 mm (9 file x 25 fori) Vero per costruire la mia tavola. È un po' stretto, ma poiché la maggior parte dei pin necessari si trova su entrambi i lati dell'IC, è adeguato a ciò che deve fare.

Ho usato 8 pin e 8 connettori femmina per la porta A in modo da poter collegare i miei vari moduli e altri cablaggi per diversi progetti. Ho aggiunto pin Gnd e 3,3 V extra poiché trovo che manchino sempre questi quando si collegano i moduli insieme.

Passaggio 3: utilizzo di un modulo libreria

Utilizzo di un modulo libreria
Utilizzo di un modulo libreria

I moduli della libreria normalmente contengono una selezione di sottoprogrammi, funzioni e variabili a cui è possibile accedere da un altro programma. Il programma stesso non viene eseguito, ma è possibile accedere alle sue funzioni dal programma chiamante. Significa che puoi avere le tue subroutine all'interno della libreria e richiamarle ogni volta che ne hai bisogno, creando un piccolo programma di chiamata. Diventa più prezioso se si hanno molti programmi diversi che utilizzano le stesse subroutine, non è necessario includere le subroutine in ogni programma.

Nota: il programma mcp23008.lua deve essere caricato nella memoria ESP8266 come gli altri programmi.

Ho incluso qui i programmi github.com e un semplice programma (test.lua) per mostrare che la libreria funziona.

Ci sono almeno 2 modi per includere la libreria nel tuo programma.

richiedono ("mcp23008")

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

o

mcp = richiede ("mcp23008")

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

Entrambi i precedenti fanno la stessa cosa, ma il secondo metodo ti consente di utilizzare la tua variabile invece del nome del programma.

Passaggio 4: programma Kitt Car

Kitt Car Program
Kitt Car Program

Ho incluso il programma KittCar23008.lua e KittLib.lua che usa la libreria per mostrare le differenze su come scrivere programmi in questo modo. Entrambi i programmi fanno la stessa cosa.

Il plug-in a 8 LED è disponibile su Ebay come kit ed è noto come kit fai-da-te a LED con luce a flusso d'acqua a 8 canali, 99p dalla Cina. Devi saldarlo da solo.

Nota: se si riscontra un problema nel tentativo di eseguire il programma KittLib.lua, provare a collegare momentaneamente il pin RESET dell'MCP23008 a Gnd. So che questo darà un cortocircuito diretto (dato che è collegato a 3,3 V) e devi ripristinare tutto il resto. Funziona anche collegandosi a Gnd tramite un resistore da 10 ohm, probabilmente un modo migliore per farlo.

Ho anche scoperto che KittLib.lua funzionerebbe senza problemi dopo aver eseguito test.lua (non chiedermi perché?)

Ho provato vari modi per risolvere il problema del programma KittLib.lua, ma finora non riesco a trovare alcuna ragione logica per cui si blocca. Qualcuno ha qualche idea?

Non ho scritto tutti questi programmi da solo, quindi non sono in grado di dire perché c'è un problema, anche se dopo aver guardato la codifica, non sembra esserci nulla di evidentemente sbagliato.

Passaggio 5: LED a 7 segmenti

LED a 7 segmenti
LED a 7 segmenti

Come con il programma KittCar.lua sopra, ho incluso un programma autonomo e dipendente dalla libreria per pilotare un display LED a 7 segmenti.

Di nuovo, entrambi i programmi fanno la stessa cosa, ma dimostrano come usare un modulo di libreria scritto da te o da qualcun altro.

Passaggio 6: conclusione

Conclusione
Conclusione

Ho provato a dimostrare come utilizzare i moduli di codice all'interno dell'ambiente Lua e applicarlo a un IC specifico allo stesso tempo.

Anche se ho avuto problemi a farlo, penso che ci sia abbastanza per mostrare come funzionano questi moduli oltre a dimostrare un'applicazione nella vita reale.

Consigliato: