Closed novvere closed 4 years ago
El único documento que he encontrado que explica como hacerlo es para un sensor de líquidos, he preguntado al fabricante (Sensirion) como hacerlo.
Sensirion responde que en estos sensores no se puede cambiar la dirección I2C, hay que usar un multiplexor.
estamos usando una librería Software I2C para poder avanzar, tenemos que revisar los pines en los que se puede utilizar el el arduino uno. Si no hay dispositivo slave parece que se bloquea, hay que revisar si se puede poner un timeout.
Los pines configurados para software I2C se corresponden con el número de pin dentro del puerto, es decir
#define SDA_PORT PORTC
#define SDA_PIN 2
#define SCL_PORT PORTC
#define SCL_PIN 3
utiliza los pines A10 para SDA y A11 para SCL
Puedes definir, también antes de hacer el include..
#define I2C_TIMEOUT 10000
para que salte por timeout a los 10 segundos. El valor del timeout puede ir de 0 (no timeout) a 10000 (10 segundos) En el arduino nano que Yo usé, conciden port c pin1 con A1 y portc pin2 con A2
No se puede cambiar la dirección del sensor y las pruebas realizadas con varias librerías I2C software dan muchos problemas. Optamos por usar un multiplexor hardware
Mientras se esperan nuevos componentes os recomiendo usar un esp32 como multiplexer. En ESP32 tengo entendido existe I2C por hardware en los pines GPIO 21&22 pero a la libreria le dices en que pines la quieres instanciar y funciona independietemente de si son estos dos u otros, en mi prototipo usaba 3 buses I2C sin problema.
Crear un firmware que cambie la dirección I2C de un sensor de flujo SFM3xx.