Índice:

NODEMCU LUA ESP8266 com IC expansor de porta de 8 bits MCP23008: 6 etapas
NODEMCU LUA ESP8266 com IC expansor de porta de 8 bits MCP23008: 6 etapas

Vídeo: NODEMCU LUA ESP8266 com IC expansor de porta de 8 bits MCP23008: 6 etapas

Vídeo: NODEMCU LUA ESP8266 com IC expansor de porta de 8 bits MCP23008: 6 etapas
Vídeo: ESP8266 NodeMCU Interface - MCP23017 i/o expender with LED Example! 2024, Novembro
Anonim
NODEMCU LUA ESP8266 com IC expansor de porta de 8 bits MCP23008
NODEMCU LUA ESP8266 com IC expansor de porta de 8 bits MCP23008

O MCP23008 é um expansor de E / S de 8 bits com interface serial e opera entre 1,8 e 5,5 volts, portanto, é ideal para ESP8266, Arduino, Raspberry Pi, Chips PIC e muito mais.

Se você viu meu outro Instructable no MCP23017, deve estar se perguntando por que também estou fazendo um para o MCP23008, já que é realmente uma versão menor da mesma coisa.

Os motivos são que seus registros são diferentes tanto no nome quanto no número e eu gostaria de mostrar como usar um módulo de biblioteca pronto. Nem todo mundo é adepto do uso do NodeMCU lua, então gostaria de mostrar esse aspecto da programação e também como usar o MCP23008.

A biblioteca e os programas estão disponíveis em github.com.

A folha de dados do MCP23008 está disponível na Microchip.

Etapa 1: Fiação do MCP23008

Fiação do MCP23008
Fiação do MCP23008

O MCP23008 IC tem um layout simples e construir uma placa é realmente fácil para ele. Você também pode configurar o circuito em uma placa de pão.

Conexões de pinos na minha placa

  • Pino 18 (VDD) a 3v3
  • Pino 9 (VSS) para GND
  • Pino 7 (NC) para GND (não necessário)
  • Pino 1 (SCL) para ESP GPIO2
  • Pino 2 (SDA) para ESP GPIO0
  • Pino 5 (A0) para GND
  • Pino 4 (A1) para GND
  • Pino 3 (A2) para GND
  • Pino 6 (RESET) para 3v3

Conecte os pinos para serem lidos no Gnd na Porta A (pinos 10 - 17)

Nota: aqui todos os pinos de endereço são conectados ao Gnd para usar o MCP23008 no endereço 0x20 no barramento de endereço I2C.

Se você estivesse usando o endereço 0x21, A0 seria conectado a 3,3 V, com A1 e A2 conectados a Gnd.

Da mesma forma, se estiver usando o endereço 0x22, A1 deve ser conectado a 3,3 V com A0 e A2 conectado a Gnd.

etc …

Etapa 2: Construindo uma placa

Construindo uma placa
Construindo uma placa

Usei uma placa de tira Vero de 25 mm x 64 mm (9 linhas x 25 orifícios) para construir minha prancha. É um pouco apertado, mas como a maioria dos pinos de que você precisa está em ambos os lados do IC, é adequado para o que precisa fazer.

Usei 8 pinos e 8 soquetes de cabeçalho para a porta A para poder conectar meus vários módulos, bem como outra fiação para diferentes projetos. Eu adicionei pinos Gnd e 3,3V extras, pois acho que sempre há uma falta deles ao conectar os módulos.

Etapa 3: usando um módulo de biblioteca

Usando um Módulo de Biblioteca
Usando um Módulo de Biblioteca

Módulos de biblioteca normalmente contêm uma seleção de sub-rotinas, funções e variáveis que podem ser acessadas por outro programa. O programa em si não é executado, mas suas funções podem ser acessadas pelo programa de chamada. Isso significa que você pode ter suas sub-rotinas dentro da biblioteca e chamá-las sempre que precisar, criando um pequeno programa de chamada. Torna-se mais valioso se você tiver muitos programas diferentes usando as mesmas sub-rotinas, você não precisa incluir as sub-rotinas em todos os programas.

Observação: o programa mcp23008.lua precisa ser carregado na memória do ESP8266 como os outros programas.

Incluí os programas github.com aqui, bem como um programa simples (test.lua) para mostrar que a biblioteca está funcionando.

Existem pelo menos 2 maneiras de incluir a biblioteca em seu programa.

requer ("mcp23008")

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

ou

mcp = require ("mcp23008")

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

Ambos os itens acima fazem a mesma coisa, mas o segundo método permite que você use sua própria variável em vez do nome do programa.

Etapa 4: Programa Kitt Car

Kitt Car Program
Kitt Car Program

Incluí o programa KittCar23008.lua e KittLib.lua, que usa a biblioteca para mostrar as diferenças em como escrever programas dessa maneira. Ambos os programas fazem a mesma coisa.

O plug-in de 8 LED está disponível no Ebay como um kit e é conhecido como Kit DIY de luz de água corrente de 8 canais, 99p da China. Você tem que soldá-lo sozinho.

Nota: Se você tiver problemas ao tentar executar o programa KittLib.lua, tente conectar o pino MCP23008 RESET a Gnd momentaneamente. Eu sei que isso vai dar um curto-circuito direto (já que está conectado a 3,3V) e você tem que reiniciar todo o resto. Também funciona conectando-se ao Gnd por meio de um resistor de 10 ohms, provavelmente a melhor maneira de fazer isso.

Também descobri que KittLib.lua executaria sem problemas após executar test.lua (Não me pergunte por quê?)

Tentei várias maneiras de resolver o problema do programa KittLib.lua, mas até agora não consigo encontrar nenhum motivo lógico para ele travar. Alguém tem alguma ideia?

Eu não escrevi todos esses programas, então não posso dizer por que há um problema, embora depois de olhar para a codificação, não pareça haver nada obviamente errado.

Etapa 5: LED de 7 segmentos

LED de 7 segmentos
LED de 7 segmentos

Tal como acontece com o programa KittCar.lua acima, incluí um programa autônomo e um programa dependente de biblioteca para acionar um display LED de 7 segmentos.

Novamente, os dois programas fazem a mesma coisa, mas demonstram como usar um módulo de biblioteca escrito por você ou por outra pessoa.

Etapa 6: Conclusão

Conclusão
Conclusão

Tentei demonstrar como usar módulos de código dentro do ambiente Lua e aplicá-lo a um IC específico ao mesmo tempo.

Embora eu tenha tido problemas ao fazer isso, acho que há o suficiente para mostrar como esses módulos funcionam, bem como demonstrar um aplicativo da vida real.

Recomendado: