Usando la RP2040 Zero en Micropython

Desde la aparición del RP2040, el microcontrolador de Raspberry, muchas placas de distintos fabricantes lo han incorporado, además de la Pico. En este artículo haré una revisión de la RP2040 Zero, una pequeña placa de la empresa Waveshare, que se caracteriza por su pequeño tamaño y te mostraré como programarla empleando Micropython.

El micro RP2040

Desde su aparición en el mercado en el año 2020 equipando a la Raspberry Pi Pico, el RP2040 se ha popularizado siendo utilizado como el motor de numerosas placas de muy diversos fabricantes, como el Arduino Nano RP2040 Connect, la Feather RP2040 de Adafruit o la XIAO RP2040 de Seeed Studio, sólo por nombrar algunas.

Fig. 1. El RP2040 (Fuente: www.raspberrypi.com)

Esta popularidad seguramente se debe a la combinación de prestaciones, potencia y excelente precio que tiene este chip. A modo de resumen, estas son algunas de sus características sobresalientes:

  • Dos núcleos Cortex M0 a una velocidad de 133 MHz
  • RAM de 264 KB incluida en el chip
  • Soporte para 16 MB de Flash fuera del chip
  • Controlador DMA (acceso directo a memoria)
  • 30 pines de GPIO, de los cuales cuatro pueden ser entradas analógicas
  • Conversor A/D de 12 bits
  • Timer con 4 alarmas
  • Reloj de tiempo real (RTC)
  • Variedad de periféricos de comunicaciones:
    • 2 UART
    • 2 SPI
    • 2 I2C
    • Controlador USB 1.1
  • Sensor interno de temperatura
  • Puerto SWD para programación y debug
  • Modo de bajo consumo
  • Rutinas optimizadas para aritmética de punto flotante almacenadas en ROM
  • Programable I/O (PIO) bloques para manejar eficientemente las entradas/salidas a gran velocidad sin sobrecargar la CPU.

La RP2040 Zero

Yendo específicamente a la placa que te presento hoy, la RP2040 Zero de la firma Waveshare, además del chip de Raspberry, cuenta con una memoria de 2 MBytes de Flash lo que la pone casi en paridad de condiciones con una Pico (sin “W” ya que no tiene conectividad), solo que con menos pines.

Fig. 2. La RP2040 Zero

La Zero cuenta con un total de 20 pines de GPIO y 3 de alimentación distribuidos en tres conectores de paso 0,1 pulgadas que también se pueden soldar directamente sobre una placa SMD (la disposición denominada “castellated pins”). Además, en la parte superior están accesibles 9 pines mas de GPIO en la forma de pequeños pads.

La distribución de tres conectores dificulta su utilización en placas tipo “protobard”, así que tal vez sea mas conveniente adquirir la placa sin headers y soldar sólo los laterales si con esa cantidad de pines es suficiente para tu proyecto en vez de comprarla con los headers ya soldados (que es lo que me paso a mí).

La distribución de pines puede verse en la siguiente imagen:

Fig. 3. Distribución de pines

En el pin GPIO 16 está conectado un led RGB tipo WS2812 ubicado en la parte superior que puede controlarse desde el programa para múltiples funciones.

Contiene también un conector USB-C a través del cual podemos proveer alimentación, programar y depurar, así como dos pulsadores, uno de RESET y otro de BOOT para poner la placa en el modo de grabación del firmware.

La Zero es realmente pequeña, con unas dimensiones de 18 mm por 23.5 mm, lo que la hace ideal para proyectos portátiles.

Fig. 4. Dimensiones (Fuente: waveshare.com)

Programación

La Zero puede ser programada de distintas maneras, aceptando distintos lenguajes de programación, como:

Programando en Micropython

Veamos ahora como programar la Zero utilizando Micropython, en futuros artículos te mostraré otras opciones.

Instalación del firmware

Para programar la Zero en Micropython, primero hay que grabar el firmware correspondiente que puedes descargar de la página de Micropython, en la sección de descargas, eligiendo el MCU RP2040.

Entre las placas que se presentan elige la Pico y descarga la última versión del firmware (a la fecha, la 1.19)

Fig. 5. Descarga del firmware

Para grabar el firmware, conecta la placa al puerto USB mientras mantienes apretado el pulsador BOOT, lo que hará aparecer una nueva unidad de disco llamada “RPI-RP2”. Copia el archivo del firmware que acabas de descargar en esa unidad, con lo que la placa se reiniciará quedando Micropython listo para usar.

En los siguientes ejemplos uso Thonny, pero puedes usar otros IDEs como Mu o Iguana.

En Thonny entonces selecciona RP2040 o Raspberry Pico en el menú Ejecutar-Configurar intérprete y podrás empezar a programar esta potente placa.

Fig. 6. La Zero lista para programar con Thonny 4

Ejemplo

#Ejemplo de programación de RP2040 Zero
#Enciende el led RGB en Rojo, Verde y Azul secuencialmente
#ProfeTolocka 2022

import machine
from neopixel import NeoPixel
from time import sleep

#Crea un objeto led de la clase NeoPixel en el pin 16
led = NeoPixel(machine.Pin (16),1)

while (True):
    #Rojo
    led[0]= (255,0,0)
    led.write ()
    sleep (1)
    
    #Verde
    led[0]= (0,128,0)
    led.write ()
    sleep (1)
    
    #Azul
    led[0]= (0,0,64)
    led.write ()
    sleep (1)
    

Conclusiones

En este artículo hice una revisión de la placa RP2040 Zero y sus principales características. Es una placa potente y muy interesante debido a su reducido tamaño, siendo comparable a un Pico de Raspberry. Además, vimos cómo prepararla para ser utilizada con Micropython, y un simple ejemplo que controla el led RGB incorporado.

Para aprender más

Wiki de Waveshare

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Habilitar notificaciones OK No, gracias