Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Gartenautomation
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Deutsch
  • English
Menu

MAKER Pi Pico #1 – senden von Sensordaten an ThingSpeak

Posted on 23. August 20219. März 2024 by Stefan Draeger

Wie du Sensordaten mit dem MAKER Pi Pico an den IoT Service ThingSpeak senden kannst, erfährst du in diesem ausführlichem Beitrag.

MAKER Pi Pico mit ESP01S Modul & DHT11 Sensor
MAKER Pi Pico mit ESP01S Modul & DHT11 Sensor

Den MAKER Pi Pico habe ich dir bereits im Beitrag Maker Pi Pico von Cytron vorgestellt und möchte hier lediglich auf die Verbindung zu ThingSpeak eingehen.

  • Einrichten eines Channels in ThingSpeak
  • Anschließen des DHT11 Sensors an den MAKER Pi Pico
    • Bezug eines DHT11 Sensors
      • DHT11 Sensor mit Grove Schnittstelle
    • Technische Daten des DHT11 Sensors
  • Anschluss per Breadboardkabel
  • Anschluss per Grove Schnittstelle
  • Alternativer Sensor DHT22
  • Programmieren des DHT Sensors
    • auslesen des DHT11 Sensors mit CircuitPython
      • Ausgabe auf der Konsole
      • Video
  • Verbindung zu ThingSpeak aufbauen
    • API Key für das Schreiben von Daten
    • Programm zum Absenden von DHT11 Daten
    • Video

Einrichten eines Channels in ThingSpeak

Zunächst müssen wir einen Channel in ThingSpeak einrichten. Dieses ist recht einfach, wenn man sich registriert und angemeldet hat, dann muss man lediglich auf die Schaltfläche „New Channel“ (1) klicken.

Schritt 1 - erstellen eines Channels in ThingSpeak
Schritt 1 – erstellen eines Channels in ThingSpeak

Im zweiten Schritt müssen wir den Namen (2) definieren und optional eine Beschreibung (3) vergeben. Danach definieren wir die Felder, welche wir für unser Projekt benötigen, in diesem Fall möchte ich einen einfachen DHT11 Sensor anschließen und die Sensordaten Temperatur (4) & Luftfeuchtigkeit (5) sammeln.

Wenn diese Daten eingetragen wurden, muss das Formular lediglich mit der Schaltfläche „Save Channel“ (6) erstellt werden.

Schritt 2 - definieren der Eigenschaften des neuen Channels
Schritt 2 – definieren der Eigenschaften des neuen Channels

Hier könnte man noch einige weitere Daten sammeln (Field3 .. Field8) und zbsp. einen BMP280 für das Messen des Luftdrucks sowie einen analogen UV-Sensor anbinden.

fertiger Channel für den MAKER Pi Pico mit DHT11 Sensor in ThingSpeak
fertiger Channel für den MAKER Pi Pico mit DHT11 Sensor in ThingSpeak

Anschließen des DHT11 Sensors an den MAKER Pi Pico

Für dieses Beispiel möchte ich einen DHT11 Sensor verwenden, dieser läßt sich unter CircuitPython recht einfach auslesen und liefert uns die Daten der Temperatur sowie die relative Luftfeuchtigkeit.

Bezug eines DHT11 Sensors

Einen DHT11 Sensor bekommst du in 3 Ausführungen zum einen als simplen Baustein und dann auf einer kleinen Platine mit fertig verbundenem Widerstand.

Varianten des DHT11 Sensors
Varianten des DHT11 Sensors

Auf der Plattform ebay.de* findest du diesen Sensor in den oben gezeigten Ausprägungen in den Preisen von 1,90 € bis 2,10 € zzgl. Versandkosten. Einen deutlich besseren Preis bekommst du auf Plattformen wie aliexpress.com oder banggood.com. Jedoch hast du dort das Problem, wenn was mit der Lieferung nicht stimmt, sich mit chinesischen Lieferanten auseinandersetzen zu müssen. (Meist sind diese Lieferanten nicht an einer Lösung interessiert und man muss sein Geld über PayPal zurückziehen.)

Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!

DHT11 Sensor mit Grove Schnittstelle

Da der MAKER Pi Pico über ausreichend Grove Schnittstellen verfügt können wir alternativ einen DHT11 Sensor mit passender Grove Schnittstelle anschließen.

DHT11 Sensor mit Grove Schnittstelle
DHT11 Sensor mit Grove Schnittstelle

Der Preis auf ebay.de* ist mit rund 12 € inkl. Versandkosten deutlich höher als ein „normaler“ Baustein mit / ohne Platine. Einen weitaus günstigeren Preis findest du Bsp. im offiziellen Shop von SeeedStudio dort zahlst du lediglich 6,5 $ zzgl. Versandkosten. Da aber die Versandkosten nach Deutschland doch recht hoch sind, lohnt sich die Bestellung des einzelnen Sensors nicht wirklich aber in einer größeren Bestellung mit Sensoren / Aktoren für Arduino / Raspberry Pi Projekte fällt das nicht weiter ins Gewicht.

Technische Daten des DHT11 Sensors

  • Messbereich der relativen Luftfeuchtigkeit 20% bis 90%
  • Toleranz des Messbereiches für die relative Luftfeuchtigkeit ±5%
  • Messbereich der Temperatur 0 bis 60°C
  • Toleranz des Messbereiches für die Temperatur ±2°C
  • Betriebsspannung 5V

Anschluss per Breadboardkabel

Hast du einen Sensor mit einer „fertigen“ Platine so musst du zunächst prüfen welche du hast. Es gibt hier 2 Versionen wo die Pins verschieden angebracht wurden.

Pinout der DHT11 Sensoren auf Platine
Pinout der DHT11 Sensoren auf Platine

Anschluss per Grove Schnittstelle

Der deutliche einfachere Weg ist über die Grove Schnittstelle, hier benötigt man lediglich ein passendes Kabel (dieses liegt meist dem Sensor bei).

MAKER Pi Pico mit ESP01S und DHT11 Sensor über Grove Schnittstelle
MAKER Pi Pico mit ESP01S und DHT11 Sensor über Grove Schnittstelle

In meinem Fall würde der DHT11 Sensor über den Pin GP27 mit dem Mikrocontroller verbunden werden (das gelbe Kabel). Das weiße Kabel ist mit dem GP26 verbunden aber nicht vom Sensor belegt.

Alternativer Sensor DHT22

Statt einem DHT11 kann man auch einen DHT22 verwenden, im Code ist dieses lediglich eine kleine Stelle, welche man ändern muss.

DHT22 Sensor

Der DHT22 ist deutlich genauer und hat auch einen größeren Messbereich als der DHT11.

DHT22DHT11
Messbereich relative Luftfeuchtigkeit 0% bis 100% 20% bis 90%
Toleranz relative Luftfeuchtigkeit ±2% ±5%
Messbereich der Temperatur -40°C bis 80°C 0°C bis 60°C
Toleranz des Messbereiches für die Temperatur ±0.5°C ±2°C
Betriebsspannung 3,3V – 5V 5V
Vergleich DHT22 & DHT11 Sensor

Programmieren des DHT Sensors

Kommen wir nun dazu den DHT11 bzw. DHT22 Sensor zu programmieren bzw. das Programm auf dem MAKER Pi Pico zu programmieren.

auslesen des DHT11 Sensors mit CircuitPython

import time
import board
import adafruit_dht

dhtDevice = adafruit_dht.DHT11(board.GP27)
# Wenn ein DHT22 Sensor angeschlossen ist
# muss diese Zeile auskommentiert werden.
# dhtDevice = adafruit_dht.DHT22(board.GP27)

while True:
    try:
        temp = dhtDevice.temperature
        humi = dhtDevice.humidity
        print("Temperatur: {:.1f}C  rel. Luftfeuchtigkeit: {}% ".format(temp, humi))

    except RuntimeError as error:
        print(error.args[0])
        time.sleep(2.0)
        continue
    except Exception as error:
        dhtDevice.exit()
        raise error

    time.sleep(2.0)

Ausgabe auf der Konsole

Auf der Konsole wird die Temperatur sowie die relative Luftfeuchtigkeit formatiert ausgegeben. Des Weiteren kannst du auch Fehlermeldungen von der verwendeten Bibliothek sehen. Das liegt vielmehr am Sensor selber, dieser ist etwas schwierig zum Auslesen und auch liefert dieser Sensor nur neue Daten in einem fest definierten Intervall.


code.py Ausgabe:
DHT sensor not found, check wiring
Temperatur: 24.0 °C  rel. Luftfeuchtigkeit: 55% 
Checksum did not validate. Try again.
Temperatur: 24.0 °C  rel. Luftfeuchtigkeit: 55% 
Checksum did not validate. Try again.
Checksum did not validate. Try again.
Temperatur: 24.0 °C  rel. Luftfeuchtigkeit: 55% 
Temperatur: 24.0 °C  rel. Luftfeuchtigkeit: 55% 
Temperatur: 24.0 °C  rel. Luftfeuchtigkeit: 55% 
Checksum did not validate. Try again.
Checksum did not validate. Try again.

Video

MAKER Pi Pico - read DHT11 Sensordata
Dieses Video auf YouTube ansehen.

Verbindung zu ThingSpeak aufbauen

Auf dem GitHub Repository von Cytron findest du ein Beispiel wie du eine Verbindung zum Service ThingSpeak aufbauen kannst. Dieses Beispiel möchte ich nun nutzen und etwas auf diesen gezeigten Anwendungsfall modifiziert präsentieren.

API Key für das Schreiben von Daten

Zum Schreiben von Daten benötigen wir den sogenannten „API WRITE KEY“, diesen findest du im Dashboard unter dem Reiter „API Keys“ (1) gleich als Erstes im Tab (2).

Programm zum Absenden von DHT11 Daten

Die Daten sende ich hier in einem Intervall von 20 Sekunden, dieses liegt vielmehr daran das die kostenfreie Nutzung von ThingSpeak diese Einschränkung besitzt.

import time
import board
import adafruit_dht
import busio
import adafruit_requests as requests
import adafruit_espatcontrol.adafruit_espatcontrol_socket as socket
from adafruit_espatcontrol import adafruit_espatcontrol

# Zugangsdaten zum lokalen WiFi Netzwerk
# und der API WRITE KEY von ThingSpeak
secrets = {
    "ssid" : "FRITZBox7590GI24",                                    
    "password" : "abc",
    "thingspeak_write_api_key" : "2E97PxxxxxxP0NO"
}

# Adresse der API
API_URL = "http://api.thingspeak.com"

# UART Kommunikation mit dem ESP01S
RX = board.GP17
TX = board.GP16
uart = busio.UART(TX, RX, receiver_buffer_size=2048) 

esp = adafruit_espatcontrol.ESP_ATcontrol(uart, 115200, debug=False)
requests.set_socket(socket, esp)

print("Resetting ESP module")
esp.soft_reset()

# Aufbau der WiFi Verbindung
while not esp.is_connected:
    print("Connecting...")
    esp.connect(secrets)

# Instanz eines DHT11 Sensors erstellen
dhtDevice = adafruit_dht.DHT11(board.GP27)

# Endlosschleife...
while True:
    # Versuche
    try:
        # lesen der Temperatur
        temp = dhtDevice.temperature
        # lesen der relativen Luftfeuchtigkeit
        humi = dhtDevice.humidity
        # Ausgeben der Werte auf der seriellen Schnittstelle
        print("Temperatur: {:.1f}C  rel. Luftfeuchtigkeit: {}% ".format(temp, humi))

    # Wenn der Sensor nicht gefunden wurde 
    # oder ein Fehler beim Lesen aufgetreten ist
    # wird ein Fehler geworfen.
    except RuntimeError as error:
        # Ausgeben der Fehlermeldung auf der seriellen Schnittstelle
        print(error.args[0])
        # eine Pause von 2 Sekunden einlegen
        time.sleep(2.0)
        # noch mal von vorne beginnen
        continue
    # Wenn eine Exception aufgetreten ist
    # dann soll die Kommunikation mit dem
    # DHT Sensor und das Programm beendet werden 
    except Exception as error:
        dhtDevice.exit()
        raise error
    
    # Wenn kein Fehler aufgetreten ist und die WiFi Verbindung hergestellt wurde
    # dann sollen die Daten nach ThingSpeak gesendet werden.

    # zunächst prüfen wir ob auch wirklich Daten gelesen wurden,
    # ggf. kann hier temp oder humi None sein
    if(temp is not None and humi is not None) :
        print("\nUpdating Thingspeak...")
        # zusammenstellen der URL aus der API URL dem API WRITE KEY sowie als Parameter die Sensordaten
        get_url = API_URL + "/update?api_key=" + secrets["thingspeak_write_api_key"] + "&field1=" + str(temp)+ "&field2=" + str(humi)
        # absenden der URL
        # als Rückgabewert erhalten wir in Request Objekt mit den Eigenschaften 
        # wie zbsp. HTTP Status Code und auch einen Response vom Server
        r = requests.get(get_url)
        # Ausgeben der Anzahl der bisher geschriebenen Daten
        # Da wir neben der Zeit auch die Einschränkung haben maximal 500 Daten pro Tag senden zu können
        # kann dieser Counter recht wichtig werden.
        print("Data Count:", r.text)
        print("OK")
        time.sleep(20) 

Video

In dem Video siehst du zum einen die Konsole von Putty auf welcher die Fehlermeldungen und die Ausgaben der Sensordaten zu sehen sind.

Des Weiteren natürlich auch das zuvor erstellte Dashboard in ThingSpeak.

MAKER Pi Pico - Daten eines DHT11 Sensors an ThingSpeak senden
Dieses Video auf YouTube ansehen.

Wie bereits erwähnt kann nur alle 20 Sekunden neue Sensorwerte geschrieben werden, daher habe ich das Video in 3facher Geschwindigkeit gespeichert.

2 thoughts on “MAKER Pi Pico #1 – senden von Sensordaten an ThingSpeak”

  1. Pingback: Luftqualitätsmesser von Franzis - Daten in die Arduino Cloud senden - Technik Blog
  2. Pingback: Raspberry Pi Pico W mit Wi-Fi Support - Technik Blog

Schreibe einen Kommentar Antworten abbrechen

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

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen
Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

link zu Fabook
link zu LinkedIn
link zu YouTube
link zu TikTok
link zu Pinterest
link zu Instagram
  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}