El Raspberry Pi ha revolucionado, sin lugar a dudas, la manera en que utilizamos las computadoras de placa única (SBCs, por sus siglas en inglés), haciendo que plataformas de desarrollo potentes y asequibles estén al alcance de aficionados, educadores e ingenieros por igual. Algunos podrían argumentar que Arduino jugó un papel igual de importante, pero en realidad, opera a un nivel mucho más bajo, diseñado para proyectos basados en microcontroladores en lugar de computación completa.
Ahí es donde entra el Raspberry Pi Pico 2 W. Se sitúa justo entre estos dos mundos: un microcontrolador con serio poder, conectividad inalámbrica integrada y suficientes periféricos para mantener a un ingeniero más feliz que una almeja. No ejecutará un sistema operativo Linux completo como un Pi 5, pero con procesadores de doble núcleo Cortex-M33 y RISC-V, Bluetooth 5.2, y significativamente más RAM y almacenamiento flash que tu Arduino típico, ofrece un nivel de flexibilidad que lo hace una opción atractiva para sistemas embebidos, aplicaciones IoT y más allá.
En este artículo, vamos a ver cómo empezar con el Raspberry Pi Pico 2 W y repasar un ejemplo que muestra las nuevas capacidades de Bluetooth integrado.
Para comenzar, vamos a utilizar MicroPython en el Raspberry Pi Pico 2 W. Primero necesitarás descargar el UF2 Bootloader desde el sitio web de Micropython. Ahora, mantén presionado el botón BOOTSEL en el dispositivo Raspberry Pi Pico 2 W mientras lo conectas a tu computadora (a través del puerto/cable MicroUSB). Esto convertirá tu dispositivo en un dispositivo de almacenamiento (justo como aparece una unidad flash o tarjeta MicroSD en tu computadora). Ahora copia el archivo UF2 en tu dispositivo de “almacenamiento” Raspberry Pi Pico 2 W, desconecta el cable USB y vuelve a conectarlo. Utilizando tu dispositivo de terminal serie favorito como PuTTY o TeraTerm, conéctate al puerto COM que aparece para tu dispositivo, y deberías ser recibido con el intérprete de shell de MicroPython:
En Comenzando con MicroPython y el Raspberry Pi Pico, utilizamos el Thonny IDE como editor para escribir código y cargar el dispositivo Raspberry Pi Pico 2 W. Con la introducción de IA en los editores de código y extensiones por doquier, decidí establecer mi entorno con VSCode en lugar de Thonny. Lo más importante que hacer primero (aparte de instalar VSCode) es instalar la extensión oficial de Raspberry Pi Pico (publicada por Raspberry Pi).
Una vez que la extensión esté instalada, verás un pequeño icono de la placa Raspberry Pi Pico en el lado izquierdo de tu ventana de VSCode (justo donde viven el resto de las extensiones). Haz clic en eso y luego navega a “Nuevo Proyecto MicroPython” bajo “General”. Dale a tu proyecto un nombre y una ruta, y presiona “Crear”.
Se abrirá un nuevo editor con solo unos pocos archivos y una shell de MicroPython. Uno de esos archivos es un ejemplo de archivo Python para hacer parpadear un LED. Abre ese blink.py. En este punto, querrás asegurarte de que tu dispositivo Raspberry Pi Pico 2 W esté conectado. En la parte inferior de tu editor de VSCode, verás un pequeño botón de reproducción.
Esto ejecutará blink.py directamente en el dispositivo (cargándolo primero en el dispositivo). En este punto, deberías ver una declaración impresa y tu LED parpadeando:
El botón Ejecutar se convierte en un botón Detener que detiene la ejecución del código. Una vez que confirmes que el LED parpadea, estamos listos para pasar a un ejemplo más sofisticado.
Ahora que hemos confirmado que nuestro Raspberry Pi Pico 2 W está funcionando con MicroPython, exploremos una de sus características más emocionantes: Bluetooth 5.2. Este ejemplo convierte tu dispositivo Pico en un escáner de proximidad Bluetooth capaz de detectar dispositivos bluetooth cercanos (como smartphones) y determinar la intensidad de su señal (RSSI). El script, bluetooth_scan.py, opera en dos modos: Modo de Descubrimiento, que escanea todos los dispositivos cercanos e imprime sus direcciones MAC, y Modo de Seguimiento, donde el Pico monitorea continuamente un dispositivo específico, encendiendo un LED cuando está en un rango cercano. Este modo de seguimiento es útil para detectar dispositivos Bluetooth específicos cercanos en tiempo real, aunque algunos, como los dispositivos de Apple, aleatorizan sus direcciones MAC por razones de privacidad.
Para lograr esto, utilizamos la API Bluetooth de MicroPython, específicamente bluetooth.BLE(), para inicializar la interfaz Bluetooth del Pico. El script escucha paquetes de publicidad Bluetooth de Baja Energía (BLE) utilizando gap_scan(), que escanea repetidamente durante una duración dada y procesa los resultados a través de un manejador de eventos (bt_irq). Este enfoque basado en eventos permite que el Pico reaccione instantáneamente cuando se detecta un nuevo dispositivo (piense en “interrupciones” en enfoques más de metal desnudo). Los dispositivos se filtran basados en su RSSI (Indicador de Fuerza de Señal Recibida), lo que ayuda a estimar la proximidad. Los dispositivos más cercanos típicamente tienen señales más fuertes (valores RSSI más altos, lo que se traduce en valores db menos negativos), y los dispositivos más lejanos tienen señales más débiles (es decir, un valor db más negativo). El Modo de Seguimiento compara las direcciones MAC detectadas contra un objetivo predefinido y enciende el LED a bordo cuando se encuentra una coincidencia. Los parámetros de escaneo se seleccionan cuidadosamente para equilibrar la capacidad de respuesta en tiempo real con la eficiencia de la CPU, evitando que el Pico se vea abrumado mientras monitorea continuamente las señales Bluetooth.
Para ejecutar el script, simplemente abra bluetooth_scan.py y haga clic en el botón Ejecutar (como vimos con el ejemplo de parpadeo anterior) para recuperar las direcciones MAC de dispositivos cercanos.
Luego, actualiza el script con una dirección MAC específica y cambia al Modo de Seguimiento para detectar cuando ese dispositivo se mueve dentro del alcance. Esto se puede encontrar en la función principal en la parte inferior del script:
# Para rastrear un dispositivo específico (reemplazar con la dirección MAC descubierta)
# scanner = BLEScanner(mode="track", target_mac="aa:bb:cc:dd:ee:ff")
Los parámetros de escaneo han sido optimizados para asegurar una detección receptiva sin bloquear otras operaciones, lo que hace de esto una excelente introducción al escaneo de Bluetooth y al manejo de eventos en el Raspberry Pi Pico 2 W.
El Raspberry Pi Pico 2 W es una adición emocionante al mundo del desarrollo embebido, logrando un equilibrio perfecto entre la flexibilidad de un microcontrolador y el poder de la conectividad inalámbrica integrada. Con MicroPython, hemos visto lo fácil que es comenzar a trabajar, desde hacer parpadear un LED hasta aprovechar el módulo Bluetooth 5.2 a bordo para la detección de proximidad en tiempo real. El escáner de proximidad Bluetooth que implementamos introduce conceptos fundamentales como el escaneo BLE, la programación dirigida por eventos y el análisis de la fuerza de la señal, demostrando cuánto se puede lograr con un código tan mínimo.
Aunque este fue solo un ejemplo básico, el Pico 2 W abre un nuevo abanico de posibilidades para aplicaciones IoT, seguimiento en tiempo real y automatización inalámbrica. Ya seas un aficionado experimentando con periféricos BLE o un ingeniero desarrollando sistemas embebidos de próxima generación, este pequeño dispositivo demuestra ser una central eléctrica en un paquete diminuto. Y esto es solo el principio: todavía hay Wi-Fi, optimizaciones de bajo consumo y más interacciones avanzadas con BLE por explorar. El Raspberry Pi Pico 2 W es pequeño, pero tiene un impacto serio.
Para ver el repositorio que contiene todo el código para comenzar, visita https://gitlab.com/embedded-designs/micropython-bluetooth-example.