Werk je aan een elektronicaproject waarin elke millimeter telt? Is een gewone RPi Pico te groot? Bekijk dan de XIAO-RP2040 van Seeed Studio.

Vergelijking van een officiële Raspberry Pi Pico en een Seeed Studio XIAO RP2040 naast elkaar

Seeed Studio bezorgde me een XIAO-RP2040 om er een review over te schrijven, dus laten we dit handige kleine bordje eens bekijken. De microchip is identiek, maar doordat er minder pinnen naar buiten zijn gevoerd, is het bordje ongeveer een derde zo groot als de originele Pi Pico. Ondanks zijn geringe afmetingen heeft de XIAO-RP2040 enkele bijzonder interessante functies. Er is een resetknop, waardoor je niet meer hoeft los te koppelen en opnieuw aan te sluiten als een fout in de code een crash veroorzaakt. Naast de ingebouwde led zit er op het bordje zelf ook een NeoPixel RGB-led. En als laatste, maar zeker niet het minst belangrijke: de XIAO-RP2040 heeft een USB Type-C-aansluiting, wat je projecten toekomstbestendig maakt.

Aan de slag

Op het bordje stond Arduino-firmware, maar CircuitPython installeren ging heel vlot. Volg gewoon de officiële instructies. Kort samengevat: hou de bootknop ingedrukt terwijl je het bordje op een computer aansluit. Het apparaat verschijnt als een USB-station op je computer. Zet daar gewoon het .UF2-bestand van CircuitPython op en start opnieuw op.

Voor ons kleine testprogramma gebruiken we de NeoPixel. Daarvoor is het NeoPixel-pakket van Adafruit nodig. Download de bibliotheek die bij jouw versie van CircuitPython hoort en kopieer ze naar de map ./lib/ op de XIAO-RP2040. Ook hier geldt dus precies dezelfde werkwijze als op de Pi Pico.

Wat code uitvoeren

Om de NeoPixel te laten werken, moet je weten met welke GPIO-pinnen hij is verbonden. Het volledige schema van het bordje is beschikbaar, maar je hebt enige kennis nodig om daar de juiste informatie in terug te vinden. Kort samengevat zijn er twee belangrijke pinnen:

  • GPIO pin 11 levert stroom aan de NeoPixel, moet als uitvoer worden geconfigureerd en op True worden ingesteld
  • GPIO pin 12 wordt gebruikt om instructies naar de NeoPixel te sturen en zo de kleur in te stellen. Het NeoPixel-pakket van Adafruit neemt hier het zware werk voor zijn rekening. We hebben alleen enkele functies nodig om alles te initialiseren en kleuren in te stellen.

Om het bordje te initialiseren zijn enkele regels configuratiecode nodig. Deze stellen pin 11 in als uitvoer en zetten hem hoog, zodat de NeoPixel stroom krijgt.

neop = digitalio.DigitalInOut(board.GP11)
neop.direction = digitalio.Direction.OUTPUT
neop.value = True

Vervolgens zijn enkele regels nodig om de NeoPixel te initialiseren. We houden de helderheid op 30%, want zonder behuizing is dat ruim voldoende.

pixel_pin = board.GP12
num_pixels = 1

pixels = neopixel.NeoPixel(pixel_pin, num_pixels, brightness=0.3, auto_write=False)

Je stelt de led eenvoudig op een bepaalde kleur in met pixels.fill((255, 0, 0)), gevolgd door pixels.show(). pixels.fill() verwacht een tupel met drie waarden. Dat zijn de RGB-waarden van 0 tot 255; (255,0,0) is bijvoorbeeld felrood.

In het onderstaande voorbeeld wordt echter de voorbeeldcode uit de NeoPixel-bibliotheek gebruikt om de led geleidelijk door een reeks kleuren te laten lopen. De volledige code staat hieronder. Je kunt ze kopiëren en plakken in code.py op het apparaat. Na een snelle reset doorloopt de ingebouwde RGB-led langzaam alle kleuren van de regenboog.

import time
import board
import digitalio
import neopixel
from rainbowio import colorwheel
 
print("Starting Neopixel")

neop = digitalio.DigitalInOut(board.GP11)
neop.direction = digitalio.Direction.OUTPUT
neop.value = True

pixel_pin = board.GP12
num_pixels = 1

pixels = neopixel.NeoPixel(pixel_pin, num_pixels, brightness=0.3, auto_write=False)

def rainbow_cycle(wait):
    for j in range(255):
        for i in range(num_pixels):
            rc_index = (i * 256 // num_pixels) + j
            pixels[i] = colorwheel(rc_index & 255)
        pixels.show()
        time.sleep(wait)

while True:
    rainbow_cycle(0.1)  # Increase the number to slow down the rainbow

Conclusie

De XIAO-RP2040 is een uitstekend alternatief voor de officiële RPi Pico als je niet alle GPIO-pinnen nodig hebt. De resetknop is handig tijdens het ontwikkelen en wat mij betreft mogen USB Type-C-aansluitingen overal zitten. Het enige nadeel is dat deze bordjes in Europa wat duurder zijn dan Pi Pico’s, die hier beter verkrijgbaar zijn.

Omdat het bordje volledig compatibel is met bestaande RPi-pakketten, zou je er net als met een Pi Pico bijvoorbeeld een MacroPad of MIDI-apparaat mee moeten kunnen maken. Zelf denk ik eraan het in bijvoorbeeld een oude Nokia 3310 in te bouwen, want daar komt het compacte formaat pas echt van pas! Neem gerust contact op en laat weten waarvoor je mij dit bordje graag zou zien gebruiken!