Raspberry Pi Pico W aus der Ferne schalten

Wir haben einen Raspberry Pi Pico W und haben die Idee ihn aus der Ferne zu schalten. Beispielsweise die Onboard-LED, die wir ein- und ausschalten wollen. Das geht aber auch mit jedem anderen GPIO, an dem man irgend ein Bauteil oder eine Steuerung hängt.

Da nicht sicher ist, ob der Raspberry Pi Pico W aus der Ferne erreichbar ist, lösen wir die Steuerung aus der Ferne mit einem IoT-Webservice, der den Schaltzustand für den Pico gespeichert hat und der auf einer Weboberfläche oder von einem anderen Gerät geändert werden kann. Der Pico holt sich dann per HTTP-Request in regelmäßigen Abständen seinen Schaltzustand ab.

IoT-Webservice zum Testen

Um den folgenden Aufbau und Programmcode sinnvoll testen oder nutzen zu können, benötigt der Raspberry Pi Pico W eine Gegenstelle, von der er seinen Schaltzustand abfragen kann. Um den folgenden Aufbau und Programmcode ausprobieren zu können, bieten wir einen IoT-Webservice an, der als Gegenstelle für den Raspberry Pi Pico W dient. Unser IoT-Webservice ist vollkommen kostenlos und Datenschutz-freundlich. Du musst Dir nur eine persönliche ID erstellen, was mit einem Klick erledigt ist. Die Sache hat natürlich einen Haken. Deine ID ist nur für ein paar Stunden gültig und Deine Daten werden dann auch wieder gelöscht. Unser IoT-Webservice ist zum schnellen Testen gedacht, nicht für einen dauerhaften Produktivbetrieb.

Programmcode und Konfiguration

Bevor der Programmcode gestartet wird, sollte er an zwei Stellen konfiguriert werden:

  • WLAN: Damit der Verbindungsaufbau zu Deinem WLAN funktioniert, musst Du den WLAN-Name und das WLAN-Passwort korrekt im Programmcode eintragen.
  • IoT-Webservice: Damit die LED aus der Ferne geschaltet werden kann, bedarf es einer Gegenstelle, woher der Pico den Status abfragen kann. Trage die erstellte ID ein. Standardmäßig ist im Programmcode ein Gerät mit dem Namen „demo“ eingetragen. Dieses Gerät muss unter der ID im IoT-Webservice erstellt sein.

ID erstellen

Nach dem Start beginnt der Programmcode mit dem Herstellen der WLAN-Verbindung. Dabei blinkt die Onboard-LED auf dem Pico. Leuchtet die LED dauerhaft, wurde die Verbindung erfolgreich hergestellt. Anschließend wird dann aber nicht die LED für den WLAN-Status verwendet, sondern für den Status des Schaltzustands, der aus der Ferne abgefragt wird.

Wenn die WLAN-Verbindung erfolgreich hergestellt wurde, dann holt sich der Pico den aktuellen Status vom Gerät „demo“ vom IoT-Webservice. Auf der Benutzeroberfläche des Webservices kannst Du Dir den Schaltzustand anzeigen lassen. Das Gerät „demo“ hat die Schaltzustände „0“ oder „1“. In einer Schleife wird der Zustand regelmäßig abgefragt und die LED entsprechend ein- oder ausgeschaltet.

# Bibliotheken laden
import machine
import network
import rp2
import utime as time
import urequests as requests

# WLAN-Konfiguration
wlanSSID = 'name'
wlanPW = 'passwort'
rp2.country('DE')

# IoT-Webservice-Konfiguration
myID = 'DEINE ID' # 32-stelliger Code
myDevice = 'demo' # oder selbst gewählter Name
myURL = 'http://elektronik.info/' + myID + '/' + myDevice

# Funktion: WLAN-Verbindung
def wlanConnect():
    wlan = network.WLAN(network.STA_IF)
    if not wlan.isconnected():
        print('WLAN-Verbindung herstellen')
        wlan.active(True)
        wlan.connect(wlanSSID, wlanPW)
        for i in range(10):
            if wlan.status() < 0 or wlan.status() >= 3:
                break
            print('.')
            time.sleep(1)
    if wlan.isconnected():
        print('WLAN-Verbindung hergestellt / WLAN-Status:', wlan.status())
    else:
        print('Keine WLAN-Verbindung / WLAN-Status:', wlan.status())

# Funktion: Schaltstatus abrufen
def getState(url):
    try:
        # HTTP-Request senden
        print()
        print('Request: GET', url)
        response = requests.get(url)
        if response.status_code == 200:
            print('Response:', response.content)
            value = response.content
            value = value.decode()
            if value == '0':
                return '0'
            elif value == '1':
                return '1'
            else:
                return 'none'
        else:
            print('Status-Code:', response.status_code)
            print('Fehler:', response.reason)
            response.close()
    except OSError:
        print('Fehler: Keine Verbindung')
        return 'none'


# WLAN-Verbindung herstellen
wlanConnect()

# Zustand abrufen
myValue = getState(myURL)

# Ansteuerung der LED
if myValue == '0' or myValue == '1':
    led_onboard = machine.Pin('LED', machine.Pin.OUT, value=eval(myValue))
    while True:
        # 10 sek. Wartezeit bis zum nächsten Status-Abruf
        time.sleep(10)
        myValue = getState(myURL)
        if myValue == '0' or myValue == '1':
            led_onboard.value(eval(myValue))
else:
    print('Fehlerhafte Daten oder keine Verbindung.')

Auf der Kommandozeile von Thonny kannst Du die HTTP-Kommunikation (Request/Response) beobachten. Die Response-Meldung zeigt den Inhalt dessen an, was der IoT-Webservice als Antwort sendet.

Wenn dort „NODATA“ steht und der Programmcode beendet wurde, dann stimmt was mit der WLAN-Verbindung nicht oder die IoT-Webservice-Konfiguration ist fehlerhaft. Bitte kontrollieren, ob die ID stimmt und prüfe, ob ein Gerät mit dem Namen „demo“ angelegt ist.

Weitere verwandte Themen:

Teilen:

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

Das "Elektronik-Set Pico Edition" ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Online-Workshop Mehr Informationen Elektronik-Set jetzt bestellen

Programmieren mit dem Raspberry Pi Pico
Online-Workshop

Programmieren mit dem Raspberry Pi Pico

Online-Workshop mit einer Einführung ins Physical Computing mit Leuchtdioden, Taster und Temperatursensor.

  • Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython ohne Vorkenntnisse
  • Optimaler Einstieg, um eigene Ideen zu verwirklichen und Steuerungen zu programmieren
  • Inklusive Elektronik-Set mit einem Raspberry Pi Pico, Zubehör und elektronischen Bauteilen

Für Ihre Fragen zu unseren Online-Workshops mit dem Raspberry Pi Pico besuchen Sie unseren PicoTalk (Online-Meeting). (Headset empfohlen)

Zum PicoTalk Mehr Informationen Am Online-Workshop teilnehmen

Elektronik-Set Pico Edition
Elektronik-Set Pico Edition

Hardware-nahes Programmieren mit dem Raspberry Pi Pico

Das "Elektronik-Set Pico Edition" ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Online-Workshop Mehr Informationen Elektronik-Set jetzt bestellen