Aziz Bench

Adresse I²C TMP102

Le composant TMP102 (capteur de température numérique) peut répondre sur 0x48, 0x49, 0x4A ou 0x4B : voici comment choisir.

Adresse I²C (7 bits)
0x48 / 0x49 / 0x4A / 0x4B
4 adresses possibles
Écriture / lecture (8 bits)
0x90 / 0x91
Binaire
1001000
Adresse partagée avec
11 périphériques
Sa place sur le bus ses adresses réservées
0123456789ABCDEF
00000102030405060708090A0B0C0D0E0F
10101112131415161718191A1B1C1D1E1F
20202122232425262728292A2B2C2D2E2F
30303132333435363738393A3B3C3D3E3F
40404142434445464748494A4B4C4D4E4F
50505152535455565758595A5B5C5D5E5F
60606162636465666768696A6B6C6D6E6F
70707172737475767778797A7B7C7D7E7F

Comment régler l’adresse

Câblez la broche d’adresse ainsi :

ADD0: GND → 0x48 · V+ → 0x49 · SDA → 0x4A · SCL → 0x4B

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ériqueDescriptionAdresse partagée
ADS1015ADC 12 bits 4 canaux0x48, 0x49, 0x4A, 0x4B
ADS1115ADC 16 bits 4 canaux0x48, 0x49, 0x4A, 0x4B
ADS7830ADC 8 bits 8 canaux0x48, 0x49, 0x4A, 0x4B
INA219moniteur de courant, de tension et de puissance0x48, 0x49, 0x4A, 0x4B
INA226moniteur de courant, de tension et de puissance0x48, 0x49, 0x4A, 0x4B
INA260moniteur de courant, de tension et de puissance avec shunt intégré0x48, 0x49, 0x4A, 0x4B
LM75Bcapteur de température numérique / thermostat0x48, 0x49, 0x4A, 0x4B
PCA9685driver PWM / servo 16 canaux, 12 bits0x48, 0x49, 0x4A, 0x4B
PCF8591ADC 8 bits 4 canaux + 1 DAC0x48, 0x49, 0x4A, 0x4B
TMP117capteur de température numérique haute précision0x48, 0x49, 0x4A, 0x4B
TSL2561capteur de lumière ambiante (visible et infrarouge)0x49

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 TMP102 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 0x48 ou en 0x90. La bibliothèque Wire d’Arduino et ESPHome utilisent la forme sur 7 bits.

7 bitsBinaireÉcriture 8 bitsLecture 8 bits
0x4810010000x900x91
0x4910010010x920x93
0x4A10010100x940x95
0x4B10010110x960x97

Vérifier qu’il répond

Reliez votre TMP102 à 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[] = {0x48, 0x49, 0x4A, 0x4B};

void setup() {
  Serial.begin(115200);
  Wire.begin();
  for (byte a : ADDRS) {
    Wire.beginTransmission(a);
    if (Wire.endTransmission() == 0) {
      Serial.print("TMP102 : 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 TMP102 ?

0x48, 0x49, 0x4A ou 0x4B, selon le câblage : ADD0: GND → 0x48 · V+ → 0x49 · SDA → 0x4A · SCL → 0x4B.

Puis-je utiliser plusieurs TMP102 sur le même bus ?

Oui, jusqu’à 4, chacun réglé sur une adresse différente. Au-delà, utilisez un multiplexeur TCA9548A ou un second bus I²C.

Mon TMP102 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 ; aucune broche d’adresse laissée en l’air ; enfin, dans votre code, l’adresse sur 7 bits (0x48) et non celle sur 8 bits (0x90).

Périphériques similaires

Adresses vérifiées sur la datasheet TMP102.