MKR1000 avec DHT22 : Surveillance température/humidité temps réel vers Azure
Composants et fournitures
| Composant | Quantité |
|---|---|
| Arduino MKR1000 | 1 |
| Capteur température/humidité DHT22 | 1 |
Applications et services en ligne
- Microsoft Azure (Event Hubs / IoT Hub)
- Arduino IDE
- Microsoft Visual Studio 2015 (Community gratuit)
À propos de ce projet
Paul DeCarlo a publié un excellent article sur l'envoi de données météo d'un Particle Photon vers Microsoft Azure. Je voulais reproduire cela avec le nouvel Arduino MKR1000.
Le Photon utilise un webhook pour envoyer les données du cloud Particle vers Azure. Comme le MKR1000 supporte HTTPS nativement, les données peuvent être envoyées directement vers Azure. Ce guide connecte votre MKR1000 à Azure et réutilise une grande partie du code serveur du projet Microsoft Connect the Dots.
Matériel
Un capteur DHT22 mesure température et humidité. Le DHT11 est aussi supportable par modification du code. Câblage sur breadboard :
- Pin 1 (VCC) → 3,3V du MKR1000
- Pin 2 (DATA) → Pin 6 du MKR1000, avec résistance de tirage 10 kΩ vers 3,3V
- Pin 3 (NC) → non connecté
- Pin 4 (GND) → GND du MKR1000
Plus d'infos sur le DHT22 : Tutoriel Adafruit.
Arduino IDE
- Gestionnaire de cartes : installez la carte « Arduino SAMD Boards » (inclut MKR1000).
- Gestionnaire de bibliothèques : installez « WiFi101 », « DHT sensor library », « ArduinoJson », « RTCZero ».
HTTPS et certificats
Le MKR1000 supporte HTTPS mais la mémoire limitée impose d'installer manuellement les certificats des sites visités. Deux étapes :
- Téléversez le sketch « Firmware Updater » (fourni avec la librairie WiFi101) sur la carte.
- Téléchargez WiFi101 Firmware Updater, décompressez, lancez
winc1500-uploader-gui.exe. - Le certificat HTTPS pour Azure Event Hubs est émis pour
servicebus.windows.net. Entrezctd-ns.servicebus.windows.netdans l'outil, choisissez le port COM, et uploadez les certificats.
Sketch Arduino
- Clonez/téléchargez le sketch depuis GitHub.
- Éditez l'onglet
ssid: renseignez votre SSID et mot de passe Wi‑Fi. - Téléversez sur le MKR1000.
- Ouvrez le moniteur série : vérifiez l'envoi des données vers Azure.
Le sketch réutilise un Event Hub public du projet Connect the Dots. Visualisez les données sur connectthedotsdx.azurewebsites.net. Vos données seront mélangées à d'autres capteurs. Pour les différencier, modifiez displayname ou guid dans la fonction createJSON().
Créer votre propre Event Hub
Pour un Event Hub dédié : Visual Studio 2015 Community (gratuit) + abonnement Azure (essai gratuit possible).
- Clonez Connect the Dots :
git clone https://github.com/Azure/connectthedots.git - Ouvrez la solution
AzurePrepdansconnectthedots\Azure\AzurePrep. Exécutez en mode Release. - Connectez-vous à Azure, autorisez l'accès, répondez aux questions du terminal pour créer les ressources. Nommez-les
ctd<vos_initiales>(ex:ctddc). - Dans Visual Studio, lancez la cible
CreateWebConfigdu projet AzurePrep. Un fichierweb.configest généré sur le Bureau. - Copiez
web.configdansconnectthedots\Azure\WebSite\ConnectTheDotsWebSite. - Ouvrez la solution
ConnectTheDotsWebsitedansconnectthedots\Azure\WebSite. Ajoutezweb.configau projet (clic droit → Add → Existing Item). - Exécutez le site dans Microsoft Edge. Aucune donnée n'apparaîtra tant que le sketch MKR1000 n'est pas mis à jour.
Générer la clé SAS pour l'Event Hub
- Téléchargez Event Hubs Signature Generator (RedDog).
- Renseignez : namespace (ex:
ctddc-ns), hub name (ehdevices), publisher/sender key name (D1), Token TTL (ex: 525600 minutes = 1 an). - Dans le portail Azure (ancien) : Event Hubs → votre namespace →
ehdevices→ Configure → copiez la clé primaire pourD1. - Collez la clé dans l'outil Signature Generator, cliquez Generate → copiez la signature générée.
- Dans le sketch Arduino, remplacez
hostname[]parctddc-ns.servicebus.windows.netetauthSAS[]par la signature. - Téléversez le sketch mis à jour. Vérifiez le moniteur série. Actualisez le site web : vos données apparaissent.
IoT Hub (alternative plus récente)
Azure IoT Hub est plus récent qu'Event Hub et peut être plus adapté. Il supporte device-to-cloud (comme ce projet) et cloud-to-device.
- Créez un IoT Hub dans le portail Azure.
- Téléchargez Device Explorer (
SetupDeviceExplorer.msi). - Dans le portail : IoT Hub → clé d'accès (icône clé) →
iothubowner→ copiez la chaîne de connexion (clé primaire). - Dans Device Explorer : collez la chaîne de connexion → Update → onglet Management → Create → Device ID
D1→ Create. - Sélectionnez
D1→ SAS Token → générez un token. - Dans le sketch Arduino :
char hostname[] = "votrehub.azure-devices.net";
char authSAS[] = "SharedAccessSignature sr=votrehub.azure-devices.net%2fdevices%2fD1&sig=...&se=...";
String deviceName = "D1";
String uri = "/devices/" + deviceName + "/messages/events?api-version=2016-02-03";
- Modifiez la vérification de réponse dans
sendEvent(): Event Hub renvoie HTTP 201, IoT Hub renvoie HTTP 204.
// Remplacez :
if (response.startsWith("HTTP/1.1 201"))
// Par :
if (response.startsWith("HTTP/1.1 204"))
- Téléversez. Dans Device Explorer, onglet Data → Monitor pour voir les données arrivant dans l'Event Hub.
Ce projet utilise HTTP POST pour l'envoi device-to-cloud. Des bibliothèques Azure IoT Hub existent pour Arduino mais ne sont pas encore très « Arduino-like ». Pour recevoir des données du cloud, elles peuvent aider. Voir aussi l'article de Mohan Palanisamy sur l'envoi de données IoT Hub vers MKR1000.
Pensez à supprimer/désactiver les ressources Azure inutilisées pour éviter des frais. Le projet AzurePrep inclut un projet ClearResources pour nettoyer.
Ressources et outils
- Device Explorer (IoT Hub) : GitHub
- Connect the Dots (code exemple Azure) : GitHub
- MKR1000-Arduino (sketch source) : GitHub
- WiFi101 Firmware Updater (certificats TLS) : GitHub
- Event Hubs Signature Generator (clés Azure) : GitHub
Schémas
Photo du câblage fournie (pas de pièce Fritzing MKR1000). Voir détails dans le texte.
Processus de fabrication
- Capteurs Arduino : Types, Applications et Projets Réels
- Capteurs d'humidité : Fonctionnement et applications clés
- Capteur DHT11 : Fonctionnement et applications clés
- Construire un système aéroponique automatisé avec Raspberry Pi et capteur d'humidité
- Vérifier et calibrer votre capteur d'humidité pour des mesures précises
- Projet capteur DHT11 température/humidité avec indicateurs LED et buzzer piézo
- Enregistreur de Température et Humidité Arduino avec DHT11 et Shield Ethernet
- Moniteur de Température et Horloge Temps Réel Arduino avec Écran TFT 3.2"
- Tour de Capteurs avec Arduino Cloud : Température, Mouvement et Gaz