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

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
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.
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.
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.

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.
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.
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.
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).
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.
Der DHT22 ist deutlich genauer und hat auch einen größeren Messbereich als der DHT11.
DHT22 | DHT11 | |
---|---|---|
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 |
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
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.
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”