Raspberry Pi Pico W: Sensor-Daten-Logging übers Netzwerk

Wenn ein Raspberry Pi Pico als Sensor verwendet wird, der irgendwelche Werte erfasst, dann möchte man diese Daten in irgendeiner Weise aus dem System herausbekommen.
Bei einem Raspberry Pi Pico W mit WLAN-Funkchip könnte man die Daten per WLAN an eine Gegenstelle übertragen.

Beispielhaft wollen wir die Daten des integrierten Temperatur-Sensors an eine Gegenstelle per HTTP-Request übertragen.

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, an der die Sensor-Daten übertragen werden können. Wir bieten hierzu 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 must Dir nur eine persönliche ID erstellen lassen, 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 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: Für die Übertragung der Sensor-Daten bedarf es einer Gegenstelle. Trage die erstellte ID unseres IoT-Webservices ein. Zum Logging wird ein Zeitstempel mit den Sensor-Daten an den Webservice gesendet.

ID erstellen

Wenn der Programmcode gestartet wird, wird zuerst die WLAN-Verbindung hergestellt. Dabei blinkt die Onboard-LED auf dem Pico. Leuchtet die LED dauerhaft, wurde die Verbindung erfolgreich hergestellt. Die LED leuchtet aber auch dann weiter, wenn irgendwann die WLAN-Verbindung abbricht.

Danach werden die Sensor-Daten gelesen. In diesem Fall der interne Temperatursensor. Diese Funktion kann aber durch irgendeine andere Sensor-Abfrage ersetzt werden. Die ermittelte Temperatur wird per HTTP-Request an den IoT-Webservice gesendet. In einer Schleife wird der Vorgang alle 30 Sekunden wiederholt. Auf der Weboberfläche des IoT-Webservices kannst Du Dir die empfangenen und gespeicherten Daten ansehen.

# 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 = 'log_' # oder selbst gewählter Name

# Status-LED für die WLAN-Verbindung
led_onboard = machine.Pin('LED', machine.Pin.OUT, value=0)

# Initialisierung des Sensors
sensor_temp = machine.ADC(4)

# Funktion: Temperatur abrufen und umrechnen
def getTemp():
    read = sensor_temp.read_u16()
    spannung = read * 3.3 / (65535)
    temperatur = 27 - (spannung - 0.706) / 0.001721
    return temperatur

# HTTP-Request senden
def sendRequest(url):
    print()
    try:
        # HTTP-Request senden
        print('Request: GET', url)
        response = requests.get(url)
        if response.status_code == 200:
            print('Response:', response.content)
        else:
            print('Status-Code:', response.status_code)
            print('Fehler:', response.reason)
        response.close()
    except OSError:
        print('Fehler: Keine Verbindung')

# 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
            led_onboard.toggle()
            print('.')
            time.sleep(1)
    if wlan.isconnected():
        print('WLAN-Verbindung hergestellt / WLAN-Status:', wlan.status())
        led_onboard.on()
    else:
        print('Keine WLAN-Verbindung')
        led_onboard.off()
        print('WLAN-Status:', wlan.status())

# WLAN-Verbindung herstellen
wlanConnect()

# Wiederholung (Endlos-Schleife)
while True:
    myValue = getTemp()
    url = 'http://elektronik.info/' + myID + '/' + myDevice + str(time.time()) + '/' + str(myValue)
    sendRequest(url)
    time.sleep(30)

Auf der Kommandozeile von Thonny kannst Du die HTTP-Kommunikation (Request/Response) beobachten. Die Response-Meldung zeigt den Inhalt dessen an, was die Gegenstelle als Antwort sendet. Im Erfolgsfall wird ein „OK“ gemeldet.

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