Conectar tres Discpositivos I2C que poseen la misma dirección al Arduino MEGA

Saludos cordiales.

Tengo tres sensores VL6180X (Medidor de Luz y Distancia). y deseo conectarlos via I2C a una placa MEGA2560.

Sé que el Arduino MEGA tiene un puerto I2C (pines 20, y 21), pero los sensores VL6180X poseen la misma dirección (29H) y no pueden modificarse.

Ya tengo conectado un sensor VL6180X al puerto I2C del MEGA2560 y está fucionando perfectamente.

Los dos sensores VL6180X restantes tuve que conectarlos de manera individual cada un a un ARDUINO NANO por separado, usando los pines A4 y A5. Y luego enviar via serial (TX) de cada Arduino NANO al ARDUINO MEGA2560.

SENSOR1 VL6180X -----------> al Arduino MEGA2560 (pines SDA y SCL)
SENSOR2 VL6180X ----> Arduino UNO ---> al Arduino MEGA2560 (pin RX1)
SENSOR3 VL6180X ----> Arduino UNO ---> al Arduino MEGA2560 (Pin RX2)

Así fué como pude solucionar el problema. :stuck_out_tongue:

A ver que se les ocurre, que me puedan ayudar. :smiley: :wink:

Medidor Campo Magnetico y Distancia - Schematic Diagram - ORCAD.pdf (96.7 KB)

Busca en google: Multiplexor I2C
Lo vende Adafruit.

Hi,

Si busca la libreria tiene un sketch llamado vl53l0x_dual.ino que te permite cambiar los address de los modulos.

PUedes usar un CD4052 o sea un multiplexor de 2 canales a 4 bidireccional.

Conectas los 2 pines comunes del CD4052 a los pines I2C del Arduino. Y los pines CHX0..3 y los CHY0..3 a esos mismos pines o sea a SDA y SCL de cada sensor

Con los pines de direccionamiento AB controlas cual usas. Como son dos es un direccionamiento binario.

B A
00 para el sensor 1
01 para el sensor 2
10 para el sensor 3

Solucionado y con poco dinero.
Tu codigo sera muy simple, el mismo de la libreria con el que lees 1 sensor si estuviera solo
Para leer otro sensor previamente cambias AB al que deseas y listo.