Como definir o endereço
O endereço depende do código exato da peça, não de um pino: SHT4x-A… é 0x44, -B… 0x45, -C… 0x46. As versões 0x45 existem só para SHT40 e SHT43; a versão 0x46, só para SHT40.
Dispositivos que usam os mesmos endereços
Dois dispositivos no mesmo barramento não podem responder no mesmo endereço. Estes módulos da nossa lista usam pelo menos um destes endereços:
| Dispositivo | O que é | Endereço em comum |
|---|---|---|
| INA219 | monitor de corrente, tensão e potência | 0x44, 0x45, 0x46 |
| INA226 | monitor de corrente, tensão e potência | 0x44, 0x45, 0x46 |
| INA260 | monitor de corrente, tensão e potência com shunt integrado | 0x44, 0x45, 0x46 |
| OPT3001 | sensor de luz ambiente | 0x44, 0x45, 0x46 |
| PCA9685 | driver PWM / servo de 16 canais, 12 bits | 0x44, 0x45, 0x46 |
| SHT30 / SHT31 / SHT35 | sensor de temperatura e umidade | 0x44, 0x45 |
Se dois deles ficarem no mesmo endereço, mude o endereço de um deles pelo pino de endereço, coloque um atrás de um multiplexador TCA9548A (0x70–0x77) ou use um segundo barramento I²C: o ESP32, o ESP32-S3 e o RP2040 têm dois controladores I²C (o ESP32-C3 tem um).
Verificar o barramento inteiro →Adicione o SHT40 / SHT41 / SHT43 / SHT45 e os seus outros módulos: o verificador encontra conflitos, sugere endereços livres e dimensiona os pull-ups.
Endereço de 7 bits e de 8 bits
Os endereços I²C têm 7 bits. Alguns datasheets e bibliotecas os escrevem como números de 8 bits, com o bit de leitura/escrita acrescentado à direita: por isso o mesmo chip pode aparecer como 0x44 ou como 0x88. A biblioteca Wire do Arduino e o ESPHome usam a forma de 7 bits.
| 7 bits | Binário | Escrita (8 bits) | Leitura (8 bits) |
|---|---|---|---|
| 0x44 | 1000100 | 0x88 | 0x89 |
| 0x45 | 1000101 | 0x8A | 0x8B |
| 0x46 | 1000110 | 0x8C | 0x8D |
Confira se ele responde
Carregue este sketch com o SHT40 / SHT41 / SHT43 / SHT45 ligado a SDA e SCL: ele testa todos os endereços que o chip pode usar e mostra no monitor serial o endereço que responde. No ESP32, os pinos padrão são GPIO21 (SDA) e GPIO22 (SCL); no Arduino Uno, A4 e A5.
#include <Wire.h>
const byte ADDRS[] = {0x44, 0x45, 0x46};
void setup() {
Serial.begin(115200);
Wire.begin();
for (byte a : ADDRS) {
Wire.beginTransmission(a);
if (Wire.endTransmission() == 0) {
Serial.print("SHT4x responde em 0x");
if (a < 0x10) Serial.print('0');
Serial.println(a, HEX);
return;
}
}
Serial.println("Sem resposta: verifique os fios");
}
void loop() {}
No ESPHome, o barramento é varrido na inicialização (scan: true é o padrão): o log lista todos os endereços que respondem.
i2c:
sda: GPIO21
scl: GPIO22
scan: true
Resistores de pull-up
SDA e SCL precisam de resistores de pull-up para a alimentação. Muitos módulos já vêm com eles, geralmente de 4,7 kΩ ou 10 kΩ, e com vários módulos no barramento eles se somam em paralelo. O verificador de endereços I²C calcula a faixa permitida para a tensão e a velocidade do seu barramento.
Perguntas frequentes
Qual é o endereço I2C do SHT40 / SHT41 / SHT43 / SHT45?
0x44, 0x45 ou 0x46. O endereço depende do código exato da peça, não de um pino: SHT4x-A… é 0x44, -B… 0x45, -C… 0x46. As versões 0x45 existem só para SHT40 e SHT43; a versão 0x46, só para SHT40.
Posso usar mais de um SHT40 / SHT41 / SHT43 / SHT45 no mesmo barramento?
Só se forem versões diferentes: o SHT4x-A… responde em 0x44, o -B… em 0x45, o -C… em 0x46, e nem todo modelo existe em todas as versões. Dois da mesma versão sempre conflitam: use um multiplexador TCA9548A ou um segundo barramento I²C.
Por que o SHT40 / SHT41 / SHT43 / SHT45 não aparece na varredura I2C?
Confira, nesta ordem: SDA e SCL não invertidos; GND em comum entre as placas; resistores de pull-up em SDA e SCL; o módulo alimentado na tensão para a qual foi projetado; e se o seu código usa o endereço de 7 bits (0x44), não o de 8 bits (0x88).
Dispositivos semelhantes
AHT20 BME280 BME680 BME688 BMP180 BMP280 BMP388 CCS811 ENS160 HDC1080 HTU21D LM75B LPS22HB MCP9808 MS5611-01BA SCD30 SCD40 / SCD41 SEN50 / SEN54 / SEN55 SGP30 SGP40 SGP41 SHT30 / SHT31 / SHT35 SHTC3 Si7021 TMP102 TMP117
Endereços conferidos no datasheet do SHT40 / SHT41 / SHT43 / SHT45.