Boa tarde, pessoal. Blz?

Estou procurando um extensor de portas para o ESP32 e todos que encontrei usam a interface i2c para comunicação.

Minha dúvida é: Preciso manter um RC522 funcionando neste mesmo ESP32, mas ele também usa i2c. É possível utilizar os dois juntos?

Muito obrigado!

Exibições: 174

Responder esta

Respostas a este tópico

olá novamente Nelson.

      Há muitas formas de se fazer isso, e a grande maioria é relativamente simples e de baixo custo.

      Em um tópico aqui no LDG, eu demonstro uma forma de fazer isso, via Hardware e código muito eficientes.  Vc pode inclusive ver a temporização das atualizações de I/O, tanto para leitura como escrita de dados digitais. O post foi originalmente escrito para o UNO, mas vc pode usar para o ESP32  praticamente sem alteração (tanto código como Hardware).  Apenas substitua onde está marcado como +5V,  por +3.3V (que é a tensão de I/O do ESP32).

      O post está neste link:  "Multi I/O"

      Lá também há um exemplo simples de como usar. Mas caso vc tenha alguma dúvida, basta colocá-la aqui.

      Num outro post, também demonstrei algo semelhante,  mas neste caso apenas para saída digital.  Vc pode conferir aqui neste link:  "expandindo saídas Arduino"

       Ah sim esqueci de dizer:  caso vc esteja usando dispositivos I2C no seu Sistema, a metodologia que descrevo nos dois posts  funciona em perfeita harmonia com esta interface e também com outras.

      abrçs,

      Elcids

ah,  respondendo sua questão sobre I2C:

      Sim, vc pode usar diversos dispositivos I2C simultaneamente. O Barramento I2C é "endereçável",  o que significa que cada Dispositivo responde a um endereço próprio. Claro, não pode haver mais de um dispositivo com o mesmo endereço. Mas o I2C permite mais de 100 endereços diferentes.  A maioria dos dispositivos disponíveis no mercado, já tem uma faixa própria de endereços de fábrica. Mesmo assim é sempre bom conferir se não está havendo coincidência de endereços (alguns dispositivos usam faixas longas de endereços, e por isso pode coincidir com a faixa de outro próximo). Há um código muito famoso na comunidade Arduino, que localiza dispositivos I2C no barramento (o I2C Scanner  deste link: "I2C Scanner" ), exibindo o endereço I2C de cada um,  e assim pode ajudar muito.

      Preferencialmente, use dispositivos que tenham a mesma velocidade no barramento I2C. A velocidade mais comum é de 100 kbps (ou seja, 100 k bits por segundo). Mas alguns usam 400 kbps. E alguns usam mais alta ainda.  Dependendo de como foi implementada a Biblioteca do dispositivo,  podem ocorrer problemas (inclusive travamentos) caso existam dispositivos com velocidade diferente no barramento, mas isso não é muito comum.

      Abrçs,

      Elcids

Elcids, muito obrigado.

Sua explicação foi realmente ilucidativa. Valeu mesmo!

Segue a call do Elcids que da bom.

Caso tenha resolvido e não haja mais dúvidas, seria bom adicionar um [resolvido] no início do tópico, pois poderá servir como base de pesquisa para outros usuários.

==== EDIT ====

Só para acrescentar, no ESP32, até onde tenho conhecimento e confirmei em alguns sites, ele possui 2 comunicações i2c. Então caso estivesse num cenário bem apertado, com conflito no endereço do componente e impossibilidade de alterar, mas fosse necessário o uso, então usaria a segunda comunicação.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço