Comment régler l’adresse
L’adresse dépend de la référence exacte, pas d’une broche : SHT4x-A… est en 0x44, -B… en 0x45, -C… en 0x46. Les versions 0x45 n’existent que pour SHT40 et SHT43, la version 0x46 que pour SHT40.
Périphériques qui utilisent les mêmes adresses
Deux périphériques sur le même bus ne peuvent pas répondre à la même adresse. Ces modules de notre liste utilisent au moins une de ces adresses :
| Périphérique | Description | Adresse partagée |
|---|---|---|
| INA219 | moniteur de courant, de tension et de puissance | 0x44, 0x45, 0x46 |
| INA226 | moniteur de courant, de tension et de puissance | 0x44, 0x45, 0x46 |
| INA260 | moniteur de courant, de tension et de puissance avec shunt intégré | 0x44, 0x45, 0x46 |
| OPT3001 | capteur de lumière ambiante | 0x44, 0x45, 0x46 |
| PCA9685 | driver PWM / servo 16 canaux, 12 bits | 0x44, 0x45, 0x46 |
| SHT30 / SHT31 / SHT35 | capteur de température et d’humidité | 0x44, 0x45 |
Si deux d’entre eux se retrouvent sur la même adresse, changez celle de l’un des deux avec sa broche d’adresse, placez-en un derrière un multiplexeur TCA9548A (0x70–0x77) ou utilisez un second bus I²C : l’ESP32, l’ESP32-S3 et le RP2040 ont deux contrôleurs I²C (l’ESP32-C3 en a un).
Vérifier tout le bus →Ajoutez votre SHT40 / SHT41 / SHT43 / SHT45 et vos autres modules : l’outil trouve les conflits, propose des adresses libres et dimensionne les pull-up.
Adresse sur 7 bits et sur 8 bits
Les adresses I²C font 7 bits. Certaines datasheets et bibliothèques les écrivent sur 8 bits, avec le bit de lecture/écriture ajouté à droite : c’est pourquoi la même puce peut être indiquée en 0x44 ou en 0x88. La bibliothèque Wire d’Arduino et ESPHome utilisent la forme sur 7 bits.
| 7 bits | Binaire | Écriture 8 bits | Lecture 8 bits |
|---|---|---|---|
| 0x44 | 1000100 | 0x88 | 0x89 |
| 0x45 | 1000101 | 0x8A | 0x8B |
| 0x46 | 1000110 | 0x8C | 0x8D |
Vérifier qu’il répond
Reliez votre SHT40 / SHT41 / SHT43 / SHT45 à SDA et SCL, puis téléversez ce sketch : il teste chaque adresse que la puce peut utiliser et affiche celle qui répond. Sur l’ESP32, les broches par défaut sont GPIO21 (SDA) et GPIO22 (SCL) ; sur l’Arduino Uno, A4 et 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 : adresse 0x");
if (a < 0x10) Serial.print('0');
Serial.println(a, HEX);
return;
}
}
Serial.println("Aucune reponse : verifiez le cablage");
}
void loop() {}
Dans ESPHome, le bus est scanné au démarrage (scan: true est la valeur par défaut) : le log liste toutes les adresses qui répondent.
i2c:
sda: GPIO21
scl: GPIO22
scan: true
Résistances de pull-up
SDA et SCL ont besoin de résistances de pull-up vers l’alimentation. Beaucoup de modules en ont déjà, souvent de 4,7 kΩ ou 10 kΩ, et avec plusieurs modules sur le bus elles se combinent en parallèle. Le vérificateur d’adresses I²C calcule la plage admise selon la tension et la vitesse de votre bus.
Questions fréquentes
Quelle est l’adresse I2C d’un SHT40 / SHT41 / SHT43 / SHT45 ?
0x44, 0x45 ou 0x46. L’adresse dépend de la référence exacte, pas d’une broche : SHT4x-A… est en 0x44, -B… en 0x45, -C… en 0x46. Les versions 0x45 n’existent que pour SHT40 et SHT43, la version 0x46 que pour SHT40.
Puis-je utiliser plusieurs SHT40 / SHT41 / SHT43 / SHT45 sur le même bus ?
Seulement s’il s’agit de versions différentes : SHT4x-A… répond en 0x44, -B… en 0x45, -C… en 0x46, et tous les modèles n’existent pas dans toutes les versions. Deux exemplaires de la même version entrent toujours en conflit : utilisez un multiplexeur TCA9548A ou un second bus I²C.
Mon SHT40 / SHT41 / SHT43 / SHT45 n’apparaît pas dans le scan I2C : pourquoi ?
Vérifiez, dans cet ordre : SDA et SCL non inversés ; la masse commune entre les cartes ; les résistances de pull-up sur SDA et SCL ; le module alimenté à la tension prévue ; enfin, dans votre code, l’adresse sur 7 bits (0x44) et non celle sur 8 bits (0x88).
Périphériques similaires
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
Adresses vérifiées sur la datasheet SHT40 / SHT41 / SHT43 / SHT45.