Aziz Bench

Indirizzo I²C SHT40 / SHT41 / SHT43 / SHT45

SHT40 / SHT41 / SHT43 / SHT45 (sensore di temperatura e umidità) può rispondere su 0x44, 0x45 o 0x46: qui sotto trovi come scegliere.

Indirizzo I²C (7 bit)
0x44 / 0x45 / 0x46
3 indirizzi possibili
Scrittura / lettura (8 bit)
0x88 / 0x89
Binario
1000100
Indirizzi in comune con
6 dispositivi
Dove si trova sul bus i suoi indirizzi riservati
0123456789ABCDEF
00000102030405060708090A0B0C0D0E0F
10101112131415161718191A1B1C1D1E1F
20202122232425262728292A2B2C2D2E2F
30303132333435363738393A3B3C3D3E3F
40404142434445464748494A4B4C4D4E4F
50505152535455565758595A5B5C5D5E5F
60606162636465666768696A6B6C6D6E6F
70707172737475767778797A7B7C7D7E7F

Come impostare l’indirizzo

L’indirizzo dipende dal codice esatto del componente, non da un pin: SHT4x-A… è 0x44, -B… 0x45, -C… 0x46. Le versioni a 0x45 esistono solo per SHT40 e SHT43, quella a 0x46 solo per SHT40.

Dispositivi che usano gli stessi indirizzi

Due dispositivi sullo stesso bus non possono rispondere allo stesso indirizzo. Questi moduli del nostro elenco usano almeno uno di questi indirizzi:

DispositivoChe cos’èIndirizzo in comune
INA219monitor di corrente, tensione e potenza0x44, 0x45, 0x46
INA226monitor di corrente, tensione e potenza0x44, 0x45, 0x46
INA260monitor di corrente, tensione e potenza con shunt integrato0x44, 0x45, 0x46
OPT3001sensore di luce ambiente0x44, 0x45, 0x46
PCA9685driver PWM / servo a 16 canali, 12 bit0x44, 0x45, 0x46
SHT30 / SHT31 / SHT35sensore di temperatura e umidità0x44, 0x45

Se due finiscono sullo stesso indirizzo, sposta uno dei due con il pin di indirizzo, mettine uno dietro un multiplexer TCA9548A (0x70–0x77) oppure usa un secondo bus I²C: ESP32, ESP32-S3 e RP2040 hanno due controller I²C (l’ESP32-C3 ne ha uno).

Controlla tutto il bus →Aggiungi SHT40 / SHT41 / SHT43 / SHT45 e gli altri moduli: lo strumento trova i conflitti, propone indirizzi liberi e dimensiona le pull-up.

Indirizzo a 7 bit e a 8 bit

Gli indirizzi I²C sono lunghi 7 bit. Alcuni datasheet e librerie li scrivono come numeri a 8 bit, aggiungendo a destra il bit di lettura/scrittura: per questo lo stesso chip può comparire come 0x44 o come 0x88. La libreria Wire di Arduino ed ESPHome usano la forma a 7 bit.

7 bitBinarioScrittura 8 bitLettura 8 bit
0x4410001000x880x89
0x4510001010x8A0x8B
0x4610001100x8C0x8D

Verifica che risponda

Carica questo sketch con SHT40 / SHT41 / SHT43 / SHT45 collegato a SDA e SCL: prova tutti gli indirizzi che il chip può usare e stampa quello che risponde. Sull’ESP32 i pin predefiniti sono GPIO21 (SDA) e GPIO22 (SCL); su 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 risponde all'indirizzo 0x");
      if (a < 0x10) Serial.print('0');
      Serial.println(a, HEX);
      return;
    }
  }
  Serial.println("Nessuna risposta: controlla i collegamenti");
}

void loop() {}

In ESPHome il bus viene scansionato all’avvio (scan: true è il valore predefinito): il log elenca tutti gli indirizzi che rispondono.

i2c:
  sda: GPIO21
  scl: GPIO22
  scan: true

Resistenze di pull-up

SDA e SCL hanno bisogno di resistenze di pull-up verso l’alimentazione. Molti moduli le hanno già, spesso da 4,7 kΩ o 10 kΩ, e con più moduli sul bus si sommano in parallelo. Lo strumento per gli indirizzi I²C calcola l’intervallo ammesso per la tensione e la velocità del tuo bus.

Domande frequenti

Qual è l’indirizzo I2C di SHT40 / SHT41 / SHT43 / SHT45?

0x44, 0x45 o 0x46. L’indirizzo dipende dal codice esatto del componente, non da un pin: SHT4x-A… è 0x44, -B… 0x45, -C… 0x46. Le versioni a 0x45 esistono solo per SHT40 e SHT43, quella a 0x46 solo per SHT40.

Posso usare più SHT40 / SHT41 / SHT43 / SHT45 sullo stesso bus?

Solo se sono versioni diverse: SHT4x-A… risponde su 0x44, -B… su 0x45, -C… su 0x46, e non tutti i modelli esistono in tutte le versioni. Due della stessa versione vanno sempre in conflitto: usa un multiplexer TCA9548A o un secondo bus I²C.

Perché SHT40 / SHT41 / SHT43 / SHT45 non compare nella scansione I2C?

Controlla, in quest’ordine: SDA e SCL non invertiti; massa in comune tra le schede; resistenze di pull-up su SDA e SCL; il modulo alimentato alla tensione per cui è fatto; e che il codice usi l’indirizzo a 7 bit (0x44), non quello a 8 bit (0x88).

Dispositivi simili

Indirizzi verificati sul datasheet di SHT40 / SHT41 / SHT43 / SHT45.