Mit dem Raspberry Pico W loslegen

Der Raspberry Pico und speziell die W Variante mit WLAN ist ein echt cooles und extrem günstiges Teil. Aber es läuft doch alles etwas anders als bei einem normalen Raspberry. Da liegt daran, dass es kein vollwertiger Linux Rechner ist sondern ein Microkontroller. Das war für mich auch alles neu – da ich nicht aus dem Elektronikbereich komme wo man mehr Berührungspunkte damit hat. Man kann damit viel tolle Sachen machen kann, für die es gar keinen großen Bruder braucht.

Ich gehe im Artikel von einem Windowsrechner und MicroPython-Nutzung aus. Übrigens steht auch viel hier bei Pimoroni und bei Raspberry.com . Ich fange daher nicht bei 0 an sondern nenne die Fallstricke.

Wie schließt man das Ding überhaupt an?

Bevor ich was mache brauche ich:

  • USB a zu Micro B Kabel
  • Thonny auf dem Rechner
  • Die passende Firmware als uf2 Datei runterladen (Standard oder z.B. die Firmware von Pimoroni – hier auf Assets und auf picow im Namen achten für die W-Variante )
  • Am Beste noch gleiche eine Nuke-Firmeware, wenn man alles zerschossen hat. Mehr später.

So dann aber nicht einfach anschließen 😂. Den kleinen BOOTSEL-Knopf gedrückt halten vorm Anschluss am PC. Dann erscheint im Windows-Explorer ein neues Laufwerk. Hier zieht man dann die uf2-Datei (Firmware) drauf und wartet kurz. Dann verschwindet das Laufwerk – die Firmware ist damit installiert und man kann nicht mehr wie auf ein Laufwerk zugreifen. Aber wie bekommt man nun die Dateien drauf? Hier kommt Thonny ins Spiel.

Thonny

Nun öffnet man Thonny und richtet es ein. Dazu muss ganz unten rechts klein Raspberry Pico stehen. Wenn nicht das dort auswählen.

In Thonny hat man nun links einen geteilten Explorer: Oben der eigene PC und unten der Pico. Man sollte immer so vorgehen:

  1. Erstellen und Bearbeiten von Dateien auf dem eigenen PC
  2. Rechte Maustaste und Upload to / um die Datei auf den Pico zu laden
  3. Datei auf dem Pico mit Doppelklick öffnen. Das Fester das nun erscheint zeigt den Dateinamen der Datei auf dem Pico in [] Klammern.
  4. Datei mit grünem Pfeil auf dem Pico ausführen.
  5. Mit rotem Stop stoppen

So nun läuft alles schön, aber in den meisten Fällen will man ja den Code ohne Computer laufen lassen – nur auf dem Pico – sonst kann ich es ja gleich am PC machen. Wie geht jetzt das eigentlich? Hier kommt die main.py ins Spiel.

main.py und seine Problemchen

Wenn auf dem Pico im Root eine Datei main.py liegt, wird diese automatisch ausgeführt, wenn der Pico am Strom hängt. Und meistens läuft hier dann eine Endlosschleife im Code um etwas dauerhaft auszuführen. Damit kommen wir aber auch zum Problem: Wenn ich nämlich nun was an der main.py ändern will und ich den Pico am PC wieder anschließe, wird natürlich der Code in der main.py ausgeführt und ich komme nicht mehr über Thonny ran.

Nun ist man versucht wieder BOOTSEL zu drücken, die Firmware neu aufzuspielen und die Dateien wieder neu hochzuladen – aber wenn ich das mache sehe ich die alten Dateien und die main.py nach dem Installieren der Firmware in Thonny immer noch oder es geht wieder nicht 🤨 . Was ist da los? Die Dateien werden in einem anderen Speicher abgelegt als die Firmware und bleiben nach der Neuinstallation der Firmware erhalten. Au 🤦‍♂️ weia. Nun gibt es eine spezielle Nuke-Firmware (s.o.) die alles platt macht. Die bekommt man über BOOTSEL drücken und rüberziehen installiert. Dann Abstecken und wieder mit BOOTSEL drücken anschließen und dann die gewünschte Firmeware drauf. Nun kann man auch wieder die Dateien über Thonny hochladen. Deswegen ist es wichtig die Dateien immer lokal auf dem PC zu haben.

Das ist aber echt behämmert 🔨 wenn man das immer so machen muss bei einer Änderung, oder? Das kann man mit einem vorgeschaltetem main.py und einem Button lösen.

Knopf gedrückt halten um main.py zu bearbeiten

Wenn man irgendeinen Button am Pico angeschlossen hat, kann der helfen. Wenn man ihn gedrückt hält beim Anschließen am PC, soll die Haupt-Schleife nicht laufen. Man kann die main.py umbenennen in z.B. main_program.py und in der main.py dann schreiben:

from machine import Pin
import time

# Button X is PIN 14
button = Pin(14, Pin.IN, Pin.PULL_UP)

def run_normal_mode():
    print('Normal')
    import main_program.py
    pass

def run_config_mode():
    print('Config Mode to prevent loop')
    pass


if button.value() == 0:  # Knopf wird gedrückt (angenommen, dass Drücken 0 zurückgibt)
    run_config_mode()
else:
    run_normal_mode()

Das Beispiel hier ist für Pico Display Pack 2.0 und dort kann man über die Schematic ablesen, dass der Knopf X mit PIN 14 verbunden ist. Bei anderen Lösungen können Buttons wo anders dran hängen.

Nun kann ich das Teil am PC super wieder anschließen, wenn ich X gedrückt halte.



Als erster einen Kommentar schreiben.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert