Adresses I2C des capteurs et actionneurs les plus courants

Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

Pour faciliter le développement de vos objets connectés à base de micro-contrôleurs Arduino, ESP32, ESP8266, STM32 ou Raspberry Pi, voici une liste des modules (breakout) I2C les plus courants. Capteurs d’ambiance (température, humidité relative, pression atmosphérique, intensité lumineuse…), détection de polluants (CO, CO2, eTVOC…), caméra thermique AMG8833, écrans LDC2004 ou SSD1306 et cartes d’extension E/S numériques ou analogiques.

Chaque fabricant a prévu une méthode pour activer l’adresse I2C alternative. Généralement, il faudra faire une petite soudure sur le module (breakout) ou appliquer une tension (3V3 ou 5V par exemple). Par contre, il est très rarement possible de modifier l’adresse par programmation.

Voici deux exemples que l’on rencontre assez souvent

BME280 BH1750FVI
Sélecteur i2c du BME280 en soudant un jumper Attribuer l'adresse 0x5C au BH1750FVI en applicant une tension supérieure à 0,7V sur la broche ADDR
Pour attribuer l’adresse i2c 0x77, il faut souder un jumper entre les deux broches de droite et couper la piste entre les deux broches de gauche Pour attribuer l’adresse 0x5C, il faut appliquer une tension supérieur à 0,7V sur la broche ADDR

Pour en savoir plus sur le bus I2C, vous pouvez continuer par la lecture de cet article

A LIRE AUSSI :
Débuter avec le bus I2C sur Arduino ESP8266 ESP32. Librairie Wire.h

Scanner I2C Arduino, ESP32 ou ESP8266

Si vous ne trouvez pas l’adresse I2C de votre composant ou que vous rencontrez des problèmes de communication, voici le code source d’un scanner I2C compatible Arduino, ESP32 et ESP8266.

Remarque, la librairie Wire.h pour ESP8266 et ESP32 permet de spécifier les broches SDA (et SCL du bus I2C. Passer la constante USER_PIN à true pour cela. Les broches I2C par défaut des principales cartes de développement sont répertoriées dans ce tableau.
#include <Arduino.h>
#include <Wire.h>

#define DISPLAY_ERROR false 
#define LOOP_DELAY    10000
#define USER_PIN      false

// Personnaliser les broches du bus I2C pour ESP8266 ou ESP32 
// Customize I2C bus pins for ESP8266 or ESP32
const int PIN_SCL = D1;
const int PIN_SDA = D2;

String I2Ctest() {
  byte error, address;
  int nDevices;
  String s;
 
  s="Scanning...\n";
 
  nDevices = 0;
  for(address = 1; address < 127; address++ ) {  
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
 
    if (error == 0) {
      s+="I2C device found at 0x";
      if (address<16)
        s+="0";
        s+=String(address,HEX);
        s+="\n";
 
      nDevices++;
    } else if ( error > 0 ) {
      if ( DISPLAY_ERROR ) {
        s+="Unknow error at 0x";
        if (address<16)
          s+="0";
          s+=String(address,HEX);
          s+="\n";
      }  
    }    
  }
  if (nDevices == 0)
    s+="No I2C devices found\n";
  else
    s+="done\n";
  return s; 
}

void setup() {
  Serial.begin(115200);
  Serial.println("I2C scanner");
  #if USER_PIN
    Wire.begin(PIN_SDA, PIN_SCL);
  #else
    Wire.begin();
  #endif
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println(I2Ctest());
  delay(LOOP_DELAY);
}

Broches par défaut du bus I2C des cartes de développement les plus courantes

Voici la liste des broches par défaut des cartes de développement les plus courantes.

Il est possible de spécifier manuellement les broches I2C uniquement pour l’ESP32 et ESP8266.

SDA SCL SDA1 SCL1
Bus principal Bus secondaire
Arduino Uno* A4 A5
Arduino Ethernet A4 A5
Arduino Mega2560 20 21
Arduino Leonardo 2 3
Arduino Due 20 21 SDA1 SCL1
ESP8266 D1 D2
ESP32 DevkitC v4 21 22 Utilisateur Utilisateur
ESP32 (anciennes générations) IO21 IO22 Utilisateur Utilisateur
STM32 PB7 ou PB9 PB6 ou PB8 PB11 PB10
Raspberry Pi (toute génération) 3 5    

(*) Ne pas utiliser les broches repérées SDA et SCL sur l’Arduino Uno.

Avant de pouvoir utiliser des composants I2C à l’aide du GPIO du Raspberry Pi, il faut d’abord activer le bus. Suivez les instructions détaillées dans ce tutoriel

A LIRE AUSSI :
Activer le bus i2c du Raspberry Pi ou du Pi Zero W (toutes générations)

Capteurs environnementaux I2C

Capteurs permettant de mesurer la température, humidité, pression atmosphérique, la luminosité.

Capteur Mesure Adresse I2C Adresse alternative Acheter
BH1750

bh1750 v1.0.0 shield lolin d1 mini

Intensité lumineuse 0 ~ 65535 lux

Convertisseur 16 bits

Documentation technique

0x23 0x5C

Si tension sur ADDR >  0,7 VCC

0,99€
2,06
AliExpress
Projets et articles sur le BH1750FVI

BMP180

bmp180 gy 68 gy68 33v 5v bmp 180 module de capteur de pression de 1

Pression atmosphérique de 300 ~ 1100hPa

Documentation technique

0x77
0,45€
0,53
AliExpress
BMP280

bmp280

Température de -40 ~ + 85°C

Pression atmosphérique de 300 ~ 1100 hPa

Documentation technique

0x76 0x77
0,45€
0,53
AliExpress
BME280

bme280

Température de -40 ~ + 85°C

Humidité de 0 ~ 100%

Pression atmosphérique de 300 ~ 1100 hPa

Documentation technique

0x76 0x77
2,09€
2,20
AliExpress
2,16€
2,70
AliExpress
BME680

bme680 i2C sensor iaq arduino

Température de -40 ~ +85°C

Humidité de 0 ~ 100%

Pression atmosphérique de 300 ~ 1100 hPa

Documentation technique

0x76 0x77
6,72€
7,64
AliExpress
8,90€
9,68
AliExpress
Projets et articles réalisés à l’aide d’un capteur BMP180, BME280 ou BME680

DHT12

dht12 i2c sensor breakout

Température de -20°C ~ +60°C (±0,5°C)

Humidité relative de 20 à 95% (±5°C)

0xB8
1,20€
1,26
AliExpress
MLX90614

mlx90614 non contact temperature sensor i2c

Température sans contact de -40 ~ +125°C 0x5A 0x01

à

0x7F

5,74€
6,68
AliExpress
MS5611

MS5611 i2c

Température de -40°C ~ +85°C

Pression atmosphérique de 10 ~ 1200 mbar

0x76
SHT30

SHT30 mesure de température et humidité I2C pour ESP8266 ESP32 M5Stack Lolin et breakout Raspberry Pi 0x44

Température de -40°C ~ +125°C

Documentation technique

0x44 0x45 Breakout

1,75€
1,94
AliExpress
7,99€
1 nouveau de 7,99€
Relevé le 20 août 2020 18 h 23 min
Amazon.fr
Livraison gratuite

Shield LoLin, M5Stack

Projets et articles

SI7021

SI7021 breakout i2c

Température de -10 ~ 85°C

Humidité de 0 ~ 80%

Documentation technique

0x40
1,84€
2,07
AliExpress
TSL2561

TSL2561 i2c lux light sensor adafruit

Intensité lumineuse de 188 μLux ~ 88000 lux

Documentation technique

0x29 0x39 0x49
3,60€
4,50
AliExpress
TCS34725

tcs34725 color rgb sensor i2c arduino

Détecteur de couleur avec sortie RGB

Documentation technique

0x29

Mesure de courant

Détection de polluants. C0, CO2

Capteur Mesure Adresse I2C Adresse alternative Acheter
CCS811

ccs811 eco2 etvoc i2c

eCO2, équivalent CO2 de 400ppm ~ 29206ppm

eTVOC,  équivalent Total Volatile Organic (ou eCOV) jusqu’à 32768ppb

Vitesse bus : 100kHz, 400kHz

Documentation technique

0x5A 0x5B
3,45€
3,83
AliExpress
5,37€
AliExpress
6,49€
8,65
AliExpress
Projets et articles

Caméra thermique I2C

Capteur Mesure Adresse I2C Adresse alternative Acheter
AMG8833/AMG8831

amg8833 amg8831 i2c thermal camera 64 pixels arduino esp8266 esp32

Image thermique 8×8 pixels (64 pixels) de -20°C à +80°C 0x69 0x68
23,64€
26,27
AliExpress
33,17€
36,86
AliExpress
36,05€
43,96
AliExpress
Projets et articles

Accéléromètre, gyroscope, magnétomètre

Pour télécommander un bras robotique, un drone, un jeu…

Tableau comparatif des breakouts les plus courants, MPU6050, MPU9250 et ADXL345.

MPU6050 ADXL345 MPU9250
mpu6050 6dof accelerometer I2C spi arduino ADXL345 i2c 6dof accelerometer I2C arduino mpu9250 9dof i2c spi arduino
Gyroscope (axes) 3 3 3
Game de mesure du gyroscope ±250, ±500, ±1000, ±2000°/sec
Accéléromètre (axes) 3 3 3
Gamme de mesure de l’accéléromètre ±2g /±4g /±8g /±16g ±2g /±4g /±8g /±16g ±2g /±4g /±8g /±16g
Magnétomètre (axes) 3
Capacité de mesure du magnétomètre ±4800µT
Degrés de libertés (DOF) total 6 6 9
Adresses I2C 0x68 0x69 0x1C 0x68 0x0C
Vitesse max. du bus I2C 400 kHz 400 kHz 400 kHz
SPI
Tension d’alimentation 2.375V ~ 3.46V 2.0V ~ 3.6V 2.4V ~ 3.6V
Consommation 23 µA

0.1 µA (standby)

3.5mA
Fonctionnement -40°C ~ 85°C -40°C ~ 85°C -40°C ~ 85°C
Documentation technique Consulter Consulter Consulter
Acheter
0,92€
1,00
AliExpress
1,30€
AliExpress
1,29€
1,44
AliExpress
3,46€
AliExpress
2,41€
2,97
AliExpress
2,46€
2,59
AliExpress

Ecrans OLED et LCD sur bus I2C

Cartes d’extension E/S numériques supplémentaires, horloge RTC

Equipement Application Adresse I2C Adresse alternative Acheter
ADS1115

4 io i2c ads1115 arduino esp32 esp8266 raspberry pi

4 entrées A/N 16 bits supplémentaires

Documentation technique

0x48 0x4B
1,21€
1,27
AliExpress
DS1307

DS1307 AT24C32 i2c rtc time 0x68

Horloge temps réel avec éventuellement une sauvegarde par batterie 0x68  
MCP23017

mcp23017

16 entrées/sorties numériques supplémentaires, boîtier DIP28

Vitesse bus : 100kHz, 400kHz, 1.7MHz

MCP23S17 pour le bus SPI

Documentation technique

0x20 0x27
0,66€
0,69
AliExpress
1,03€
AliExpress
PCF8574

mcp23017

8 entrées/sorties numériques supplémentaires

Vitesse bus : 100kHz, 400kHz, 1MHz

Documentation technique

0x38 0x3F
0,49€
0,58
AliExpress
0,88€
0,94
AliExpress
PCA9685

pca9685

16 canaux PWM 12 bits

Documentation technique

0x40 0x7F
2,03€
2,39
AliExpress
5,44€
6,39
AliExpress
Projets et articles

Classement des équipements par adresse I2C

0x10

VEML6075 Capteur UV. 0x10 uniquement

VEML7700 Capteur de lumière ambiante. 0x10 uniquement

0x11

Si4713 Transmetteur FM avec RDS. 0x11 ou 0x63

0x13

VCNL40x0 Capteur de proximité. 0x13 uniquement

0x18

MCP9808 Capteur de température. De 0x18 à 0x1F

LIS3DH Accéléromètre 3 axes. 0x18 ou 0x19

0x19

LSM303 Accéléromètre. 0x1E pour le magnétomètre

0x1C

LSM303 Magnétomètre. 0x19 pour l’accéléromètre

MMA845x Accéléromètre 3 axes. 0x1C ou 0x1D. Obsolète

FXOS8700 Accéléromètre + magnétomètre. 0x1C, 0x1D, 0x1E ou 0x1F. Obsolète

MMA7455L Accéléromètre. 0x1C ou 0x1D

0x1D

LSM9DS0 IMU 9 axes (0x1D ou 0x1E pour Accel / Mag, 0x6A ou 0x6B pour Gyro)

ADXL345 Accéléromètre 3 axes. 0x1D ou 0x53

0x1E

HMC5883 Magnétomètre. 0x1E uniquement

LIS2MDL Magnétomètre. 0x1E uniquement.

0x20

FXAS21002 Gyroscope. 0x20 ou 0x21

MCP23008 Module d’extension GPIO. 0x20 ou 0x27

MCP23017 Module d’extension GPIO. 16 entrées/sorties numériques supplémentaires. 0x20 ou 0x27

0x23

BH1750 Intensité lumineuse 0 ~ 65535 lux, convertisseur 16 bits. 0x23 ou 0x5C

0x26

MSA301 Accéléromètre 3 axes. 0x26 uniquement. Obsolète

0x27

LCD2004 Pilote pour écran d’affichage LCD 4 lignes. 0x27 uniquement

0x28

BNO055 IMU. 0x28 ou 0x29

CAP1188 détecteur tactile capacitif 8 canaux. De 0x28 à 0x2D

DS3502 Potentiomètre numérique 10K. De 0x28 à 0x2B. Obsolète

PCT2075 Capteur de température. Plusieurs plages disponibles : 0x28-0x2E, 0x48-0x4F, 0x70-0x77

0x29

TCS34725 Capteur de couleur. 0x29 uniquement

TSL2561 Capteur de lumière. 0x29, 0x39 ou 0x49

TSL2591 Capteur de lumière. 0x29 ou 0x28

VL53L0x Mesure de distance par laser ToF. 0x29, configurable depuis le code

VL6180X Capteur ToF. 0x29 uniquement

0x33

MLX90640 Caméra thermique infrarouge 8×8 pixels. 0x33 uniquement

0x38

VEML6070 Index UV. 0x38 ou 0x39

FT6x06 Détecteur tactile capacitif. 0x38 uniquement. Obsolète

PCF8574 8 entrées/sorties numériques supplémentaires. 0x38 ou 0x3F

0x39

APDS-9960 Capteur IR / Couleur / Proximité. 0x39 uniquement

0x3C

SSD1305 OLED monochrome. 0x3C ou 0x3D à l’aide d’un jumper à souder sur certaines cartes

SSD1306 OLED monochrome. 0x3C ou 0x3D à l’aide d’un jumper à souder sur certaines cartes

0x40

Si7021 Capteur d’humidité / température. 0x40 uniquement

HTU21D-F Capteur d’humidité / température. 0x40 uniquement. Obsolète

HDC1008 Capteur d’humidité / température. 0x40, 0x41, 0x42 ou 0x43. Obsolète

TMP007 Capteur de température IR. De 0x40 à  0x47. Obsolète

TMP006 Capteur de température IR. De 0x40 à  0x47. Obsolète

PCA9685 carte d’extension 16 canaux PWM. De 0x40 à 0x7F

INA219 Capteur de courant / tension CC. De 0x40 à 0x7F

INA260 Capteur de courant / puissance CC de précision. De 0x40 à 0x7F. Obsolète

0x41

STMPE610 / STMPE811 Détecteur tactile résistif . 0x41 ou 0x44. Obsolète

0x44

SHT30 Capteur d’humidité / température. 0x44 ou 0x45

ISL29125 Capteur de couleur RBG. 0x44 uniquement

0x48

ADS1115 carte d’extension 4 canaux ADC 16 bits. 0x48 0x49 0x4A ou 0x4B

PN532 Lecteur NFC / RFID. 0x48 uniquement

0x50

MB85RC module mémoire FRAM. De 0x50 à 0x57

0x52

Manette Nintendo Nunchuck. 0x52

0x53

ADXL345 Accéléromètre 3 axes. 0x1D ou 0x53

0x57

MAX3010 Capteur de pouls et d’oxymétrie

0x58

TPA2016 Amplificateur audio I2C

SGP30 Mesure de la qualité de l’air (IAQ)

0x5A

MPR121 Capteur tactile capacitif 12 points. 0x5A, 0x5B, 0x5C ou 0x5D

CCS811 Capteur COV. 0x5A ou 0x5B

MLX9061x Capteur de température sans contact par IR de -40°C à +125°C. 0x5A uniquement

DRV2605 Pilote pour moteur Haptic. 0x5A uniquement. Obsolète

0x5C

AM2315 Capteur d’humidité et de température. 0x5C uniquement

AM2320 Capteur d’humidité et de température. 0x5C uniquement

LPS25 Baromètre numérique. 0x5C ou 0x5D.

LPS33HW Baromètre numérique. 0x5C ou 0x5D.

LPS35HW Baromètre numérique. 0x5C ou 0x5D.

0x5E

TLV493D Magnétomètre 3 axes. 0x5E

0x60

MCP4728 Convertisseur Analogique numérique 12 bits, 4 entrées. 0x60 uniquement

MPL115A2 Baromètre numérique. 0x60

MPL3115A2 Baromètre numérique. 0x60 uniquement

Si5351A Générateur d’horloge. 0x60 ou 0x61

Si1145 Capteur de lumière / infrarouge. 0x60 uniquement

MCP4725A0 DAC 12 bits. 0x60 ou 0x61

TEA5767 Récepteur radio stéréo.0x60 uniquement

VCNL4040 Capteur de proximité et de lumière ambiante. 0x60 uniquement

0x62

MCP4725A1 DAC 12 bits. 0x62 ou 0x63

0x68

AMG8833 Caméra thermique IR Breakout (0x68 ou 0x69)

DS1307 Horloge RTC

DS3231 Horloge RTC

ICM-20649 Accéléromètre + Gyroscope. 0x68 ou 0x69

ITG3200 Gyroscope. 0x68 ou 0x69

MPU-9250 9-DoF IMU. 0x68 ou 0x69

MPU-60X0 Accéléromètre + Gyroscope. 0x68 ou 0x69

PCF8523 Horloge RTC. 0x68 uniquement

0x6A

ICM330DHC IMU 6 axes. 0x6A ou 0x6B

L3GD20H Gyroscope. 0x6A ou 0x6B

LSM6DS33 IMU 6 axes. 0x6A ou 0x6B

LSM6DSOX IMU 6 axes. 0x6A ou 0x6B

0x70

HT16K33 Pilote de matrice LED (0x70 – 0x77)

TCA9548 Carte d’extension 8 sorties numériques supplémentaires. De 0x70 à 0x77

0x76

BMP280 Température, pression atmosphérique. 0x76 ou 0x77

BME280 Température, humidité, pression atmosphérique. 0x76 ou 0x77

BME680 Température, humidité, pression atmosphérique, qualité de l’air (IAQ). 0x76 ou 0x77

MS5607 / MS5611 Baromètre numérique. 0x76 ou 0x77

0x77

BMA180 Accéléromètre. 0x77 uniquement

BMP085 Température, baromètre. 0x77 uniquement. Obsolète

0xB8

DHT12

Mises à jour

6/10/2020 Classement des composant par adresse I2C
6/10/2020 Ajout du scanner I2C compatible Arduino, ESP32 et ESP8266. Adresse I2C de l’horloge temps réel DS1307

24/08/2020 Première publication de l’article

Avez-vous aimé cet article ?
[Total: 2 Moyenne: 5]
Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

Vous avez aimé ce projet ? Ne manquez plus aucun projet en vous abonnant à notre lettre d’information hebdomadaire!

quel modèle esp8266 choisir
Quel modèle d'ESP8266EX choisir en 2020 ?
guide choix esp32 development board
Quel ESP32 choisir en 2020 ?

Vous rencontrez un problème avec ce sujet ?

Peut-être que quelqu’un a déjà trouvé la solution, visitez le forum avant de poser votre question

Nous serions ravis de connaître votre avis

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Domotique et objets connectés à faire soi-même
Vous avez aimé ce tutoriel

Ne manquez plus les prochains projets

Recevez chaque semaine le récapitulatif des tutoriels et projets.

Vous pouvez vous désabonner à tout moment.