MKR1000 mit DHT22: Temperatur & Luftfeuchte in Echtzeit an Azure senden
Komponenten und Zubehör
| Arduino MKR1000 (WiFi-fähig, SAMD21 Cortex-M0+) | 1 |
| DHT22 Temperatur- & Feuchtesensor (AM2302) | 1 |
Apps und Online-Dienste
- Microsoft Azure (Event Hubs / IoT Hub)
- Arduino IDE
- Microsoft Visual Studio 2015+ (Community Edition)
Über dieses Projekt
Paul DeCarlo beschrieb, wie man Wetterdaten von einem Particle Photon an Microsoft Azure sendet. Ich wollte dies mit dem **Arduino MKR1000** nachbauen. Der Photon nutzt einen Webhook über die Particle Cloud; der MKR1000 unterstützt **HTTPS direkt**, sodass Daten ohne Zwischenschicht an Azure gesendet werden können. Diese Anleitung verbindet den MKR1000 mit Azure und nutzt Serverseitig Code aus dem Microsoft-Projekt Connect the Dots.
Hardware
Der DHT22 misst Temperatur und Luftfeuchte. Auch DHT11 ist mit Code-Anpassung möglich.
Verdrahtung (Steckbrett):
- Pin 1 (VCC) → 3,3 V (MKR1000)
- Pin 2 (DATA) → 10 kΩ Pull-up-Widerstand an 3,3 V, dann an MKR1000 Pin 6
- Pin 3 (GND) → GND

Details zum DHT22: Adafruit DHT Tutorial.
Arduino IDE einrichten
- Boardverwalter: **Arduino SAMD Boards** & **MKR1000** installieren.
- Bibliotheksverwalter: **WiFi101**, **DHT sensor library**, **ArduinoJson**, **RTCZero** installieren.
HTTPS & Zertifikate
Der MKR1000 unterstützt HTTPS, aber Zertifikate müssen manuell aufgespielt werden (begrenzter Speicher). Zweischrittig:
- In Arduino IDE: **Datei → Beispiele → WiFi101 → FirmwareUpdater** auf den MKR1000 laden.
- WiFi101 Firmware Updater Tool herunterladen, entpacken,
winc1500-uploader-gui.exestarten. - COM-Port wählen, Domäne
ctd-ns.servicebus.windows.net(Azure Event Hubs) eintragen, Zertifikate hochladen.

Arduino Sketch
- Sketch von GitHub: MKR1000-Azure klonen/herunterladen.
- Tab
ssidbearbeiten:ssid[]undpassword[]anpassen. - Auf MKR1000 hochladen.
- Serial Monitor öffnen – Datenversand an Azure prüfen.

Der Sketch nutzt einen öffentlichen Event Hub aus Connect the Dots. Daten ansehen unter: connectthedotsdx.azurewebsites.net. Da öffentlich, mischen sich Daten mehrerer Sensoren. Eigene displayname oder guid in createJSON() setzen.

Eigenen Event Hub erstellen (optional, empfohlen)
Benötigt: Visual Studio (Community Free) + Azure-Abo (kostenloser Test möglich).
- Connect the Dots Repo klonen.
- In Visual Studio:
AzurePrepSolution öffnen (connectthedots\Azure\AzurePrep), in **Release Mode** ausführen. - Azure-Login, Berechtigungen gewähren, Ressourcennamen wählen (Empfehlung:
ctd+ Initialen, z. B.ctddc). CreateWebConfigTarget ausführen →web.configauf Desktop erzeugen.web.configin Website-Projekt (connectthedots\Azure\WebSite\ConnectTheDotsWebSite) kopieren und in Solution einbinden.- Website in Microsoft Edge starten (läuft lokal).
SAS-Schlüssel für Arduino generieren
- Event Hubs Signature Generator (RedDog) herunterladen & starten.
- Namespace:
ctddc-ns(Ihr Name), Hub:ehdevices, Publisher/Sender Key:D1, TTL: 525600 Min (1 Jahr). - Im Azure Portal (alt): Event Hubs → Namespace →
ehdevices→ Configure → Primary Key fürD1kopieren. - Key in Generator einfügen, **Generate** klicken, Signatur kopieren.

Arduino Sketch anpassen
char hostname[] = "ctddc-ns.servicebus.windows.net";
char authSAS[] = "SharedAccessSignature sr=ctddc-ns.servicebus.windows.net%2fehdevices...";
Sketch speichern, hochladen, Serial Monitor prüfen. Azure-Website zeigt nun Ihre Daten.

Azure IoT Hub (Alternative, moderner)
IoT Hub unterstützt Device-to-Cloud und Cloud-to-Device. Einrichtung:
- Azure Portal: Neues IoT Hub erstellen.
- Device Explorer installieren.
- IoT Hub Connection String (iothubowner Primary Key) in Device Explorer eintragen, Update.
- Management Tab → Create Device ID
D1→ SAS Token generieren.

Sketch für IoT Hub anpassen
char hostname[] = "ihr-hub.azure-devices.net";
char authSAS[] = "SharedAccessSignature sr=ihr-hub.azure-devices.net%2fdevices%2fD1&sig=...&se=...";
String deviceName = "D1";
String uri = "/devices/" + deviceName + "/messages/events?api-version=2016-02-03";
HTTP-Erfolgscode ändern: Event Hub = 201, **IoT Hub = 204**.
if (response.startsWith("HTTP/1.1 204")) { ... }
Sketch hochladen. In Device Explorer: **Data Tab → Monitor** klicken, um eingehende Daten zu sehen.

Für Cloud-to-Device empfiehlt sich die Azure IoT SDK (nicht sehr Arduino-freundlich). Alternativ: Blogpost von Mohan Palanisamy (IoT Hub → MKR1000).
Ressourcen löschen, um Kosten zu vermeiden: AzurePrep Solution → ClearResources Projekt ausführen.
Nützliche Links & Tools
- Device Explorer: IoT Hub Tool
- Connect the Dots: Azure Sample Code
- MKR1000-Arduino Sketch: GitHub
- WiFi101 Firmware Updater: TLS Zertifikate Tool
- Event Hubs Signature Generator: RedDog Releases
Schaltplan
Kein MKR1000 Fritzing-Teil verfügbar – Foto der Verdrahtung:

Herstellungsprozess
- Arduino-Sensoren: Typen, Anwendungen und reale Projekte
- Feuchtesensoren: Funktionsweise und Hauptanwendungen
- DHT11 Sensor: Funktionsweise und Hauptanwendungen
- Automatisiertes Aeroponik-System mit Raspberry Pi und Feuchtigkeitssensor bauen
- Feuchtigkeitssensor verifizieren und kalibrieren für präzise Messungen
- DHT11 Temperatur- & Feuchtesensor mit LED-Anzeige & Piezo-Summer
- Arduino Temperatur- & Feuchtelogger mit DHT11 & Ethernet Shield
- Arduino Temperaturoverwachung & Echtzeituhr mit 3,2″ TFT-Display
- Sensorturm mit Arduino Cloud: Temperatur, Bewegung & Gase überwachen
- BME280 Temperatur, Luftfeuchte & Druck auf Nextion Touchscreen anzeigen