A comunicação I2C (Inter-Integrated Circuit) é amplamente utilizada em projetos de Arduino (como vimos nesse artigo) para conectar sensores, displays e outros dispositivos com apenas dois fios: SDA (dados) e SCL (clock). Uma das primeiras etapas ao utilizar um novo dispositivo I2C é identificar seu endereço, essencial para a comunicação. Neste artigo, explicaremos como encontrar o endereço I2C de forma prática utilizando o Arduino.
O que é o protocolo I²C?
O protocolo I2C permite que múltiplos dispositivos se comuniquem em um único barramento compartilhado, com um mestre (geralmente o Arduino) e diversos escravos (sensores, displays, etc.). Cada dispositivo escravo deve ter um endereço único, geralmente fornecido pelo fabricante. No entanto, em muitos casos, esse endereço pode variar ou não estar claro na documentação. Felizmente, podemos escaneá-lo usando o próprio Arduino.
Materiais necessários
-
1 Placa Arduino (Uno, Mega, Nano, etc.)
-
1 Dispositivo I2C (como o sensor MPU6050, display OLED, etc.)
-
Jumpers para conexão
-
Protoboard (opcional)
Conexões típicas I²C
Os pinos I2C variam de acordo com o modelo do Arduino:
| Placa Arduino | SDA | SCL |
|---|---|---|
| Uno/Nano | A4 | A5 |
| Mega | 20 | 21 |
| Leonardo | 2 | 3 |
| ESP8266/ESP32 | Definíveis por software |
Conecte os fios da seguinte maneira:
-
SDA do sensor ao SDA do Arduino
-
SCL do sensor ao SCL do Arduino
-
VCC ao 3.3V ou 5V (conforme especificado pelo sensor)
-
GND ao GND do Arduino
É importante lembrar que, eventualmente, é necessário um resistor de pull-up na rede I²C (como vimos aqui)
Alguns sensores possuem pinos de configuração de endereço. Verifique o datasheet.
Código para escanear endereços I²C
Interpretando os resultados
Depois de fazer o upload para o Arduino e abrir o Monitor Serial (Ctrl+Shift+M), você verá algo como:
Escaneando dispositivos I2C...
Dispositivo I2C encontrado no endereço 0x3C
Total encontrado(s): 1
Isso indica que um dispositivo está respondendo no endereço 0x3C. Esse endereço será usado na comunicação com bibliotecas específicas para o sensor ou módulo.
