Protocolo I2C y Arduino

El protocolo I2C, define las reglas de como podemos conectar diferentes dispositivos entre si, desarrollado por Philips en la década de los 80/90, convirtiéndose en la actualidad como un estándar. I2C crea un bus de comunicación entre los diferentes dispositivos en serie, esto nos permite conectar hasta 1000 dispositivos uno detrás de otro. La comunicación siempre se realizara entre dos dispositivos, uno actuara de maestro, este es el que trasmitirá la señal para sincronizar la transferencia de datos, y el otro de esclavo. El que hace de maestro, no tiene por que hacer esta función siempre, puede ir pasándose de uno a otro, aunque no todos los periféricos tienen esta funcionalidad, están diseñados para ser siempre esclavos.

Para identificar que periférico a enviado la información, cada uno de ellos tiene una dirección única, igual que una red de ordenadores donde cada ordenador tiene sus propia dirección.

El bus I2C consta de 3 lineas, SDA ( datos), SCL (reloj) y GND (masa)

  • SDA: Es la linea por donde circulan los datos, formateada de la siguiente forma:
    | start | A7 A6 A5 A4 A3 A2 A1 R/W | ACK | … DATA … | ACK | stop | idle |
  • SCL: Por esta linea va la señal para sincronizar las transferencias de datos.
  • GND o masa: Se utiliza como referencia de voltaje para el calculo de las otras lineas.

I2C y Arduino

Arduino cuenta la posibilidad de poder manejar comunicaciones I2C. Según el modelo de Arduino que tengamos, los pines de SDA y SCL, varían, En el caso del Arduino UNO los pines son: para SDA es el pin A4, y el SCL es el pin A5, para el LEONARD estos vienen marcados como tales, y en caso de MEGA el pin para el SDA es el pin digital 20 y para SCL es el pin digital 21.

[singlepic id=31 w=480 h=480 float=center]

Para el manejo de comunicaciones I2C en Arduino debemos importar la librería “Wire.h” ha nuestro programa. Esta librería esta incluida con las básicas que trae el programa de Arduino.

 Ejemplo con dos Arduinos

Ejemplo de como podemos unir dos Arduinos a través de una comunicación I2C. Uno de los Arduinos sera el maestro y el otro el esclavo.

Esquema de conexionado

[singlepic id=32 w=480 h=480 float=center]

Código fuente para el Arduino maestro:

Código para el Arduino que hace las funciones de esclavo

2 thoughts on “Protocolo I2C y Arduino”

  1. Hola buenas!! Tengo un problemilla con varios sensores que utilizan este protocolo, los cuales tienen la misma direccion, me prguntaba si sería posible cambiar esta direccion.
    Gracias

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *