Comunicación I2C en Python: Tutorial completo

Comunicación I2C en Python: Tutorial completo

Introducción

La comunicación I2C es un protocolo de comunicación serie que se utiliza para conectar dispositivos electrónicos en un bus compartido. Es un protocolo simple y eficiente que se utiliza en una amplia gama de aplicaciones, como la automatización del hogar, la industria y la robótica.

En este tutorial, aprenderemos a realizar comunicación I2C en Python. Comenzaremos con una introducción al protocolo I2C, y luego veremos cómo usar la biblioteca I2C de Python para realizar comunicación con dispositivos I2C.

¿Qué es I2C?

I2C es un protocolo de comunicación serie que se basa en la transmisión de datos por dos líneas: SCL y SDA. SCL es la línea de reloj, que se utiliza para sincronizar la transferencia de datos. SDA es la línea de datos, que se utiliza para transmitir los datos reales.

I2C es un protocolo maestro-esclavo. Un dispositivo I2C puede ser un maestro o un esclavo. El maestro inicia la comunicación y controla el flujo de datos. El esclavo responde a las solicitudes del maestro.

Protocolo I2C

El protocolo I2C tiene un conjunto de comandos básicos que se utilizan para controlar la comunicación. Estos comandos son:

  • Start: Inicia la comunicación.
  • Stop: Detiene la comunicación.
  • Write: Escribe datos en un dispositivo esclavo.
  • Read: Lee datos de un dispositivo esclavo.

Biblioteca I2C de Python

La biblioteca I2C de Python proporciona una interfaz para realizar comunicación I2C. La biblioteca incluye funciones para inicializar el bus I2C, enviar datos y leer datos.

Instalación de la biblioteca I2C

Para instalar la biblioteca I2C en Python, use el siguiente comando:

pip install i2c

Inicialización del bus I2C

Para inicializar el bus I2C, use la función i2c_init(). La función i2c_init() toma dos parámetros:

  • bus: El número de bus I2C.
  • address: La dirección del dispositivo I2C.

Ejemplo de inicialización del bus I2C:

Python
import i2c

# Inicializa el bus I2C en el bus 1
bus = i2c.I2C(1)

# Establece la dirección del dispositivo I2C
address = 0x42

# Inicializa el dispositivo I2C
bus.init(address)

Enviando datos

Para enviar datos a un dispositivo I2C, use la función i2c_write(). La función i2c_write() toma dos parámetros:

  • data: Los datos a enviar.
  • length: La longitud de los datos.

Ejemplo de envío de datos:

Python
# Envia el número 1 al dispositivo I2C
data = [1]
length = len(data)

# Envía los datos al dispositivo I2C
bus.write(data, length)

Leyendo datos

Para leer datos de un dispositivo I2C, use la función i2c_read(). La función i2c_read() toma dos parámetros:

  • length: La longitud de los datos a leer.

Ejemplo de lectura de datos:

Python
# Lee 1 byte del dispositivo I2C
length = 1

# Lee los datos del dispositivo I2C
data = bus.read(length)

# Imprime los datos leídos
print(data)

Ejemplo completo

El siguiente código es un ejemplo completo de cómo usar la biblioteca I2C de Python para realizar comunicación con un dispositivo I2C:

Python
import i2c

# Inicializa el bus I2C en el bus 1
bus = i2c.I2C(1)

# Establece la dirección del dispositivo I2C
address = 0x42

# Inicializa el dispositivo I2C
bus.init(address)

# Envia el número 1 al dispositivo I2C
data = [1]
length = len(data)

# Envía los datos al dispositivo I2C
bus.write(data, length)

# Lee 1 byte del dispositivo I2C
length = 1

# Lee los datos del dispositivo I2C