Aan de slag met de nieuwe Raspberry Pi Pico

De Raspberry Pi Pico is een forse afdwaling van de gebruikelijke Raspberry Pi’s die we kennen: het heeft geen besturingssysteem zoals elk van de andere Raspberry Pi’s maar draait in plaats daarvan een enkel programma. De Pico is daarom meer vergelijkbaar met de functionaliteit van Arduino-gebaseerde besturingscomputers dan met de Linux computers uit de rest van de Raspberry Pi familie. De reden dat de Pico toch ‘Raspberry Pi’ heet is omdat dit de naam is van de organisatie die de Raspberry Pi computers heeft ontwikkeld. De naam is in dit geval echter geenszins een indicatie van de werking.

De Raspberry Pi Pico is klein en eenvoudig van opzet (foto Rudi Niemeijer)

Een belangrijkste argument voor de Raspberry Pi Pico is de prijs: met een gemiddelde verkoopprijs van € 6,95 (en nog goedkoper in bundels) is er weinig reden om nog op zoek te gaan naar Arduino klonen en compatibles. De overweging om een Raspberry Pi Pico in te zetten in plaats van bijvoorbeeld een Raspberry Pi Zero kan ook zijn dat de toepassing toch maar altijd één (Python) programma draait en het besturingssysteem van een Zero helemaal niet nodig heeft. Vele ingebedde toepassingen in alledaagse apparaten zullen zich hiervoor lenen.

De Raspberry Pi Pico wordt geprogrammeerd met een host computer zoals een Apple Macintosh, Windows computer of Linux computer. Met een code editor op één van deze computers wordt een programma in C/C++ (vergelijkbaar met Arduino’s Processing) of MicroPython (een Python implementatie voor microcontrollers) geschreven en met een druk op de knop op de Pico geladen. Als een programma eenmaal op de Pico is geladen dan blijft het daar draaien, ook als de Pico wordt uit- en weer aangezet, totdat het programma wordt overschreven door een nieuw programma.

Nieuwe hardware

De Raspberry Pi Pico is de eerste van een reeks van nieuwe besturingscomputers die gebruik maakt van de RP2040 chip. Vorige Raspberry Pi computers waren gebaseerd op een Broadcom implementatie van een ARM processor; de RP2040 is in huis ontwikkeld door het Raspberry Pi team en voorziet in een met twee processorkernen uitgeruste Cortex M0+ ARM implementatie op 133 MHz met 264 KB aan werkgeheugen en 2 MB aan flashgeheugen voor programma- en bestandsopslag. Programma’s en bestanden worden in het flashgeheugen bewaard ook als het geheugen niet meer van stroom wordt voorzien.

De Raspberry Pi Pico (onder) heeft geen besturingssysteem zoals de Raspberry Pi Zero W (boven) (foto Rudi Niemeijer)

De RP2040 is door de Raspberry Pi Foundation vrijgegeven voor gebruik en verkoop door derden en de chip gaan we onder andere zien op besturingscomputers van Adafruit, Pimoroni, SparkFun en Arduino. Wat specificaties betreft ligt de capaciteit van de RP2040 ruim onder die van de Raspberry Pi Zero’s 1 GHz ARM11 processor met enkele processorkern en het valt hierom niet te verwachten dat de RP2040 in de toekomst met een eigen Raspberry Pi OS wordt uitgerust.

Het grootste nadeel van de RP2040 is het gemis van draadloze connectiviteit, wat ervoor zorgt dat de Pico niet zonder extra voorzieningen in een internet of things toepassing kan worden gebruikt. Maar zowel op het gebied van uitbreidingen voor de Pico als op het gebied van doorontwikkeling op de RP2040 zijn veel initiatieven en een toekomstige versie van de RP2040 mét Bluetooth en WiFi ligt voor de hand.

Gebruik als besturingscomputer

De Raspberry Pi Pico is geen microcomputer met een eigen besturingssysteem, code editor of compiler. In plaats daarvan wordt een programma in een code editor op een andere computer geschreven en ‘geflasht’ op de Pico. ‘Flashen’ is overschrijven van het flashgeheugen van de Pico en wordt ook wel ‘branden’ genoemd, hoewel er geen vuur of rook aan te pas komt. Het schrijven van een programma kan bijvoorbeeld in de Thonny Python IDE op een andere Raspberry Pi (de Raspberry Pi 400 voldoet uitstekend voor het schrijven van programma’s) of met Microsoft Visual Studio Code op een macOS of Windows computer.

Er zijn veel verschillende besturingscomputers op de markt met veel verschillende eigenschappen (foto Rudi Niemeijer)

Programma’s voor de Pico kunnen worden geschreven in C/C++ zoals we bij Arduino zijn gewend, of in Python zoals we op de Raspberry Pi (en laten we wel zijn, op iedere andere computer) doen. Zowel in C/C++ als in MicroPython zijn verschillende codebibliotheken beschikbaar voor de hardwareuitbreidingen die op de markt worden gebracht. Zo is het eenvoudig om een led strip op de Pico aan te sluiten en met een passende codebibliotheek aan te sturen.

Ook AdaFruit heeft de nieuwe RP2040 microcontroller omarmd en er hun CircuitPython programmeertaal voor vrijgegeven. CircuitPython wordt door AdaFruit voor veel van hun eigen microcontrollerboards gebruikt en beschikt over een indrukwekkend arsenaal aan codevoorbeelden en -bibliotheken voor sensoren, LCD- en OLED schermen en andere randapparaten zoals kleurenledstrips en kassabon-printers. CodePython moet eerst op de RP2040 worden geflashd alvorens gebruik gemaakt kan worden van de AdaFruit codevoorbeelden, maar dit is een eenvoudig en omkeerbaar proces.

Python (en MicroPython) is een geïnterpreteerde programmeertaal dat op moment van uitvoering van tekst naar code wordt vertaald. Die vertaling vindt op de RP2040 plaats met de MicroPython of CircuitPython interpreter. Verwerking in C/C++ vereist een compileer-link stap die voor het flashen moet worden uitgevoerd op de computer waarop ook de code editor draait. Hiervoor dienen enkele stappen te worden uitgevoerd om het Pico programma te ‘bouwen’. De Microsoft Visual Studio Code omgeving doet dit automatisch en flasht dan ook gelijk het programma op de Pico. Arduino heeft al aangekondigd dat zijn ondersteuning voor de RP2040 gaan leveren zodat de RP2040 net als iedere andere Arduino kan worden geprogrammeerd.

Aansluitingen

De Raspberry Pi Pico heeft zoveel mogelijk van de aansluiting van de RP2040 naar buiten uitgevoerd, hetgeen de relatief grote printplaat verklaart. Beide zijden van de print zijn met 20 gaten met een standaard afstand uitgevoerd, maar is net wat breder dan een 40-pens IC. Halve maantjes zijn bij ieder aansluiting geplaatst om de printplaat eenvoudig in toepassingen te kunnen verwerken. Het is niet gegarandeerd dat de gehele opzet van de aansluitingen van de Pico in volgende besturingscomputers wordt overgenomen, hoewel dat (met de Arduino en de rest van de Raspberry Pi familie als voorbeeld) wel gebruikelijk is. Toekomstige besturingscomputers die op de RP2040 zijn gebaseerd zijn mogelijk (veel) kleiner en hebben minder (of meer) aansluitingen.

De Raspberry Pi Pico is even lang als een traditioneel 40-pens IC zoals hierboven afgebeeld, maar net even breder. De datumcodes van de 1802 en Z80 IC’s verklappen ‘week 15 1977’ (‘715’) en ‘week 38 1983’ (‘8338’). De Pico is hiermee 27 jaar recenter dan een Z80 en 43 jaar recenter dan de 1802. (foto Rudi Niemeijer)

Vooral de aansluitingen van de Pico maken duidelijk dat deze in andere toepassingsgebieden kan worden ingezet dan de andere leden van de Raspberry Pi familie. Deze zijn ook voorzien van verschillende mogelijkheden om sensoren in te lezen of actuatoren aan te sturen, maar hun mogelijkheden zijn beperkt in vergelijking met die van de Pico. De aanwezigheid van 3 analoge ingangen en in totaal 6 verschillende poorten voor seriële communicatie maakt al een groot verschil, maar het grote aantal GPIO en PWM aansluitingen is kenmerkend voor de Pico. De aansluitingen van de Pico zijn wat vergelijkbaar met die van een Arduino:

Pen functieArduino UnoRaspberry Pi Pico
Analoge ingang6 (10 bits)3 (12 bits)
Generiek I/O (GPIO)1426
Seriële communicatie via SPI12
Seriële communicatie via I2C/TWI12
Pulsbreedtemodulatie (PWM)516
Overige aansluitingen3 hardware interrupts, 1 seriële poort8 toestandsmachines, 2 seriële poorten
Aansluitingen van Arduino en Raspberry Pi Pico vergeleken

Van een afstandje lijkt de Raspberry Pi Pico op een vervanger van de Arduino, maar dat is niet het geval. ‘Arduino’ is een ecosysteem dat bestaat uit een archetype ontwikkelsysteem ter grootte van een bankpas met gestandaardiseerde aansluitingen, een microcontroller met een Arduino bootloader en een ontwikkelomgeving waarin programma’s in de programmeertaal ‘Processing’ worden geschreven. De oorspronkelijke microcontroller voor Arduino’s was een Atmel ATmega328, maar microcontrollers van veel andere fabrikanten kunnen in het Arduino ecosysteem worden gebruikt. De populaire Espressif ESP32 microcontroller met ingebouwde WiFi wordt bijvoorbeeld veel ‘met Arduino’ geprogrammeerd. De Arduino organisatie heeft een samenwerking met de Raspberry Pi Foundation aangekondigd zodat de RP2040 microcontroller en hiermee de Raspberry Pi Pico, vanuit de Arduino ontwikkelomgeving kunnen worden geprogrammeerd.

De Raspberry Pi Pico is een duidelijke tegenhanger voor de Arduino creditcard besturingscomputer (boven), met vergelijkbare aansluitingen (foto Rudi Niemeijer)

De GPIO aansluitingen zijn bedoeld als digitale ingang of uitgang en kunnen worden gebruikt met andere digitale schakelingen. Zo kan met een GPIO als ingang de stand van een schakelaar worden ingelezen of een relais worden aangestuurd. De SPI, I2C en UART aansluitingen kunnen worden gebruikt om de communicatie tussen microcontrollers, sensoren, actuatoren of andere apparaten te verzorgen. Met de analoge ingangen kunnen nauwkeurige metingen worden uitgevoerd van analoge spanningen, die tussen 0 en 3,3V mogen liggen. De PWM worden gebruikt voor puslbreedtemodulatie, zoals het regelen van de helderheid van een led of de snelheid van een elektromotor. PWM wordt ook gebruikt voor eenvoudige audio en het aansturen van servo’s.

Aansluitingen van de Raspberry Pi Pico (illustratie Raspberry Pi Foundation)

Programmeren van de Raspberry Pi Pico

De Raspberry Pi Pico wordt in C/C++ of in MicroPython geprogrammeerd. Het programma wordt geschreven op een host computer, zoals een Raspberry Pi 400 of andere Linux computer, een Windows computer of een macOS computer. Wanneer de Raspberry Pi Pico via de ISB aansluiting op de computer wordt aangesloten en de bootsel knop ingedrukt wordt gehouden dan gaat de Raspberry Pi Pico in ‘opslagmedium modus’. Het gevolg is dat een bestaand programma op de Pico niet wordt uitgevoerd, maar dat in plaats daarvan het bootsel programma wordt uitgevoerd, dat een USB opslagmedium apparaat nabootst. Een extra schijfstation is nu op de host computer beschikbaar. Het geschreven programma wordt hierop gekopieerd, waarna de Raspberry Pi Pico automatisch herstart en het nieuwe programma gaat uitvoeren.

Plaats een reactie