Comuníquese con 3 sensores con la misma dirección I2C

2

Obtuve tres sensores de chispa de sparkfun: enlace el cual cada uno tiene un arduino pro mini que filtra los datos antes de enviarlos a un Arduino principal.

Me gusta esto:

yhastaestepuntotodofunciona,nisiquieraunproblema.

Peroloquequierohaceracontinuaciónesconectartodoslos3arduinosatravésdeI2Cparacompartirlosdatosfiltradosyenestepuntohayungranproblema,elprimerarduinopuedeaccedera3sensoresatravésdeI2Cysebloqueacuandocomienzoparaaccederaladirecciónúnica.

QueríahacerunbusI2CindependientequeexistasoloentreelSensoryArduinoprominiyluegootroquecompartalosdatosconelArduinoUnoprincipal.

Hastaahoranotengosuerteyloquesemeocurrióesusarunsistemadecascadaenserie

enlace

¿Hay algo que pueda hacer para usar el bus I2C en lugar de Serial para compartir los 3 datos filtrados por cada arduino y enviarlos al Arduino UNO principal?

    
pregunta max246

1 respuesta

2

Siempre hay al menos dos soluciones a un problema.

Podrías usar el USART para comunicarte entre tus arduinos esclavos y el maestro arduino: solo necesitas "Y" el TX de los esclavos en el RX del maestro arduino, y enrutar el TX del maestro a todos los esclavos igual. Entonces es una cuestión de asegurarse de que no hablen todos al mismo tiempo, haciendo que el maestro envíe primero la ID del esclavo con el que quiere hablar, solicite todos los datos (solo el esclavo con la ID correspondiente será programado para responder) ), recupera los datos y pasa al siguiente dispositivo.

También hay conmutadores / multiplexores de bus, que puede hacer usted mismo fuera de puertas lógicas o comprar chips listos para usar, para usar las mismas líneas I2C entre dispositivos con la misma dirección: la selección del dispositivo se realiza con líneas separadas En este caso, en lugar de hacerlo en software como en la solución anterior. Al hacer esto, realmente podría deshacerse de sus arduinos esclavos (suponiendo que el maestro arduino tenga suficiente memoria de código, RAM y tiempo de procesador para hacer todo lo que quiera), que sería más barato y menos tedioso de mantener.

Por lo general, puede cambiar la dirección de los chips desoldando un pin de selección y resolviéndolos al nivel opuesto, pero lo comprobé y sus chips solo tienen 2 direcciones posibles. A veces, los chips tienen diferentes direcciones codificadas en diferentes números de pieza, por lo que podría desoldar un chip y resolver uno nuevo en su lugar con una dirección diferente, sin embargo, no es su caso.

Finalmente hay controladores de línea de software. En lugar de utilizar el único controlador de hardware I2C en el Pro mini, hay bibliotecas que proporcionan funciones para controlar GPIOs arbitrarios de la misma manera que lo haría un controlador de hardware. Por lo general, son más lentos que los controladores dedicados, pero para muchas aplicaciones es suficiente, y esto es ciertamente correcto para usted. enlace

    
respondido por el Mister Mystère

Lea otras preguntas en las etiquetas