Raspberry Pico und wiz-IO Platform in PlatformIO (Visual Studio Code)

  • Hallo Kai,


    danke für Deine übersichtliche Aufstellung. Ich sehe schon, dass es auf den 2. Blick doch schon einige Unterschiede gibt.
    Da Du dich hierfür interessierst,....bei AZ-Delivery gibt es heute ein Halloween-Angebot für den Raspberry Pico.


    Gruß

    Hans

  • Also es gibt da einige Unterschiede. Hier mal nur die offensichtlichsten:

    Arduino NanoRP Pico
    Taktfrequenzmax. 20Mhzmax. 133Mhz
    CPU1 Kern (8 Bit)2 Kerne (32 Bit)
    RAM2 KB264 KB
    Flash-Speicher32 KB (-2 KB fuer Bootloader)2 MB
    AD-Wandler1 x 10 Bit3 x 12 Bit
    IO-State Machines (programmierbar)08
    Betriebsspannung5V3,3V
    Schnittstellen1x SPI,
    1x I2C,
    1x UART
    2x SPI,
    2x I2C,
    2x UART


    Es fällt auf, wesentlich schneller und wesentlich mehr Speicher verfügbar. Ein konkretes Projekt dafür habe ich noch nicht aber ich möchte mich mit dem RP-Pico vertraut machen, gerade weil er für den Preis viel bietet.

  • Hallo Kai,


    ich kenne den Raspberry Pico nur vom Namen her. Siehst Du hier Vorteile diesen im Vergleich zu Arduino Nano einzusetzen?

    Wenn ja, für welche Projekte. Für mich sind diese in den Werten ziemlich ähnlich. Preislich liegen diese auch nicht weit auseinander.


    Gruß

    Hans

  • Hallo zusammen,


    eventuell hat sich der Ein oder Andere ja schon mal den Raspberry Pico über Visual Studio Code mit dem Arduino Framework (Platforms -> Raspberry Pi RP2040) programmiert. Diese "Platform", wie es im PlatformIO Plugin für Visual Studio Code so schön heißt, wird einem zum Download angeboten, wenn man nach dem Wort "Raspberry" sucht.


    Nach dem ersten Gehversuch mit dem typischen "Hello World" Blinkprogramm habe ich mich gewundert, warum für so ein simples Blink Programm so verdammt viel Speicher verbraten wird:


    pico-install.png                   Env-Arduino.png


    Wie man an dem zweiten Screenshot erkennen kann, werden hier knapp 50kb 8| im RAM für das Arduino "Blink" Beispielprogramm verbraucht. Auch der Verbrauch von fast 71kb im Flashspeicher ist schon recht hoch. Compiliert man den Blink-Sketch in der Arduino-IDE (ergänzt um zwei Serial.print Ausgaben) werden 58,8kb Flashspeicher und 11kb RAM verbraucht.


    Bei der Suche im Internet bin ich auf die Seite Raspberry Pico: The Simple Startup with PlatformIO gestoßen. Dort wird "wiz-IO Pico" vorgestellt, welches ich mir zusätzlich installiert habe. Dazu muss in dem Eingabefeld, welches bei einem Klick auf den Button "Advanced Installation" erscheint der URL "https://github.com/Wiz-IO/wizio-pico" hineinkopiert werden.


    wizio-install.png


    Bei der wiz-IO Software hat man die Auswahl zwischen dem Framework "Baremetal" und "Arduino". Baremetal heißt in diesem Fall, dass man den Pico mit dem Pico-SDK programmiert, also nicht die "Arduino" Befehle verwendet. Das hat den Vorteil, dass sehr viele Beispielprogramme zum Raspberry Pico eben damit geschrieben sind und man sie quasi 1 zu 1 übernehmen kann. Auch sehr viel Dokumentation bezieht sich auf dieses SDK.


    Jedoch gibt es auch die Möglichkeit, das "Arduino" Framework auszuwählen und quasi nach der Arduino Referenz zu programmieren. Ich habe beides ausprobiert und feststellen dürfen, dass das Blink Programm wesentlich weniger Speicherplatz verbraucht.


    Beispiel Framework "Baremetal":


    wizio-Baremetal.png


    Beispiel Framework "Arduino":


    wizio-arduino.png


    Folgendes Programm habe ich in der Arduino Variante verwendet:

    Die dazugehörige Platformio.ini:

    Die platformio.ini Datei ist so aufgebaut, dass man durch ändern des Strings bei dem Parameter "default_envs" die Compilierung entweder mit der "Standardplatform" Raspberry Pi RP2040 (Wert "pico") oder wizio (Wert "raspberry-pi-pico") verwendet wird.

    Man kann also beide "Umgebungen parallel nutzen.


    Für die "Baremetal" Variante:


    Die dazugehörige Platformio.ini


    Zur Baremetal-Variante ist zu erwähnen, dass der Standard-C-Befehl "printf" die Textausgabe auch auf der/einer seriellen Konsole ausgibt, wie man es vom Serial.print Befehl gewohnt ist. Er ist, was die Ausgabeformatierung und Zeilenumbrüche betrifft, wie der "richtige" printf Befehl zu behandeln. Damit das funktioniert, sind in der Platformio.ini die Parameter "build_flags" und "build_unflags" zu beachten.


    Außerdem darf man im Programm selber den Befehl "stdio_init_all();" nicht vergessen. Wenn der Befehl nicht verwendet wird, taucht der Pico nach dem Neustart nicht an einem COM Port auf.


    Das soll es erst einmal gewesen sein. Vielleicht interessiert es ja jemanden ;). Möglicherweise hat hier jemand auch schon mehr Erfahrungen zum Pico gesammelt und mag sie teilen. Das wäre schön :).