Tien microcontroller-bordjes vergeleken
Toen de Raspberry Pi Foundation begin 2021 de Raspberry Pi Pico aankondigde, bleek dit een geduchte concurrent voor de Arduino-microcontrollerbordjes te zijn. Nog opvallender was dat ze hier een eigen chip voor ontwikkeld hadden: de RP2040. Het duurde niet lang tot andere fabrikanten rond diezelfde chip ook allerlei microcontrollerbordjes bouwden. Maak kennis met tien van deze kleine krachtpatsers.
De wereld van elektronicaknutselaars is in twee domeinen onderverdeeld: die van de singleboardcomputers en die van de microcontrollerbordjes. Een singleboardcomputer, waarvan de Raspberry Pi het bekendste voorbeeld is, heeft een relatief krachtige processor, intern geheugen (RAM), soms eigen opslag, video-uitvoer enzovoort. Allemaal eigenschappen die we van een desktopcomputer of laptop kennen, maar dan in een kleinere vorm.
Een microcontrollerbordje daarentegen, zoals de bekende Arduino-bordjes, is een printplaatje waarop bijna alle functionaliteit in één chip ingebouwd is: de microcontroller. Die bevat doorgaans zowel de processor als het RAM en ROM. De processor in een microcontroller is heel wat minder krachtig dan die in een singleboardcomputer en er is minder geheugen beschikbaar.
Waarom zou je dan een microcontrollerbordje gebruiken als een singleboardcomputer zoveel krachtiger is? Microcontrollers zijn betrouwbaarder omdat ze geen heel besturingssysteem draaien, maar enkel de code die jij erin programmeert. Bovendien zijn ze goedkoper en verbruiken ze minder energie. Voor eenvoudige toepassingen zijn microcontrollers dan ook heel geschikt.
De Arduino-microcontrollerfamilie is het laatste decennium populair geworden bij elektronicaknutselaars. Maar de Raspberry Pi Pico is een geduchte concurrent, niet in het minst door de krachtige RP2040: een dualcore ARM Cortex-M0+-microcontroller van 32 bit. We bekijken tien microcontrollerbordjes met de RP2040-chip.
Raspberry Pi Pico
De Raspberry Pi Pico was het eerste ontwikkelbordje met de RP2040-microcontroller en is nog altijd het beste voor algemene toepassingen. Het is goedkoop (rond de 5 euro) en perfect ondersteund door allerlei ontwikkelsoftware in het RP2040-ecosysteem. Bovendien beschikt het bordje van 51 × 21 mm over 40 pinnen, waarvan 26 GPIO-pinnen die voor algemeen gebruik in te zetten zijn en 3 ADC-pinnen om analoge signalen in te lezen.
De microcontroller programmeren doe je via de micro-usb-aansluiting of via de SWD-pinnen (Serial Wire Debug) aan de andere kant. Naast de chip is er 2 MB flashgeheugen op het bordje gesoldeerd. Dat is het minste van alle RP2040-bordjes, maar ruimschoots voldoende voor de meeste toepassingen. Ter vergelijking: de Arduino Uno en Nano hebben maar 32 KB flashgeheugen en zelfs de Nano 33 BLE is ‘maar’ met 1 MB uitgerust.
De Raspberry Pi Pico is met of zonder header te koop. Er bestaan ook allerlei uitbreidingsbordjes en displaymodules die op de header passen, waardoor je hiermee wel heel eenvoudig je eerste stappen in de microcontrollerwereld zet.
©PXimport
Arduino Nano RP2040 Connect
Hoewel de Raspberry Pi Pico als concurrent voor Arduino-bordjes in de markt wordt gezet, levert de Raspberry Pi Foundation zijn RP2040-chip ook aan concurrerende producenten, en zo ook aan het team achter Arduino. Zij hebben de chip ingebouwd in een premiumbordje (rond de 26 euro): de Arduino Nano RP2040 Connect. Deze heeft de afmetingen van een Arduino Nano (45 × 18 mm met 30 pinnen), maar beschikt dankzij de RP2040 wel over veel meer rekenkracht. Bovendien is er maar liefst 16 MB flashgeheugen aanwezig, de maximale capaciteit die de RP2040 ondersteunt.
Verder zit het bordje tjokvol functionaliteit. De u-blox NINA-W102-module biedt wifi en bluetooth, en er zit ook een bewegingssensor, microfoon, cryptochip en RGB-led in. Van de 22 GPIO-pinnen zijn er 20 voor PWM (Pulse Width Modulation) bruikbaar en 8 zijn er analoog. De softwareondersteuning is ook uitstekend, zowel in de Arduino IDE als in de ontwikkelomgevingen voor MicroPython en CircuitPython.
Er is uiteraard ook rechtstreekse ondersteuning voor het bordje in de Arduino IoT Cloud, Arduino’s clouddienst waarin je microcontrollers programmeert. Al met al heeft dit bordje wel een stevige prijs, maar door alle functionaliteit is het een veelzijdig ontwikkelbordje voor IoT-toepassingen.
©PXimport
Adafruit Feather RP2040
Adafruit brengt al jaren ontwikkelbordjes met diverse processorfamilies uit in zijn Feather-reeks, met standaardafmetingen van 50,8 × 22,8 mm en 28 pinnen. Deze Adafruit Feather RP2040 is daar een nieuw lid van. 21 pinnen zijn algemeen bruikbare GPIO-pinnen, waarvan 4 ADC-pinnen, dus één meer dan de Raspberry Pi Pico. Voor wie een extra analoog signaal wil uitlezen, is het bordje dan ook heel interessant. Maar ook daarnaast is het bordje goed uitgerust. Er is niet alleen een rode led, maar ook een RGB-led van het NeoPixel-type.
Het flashgeheugen van 8 MB is ruim. Gebruik je MicroPython of CircuitPython, dan heb je nog een 7 MB over. Verder heeft de Adafruit Feather RP2040 een STEMMA QT-connector, waardoor je eenvoudig een component met een STEMMA QT-, Qwiic- of Grove I²C-stekker aansluit. Het bordje heeft een usb-c-connector en aan de zijkant een JST-PH-connector voor een LiPo-batterij. De ingebouwde batterijlader laadt een aangesloten batterij als je usb aangesloten hebt.
Zonder usb haalt het bordje zijn voeding uit de batterij. Dat maakt de Adafruit Feather RP2040 dus ideaal voor mobiele toepassingen.
©PXimport
SparkFun Thing Plus - RP2040
Adafruits Feather-formaat staat ook open voor andere fabrikanten en concurrent SparkFun heeft daar gebruik van gemaakt met zijn Thing Plus - RP2040. Het bordje lijkt sterk op de Adafruit Feather RP2040, inclusief de vier ADC-pinnen. We vinden hier dezelfde Qwiic-connector, usb-c-connector en JST-PH-connector voor een LiPo-batterij. Met zijn 59 × 23 mm is het bordje wel iets groter dan zijn voorbeeld. De connectoren staan dan ook net iets anders gepositioneerd. Zo staat de Qwiic-connector naast de batterijconnector. Bovendien heeft het bordje aan de onderkant een microSD-kaartslot.
Wil je in je microcontrollertoepassing veel data opslaan (voor datalogging van sensormetingen) of inlezen (zoals afbeeldingen of audio), dan is de SparkFun Thing Plus - RP2040 dankzij dit kaartslot een heel interessant bordje. De communicatielijnen zijn aan specifieke GPIO’s toegekend en daarmee kun je je microSD-kaart met bijvoorbeeld MicroPython als massaopslag aanspreken.
Verder is het bordje ook heel ruim voorzien van 16 MB flashgeheugen, evenals van een blauwe led en NeoPixel-RGB-led. Er zijn ook tien pingaatjes waarop je een header kunt solderen voor JTAG/SWD-debugging.
©PXimport
Seeed XIAO RP2040
Waarschijnlijk de kleinste telg in de RP2040-familie is de Seeed XIAO RP2040, die maar 20 × 17,5 mm meet. Dat heeft natuurlijk zijn weerslag op het aantal GPIO-pinnen: dat zijn er maar 11. Die zijn wel allemaal met PWM te gebruiken en 4 ervan ook als analoge pin. Op de onderkant heb je ook pads voor SWD. De Seeed XIAO RP2040 is uitgerust met 2 MB flashgeheugen, een usb-c-connector, een gewone led en een NeoPixel-RGB-led. In feite maken deze specificaties van de Seeed XIAO RP2040 gewoon een kleinere versie van de Raspberry Pi Pico met een RGB-led.
Maar de veelzijdigheid van de GPIO-pinnen maken het bordje heel flexibel. Dankzij de vier analoge pinnen kun je er potentiometers of analoge sensoren op aansluiten. En omdat alle pinnen PWM ondersteunen, kun je er de helderheid van leds of de snelheid van motoren mee aansturen. Bovendien kun je ook I²C, SPI en UART op de pinnen gebruiken. Kortom, het bordje is geschikt voor heel wat toepassingen waarin compacte afmetingen belangrijk zijn.
©PXimport
Solder Party RP2040 Stamp
De RP2040 Stamp van het Zweedse Solder Party is met zijn 25 × 25 mm iets groter dan de Seeed XIAO RP2040, maar heeft als voordeel dat het toegang geeft tot alle 30 GPIO’s van de microcontroller. Daardoor heb je de beschikking over twee keer I²C, twee keer SPI, twee keer UART, 16 pinnen met PWM en 4 analoge pinnen. Om dit alles zo compact te houden, staan de pingaten aan de vier zijden wel op 2 mm afstand van elkaar, waardoor dit bordje niet op een breadboard past.
Er is geen usb-connector gemonteerd, maar de usb-pinnen zijn wel beschikbaar. Het bordje kan via deze pinnen gevoed worden of via de ingebouwde voedings- en laadschakeling (zonder bescherming) voor een LiPo-batterij. De flashchip heeft een capaciteit van 8 MB. De RP2040 Stamp is open hardware: alle hardwareschema’s zijn gepubliceerd onder een CERN-licentie.
Solder Party heeft ook een bijbehorend RP2040 Carrier Board dat de Arduino Uno Shield-pinout volgt. Als je de RP2040 Stamp hierop monteert, heb je connectoren voor usb-c, Qwiic/STEMMA QT, een LiPo-batterij, DC-aansluiting en een SWD-header.
Pimoroni Pico LiPo
De Pico LiPo van Pimoroni heeft dezelfde pinout als de Raspberry Pi Pico en is daardoor ook volledig compatibel met allerlei Raspberry Pi Pico-add-ons. Daarnaast komt het bordje met heel wat leuke extra’s. Zo is het uitgerust met een usb-c-poort en een Qwiic/STEMMA QT-connector, evenals een JST-SH-connector voor SWD. Een JST-PH-batterijconnector maakt het plaatje compleet. De laadschakeling heeft een bescherming ingebouwd. Er is ook een aan-uitknop, wat handig is als je bij batterijgevoede toepassingen stroom wilt besparen wanneer je het bordje even niet nodig hebt.
De Pico LiPo meet 53 × 21 mm, dus twee millimeter langer dan de Raspberry Pi Pico, en is beschikbaar met 4 of 16 MB flashgeheugen. Die laatste versie is zo’n drie keer duurder dan de Raspberry Pi Pico, maar met alle extra functionaliteit én de compatibiliteit met de add-ons is dat zeker niet te duur voor draagbare toepassingen. Zowel MicroPython als CircuitPython en C/C++ zijn ondersteund.
©PXimport
Pimoroni Badger 2040
De Pimoroni Badger 2040 is een RP2040 gemonteerd op de achterkant van een zwart-wit e-paperscherm van 2,9 inch, met vijf knoppen. Hij is uitgerust met 2 MB flashgeheugen, een usb-c-connector en een JST-PH-connector voor een batterij, en een connector voor Qwiic/STEMMA QT. Er zijn ook nog enkele pads aan de achterkant voor toegang tot I²C, UART en SWD.
Pimoroni verkoopt ook een kit met accessoires, waarin twee AAA-batterijen en een batterijhouder zitten, klittenband om de batterijhouder aan het bordje te bevestigen, een usb-c-naar-usb-a-kabel en een nekkoord dat door een sleuf in het bordje past. Hiermee heb je dan een draagbaar schermpje dat door de e-papertechnologie heel zuinig is. Wil je een LiPo-batterij aansluiten, neem er dan een met ingebouwde bescherming, want de Badger 2040 is niet voorzien van batterijbescherming.
Een belangrijke beperking is wel dat het bordje geen batterijlader heeft. Je hebt dus een externe LiPo-lader nodig als je je batterij wilt opladen. Pimoroni’s software maakt het heel eenvoudig om in MicroPython tekst en afbeeldingen op het scherm te tonen.
Cytron Maker Pi RP2040
Wil je met de RP2040 motoren aansturen, bijvoorbeeld voor een robot of om planten water te geven, dan is de Maker Pi RP2040 van Cytron het ideale bordje. De ingebouwde motordriver kan twee DC-motoren (inclusief statusleds en testknoppen) en vier servomotoren aansturen. Er zijn 13 indicatorleds voor de status van de GPIO-pinnen, een piëzozoemer met schakelaar om hem te dempen qua geluid, twee drukknoppen, twee NeoPixel-RGB-leds en maar liefst zeven Grove-connectoren voor I²C, SPI, UART of analoge communicatie.
De RP2040 op het bordje wordt vergezeld van 2 MB flashgeheugen, een micro-usb-aansluiting en een aansluiting voor een LiPo-batterij. De ingebouwde LiPo/Li-Ion-laadschakeling heeft bescherming tegen overladen en ontladen. Het bordje komt ook met een aan-uitschakelaar en meet 88 × 64 mm. Cytron laadt de chip al met CircuitPython, zodat je onmiddellijk aan de slag kunt. Ook MicroPython, C/C++ en Arduino zijn uiteraard ondersteund.
Kortom, de Maker Pi RP2040 biedt alles wat je nodig hebt voor het stevigere werk met een combinatie van motoren en sensoren.
©PXimport
Pimoroni PicoSystem
De PicoSystem van Pimoroni is een volwaardige draagbare gameconsole gebouwd rond de RP2040. De microcontroller is vergezeld van een 16MB-flashchip en heeft een 1,54inch-kleurenschermpje met links daarvan een D-pad en rechts vier knoppen. Er is een RGB-led, aan-uitknop en piëzozoemer. De LiPo-batterij met een capaciteit van 525 mAh zou voldoende moeten zijn voor minstens zes uur speelplezier.
Het PicoSystem meet 96,6 × 42,7 mm en gebruikt een usb-c-kabel om de batterij op te laden en de microcontroller te programmeren. Er zitten ook SWD- en UART-pinnen op de printplaat, maar daarvoor moet je de behuizing openschroeven. Pimoroni levert het PicoSystem met het platformspel Super Square Bros van Scorpion Games, maar je kunt er nog heel wat andere naar uploaden.
Je eigen games maken kan met de officiële PicoSystem-API voor C++ en MicroPython, met de Stage-bibliotheek in CircuitPython of met de 32bit-SDK in C/C++. Met die laatste creëer je games die zowel op het PicoSystem als op de 32bit-console werken, en ook op Linux, Windows en macOS.
De RP2040, een krachtige microcontroller
De RP2040-chip past in een QFN-56-SMD-behuizing van 7 × 7 mm en wordt met een 40nm-proces gemaakt. De chip heeft twee ARM Cortex-M0+-processorkernen die op een kloksnelheid van 133 MHz draaien en beschikt over 264 KB SRAM. Er is geen intern flashgeheugen of EEPROM: de bootloader laadt de firmware vanaf extern flashgeheugen (de controller ondersteunt capaciteiten tot 16 MB) of de usb-bus.
Van de 30 GPIO-pinnen kunnen er 4 optioneel als analoge invoer worden gebruikt. Verder heeft de chip twee keer UART, twee keer SPI, twee keer I²C, 16 PWM-kanalen, en een usb1.1-controller en PHY-chip met ondersteuning voor host en device. De RP2040 heeft ook 8 PIO state machines.
PIO staat voor Programmable I/O en hiermee is het mogelijk om in een extra, kleine processor die los van de ARM-kernen draait speciale code uit te voeren voor efficiënte communicatie met de buitenwereld, zoals extra UARTs, DVI, NeoPixels of CAN-bus.
Conclusie
De RP2040 is een krachtige microcontroller van de makers van de Raspberry Pi waar allerlei fabrikanten ontwikkelbordjes met diverse toepassingsdomeinen omheen hebben gemaakt. Voor je eerste experimenten met de RP2040 is de Raspberry Pi Pico nog altijd het beste bordje, omdat het zo veelzijdig en goedkoop is. Arduino, Adafruit, SparkFun en Pimoroni hebben elk hun eigen varianten met licht verschillende functionaliteit, die elk hun eigen toepassingsdomeinen hebben waarvoor ze optimaal uitgerust zijn.
Moet je toepassing vooral compact zijn, dan zijn de Seeed Xiao RP2040 (zo klein mogelijk) en de Solder Party RP2040 Stamp (zo klein mogelijk met toegang tot alle GPIO’s) niet te kloppen. Daarnaast bestaan er ook heel specifiek uitgeruste bordjes, bijvoorbeeld met een e-paperscherm, motordriver of zelfs een volledige RP2040-gebaseerde gameconsole.
Wat al deze bordjes gemeen hebben, is dat ze een uitstekende ondersteuning hebben in allerlei ontwikkelomgevingen en ecosystemen zoals MicroPython, CircuitPython en Arduino. In nog geen anderhalf jaar tijd heeft de RP2040 dan ook zeker zijn plaats in de wereld van elektronicaknutselaars ingenomen.