Como creador, siempre en busca de placas de microcontroladores asequibles y potentes, me he enamorado de la Raspberry Pi Pico. Su tamaño compacto, su impresionante rendimiento y sus versátiles opciones de programación la hacen perfecta para una amplia gama de proyectos. En esta publicación, compartiré algunos de mis proyectos favoritos con Pico que demuestran sus capacidades, desde proyectos sencillos para principiantes hasta aplicaciones más avanzadas.
Proyecto 1: LED parpadeante con patrones personalizados (para principiantes)
Configuración del hardware
Para este proyecto, necesitarás una Raspberry Pi Pico, una placa de pruebas, un LED, una resistencia de 220 ohmios y cables puente. Conecta el ánodo del LED al pin GPIO 25 a través de la resistencia y el cátodo a la toma de tierra de la Pico. Esta configuración garantiza que el LED esté protegido contra sobrecorriente por la resistencia y correctamente conectado al pin GPIO de la Pico para su control.

Implementación de código
Usando MicroPython, crearemos un programa para que el LED parpadee en diferentes patrones. Primero, importaremos los módulos necesarios:
from machine import Pin, Timer
Luego, inicialice el pin LED:
led = Pin(25, Pin.OUT)
Cree un objeto temporizador para controlar los intervalos de parpadeo. El siguiente fragmento de código configura un temporizador que alterna el LED cada 500 milisegundos:
tim = Timer()
def tick(timer):
led.toggle()
tim.init(freq=2, mode=Timer.PERIODIC, callback=tick)
Pruebas y personalización
Una vez que el código se carga en Pico (guardándolo como principal.py Al conectar el Pico, el LED debería empezar a parpadear. Puedes personalizar los patrones de parpadeo modificando el temporizador o creando funciones más complejas para controlar el encendido y apagado del LED. Por ejemplo, puedes crear una función que haga que el LED parpadee siguiendo un patrón de código Morse o un patrón que cambie según una entrada externa. Este proyecto es una excelente manera de familiarizarse con el control de pines GPIO y MicroPython en el Pico.
Proyecto 2: Sistema de Monitoreo de Temperatura (Intermedio)
Requisitos de hardware
Reúne una Raspberry Pi Pico, un sensor de temperatura DS18B20, una resistencia de 4,7 kohmios, una placa de pruebas y cables puente. El DS18B20 usa una interfaz 1-Wire, así que conecta su VCC a 3,3 V, GND a tierra y el pin DATA al pin GPIO 18 de la Pico. La resistencia se conecta entre el pin DATA y VCC para activar la señal. Esta configuración garantiza una comunicación estable entre la Pico y el sensor de temperatura, ya que el protocolo 1-Wire requiere una resistencia pull-up adecuada para una transmisión de datos fiable.

Desarrollo de código
En MicroPython, use las bibliotecas onewire y ds18x20 para comunicarse con el sensor. Primero, importe las bibliotecas e inicialice el bus 1-Wire:
import machine
import onewire
import ds18x20
import time
Luego, configure el bus en el pin GPIO elegido:
ds_pin = machine.Pin(18)
ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))
Busque dispositivos y cree un objeto DS18B20:
roms = ds_sensor.scan()
print('Found DS devices: ', roms)
El siguiente código lee la temperatura y la imprime en la consola:
while True:
ds_sensor.convert_temp()
time.sleep_ms(750)
for rom in roms:
print(ds_sensor.read_temp(rom))
time.sleep(2)
Registro y visualización de datos
Para que el sistema sea más práctico, puede añadir una pequeña pantalla OLED (conectada mediante I2C) para mostrar la temperatura en tiempo real o registrar los datos en un archivo en un ordenador conectado. Para la pantalla OLED, puede usar la biblioteca ssd1306. Primero, importe los módulos necesarios e inicialice la interfaz I2C:
from machine import I2C, Pin
import ssd1306
i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)
oled = ssd1306.SSD1306_I2C(128, 32, i2c)
Luego, modifique el bucle de lectura de temperatura para mostrar la temperatura en el OLED:
while True:
ds_sensor.convert_temp()
time.sleep_ms(750)
for rom in roms:
temp = ds_sensor.read_temp(rom)
print(temp)
oled.fill(0)
oled.text(f"Temp: {temp} C", 0, 0)
oled.show()
time.sleep(2)
Para el registro de datos, puede utilizar el siguiente código para escribir los datos de temperatura en un archivo en el sistema de archivos interno de Picos:
file = open('temperatures.txt', 'w')
while True:
ds_sensor.convert_temp()
time.sleep_ms(750)
for rom in roms:
temp = ds_sensor.read_temp(rom)
print(temp)
file.write(f"{time.time()},{temp}\n")
file.flush()
time.sleep(2)
Este proyecto demuestra cómo interactuar con sensores externos utilizando los pines GPIO de Pico y muestra su capacidad para manejar la adquisición de datos de sensores.
Proyecto 3: Cargador de datos de IoT (avanzado)
Configuración del hardware
Necesitarás una Raspberry Pi Pico W (con Wi-Fi integrado), un sensor ambiental BME280 (que mide temperatura, humedad y presión), una placa de pruebas y cables puente. Conecta el BME280 a la Pico mediante I₂C: SDA a GPIO 8, SCL a GPIO 9, VCC a 3,3 V y GND a tierra. Esta configuración de conexión permite que la Pico se comunique con el sensor BME280 a través del bus I₂C, lo que permite obtener datos ambientales.

Integración de código e IoT
Usando MicroPython en el Pico W, primero conéctese a una red Wi-Fi. Configure las credenciales Wi-Fi:
import network
ssid = 'your_SSID'
password = 'your_PASSWORD'
Conectarse mediante la interfaz de red:
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)
while not wlan.isconnected():
pass
print('Connected to WiFi')
A continuación, inicialice el sensor BME280 con la clase bme280. Si aún no está instalada, es posible que necesite instalar la biblioteca bme280. A continuación, le indicamos cómo inicializarla:
import bme280_i2c
i2c = machine.I2C(0, sda=machine.Pin(8), scl=machine.Pin(9))
bme = bme280_i2c.BME280_I2C(i2c)
El código lee los datos del sensor y los sube a una plataforma IoT como Ubidots o Thingspeak mediante el método HTTP POST. A continuación, se muestra una versión simplificada de la función de carga de datos:
import urequests
def upload_data(temperature, humidity, pressure):
url = 'https://industrial.api.ubidots.com/api/v1.6/devices/your_device_label'
headers = {'X-Auth-Token': 'your_token', 'Content-Type': 'application/json'}
data = '{"temperature": %s, "humidity": %s, "pressure": %s}' % (temperature, humidity, pressure)
response = urequests.post(url, headers=headers, data=data)
if response.status_code == 200:
print('Data uploaded successfully')
else:
print('Error uploading data')
response.close()
while True:
temperature, pressure, humidity = bme.values
temperature = float(temperature.strip(' C'))
humidity = float(humidity.strip(' %'))
pressure = float(pressure.strip(' hPa'))
upload_data(temperature, humidity, pressure)
time.sleep(60)
Pruebas y escalabilidad
Una vez que el código esté en ejecución, Pico W se conectará a internet, leerá los datos del BME280 y los subirá a la plataforma IoT elegida. Podrá ver los datos en tiempo real en el panel de control de la plataforma. Este proyecto destaca las capacidades inalámbricas de Pico W y muestra cómo crear soluciones IoT escalables con Pico, abriendo la puerta a aplicaciones para hogares inteligentes, monitorización ambiental y más. Si planea ampliar este proyecto, puede añadir más sensores, ajustar los intervalos de recopilación de datos o incluso utilizar una plataforma IoT más robusta con funciones de análisis avanzadas.
Conclusión
La Raspberry Pi Pico es una herramienta fantástica para creadores de todos los niveles, ofreciendo infinitas posibilidades para proyectos creativos. Ya sea que estés empezando con un simple parpadeo LED o construyendo un sistema IoT avanzado, su precio asequible, rendimiento y facilidad de uso la convierten en una excelente opción. Espero que estos proyectos te inspiren a experimentar con tus propias creaciones Pico. Comparte tus proyectos en los comentarios. ¡Me encantaría ver tus creaciones!




