Como escanear endereço I2C no ESP32 usando Arduino IDE

Neste guia, irá aprender como encontrar o endereço de dispositivos I2C com o ESP32 programado usando o Arduino IDE.

ESP32 é uma plataforma baseada em microcontrolador que pode interagir com vários dispositivos para controlar diferentes saídas de acordo com a entrada. Todos os protocolos de comunicação como UART, SPI e I2C desempenham um papel significativo na comunicação ESP32. Discutiremos o protocolo de comunicação Inter Integrated Circuit ou I2C neste guia e como escanear um endereço de um dispositivo.

 

Introdução à Comunicação I2C

I2C, também conhecido como I2C ou IIC, é um protocolo de comunicação mestre-escravo síncrono, onde um dispositivo mestre de sinal pode controlar vários dispositivos escravos por meio de um único fio (linha SDA).

O I2C combina o funcionamento dos protocolos UART e SPI, por exemplo, o SPI suporta o controle de vários dispositivos escravos sobre um único mestre. O I2C também suporta isso. Por outro lado, o UART usa TX e Rx de duas linhas para comunicação. O I2C também usa SDA e SCL de duas linhas para comunicação.

Como scanear I2C

Aqui podemos ver que usamos resistores pull up com ambas as linhas SDA e SCL. Isso ocorre porque, por padrão, o I2C só emite dois níveis de LOW ou circuito aberto. Por padrão, o I2C em todos os chips está no modo de circuito aberto, então, para puxá-los para HIGH, usamos um resistor pull-up.

A seguir estão as duas linhas que o I2C usa:

  • SDA (Serial Data) : Linha para transmitir e receber dados do mestre para o escravo e vice-versa
  • SCL (Serial Clock) : Linha de sinal de clock para selecionar um dispositivo escravo específico

 

Interfaces de barramento I2C ESP32

O ESP32 apresenta duas interfaces de barramento I2C usando as quais a comunicação I2C é realizada como mestre ou escravo, dependendo do dispositivo que está interligado ao ESP32. De acordo com a folha de dados do ESP32, a interface I2C da placa ESP32 suporta a seguinte configuração:

  • Comunicação I2C de modo padrão a uma taxa de 100 Kbit/s
  • Comunicação I2C de modo rápido ou avançado a uma velocidade de 400 Kbit/s
  • Modo de endereçamento duplo de 7 bits e 10 bits
  • Os usuários podem controlar a interface I2C programando os registradores de comando
  • A interface de barramento I2C ESP32 é mais flexível no controle

Conectando dispositivos I2C com ESP32

A interface de dispositivos com o ESP32 usando o protocolo I2C é muito simples, assim como o UART, precisamos apenas de duas linhas para conectar o SDA e a linha de clock SCL.

O ESP32 pode ser configurado tanto no modo Mestre quanto no modo Escravo.

 

Modo Mestre ESP32 I2C

Neste modo, o ESP32 gera um sinal de clock que inicia a comunicação com os dispositivos escravos conectados.

Os dois pinos GPIO no ESP32 que são pré-definidos para comunicação I2C:

  • SDA : GPIO PIN 21
  • SCL : PINO GPIO 22

Escravos I2C ESP32

Modo escravo ESP32 I2C

No modo escravo, o clock é gerado pelo dispositivo mestre. O mestre é o único dispositivo que aciona a linha SCL na comunicação I2C. Os escravos são os dispositivos que respondem ao mestre, mas não podem iniciar uma transferência de dados. No barramento I2C do ESP32, apenas o mestre pode iniciar a transferência de dados entre os dispositivos.

A imagem mostra duas placas ESP32 em configuração mestre-escravo.

ESP32 I2C Mestre e Escravo

 

Agora que entendemos o funcionamento do modo I2C no ESP32, podemos encontrar facilmente o endereço I2C de qualquer dispositivo enviando o código fornecido.

Compre O ESP32 clicando neste link.

 

Como escanear endereço I2C no ESP32 usando Arduino IDE

Encontrar o endereço I2C dos dispositivos conectados com o ESP32 é importante porque se estivermos usando dispositivos com o mesmo endereço I2C, não poderemos nos comunicar com eles por meio de uma única linha de barramento.

Cada dispositivo I2C deve conter um endereço exclusivo e o intervalo de endereços de 0 a 127 ou (0 a 0X7F) em HEX. Por exemplo, se estivermos usando dois displays OLED do mesmo número de modelo ou produto, ambos terão o mesmo endereço I2C, então não podemos usar ambos na mesma linha I2C no ESP32.

Para encontrar um endereço IC, vamos dar um exemplo.

 

Esquemático

A imagem abaixo mostra o diagrama esquemático da interface do display OLED com a placa ESP32 usando o protocolo de comunicação I2C.

Interfacing-OLED-Display-with-ESP32-using-Arduino-IDE-and-I2C

A conexão do ESP32 com OLED inclui:

OLED Display ESP32 Pin
VCC 3V3/VIN
GND GND
SCL GPIO 22
SDA GPIO 21

 

Código

Abra o editor Arduino e carregue o código de escaneamento I2C fornecido na placa ESP32. Certifique-se de que o ESP32 esteja conectado e a porta COM esteja selecionada.

O código acima fará a varredura dos dispositivos I2C disponíveis. O código começou chamando a biblioteca wire para comunicação I2C. A próxima comunicação serial é iniciada usando a taxa de transmissão.

Na parte do loop do código de escaneamento I2C, dois nomes de variáveis, erro e endereço, são definidos. Essas duas variáveis ​​armazenam o endereço I2C dos dispositivos. Em seguida, um loop for é inicializado para escanear o endereço I2C começando de 0 a 127 dispositivos.

 

Saída

Na saída, podemos ver o endereço I2C do display OLED conectado à placa ESP32. Aqui, o endereço I2C é 0X3C, então não podemos usar nenhum outro dispositivo I2C com o mesmo endereço, para isso temos que alterar o endereço I2C desse dispositivo primeiro.

Como scanear dispositivos I2C usando ESP32 e arduino Ide

 

Obtivemos com sucesso o endereço I2C do display OLED conectado à placa ESP32.

Conclusão

Encontrar um endereço I2C ao conectar vários dispositivos com ESP32 é importante, pois dispositivos que compartilham o mesmo endereço I2C não podem ser conectados em um único barramento I2C. Usando o código acima, pode-se identificar o endereço I2C e, se o endereço de quaisquer dois dispositivos corresponder, ele pode ser alterado de acordo, dependendo das especificações do dispositivo.

 

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

drtechmoz
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.