Télécharger les données du capteur DHT11 vers ThingSpeak avec Arduino MKR1000
Composants et fournitures
| Composant | Quantité |
|---|---|
| Capteur de température et d'humidité DHT11 (4 broches) | 1 |
| Arduino MKR1000 | 1 |
À propos de ce projet
J'avais déjà développé un code pour l'ESP8266 12-E afin de récupérer les données environnementales du capteur DHT11 et de les envoyer sans fil vers le site ThingSpeak pour y être graphiques. Il ne me restait plus qu'à apporter quelques modifications mineures pour le faire fonctionner avec le nouvel Arduino MKR1000.
Étape 1 : Connexion du capteur
Connectez la broche de données du DHT11 à la broche 1 du MKR1000 (étiquetée « 1 » au dos de la carte).
Étape 2 : Installation des bibliothèques
Téléchargez les bibliothèques suivantes :
- Bibliothèque WiFi101 : GitHub WiFi101
- Bibliothèque DHT (Adafruit) : Apprendre Adafruit DHT
Étape 3 : Configuration du gestionnaire de cartes
Dans l'IDE Arduino :
- Allez dans Outils > Carte > Gestionnaire de cartes
- Recherchez « Arduino SAMD Boards (32-bits ARM Cortex M0+) »
- Installez la version 1.6.3 (la version 1.6.4 posait des problèmes d'installation de la carte MKR1000)
Étape 4 : Configuration ThingSpeak
- Créez un compte gratuit sur ThingSpeak.com
- Configurez les champs pour afficher l'humidité et les températures
- Copiez votre clé API « Write » dans le sketch fourni, ainsi que votre SSID WiFi et votre mot de passe
Étape 5 : Téléchargement et exécution
- Sélectionnez le bon port COM (celui du MKR1000)
- Compilez et téléversez le code
- Ouvrez le moniteur série : vous devriez voir les mises à jour envoyées à ThingSpeak
Code
Sketch combinant la bibliothèque DHT d'Adafruit, le client Web WiFi101 et le modèle Arduino ThingSpeak. Modifié par Stephen Borsay pour le MKR1000.
/* Ce sketch combine le sketch DHT d'Adafruit, le client Web WiFi101 et l'exemple Arduino de ThingSpeak
Modifié par Stephen Borsay pour le MKR1000, libre d'utilisation */
#include <SPI.h> // Non nécessaire car on n'utilise pas le shield mais la puce intégrée
#include <WiFi101.h>
#include "DHT.h"
#define DHTPIN 1 // Broche de connexion (broche 1 = 5ème broche depuis l'extrémité)
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT21 // DHT 21
//#define DHTTYPE DHT22 // DHT 22
DHT dht(DHTPIN, DHTTYPE);
String apiKey = "YourApiKeyHere"; // Clé API ThingSpeak
char ssid[] = "YourSSIDHERE"; // Nom du réseau WiFi (SSID)
char pass[] = "YourPasswordHere"; // Mot de passe WiFi
int keyIndex = 0; // Index de clé réseau (nécessaire seulement pour WEP)
char server[] = "api.thingspeak.com";
WiFiClient client;
void setup() {
Serial.begin(9600);
while (!Serial) { ; } // Attente ouverture port série (USB natif)
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("Shield WiFi non présent");
while (true);
}
while (WiFi.status() != WL_CONNECTED) {
Serial.print("Tentative de connexion au SSID : ");
Serial.println(ssid);
WiFi.begin(ssid, pass); // Connexion WPA/WPA2
delay(10000);
}
Serial.println("Connecté au WiFi");
printWifiStatus();
}
void loop() {
delay(2000); // Pause entre mesures
int h = dht.readHumidity();
int t = dht.readTemperature(); // Celsius
int f = dht.readTemperature(true); // Fahrenheit
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Échec lecture capteur DHT !");
return;
}
int hif = dht.computeHeatIndex(f, h);
int hic = dht.computeHeatIndex(t, h, false);
Serial.print("Humidité: "); Serial.print(h); Serial.print(" %\t");
Serial.print("Température: "); Serial.print(t); Serial.print(" *C ");
Serial.print(f); Serial.print(" *F\t");
Serial.print("Indice de chaleur: "); Serial.print(hic); Serial.print(" *C ");
Serial.print(hif); Serial.println(" *F\n");
Serial.println("\nConnexion au serveur...");
if (client.connect(server, 80)) {
Serial.println("Connecté au serveur");
String tsData = "field1=" + String(h) + "&field2=" + String(t) + "&field3=" + String(f) + "&field4=" + String(hic) + "&field5=" + String(hif);
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(tsData.length());
client.print("\n\n");
client.print(tsData);
client.stop();
delay(1000);
}
}
void printWifiStatus() {
Serial.print("SSID: "); Serial.println(WiFi.SSID());
IPAddress ip = WiFi.localIP();
Serial.print("Adresse IP: "); Serial.println(ip);
long rssi = WiFi.RSSI();
Serial.print("Force du signal (RSSI): "); Serial.print(rssi); Serial.println(" dBm");
}
Schémas
Connectez la broche de données du DHT à la broche 1 du MKR1000 (5ème broche en partant du haut). Alimentez le capteur en 5V et GND depuis le MKR1000.
Processus de fabrication
- PicoCoreMX8MM : module ARM ultra-compact propulsé par NXP i.MX 8M Mini
- Kontron dévoile COM HPC : nouveau standard embarqué haute performance
- Breakout compact DHT Température & Humidité pour Raspberry Pi – ATtiny85 & DHT22/DHT11
- Construire un moniteur de température ThingSpeak avec Raspberry Pi et BrickPi
- Réaliser votre premier projet IoT avec Raspberry Pi, DHT11 et ThingSpeak
- Brochage MKR1000 : La Carte de Référence pour le Développement IoT
- Parts.Cat.Com : Simplifiez l'Approvisionnement en Pièces et Gagnez du Temps et de l'Argent
- Shop.Cat.Com : Votre ressource unique pour équipements, accessoires et outils
- Optimiser machines Cat® : guide ultime My.Cat.com