viernes, 11 de marzo de 2016

Comunicación I²C entre dos Arduinos


Hoy vamos a conectar dos Arduinos UNO Rev.3 a través de comunicación I²C (Inter-Circuitos Integrados), que es un bus de comunicaciones serie síncrono, con 2 líneas para transmitir la información, es decir, el pin SDA para transmitir los datos y el pin SCL para el reloj que  sincroniza la comunicación.  Este tipo de comunicación utiliza un direccionamiento de 7 bits, con lo que podrían comunicarse  hasta 127 dispositivos simultáneamente a una velocidad de unos 100 Kbits por segundo, aunque es recomendable conectar resistencias PULL-UP de un valor comprendido entre 1 y 10KΩ tanto en el pin SDA como en el pin SCL para no perder potencia en la comunicación. Hoy en día es muy fácil de encontrar dispositivos ya sean sensores, pantallas LCD… etc. que se conecten por medio de comunicación I2C a nuestro Arduino, cada uno con una dirección diferente previamente asignada (0-126).
Esta vez nos vamos a ayudar de la librería   para poder trabajar con comunicación I²C y Arduino. Es necesario realizar dos montajes, el del “Arduino Maestro I²C”, que va a ser el que tiene conectado el pulsador (pin digital 4) y está alimentado a través del puerto USB de nuestro PC, y el del Arduino Esclavo I²C” que es el que tiene conectado el zumbador (pin digital 5) y que está alimentado directamente a través del pin Vin mediante los +5V que entrega el “Arduino Maestro I²C”. Las masas (GND) de ambos Arduinos deben estar conectadas entre sí.

Diagrama de conexión I²C entre los Arduinos

Para realizar una comunicación I²C unidireccional satisfactoria entre los dos Arduinos, simplemente tenemos que conectar los pines SDA y SCL de los dos Arduinos entre sí, para posteriormente cargar los correspondientes programas. Si todo está correcto el zumbador conectado al “Arduino Esclavo I²C” sonará mientras estemos presionando el pulsador conectado al “Arduino Maestro I²C”. Es un ejemplo muy sencillo al cual vosotros podéis ir añadiendo mayor número de componentes y que se ejecuten muchas más funciones (podéis intentar realizar una comunicación bidireccional I²C entre los dos Arduinos). Para mayor información consultar los comentarios del código del programa.

Lista de Materiales:


·         2 Arduinos UNO Rev.3.

·         Cable USB tipo A-B.

·         Zumbador piezoeléctrico (activo).

·         Pulsador.

·         Resistencia de 10KΩ.

·         Protoboard.

·         Cables de conexión.


Código del programa:

·         Maestro I²C:




·         Esclavo I²C:



Video:

4 comentarios:

  1. Buen tutorial, pero me dejaste intrigado con lo de la comunicación bidireccional y no he podido, me podrías dar una idea porfavor

    ResponderEliminar
  2. De todas las paginas que lei esta es la mas clara, Muy buen ejemplo. Estoy con un proyecto donde estos pasos me simplifican muchas cosas, me quedan algunas por averiguar pero muchas gracias por el aporte

    ResponderEliminar