
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))
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).
La dirección I2C de tu periférico se imprimirá en la consola (Shell).

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:
- uPython y Electrónica Creativa con Raspberry Pi Pico — nivel inicial, 15 horas presenciales en Santiago
- Domina la Raspberry Pi: Sistemas y Conectividad — nivel intermedio, 18 horas presenciales en Santiago