Imagen de Hacker.io

Raspberry Pi Pico es un microcontrolador creado por la fundación Raspberry Pi. Tiene 2 cores Arm Cortex M0+ que se ejecutan hasta los 133MHz, con 264KB of RAM y 2Mb de almacenamiento flash y sólo cuesta 4$.

Por su tamaño y potencia podemos compararlo con el ESP32 y con algunas de las placas más potentes de Arduino, si la comparamos por precio sólo quedaría el ESP32, pero por prestaciones el ESP32 sólo con su Wifi y Bluetooth ya la deja totalmente atrás. Recomiendo la comparativa de Andreas Spiess con ESP32 y otras placas

En cualquier caso me parece una apuesta muy valiente de la Fundación Raspberry Pi, que saca en su primera versión un producto muy digno y a un precio totalmente alucinante y que sin duda será una nueva revolución en el sector.

Pines/Pinout

  • 30 GPIO
  • 3 entradas analógicas
  • 16 canalles PWM aplicable sobre cualquier pin
  • 2 I2C
  • 2 UARTs
  • 2 SPI


 

Imagen de Hackter.io 

 Imagen de RaspberryPi.org

Puedes usar el módulo de frintzing de la Raspi Pico y su esquema de la página de raspberry.org

Más detalles en la página de hackter.io.

Uso micropython

El entorno de programación para micropython es Thonny que podemos instalar fácilmente desde su página o desde python con

pip3 install thonny

Debemos asegurarnos de usar la última versión (al menos la 3.3.3), con lo que si ya lo tenemos instalado debemos actualizarlo con

pip3 install --upgrade thonny

En este vídeo vemos los primeros pasos

Vídeo: primeros pasos con Raspberry Pi Pico en micropython

Vídeo: primeros pasos con Raspberry Pi Pico en micropython

Ahora vamos a instalar el firmware de micropython a la Raspberry Pi Pico.

  • Seleccionamos el intérprete de python adecuado desde el menú Run->Select Interpreter

Seleccionando «Micropython(Raspberry Pi Pico)

Desde esta opción tendremos acceso a la instalación del firmware (Dejamos la opción de seleccion automática del puerto de conexión)

Pulsamos «Install or update firmware»

En la ventana que aparece veremos que se detecta la placa

y pulsamos Install

Después de instalarse el firmaware se resetea la placa

Una vez instalado el firmware de micropython y tras pulsar la tecla Enter aparecerá la descripción del firmware instalado y el prompt de python «>>>»

Primera prueba: Hola Mundo

Escribimos nuestra pequeña prueba para ver que funciona el intérprete

print('Hola Mundo')

Ejemplo 1: Led On/Off

Vamos a probar ahora con un ejemplo para encender y apagar el led incluído en la Pico, que está conectado al pin 25

import machine # Todo lo relaciionado con el acceso al hardware

# Creamos un objeto led conectado al pin 25 y como salida
led = machine.Pin(25, machine.Pin.OUT)

led.on() # Encendemos
led.off() # Apagamos

Ejemplo 1.5: Parpadeo de led

Ahora introducimos un retardo y tenemos un led parpadeante. Para ello añadimos el módulo utime, una versión reducida del clásico módulo time. En micropython algunos módulos llevan una «u» (por la letra griega μ/micro) delante del nombre para indicar que son versiones reducidas

import machine # Todo lo relaciionado con el acceso al hardware
# Algunos módulos llevan una "u" (por la letra griega μ/micro ) 
# delante del nombre para indicar que son versiones reducidas 
import utime   

# Creamos un objeto led conectado al pin 25 y como salida
led = machine.Pin(25, machine.Pin.OUT)

while True:
    led.on()
    utime.sleep(0.5)
    led.off()
    utime.sleep(0.5)    

Ejemplo 2: Conectando neopixels

Aprovechando los ejemplos de la guía «SDK para Python en Raspberry Pi Pico» vamos a ver cómo usar neopixels con la Raspberry Pi Pico en micropython. Podemos descargar el ejmplo del github de ejemplos de micropython para Raspberry Pi Pico

Vemos que en el código aparece una pequeña parte en ensamblador, es un ejemplo de cómo se pueden usar los PIO (Programable I/O) para hacer que un pin determinado (el 22 en este caso) para crear una máquina de estados que se comunique con un dispsitivo usando un protocolo, el de los neopixels.

He modificado levemente el fichero original añadiendo un par de funciones para agrupar el código.

# Example using PIO to drive a set of WS2812 LEDs.

import array, time
from machine import Pin
import rp2

# Configure the number of WS2812 LEDs.
NUM_LEDS = 16


@rp2.asm_pio(sideset_init=rp2.PIO.OUT_LOW, out_shiftdir=rp2.PIO.SHIFT_LEFT, autopull=True, pull_thresh=24)
def ws2812():
    T1 = 2
    T2 = 5
    T3 = 3
    wrap_target()
    label("bitloop")
    out(x, 1)               .side(0)    [T3 - 1]
    jmp(not_x, "do_zero")   .side(1)    [T1 - 1]
    jmp("bitloop")          .side(1)    [T2 - 1]
    label("do_zero")
    nop()                   .side(0)    [T2 - 1]
    wrap()


# Create the StateMachine with the ws2812 program, outputting on Pin(22).
sm = rp2.StateMachine(0, ws2812, freq=8_000_000, sideset_base=Pin(22))

# Start the StateMachine, it will wait for data on its FIFO.
sm.active(1)

# Display a pattern on the LEDs via an array of LED RGB values.
ar = array.array("I", [0 for _ in range(NUM_LEDS)])

def test1():
    # Cycle colours.
    for i in range(4 * NUM_LEDS):
        for j in range(NUM_LEDS):
            r = j * 100 // (NUM_LEDS - 1)
            b = 100 - j * 100 // (NUM_LEDS - 1)
            if j != i % NUM_LEDS:
                r >>= 3
                b >>= 3
            ar[j] = r << 16 | b
        sm.put(ar, 8)
        time.sleep_ms(50)

def test2():
    # Fade out.
    for i in range(24):
        for j in range(NUM_LEDS):
            ar[j] >>= 1
        sm.put(ar, 8)
        time.sleep_ms(50)

Podemos encontrar más ejemplos de uso de PIO del mismo repositorio.

Desde Thonny podemos abrir el fichero original que hemos descargado, lo modificamos y adaptamos.

Al conectar desde Thonny con la Raspberry Pi Pico con el firmware de micropython, no sólo obtenemos una consola donde ejecutar codigo python en modo interactivo, conocida como REPL, sino que ademas podemos tenemos un explorador de archivos de la placa Raspberry, donde podremos subir y editar archivos.

Arriba vemos los ficheros locales y abajo los de la Raspi Pico. Podemos enviar cualquier fichero a la Raspberry Pi Pico pulsando sobre el fichero local y haciendo clic con el botón derecho del ratón seleccionamos «Upload to»

Podemos editar los ficheros tanto locales como los de la Raspi Pico que aparecen con el nombre entre corchetes

El montaje es muy sencillo, sólo hay que conectar el anillo led a GND y Vcc y el pin de control al pin 22

Ahora podemos ejecutar los test y veremos cómo se iluminan los leds

Raspberry Pi Pico Python SDK

Primeros pasos con micropython en el Raspberry Pi Pico
Etiquetado en: