Come impostare l’indirizzo
Parte da 0x29 a ogni accensione; si può impostare un nuovo indirizzo via I²C. Per usarne due, tienine uno in reset con XSHUT mentre cambi l’indirizzo dell’altro.
Dispositivi che usano gli stessi indirizzi
Due dispositivi sullo stesso bus non possono rispondere allo stesso indirizzo. Anche questi moduli del nostro elenco usano 0x29:
| Dispositivo | Che cos’è | Indirizzo in comune |
|---|---|---|
| BNO055 | sensore di orientamento assoluto a 9 assi con fusione dei sensori integrata | 0x29 |
| TCS34725 | sensore di colore RGB | 0x29 |
| TSL2561 | sensore di luce ambiente (visibile e infrarosso) | 0x29 |
| VL53L0X | sensore di distanza a tempo di volo (ToF) | 0x29 |
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 VL53L1X 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 0x29 o come 0x52. La libreria Wire di Arduino ed ESPHome usano la forma a 7 bit.
| 7 bit | Binario | Scrittura 8 bit | Lettura 8 bit |
|---|---|---|---|
| 0x29 | 0101001 | 0x52 | 0x53 |
Verifica che risponda
Carica questo sketch con VL53L1X 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[] = {0x29};
void setup() {
Serial.begin(115200);
Wire.begin();
for (byte a : ADDRS) {
Wire.beginTransmission(a);
if (Wire.endTransmission() == 0) {
Serial.print("VL53L1X 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 VL53L1X?
0x29 di fabbrica. Parte da 0x29 a ogni accensione; si può impostare un nuovo indirizzo via I²C. Per usarne due, tienine uno in reset con XSHUT mentre cambi l’indirizzo dell’altro.
Posso usare più VL53L1X sullo stesso bus?
Sì, dopo aver dato a ciascuno un indirizzo diverso.
Perché VL53L1X 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 (0x29), non quello a 8 bit (0x52).
Dispositivi simili
Indirizzi verificati sul datasheet di VL53L1X.