Correo: [email protected] - Teléfono: +56979962128

Esta es una guía rápida para mostrarte cómo encontrar la dirección de dispositivos I2C utilizando la Raspberry Pi Pico programada con el firmware de MicroPython.  
Raspberry Pi Pico I2C Scanner MicroPython Finding the Address of I2C Devices
   

Prerrequisitos – Firmware MicroPython

Para seguir este tutorial, necesitas tener instalado el firmware de MicroPython en tu placa Raspberry Pi Pico. También necesitarás un IDE (entorno de desarrollo integrado) para escribir y cargar el código en tu placa.

El IDE de MicroPython recomendado para la Raspberry Pi Pico es Thonny IDE.

Pines I2C por defecto en la Raspberry Pi Pico

La Raspberry Pi Pico cuenta con dos periféricos I2C: I2C0 e I2C1. Esto te permite usar dos buses distintos de forma simultánea, aunque no puedes utilizar dos instancias del mismo periférico a la vez (por ejemplo, dos conexiones I2C0).

Si bien la comunicación I2C funciona en cualquiera de los pines habilitados para ello, los pines configurados por defecto son:

  • SDA: GPIO 4

  • SCL: GPIO 5

 

La siguiente tabla detalla todos los pines que puedes configurar para la comunicación I2C en tu Raspberry Pi Pico. Recuerda que puedes elegir cualquier par SDA/SCL que pertenezca al mismo controlador.

Controlador I2C GPIOs para SDA GPIOs para SCL
I2C0 0, 4, 8, 12, 16, 20 1, 5, 9, 13, 17, 21
I2C1 2, 6, 10, 14, 18, 26 3, 7, 11, 15, 19, 27

Escáner I2C con MicroPython

Si necesitas encontrar la dirección I2C de un sensor específico, una pantalla o cualquier otro periférico, simplemente conéctalo a los pines I2C de tu Raspberry Pi Pico y ejecuta el código que verás a continuación.

Abre Thonny IDE (o el entorno que prefieras) y copia el siguiente script:

# Escáner I2C - MicroPython
from machine import Pin, SoftI2C

# Puedes elegir cualquier otra combinación de pines I2C aquí
# En este caso, usamos los pines por defecto (SCL=GP5, SDA=GP4)
i2c = SoftI2C(scl=Pin(5), sda=Pin(4))

print('I2C SCANNER')
devices = i2c.scan()

if len(devices) == 0:
   print("¡No I2C device!")
else:
   print('I2C devices found:', len(devices))

for devices in devices:
   print("I2C hexadecimal adress: ", hex(device))
Raspberry Pi Pico I2C Scanner MicroPython script code
 

Pasos después de copiar el código

Una vez que tengas el script listo en tu editor, sigue estas instrucciones:

  • Conecta la Raspberry Pi Pico a tu computadora (en caso de que aún no lo esté).

  • Asegúrate de que tu periférico I2C esté correctamente conectado a la placa en los pines I2C correspondientes: SCL = GPIO 5 y SDA = GPIO 4.

  • Si estás utilizando pines diferentes, asegúrate de ajustarlos en el código para que coincidan con tu conexión física.

 
i2c = SoftI2C(scl=Pin(5), sda=Pin(4))
 

Ejecución del código

Ejecuta el código anterior (el script del escáner I2C). Si estás utilizando Thonny IDE, solo tienes que hacer clic en el icono verde de ejecución (Run).

run Raspberry Pi Pico I2C Scanner MicroPython script
 

La dirección I2C de tu periférico se imprimirá en la consola (Shell).

testing example Raspberry Pi Pico I2C Scanner MicroPython script shell output

Si tienes más de un dispositivo conectado al mismo bus I2C, el escáner mostrará las direcciones de todos los dispositivos detectados.

Conclusión

En esta guía, aprendiste cómo encontrar rápidamente la dirección de tus dispositivos I2C. Solo necesitas conectar tu periférico a la Raspberry Pi Pico y ejecutar el código del escáner que te proporcionamos.

Esperamos que esta guía te haya sido de gran utilidad para tus proyectos.

Preguntas frecuentes

¿Para qué sirve un escáner I2C?

Para encontrar la dirección de los dispositivos conectados al bus I2C. Cada módulo I2C tiene una dirección propia y hay que conocerla para comunicarse con él; el escáner recorre el bus e informa qué direcciones responden.

¿Qué necesito para usar el escáner I2C en la Raspberry Pi Pico?

Tener instalado el firmware de MicroPython en la placa y un IDE para escribir y cargar el código. El entorno recomendado para la Raspberry Pi Pico es Thonny IDE.

¿Cuáles son los pines I2C por defecto de la Raspberry Pi Pico?

La Pico tiene dos interfaces I2C y cada una tiene pines asignados por defecto para SDA y SCL. Conviene revisarlos en el diagrama de pines antes de conectar el módulo, porque no cualquier GPIO sirve.

¿Qué hago si el escáner no encuentra ningún dispositivo?

Revisar el cableado de SDA y SCL, la alimentación del módulo y la tierra común. Si el escáner no devuelve ninguna dirección, el problema está en la conexión física o en la alimentación, no en el código.

¿Por qué necesito conocer la dirección I2C de un módulo?

Porque es lo que identifica a cada dispositivo dentro del bus. Varios módulos comparten las mismas dos líneas SDA y SCL, y la dirección es la forma de dirigirse a uno en particular sin interferir con los demás.

Aprende esto en un curso

Si prefieres verlo en vivo y con alguien que resuelva tus dudas, estos cursos presenciales de MCI Educación cubren el tema de este tutorial: