Eigenschaften optimal nutzen

Raspberry Pi Pico – gut versorgt

23. September 2023, 11:00 Uhr | Von Klaus Dembowski
© Daniel CHETRONI | stock.adobe.com

Adressierten bisherige Raspberry-Pi-Modelle den Markt für Mini-Computer, so ist es beim Pi Pico vor allem der Mikrocontroller-Markt. Der Pico ist für Applikationen vorgesehen, bei denen auch Arduino und ähnliche Modelle zum Einsatz kommen können. Jedoch ergeben sich mit dem Pico einige Vorteile.

Diesen Artikel anhören

Der Raspberry Pi Pico weist einige bemerkenswerte Eigenschaften auf, für die der verwendete Mikrocontroller »RP2040« verantwortlich ist. Es ist der erste eigene Controller der Raspberry Pi Foundation, den TSMC in 40-nm-Technologie fertigt und der mindestens bis zum Jahr 2028 erhältlich sein soll. Ausgestattet ist der Controller mit zwei Arm-Cortex-M0+-Kernen, die mit 133 MHz getaktet werden. Außerdem bietet der RP2040 264 kB RAM sowie sehr flexibel nutzbare I/O-Einheiten. Standardmäßig hat der Flash-Speicher eine Größe von 2 MB und ist über den QSPI-Bus (Quad Serial Peripheral Interface) an den RP2040 angeschlossen. Er kann maximal eine Größe von bis zu 16 MB aufweisen.

passend zum Thema

Die Boards Pico und Pico W von der Vorder- (oben) und von der Rückseite
Bild 1. Die Boards Pico und Pico W von der Vorder- (oben) und von der Rückseite.
© Dembowski | Raspberry Pi Foundation

Neben dem Original Pico Board der RP-Foundation sowie dem Pico-W-Modell (beide im Bild 1), das zusätzlich über einen Funk-Chip verfügt, und den ansonsten baugleichen Modellen mit aufgelöteten Stiftleisten (Pico H, Pico WH) sind von verschiedenen Herstellern wie Adafruit, SparkFun oder Pimoroni eine beträchtliche Anzahl von Boards mit dem RP2040 verfügbar. Sie bieten eine andere Bauform, mehr Flash-Speicher sowie weitere Peripherieelemente (Akku, DAC, SD-Card, VGA), was hier jedoch nicht weiter betrachtet wird.

Eigenschaften des RP2040

Der RP2040 verfügt insgesamt über 30 universelle General-Purpose-Input-Output(GPIO)-Leitungen mit 3,3-V-Pegel. Außerdem gibt es vier Gruppen mit möglichen Serial-Peripheral-Interface(SPI)-Signalen (CSn, RX, TX, SC), 12 Gruppen mit Inter-Integrated-Circuit(I2C)-Signalen (SDA, SCL) und fünf mit Universal-Asynchronous-Receiver-Transmitter(UART)-Signalen (RX, TX). Die GPIO-Anschlüsse sind hierfür mit bis zu vier unterschiedlichen Funktionen belegt, die sich entsprechend der jeweiligen Programmierung einsetzen lassen. Gleichzeitig stehen aber jeweils nur zwei Kanäle (SPIO0, SPIO1, I2C0, I2C1, UART0, UART1) der genannten Schnittstellen zur Verfügung, die lediglich unterschiedlichen Pins zugeordnet werden können.

Außerdem sind ein Temperatursensor, eine USB-Schnittstelle der Version 1.1 mit Host- und Device-Funktion sowie ein fünfkanaliger Analog-Digital-Converter (ADC) (12 Bit) im RP2040 eingebaut. Drei der ADC-Kanäle sind am Pico als »GP26-CP28« (ADC0-ADC2) verfügbar, der vierte ist für das Messen der VSYS-Spannung (ADC3) vorgesehen und der fünfte (ADC4) ist mit dem Temperatursensor verbunden.

Eine Besonderheit sind zwei integrierte programmierbare Input-Output(PIO)-Blöcke, die unabhängig von den beiden Cortex-M0+-Kernen arbeiten und quasi zwei weitere Mikrocontroller (im Mikrocontroller) bilden. Programmiert werden die PIO-Blöcke in Assembler, der lediglich neun Befehle beherrscht, die in einem einzigen Systemtakt ausgeführt werden. Mithilfe von Bibliotheken − wie »machine« und »rp2« für Python – lassen sich die Assembleranweisungen in ein C-oder Python-Programm integrieren.

Prinzipieller Aufbau eines PIO-Blocks, wovon der RP2040 zwei enthält
Bild 2. Prinzipieller Aufbau eines PIO-Blocks, wovon der RP2040 zwei enthält.
© Dembowski | Raspberry Pi Foundation

Die PIO-Blöcke (Bild 2) ähneln einfachen Complex Programmable Logic Devices (CPLDs) oder Field Programmable Gate Arrays (FPGAs), sie reichen jedoch völlig aus, um Signale im MHz-Bereich zu verarbeiten und Kommunikationsprotokolle für spezielle Schnittstellen (z. B. für VGA oder DVI) mit einem exakten Timing zu implementieren, wobei die CPUs des RP2040 mit der Verarbeitung nicht belastet werden. Für jeden der beiden PIO-Blöcke sind vier State Machines (Bild 2) implementiert, die über jeweils zwei First-in-First-out(FIFO)-Speicher mit einem der Rechenkerne über den Bus kommunizieren und völlig unabhängig voneinander arbeiten. Die Ein- und Ausgänge sind über zuzuordnende GPIO-Pins (maximal 30) realisiert.

Spannungsversorgungen

Das Pico Board wird üblicherweise über den USB-Anschluss von einem PC oder von einem Steckernetzteil versorgt, also mit 5 V betrieben – die 5 V gelangen auf einen Buck-Boost-Converter (RT6150B-33GQW), der daraus die 3,3 V für den RP2040 und den Flash-Speicher (W25Q18) generiert. Der Buck-Boost-Converter kann mit Eingangsspannungen von 1,8 V bis 5,5 V umgehen. Somit könnte das Pico-Board ebenfalls mit geringeren Spannungen arbeiten, was jedoch eine höhere Leistungsaufnahme (Tabelle) zur Folge hat, dafür jedoch den Anschluss an unterschiedliche Batterien und Akkus erlaubt.

Damit der USB-Port funktioniert, sind mindestens 3,3 V nötig. Falls der RP2040 bereits programmiert ist, reichen sogar 1,8 V aus, denn die GPIO-Ports lassen sich selbst mit dieser Spannung noch schalten. In der Praxis zeigt sich, dass sich eine Spannung von 1,8 V mitunter als unsicher erweist, das heißt die Funktion nicht immer sichergestellt ist, weshalb man nicht unter 2 V gehen sollte, was insbesondere für den Pico W gilt. Für die korrekte Funktion des A/D-Wandlers empfiehlt der Hersteller mindestens 3,3 V als Betriebsspannung.

Auf dem Pico Board ist lediglich ein einziger Buck-Boost-Wandler für die 3,3 V vorhanden, denn im Gegensatz zu den konventionellen Raspberry Pi Boards [1] sind keine weiteren Spannungen erforderlich. Der RP2040 verfügt über interne Regler, die die weiteren Spannungen, wie die 1,1 V für den CPU-Kern, aus den 3,3 V erzeugen. Somit benötigt der RP2040 intern fünf verschiedene Versorgungen.

 Die Schaltung der Spannungsversorgung mit der VSYS-Messschaltung beim Pico-Board
Bild 3. Die Schaltung der Spannungsversorgung mit der VSYS-Messschaltung beim Pico-Board
© Dembowski | Raspberry Pi Foundation

Der eingesetzte Buck-Boost-Wandler unterscheidet sich beim Pico und Pico W, weil letzterer zusätzlich den Funkchip (WLAN, Bluetooth) »CYW43439KUBG« von Infineon enthält, der ebenfalls 3,3 V benötigt. Beim Pico W ist der eingesetzte Buck-Boost-Converter der Typ »RT6154AGQW« und stammt, wie der »RT6150B-33GQW« beim Pico (Bild 3), von der Firma Richtek. Nötig ist die Schaltungsänderung, weil der Pico W aufgrund des vorhandenen Funkchips mehr Leistung aufnimmt.

Der »RT6150« (10 Pin WDFN) liefert maximal 800 mA, während der »RT6154« (14 Pin) bis zu 3 A liefern kann, wofür er intern über zwei MOSFET-Switches verfügt. Außerdem besitzt er zusätzlich einen Power-Good-Ausgang, der in der Schaltung allerdings nicht zum Einsatz kommt. Schaltungstechnisch und funktionell sind beide Converter ansonsten nahezu identisch.

Beide Converter lassen sich standardmäßig im sogenannten Power Save Mode (PSM) betreiben, bei dem die Schaltfrequenz − je nach erforderlicher Leistung − variiert. Hierfür ist der PS-Pin auf Low gelegt, was sich am TP4 (Bild 3) auf der Platine nachmessen lässt. Außerdem ist der Pin mit einem GPIO-Port des RP2040 verbunden (RT6150: GPIO23, RT6154: GPIO1), sodass sich der PSM hiermit auch (auf High) ausschalten lässt, was in bestimmten Lastsituationen vorteilhafter sein soll, bei denen die Schaltfrequenz auf 1 MHz (RT6150) beziehungsweise 2,4 MHz (RT6154) fixiert ist. Bei Tests wurden allerdings keine Lastsituation identifiziert, bei der das Abschalten des PSM nutzbringend gewesen wäre.

Programmieren des Pico

Für das Programmieren gibt es unterschiedliche Möglichkeiten: Die gebräuchlichsten sind klassisch in C/C++ (SDK, [2]), mit der Arduino IDE oder mit einer auf dem Pico zu installierenden Python-Variante wie MicroPython oder CircuitPython. Als Programmierplattformen (Hosts) sind Windows, MacOS, Linux und Raspberry Pi OS geeignet, wofür die meisten Entwickler »Thonny« als Python IDE empfehlen.

MicroPython ist eine Implementierung von Python 3, die direkt auf geeigneter Hardware − wie dem Pico − lauffähig ist. Gleiches gilt für CircuitPython [3], das von MicroPython abstammt, von der Firma Adafruit unterstützt wird, und die dieses insbesondere für die eigenen Mikrocontroller Boards propagiert, welche sich hiermit besonders einfach programmieren lassen sollen. Adafruit stellt dafür eine Vielzahl an Bibliotheken und Programmbeispielen bereit, ebenfalls als Open Source. In der Syntax existieren zwischen beiden Versionen zwar Unterschiede, in der Handhabung jedoch eher nicht.

MicroPython-Programm für den Pico zum Messen von VSYS
Bild 4. MicroPython-Programm für den Pico zum Messen von VSYS.
© Dembowski

Beide Python-Varianten unterstützen ein interaktives Kommandofenster (REPL, Read Eval Print Loop), mit dem über die USB-Verbindung Meldungen angezeigt und Befehle abgesetzt werden können. Außerdem fungiert das Fenster (Kommandozeile) für den Pico als »Ausgabebildschirm« (Bild 4).

Das besondere Laufwerk

Der Pico unterstützt das Filesystem USB Flashing Format 2 (UF2). Es wurde von Microsoft entwickelt, um Mikrocontroller über eine USB-Verbindung als Massenspeicher (Removable Device) auf einem Host (PC) darstellen und programmieren zu können. UF2-Files (Firmware) lassen sich bei MicroPython einfach vom PC aus per Drag&Drop auf das RPI-RP2-Laufwerk (bei CircuitPython heißt es CIRCUITPY) kopieren. Nach Beenden des Übertragens führt der Pico automatisch einen Neu-Boot aus und verarbeitet die UF2-Datei, die hiermit quasi vom Laufwerk verschwunden ist.

Um den Pico als Laufwerk auf dem Host sichtbar zu machen, ist der einzige Taster (es ist kein Reset Button) auf dem Pico Board (Bootsel) gedrückt zu halten und das USB-Kabel an den Host anzuschließen, woraufhin RPI-RP2 als Laufwerk erscheint und der Bootsel-Button wieder losgelassen werden kann. Nach dem Klicken auf das neue Laufwerk sind hier zwei Dateien (INDEX.HTM und INFO_UF2.TXT) vorhanden. Der Vorgang mit Bootsel ist jedes Mal durchzuführen, wenn auf das RPI-RP2-Laufwerk zuzugreifen ist.

Auf das RPI-RP2-Laufwerk (134 MB) lassen sich vom PC aus prinzipiell alle möglichen Dateien kopieren, die dort so lange erhalten bleiben, bis man die Spannungsversorgung unterbricht, den Pico also vom USB-Anschluss abzieht. Nur die beiden Dateien »INDEX.HTM« und »INFO_UF2.TXT« bleiben auf dem RPI-RP2-Laufwerk erhalten. Die geschriebenen Programme – sei es in MicroPython oder C – tauchen hier im Übrigen niemals auf, weil sie im internen Flash des RP2040 gespeichert sind.

Während die zweite Datei den Bootloader und das Modell ausweist, führt die Selektion von INDEX.HTM auf die offizielle Seite zur Raspberry-Pi-Dokumentation [4], wo man unter Microcontrollers den Punkt »MicroPython: Getting startet with MicroPython« anwählt und dann »Download the correct MicroPython UF2 file for your board«. Hier sind zwei unterschiedliche Files für das RP Pico und das RP Pico W Board zum Download zu finden.

Die jeweilige Datei beginnend mit der Bezeichnung »rp2-pic…«, und der »Extension uf2« landet nach dem Selektieren üblicherweise im Download-Ordner des Hosts und lässt sich von dort aus per Drag&Drop auf das UF2-Laufwerk kopieren, womit der Pico seine MicroPython Firmware erhält und fortan die Python-Programme verarbeiten kann.

MicroPython-Installation und Test

Alternativ lässt sich für die Installation von MicroPython auf dem Pico die auf einem Host installierte »Thonny IDE« aufrufen und (rechts unten) zwischen einem lokalen Python und der Installation von MicroPython oder CircuitPython wählen. Was lediglich dann so einfach funktioniert, wenn man den Pico angeschlossen und noch nicht anderweitig verwendet hat. Außerdem muss eine Internetverbindung während der Installation bestehen. Nach der Installation taucht der Pico dann nicht mehr als Laufwerk auf, sondern als serielles Gerät »MicroPython (Raspberry Pi Pico)« in der Thonny IDE. Ein Programm zum Test wie »blink.py«, das die OnBoard LED ein- und ausschaltet, lässt sich direkt aus der Thonny IDE auf dem Pico (Where to Save to? Raspberry Pi Pico) speichern. Die Onboard LED wird beim Pico über den GPIO-Pin 25 angesprochen, beim Pico W ist die Onboard LED jedoch am WiFi-Chip an »WL_GPIO0« angeschlossen, was im MicroPython-Programm entsprechend anzupassen ist (statt Pin 25 ist »LED« anzugeben).

Damit das Ausführen eines Programmes automatisch startet, sobald der Pico seine Betriebsspannung – extern über VSYS oder über den USB – erhält, ist das jeweilige Programm bei MicroPython in »main.py« und bei CircuitPython in »code.py« umzubenennen.

Programme löschen

Die auf dem Pico gespeicherten Python-Programme bleiben nach dem Unterbrechen der Spannungsversorgung im Flash-Speicher des Pico erhalten. Jedoch tauchen sie nicht auf dem RPI-RP2-Laufwerk auf, das wie oben erläutert standardmäßig lediglich die Dateien INDEX.HTM und INFO_UF2.TXT enthält.

Die Python-Programme lassen sich leider nicht ohne Weiteres aus dem Pico-Flash-Speicher löschen. Aus diesem Grund sollten dort nur mit Bedacht ausgewählte Programme wie das Programm »main.py«, gespeichert werden, das jedes Mal nach dem Start automatisch ausgeführt wird. Falls main.py zu ändern ist, ist das lediglich mit einem Umbenennen in »main-1.py« möglich, wofür ein spezielles Programm (MicroPython_RenameMainDotPy.uf2) verfügbar ist, welches man auf das RPI-RP2-Laufwerk kopiert.

Auch für das Löschen des kompletten Inhalts auf dem Pico-Flash-Speicher ist eine spezielle Firmware auszuführen, indem die Datei »flash-nuke.uf2« auf das RPI-RP2-Laufwerk kopiert wird. Sodann ist der Pico wieder auf die ursprüngliche Default-Einstellung zurückgesetzt, weshalb die Firmware für MicroPython oder CircuitPython wieder neu zu installieren ist. Beide UF2-Dateien sind beispielsweise auf GitHub zu finden. Der USB Boot Code ist im ROM des RP2040 gespeichert, sodass er niemals aus Versehen löschbar ist.

Programmieren mit Arduino

Falls das Board mit der Arduino IDE (ab Version 2.0.2) programmiert werden soll, ist unter Tools – Board Manager der Typ »Raspberry Pi Pico« und direkt darunter der Kommunikations-Port (MacOS: /devcu.usbmodem1101 (Raspberry Pi Pico)) auszuwählen.

Über die spezielle Bibliothek stehen in der Arduino IDE eine Vielzahl von Boards mit dem RP2040 bereit
Bild 5. Über die spezielle Bibliothek stehen in der Arduino IDE eine Vielzahl von Boards mit dem RP2040 bereit.
© Dembowski

Empfehlenswert ist die Installation der speziellen Raspberry-Pi-Pico-Bibliothek (Version 2.7.3) von Earle F. Philhower, die nicht nur den Standard-Pico, sondern eine Vielzahl von Boards mit RP2040 unterstützt, also ebenfalls den Pico W. Standardmäßig ist die Bibliothek nicht unter dem Board Manager aufgelistet, sondern muss über Arduino IDE – Preferences – Additional boards manager URLs als JSON-Datei [5] hinzugefügt werden, sodass dann beispielsweise der Pico W explizit unter den Boards (Bild 5) selektierbar ist.

Das fertiggestellte Programm lässt sich ebenfalls Arduino-konform über Sketch – Upload auf den Pico übertragen, im Flash speichern und anschließend ausführen. Aus diesem Grund gibt es hier gegenüber dem Programmieren eines Arduinos keinerlei Besonderheiten.

Analyse und Optimieren der Leistungsaufnahme

Wie erwähnt, lässt sich der Pico mit 1,8 V (2 V, s. o.) bis 5,5 V über VSYS betreiben, was verbunden mit einer entsprechenden Spannungsquelle (Akkus, Batterien, Solarzellen) eine Vielzahl von Versorgungen ermöglicht. Hierbei haben die an den Pico angeschlossenen Bauelemente natürlich einen großen Einfluss auf die Gesamtleistungsaufnahme der Applikation. Im Übrigen sind die GPIO-Ports nicht 5-V-tolerant, das heißt, eine externe Beschaltung darf nicht mehr als 3,3 V betragen. Außerdem hängt die Leistungsaufnahme von der Firmware und von der aktiven Software ab.

Der Leistungsbedarf steigt generell mit der Taktfrequenz [1] an, weshalb es Sinn ergeben kann, den Standardtakt von 125 MHz zu reduzieren, wofür im SDK [2] ein entsprechender Befehl erläutert ist, der mit »set_sys_clock_khz (60000, true)« den Takt beispielsweise auf 60 MHz herabsetzt.

Ein Verwenden von Interrupts kann ein geeignetes Mittel sein, um die Leistungsaufnahme gering zu halten. Statt Daten in einer Programmschleife kontinuierlich abzufragen, legt man das eigentliche Programm (main) »schlafen« und weckt es über einen Interrupt auf. Üblich ist das beispielsweise bei Funk-Sensorknoten, die lediglich zu bestimmten Zeiten aufwachen, Messungen vornehmen und dann wieder in den Schlafmodus gehen.
Beim Pico gibt es einige interne Einheiten, die einen Interrupt auslösen können, wie die GPIO-Leitungen, die Schnittstellen (UART, I2C, SPI), den ADC oder auch den internen Timer (RTC), der das – als Alleinstellungsmerkmal – ohne ein Trigger-Signal von außen durchführen kann.

Die Leistungsaufnahme in verschiedenen Betriebsarten bei typischen Versorgungsspannungen
Tabelle. Die Leistungsaufnahme in verschiedenen Betriebsarten bei typischen Versorgungsspannungen
© Dembowski

In der Tabelle ist der gemessene Strom bei verschiedenen Spannungen an VSYS angegeben. Zunächst erfolgten die Messungen bei nicht programmierten Picos (Leer), dann mit installiertem MicroPython, CircuitPython und jeweils mit einem laufenden Programm (Active), das die Spannung VSYS in den verschiedenen Konstellationen misst und anzeigt. Es dient sozusagen als Testprogramm (Bild 4) für die Messungen.

In der Tabelle ist der gemessene Strom bei verschiedenen Spannungen an VSYS angegeben. Zunächst erfolgten die Messungen bei nicht programmierten Picos (Leer), dann mit installiertem MicroPython, CircuitPython und jeweils mit einem laufenden Programm (Active), das die Spannung VSYS in den verschiedenen Konstellationen misst und anzeigt. Es dient sozusagen als Testprogramm (Bild 4) für die Messungen.

Die Grundleistungsaufnahme beträgt bei einem Pico mit MicroPython 18,6 mA. Mit CircuitPython liegt sie um ca. 2 mA höher bei 20,5 mA und bei Applikationen, die mit dem Arduino-C-Dialekt erstellt wurden, noch um 1 mA höher bei 21,7 mA. Die Unterschiede mögen gering erscheinen, gleichwohl ist diese »Grundlast« bei jedem Programm vorhanden, was der Leistungsaufnahme mindestens einer LED entspricht und bei energieeffizienten Applikationen – wo es möglicherweise auf jedes µA ankommt – nicht zu vernachlässigen ist. Interessanterweise liegt die Leistungsaufnahme bei einem Pico W bei 5 V und 3,3 V unter dem eines Picos, was bis zu 1 mA ausmacht. Bei 2 V ist die Leistungsaufnahme eines Pico W gegenüber einem Pico allerdings mehr als doppelt so hoch.

Eine allgemeine Empfehlung für eine der beiden Python-Versionen oder alternativ für Arduino-C lässt sich aus den Messergebnissen in der Tabelle nicht ableiten, zumal im Testszenario lediglich ein kleiner Teil der internen Peripherie beansprucht wurde. Gleichwohl bieten die Werte eine gute Orientierung, insbesondere betreffs der erwähnten »Grundlastunterschiede«, die in einem Programm zu vernachlässigen sein müssten, damit der Wechsel auf eine andere Software nicht notwendig wird. Zudem sollte der jeweilige Programm-Code optimal ausgelegt sein, denn ein »Zusammenklicken« von (unübersichtlichen) Beispielen aus dem Internet führt meist nicht zu energieeffizienten Applikationen.

Im Datenblatt des RP2040 [6] sind zwei Stromsparmodi angeführt: Sleep State und Dormant State, die sich mit einem Befehl aktivieren lassen. Der erste Modus ist zeitgesteuert und wird vom internen Timer (RTC) gesteuert, bei dem der Oszillator eingeschaltet bleiben muss, damit die RTC arbeiten kann.

Der Dormant Mode weist prinzipiell einen geringeren Bedarf auf, weil der Oszillator dabei deaktiviert wird, weshalb sich der Pico nur mithilfe eines externen Signals wieder aufwecken lässt, was beispielsweise über einen Taster oder eine Timer-Schaltung [7] an einem der GPIO-Pins zu erreichen ist.

Im Datenblatt sind für die Leistungsaufnahme im Sleep-Modus 0,39 bis 4,5 mA und für den Dormant Mode 0,18 bis 4,2 mA angegeben, was relativ weite Bereiche sind, zumal beide Modi in der Leistungsaufnahme − in Abhängigkeit vom Programmieren und der Peripherie – mitunter keinen Unterschied ergeben oder auch der Sleep-Modus sogar energiegünstiger ist als der Dormant-Modus. Aus diesem Grund sind ohne entsprechende Strommessungen keine verlässlichen Aussagen über die Wirksamkeit der Stromsparmodi möglich.

 

Der Autor

 

Klaus Dembowsk von der Uni Hamburg
Klaus Dembowsk von der Uni Hamburg
© Dembowski

Klaus Dembowski ist Entwicklungsingenieur für Low-Power und Energy-Harvesting-Systeme. Er wurde 2011 und 2017 von der Redaktion der Elektronik für seine Fachaufsätze »Sensornetze mit energiesparender Funktechnik« und »Funkelektroden zur Messung bioelektrischer Signale: EKG ohne Kabel« als »Autor des Jahres« ausgezeichnet. Sein Fachaufsatz »Raspberry Pi: Unterschätzte One-Wire-Schnittstelle« war 2021 der meistgelesene Fachaufsatz auf elektroniknet.de.


Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu TU Hamburg-Harburg Inst. Für Mikrosystemtechnik

Weitere Artikel zu Maker-Boards

Weitere Artikel zu SBCs / CPU-Boards / CoM / SoM

Weitere Artikel zu Industrie-Computer / Embedded PC