Ajuda para incluir mais um MCP23017 no código do ESP!!

Ola Jose  boa tarde !! 

Sou novo nesse universo do códigos de endereçamento de CI, estou com muita dificuldade em adicionar mais um CI no código abaixo, queria testar um acionamento de 32 pinos, já tentei inúmeras modificações, mas não consigo fazer os botões do 17 ao 32 acionar. poderia me da uma dica onde posso modificar as variáveis ( endereçamento do CI ) para que a pagina retorne on e off, a partir do botão 17.

Segue anexo o código

16_Relay.ino

desde já agradeço 

Antonio Sousa

Exibições: 2754

Anexos

Responder esta

Respostas a este tópico

olá Antonio.

      Vi que vc deixou uma mensagem nos comentários do meu perfil, solicitando ajuda sobre este tópico do MCP23017, para uso com o ESP32 na plataforma Arduino.

      Em uma primeira vista, fiz uma análise do seu código original.

      Ele é interessante e bastante promissor.  Há tempos eu esperava que alguém postasse aqui no LDG um código "mais interessante", semelhante ao seu caso.

      Mas também, seu código tem problemas de implementação, especialmente equívocos na forma de como algumas tarefas devem ser feitas. Se vc não alterar isto, terá problemas em algum momento, especialmente em relação a bugs, daqueles que "fogem" ao controle, e cada vez que vc mexe no código pra resolver alguma coisa, isto causa algum efeito colateral "esquisito" (ou seja, um novo problema).

      Há também no código, alguns elementos do que é considerando no meio acadêmico uma  "má prática de programação" (este é um "termo" técnico, e não inventado por mim), como por exemplo o uso do statement "return" dentro das estruturas de programação (na minha visão, esta é a receita perfeita pras coisas começarem a dar errado), e alguns mais rigorosos consideram isso uma prática "condenável".

      Em relação ao MCP23017, é tranquilo e muito fácil de expandir.

      Mas gostaria também que vc publicasse um diagrama das suas conexões no Hardware (circuito), pois isso irá enriquecer o tópico e orientar a outros que tenham a mesma questão (ou semelhante).  Eu mesmo poderia "reconstruir" as conexões do Hardware, mas se vc postar a sua implementação, me permitirá fazer eventuais sugestões para impedir problemas potenciais (claro, não sei se eles existem no seu Sistema).

      Independente disto, certamente irei ajudá-lo. Mas terei que fazer alguns ajustes no seu código, para que ele fique mais organizado.

      Só peço que aguarde um pouco, pois no momento já estou atendendo a pelo menos outros dois tópicos que também exigem alguma dedicação.

      Abrçs,

      Elcids

Elcids

boa tarde, agradeço sua resposta 

segue o esquema de ligação

Desde já agradeço 

Att

Antonio Sousa

Boa tarde AS.

ao usar um CI somente, você está usando o endereço MCP_ADDRESS 0x20, isto significa que os ports 

A0, A1 e A2 do CI estão ligado em GND.

Ao usar um segundo ou mais CIs, você terá que configurar estes pinos para outro endereço diferente de 20,

ou seja de 21 a 27.

E também o seu código deve referenciar também à este novo endereço.

RV

Boa tarde M

essa e uma dificuldade que estou tendo 

já implementei essas modificações conforme abaixo 

MCP_ADDRESS 0x20  =>> GND GND GND

MCP_ADDRESS 0x21  =>> 3.3V  GND GND

ou em forma de matriz MCP_ADDRESS (0x20, 0x21);

mas obtive sucesso 

Att

AS

Boa tarde Antonio. 

Primeiro passo que eu recomendo, é estudar o datasheet do chip. 

http://ww1.microchip.com/downloads/en/devicedoc/20001952c.pdf

Pelo código que enviou, presumo que esteja usando um ESP32. Favor confirmar. 

Placa ESP32 DevKit com 30 pinos. (veja que existe um outro modelo com 38 pinos). 

Uma ligação incorreta !  

A alimentação do MCP23017 deve ser também 3,3V ! Não use 5V, pois poderá queimar o ESP32. 

Ligue 3,3V no pino 9.

Como o Rui informou cada chip deve ter um endereçamento único.

Na sua montagem, os dois chips tem o mesmo endereço. 

Vi que você já mudou os pinos de endereçamento 

A0 = pino 15             A1 = pino 16                  A2 = pino16 

                                              A0      A1     A2 

MCP_ADDRESS 0x20  =>> GND GND GND

MCP_ADDRESS 0x21  =>> 3.3V  GND GND

O chip MCP23017 usa a interface I2C. Para 3,3V, os resistores de pullup devem ser de 3,3K. (você esta usando 4,7K). 

SCK (pino 12) =>   SCL - GPIO 22

SDA (pino 13) =>  SDA - GPIO 21 

Sugiro que rode um I2C scanner para verificar a comunicação:

Anexei o código ESP32_I2Csacnner.INO adaptado por mim. 

Meus tutorias como referência: 

Conhecendo o ESP32 – Introdução (1)

Conhecendo o ESP32 – Usando Arduino IDE (2)

Não estou conseguindo anexar o I2C scanner. Se não funcionar, me avise. 

// ESP32 I2C Scanner
// Based on code of Nick Gammon http://www.gammon.com.au/forum/?id=10896
// ESP32 DevKit - Arduino IDE 1.8.5
// Device tested PCF8574 - Use pullup resistors 3K3 ohms !
// PCF8574 Default Freq 100 KHz

#include <Wire.h>

void setup()
{
Serial.begin (115200);
Wire.begin (21, 22); // sda= GPIO_21 /scl= GPIO_22
}

void Scanner ()
{
Serial.println ();
Serial.println ("I2C scanner. Scanning ...");
byte count = 0;

Wire.begin();
for (byte i = 8; i < 120; i++)
{
Wire.beginTransmission (i); // Begin I2C transmission Address (i)
if (Wire.endTransmission () == 0) // Receive 0 = success (ACK response)
{
Serial.print ("Found address: ");
Serial.print (i, DEC);
Serial.print (" (0x");
Serial.print (i, HEX); // PCF8574 7 bit address
Serial.println (")");
count++;
}
}
Serial.print ("Found ");
Serial.print (count, DEC); // numbers of devices
Serial.println (" device(s).");
}

void loop()
{
Scanner ();
delay (100);
}

Boa tarde  José Gustavo Abreu Murta,

estou também com dificuldade de anexar aquivos aqui no LdG.

Ao clicar em baixo no tópico onde está escrito "Deseja carregar arquivos?" não estou conseguindo.
Informei ao Marcelo (acho que ele é dono do site) e ele disse que ele consegue.

Mas eu não consigo.

Só consigo clicando em:

Testa por aí e veja se assim vc consegue.

RV

Informe também qual módulo de relé esta usando.

Vários colegas já tiveram problemas com módulo de relé no ESP32 e ESP8266. 

Bom dia José

estou usando o Modulo rele 16 canais 5v !! e um ESP32 30 pinos 

- Tensão de operação: 5VDC (VCC e GND)

- Tensão de sinal: TTL 5VCD (IN1 a IN16)

- Corrente típica de operação: 15~20mA

- Contato do relé permite tensão de até 30 VDC a 10A ou 250VAC a 10A

- Tempo de resposta: 5~10ms

- Indicador LED de funcionamento

- 4 Buracos de 3mm para fixação na extremidades da placa

- Dimensões aprox: 190mm x 90mm x 20mm

Vou carregar com 

ESP32 I2C Scanner para testar !!

Não se esqueça:

Uma ligação incorreta !  

A alimentação do MCP23017 deve ser também 3,3V ! Não use 5V, pois poderá queimar o ESP32. 

Ligue 3,3V no pino 9.

ok !!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço