Interfaz I2C Y Arduino

Tabla de contenido:

Interfaz I2C Y Arduino
Interfaz I2C Y Arduino

Video: Interfaz I2C Y Arduino

Video: Interfaz I2C Y Arduino
Video: Подключение нескольких устройств по шине i2c 2024, Noviembre
Anonim

En este artículo veremos qué es una interfaz I2C (ay-tu-si, i-two-tse), cuáles son sus características y cómo trabajar con ella.

Interfaz I2c
Interfaz I2c

Es necesario

  • - Arduino;
  • - potenciómetro digital AD5171;
  • - Diodo emisor de luz;
  • - Resistencia de 220 ohmios;
  • - 2 resistencias para 4,7 kOhm;
  • - cables de conexión.

Instrucciones

Paso 1

El protocolo de comunicación en serie IIC (también llamado I2C - Circuitos interintegrados) utiliza dos líneas de comunicación bidireccionales para transferir datos, llamadas bus SDA (datos en serie) y bus SCL (reloj en serie). También hay dos líneas eléctricas. Los buses SDA y SCL se suben al bus de potencia a través de resistencias.

Hay al menos un maestro en la red que inicia la transmisión de datos y genera señales de sincronización. La red también tiene esclavos que transmiten datos a petición del maestro. Cada dispositivo esclavo tiene una dirección única a la que se dirige el maestro. La dirección del dispositivo se indica en el pasaporte (hoja de datos). Se pueden conectar hasta 127 dispositivos a un bus I2C, incluidos varios maestros. Los dispositivos se pueden conectar al bus durante el funcionamiento, es decir admite conexión en caliente.

Diagrama de conexión I2C
Diagrama de conexión I2C

Paso 2

Arduino usa dos puertos para trabajar en la interfaz I2C. Por ejemplo, en Arduino UNO y Arduino Nano, el puerto analógico A4 corresponde a SDA, el puerto analógico A5 corresponde a SCL.

Para otros modelos de placa:

Arduino Pro y Pro Mini - A4 (SDA), A5 (SCL)

Arduino Mega - 20 (SDA), 21 (SCL)

Arduino Leonardo - 2 (SDA), 3 (SCL)

Arduino Due - 20 (SDA), 21 (SCL), SDA1, SCL1

Asignación de pines Arduino a buses SDA y SCL
Asignación de pines Arduino a buses SDA y SCL

Paso 3

Para facilitar el intercambio de datos con dispositivos a través del bus I2C, se ha escrito una biblioteca estándar "Wire" para Arduino. Tiene las siguientes funciones:

begin (address) - inicialización de la biblioteca y conexión al bus I2C; si no se especifica ninguna dirección, el dispositivo conectado se considera maestro; Se utiliza direccionamiento de 7 bits;

requestFrom () - utilizado por el maestro para solicitar un cierto número de bytes del esclavo;

beginTransmission (dirección): el comienzo de la transferencia de datos al dispositivo esclavo en una dirección específica;

endTransmission () - terminación de la transmisión de datos al esclavo;

write (): escribe datos del esclavo en respuesta a una solicitud;

available (): devuelve el número de bytes de información disponibles para recibir del esclavo;

read () - lee un byte transferido del esclavo al maestro o del maestro al esclavo;

onReceive () - indica la función que se llamará cuando el esclavo reciba una transmisión del maestro;

onRequest (): indica una función a la que se llamará cuando el maestro reciba una transmisión del esclavo.

Paso 4

Veamos cómo trabajar con el bus I2C usando Arduino.

Primero, ensamblaremos el circuito, como se muestra en la figura. Controlaremos el brillo del LED mediante el potenciómetro digital AD5171 de 64 posiciones, que se conecta al bus I2C. La dirección a la que nos referiremos al potenciómetro es 0x2c (44 en decimal).

Circuito de control LED usando potenciómetro digital y Arduino
Circuito de control LED usando potenciómetro digital y Arduino

Paso 5

Ahora abramos un boceto de los ejemplos de la biblioteca "Wire":

Archivo -> Muestras -> Cable -> potenciómetro_digital. Cargámoslo en la memoria Arduino. Vamos a encenderlo.

Verá, el brillo del LED aumenta cíclicamente y luego se apaga repentinamente. En este caso, controlamos el potenciómetro usando el Arduino a través del bus I2C.

Recomendado: