Capteur DHT11 utilisant un Wemos D1 mini et envoi de données sur le canal ThingSpeak

Dans ce petit exemple, nous souhaitons vous montrer les capacités d'une carte Wemos D1 mini, en connectant un capteur de température et d'humidité DHT11 et en publiant toutes les mesures sur notre canal ThingSpeak, qui construira à chaque fois des graphiques avec les données fournies.

Contrairement à un Arduino Micro, le Wemos D1 mini est équipé de matériel pour la connexion WiFi à un prix plus qu'excellent.

Le Wemos D1 Mini dispose de 11 broches d'E/S numériques, d'une seule entrée analogique et toutes les broches d'E/S fonctionnent avec une tension d'alimentation de 3,3V ; la mémoire disponible est de 4 Mo.

Wemos D1 Mini

Wemos D1 Mini Pinout

Wemos D1 Mini Technical specifics

Le DHT11 est un module capteur composite d'humidité et de température. Le signal de sortie est calibré et contient à la fois les données de température et d'humidité. L'application de la technologie numérique de collecte de données et la technologie de détection de température et d'humidité, garantissent que le produit a une haute fiabilité et une excellente stabilité à long terme. Le capteur comprend une résistance sensible à l'humidité et un capteur de température NTC connectés à un microcontrôleur 8 bits.

Normalement, le DHT11 est utilisé comme un module déjà équipé de résistance et connectable directement au vdd ou 3v3. Le module DHT11 se présente comme dans l'image suivante :

Si nous ne voulions pas utiliser le module, mais plutôt le composant, de la même manière, nous pourrons utiliser une connexion comme la suivante en ajoutant une résistance appropriée.

Ci-dessous, quelques photographies du petit circuit que nous allons construire, j'espère qu'elles sont claires, de toute façon nous avons également inclus un schéma que vous trouverez plus bas

Circuit Wemos D1

Circuit Wemos D1

Circuit Wemos D1

Schéma de connexion Wemos D1 Capteur de température et d'humidité DHT11 ou DHT22

La broche du Wemos D1 Mini où nous avons connecté le DHT11 est le D5 qui correspond au 14 (Voir le pinout sur la photo et dans le code en bas).

Une brève description des composants et quelques photos des trois capteurs que nous allons connecter à notre microcontrôleur en utilisant une plaque ou breadboard de 400 points.

BREADBOARD 400 Points

La breadboard ou plaque, est le composant fondamental pour réaliser vos circuits car vous n'avez pas besoin de souder quoi que ce soit puisqu'elle vous permet de détacher et rattacher les composants en utilisant les petits trous.

Comme montré dans les photographies ci-dessous, les petits trous des lignes horizontales jusqu'à la ligne centrale de division sont électriquement connectés entre eux, tandis que les bandes verticales le long de la plaque sont généralement utilisées pour les connexions de masse (GND) et d'alimentation (VCC).

Breadboard plaque caractéristiques de fonctionnement, broches 

Breadboard plaque 400 points connexions   

PHOTO 3

CAPTEUR DE TEMPÉRATURE ET D'HUMIDITÉ RELATIVE DHT22

Le capteur DHT22, également appelé AM2302, détecte l'humidité relative et la température d'un environnement et les transmet numériquement via la broche "DATA". Généralement, les capteurs DHT22 sont déjà équipés d'une résistance et peuvent être connectés directement à VCC, mais si ce n'est pas le cas, pour un fonctionnement correct, il est recommandé d'ajouter toujours une résistance comprise entre 4.7K et 10Kohm entre VCC et la broche DATA.

Le capteur d'humidité est de type capacitif, utilise au maximum 2.5mA lors de la lecture et permet d'acquérir au maximum un échantillon toutes les 2 secondes.


La mesure de l'humidité varie de 0 à 100 % avec une précision typique de ±2 %.
En ce qui concerne la température, le DHT22 a une plage de mesure comprise entre -40 et +80°C avec une précision de ±0.5°C grâce au capteur DS18B20 intégré à l'intérieur.

Connexions DHT22

PHOTO 4

LISTE DE COURSES

Pour commencer, voici la liste de courses, vous trouverez tout sur notre site :

Maintenant, nous devrons créer un compte sur le site web de ThingSpeak – https://thingspeak.com. Une fois le compte créé, nous devrons configurer un canal pour visualiser les données publiées par notre dispositif et nous créerons trois champs, un pour la température, un autre pour l'humidité et le dernier pour le point de rosée que nous avons calculé en utilisant une fonction que vous verrez dans le code plus bas. Les champs de données détectés par notre capteur DHT11. L'écran apparaîtra comme suit :

Exemple de Paramètres de Canal ThingSpeak pour Température et Humidité Wemos D1 Mini

Enfin, il est très important d'obtenir la clé API d'écriture qui vous sera nécessaire, avec l'ID du canal, pour pouvoir écrire les données sur ThingSpeak.

Pour obtenir la clé API d'écriture, vous devez cliquer sur "Clés API" et ensuite copier la clé générée. (Par exemple : 44G47BGQSZ6TV2XO)

Vous pouvez également voir les relevés de nos dispositifs sur notre canal ThingSpeak - Exemple de Température MR WATT

Une fois le circuit terminé et vérifié que toutes les connexions sont en place, avant de charger le code dans le Wemos D1 Mini, vous devez entrer le SSID et le mot de passe de votre WiFi pour permettre la connexion à internet du dispositif et également l'ID du canal et la clé API d'écriture de votre compte ThingSpeak.

Pour pouvoir charger le code ci-dessous, vous devez télécharger l'IDE Arduino et, une fois installée, ajouter comme gestionnaire de cartes le Wemos D1, en entrant le lien suivant dans "Fichier" / "Paramètres" dans la boîte "URL supplémentaires pour le gestionnaire de cartes".

Ensuite, dans le menu "Outils", configurez les options comme dans la photo suivante :

Configuration de l'IDE Arduino pour Wemos D1 Mini

Code :

```html

#include
#include
#include
#include
#include
#include
#include // pour vérifier isNumber

// Paramètres WiFi
char ssid[] = ""; // le SSID de votre réseau (nom)
char pass[] = ""; // le mot de passe de votre réseau

float dewpt=0; // température du point de rosée

WiFiClient client;

// Initialiser le capteur DHT22
#define DHTPIN 14 // à quel pin numérique nous sommes connectés
// Décommentez le type que vous utilisez!
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)

// Connectez la broche 1 (à gauche) du capteur à +5V
// REMARQUE : Si vous utilisez une carte avec logique 3,3V comme un Arduino Due, connectez la broche 1
// à 3,3V au lieu de 5V!
// Connectez la broche 2 du capteur à la broche DHTPIN
// Connectez la broche 4 (à droite) du capteur à la MASSE
// Connectez une résistance de 10K de la broche 2 (données) à la broche 1 (alimentation) du capteur

// Initialiser le capteur DHT.
// Notez que les anciennes versions de cette bibliothèque prenaient un troisième paramètre optionnel pour
// ajuster les timings pour les processeurs plus rapides. Ce paramètre n'est plus nécessaire
// car l'algorithme de lecture DHT actuel s'adapte pour fonctionner sur des processeurs plus rapides.
DHT dht(DHTPIN, DHTTYPE);


// Paramètres ThingSpeak

unsigned long myChannelNumber = ; // Votre chaîne ThingSpeak
const char * myWriteAPIKey = "";


void setup() {
Serial.begin(9600);
Serial.println();
Serial.print("Sketch: "); Serial.println(__FILE__);
Serial.print("Chargé: "); Serial.println(__DATE__);
Serial.println(" ");
Serial.println("STATION MÉTÉO - Température avec capteur DHT22 - Alimenté par MR WATT");
Serial.println("BootStrap...");


// Nous commençons par nous connecter à un réseau WiFi
Serial.print("Connexion à ");
Serial.println(ssid);
WiFi.begin(ssid, pass);

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");

Serial.println("WiFi connecté");
Serial.println("Adresse IP: ");
Serial.println(WiFi.localIP());

pinMode(LED_BUILTIN, OUTPUT); // Initialiser la broche LED_BUILTIN comme sortie


// Test DHT22
Serial.println("Initialisation du DHT22...");
dht.begin();

// Initialiser ThingSpeak
ThingSpeak.begin(client);

}


void loop() {
// Attendre quelques secondes entre les mesures.
delay(5000);

float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
float dewpt = 0;

// Vérifier si des lectures ont échoué et sortir tôt (pour réessayer).
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Échec de la lecture du capteur DHT!");
return;
}
// Calculer l'indice de chaleur en Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex(temperature, humidity, false);

dewpt = (dewPoint(temperature, humidity));


Serial.print("t Température DHT22: ");
Serial.print(temperature);
Serial.print("C ");
Serial.print("t Humidité: ");
Serial.print(humidity);
Serial.print("%");
Serial.print("t Point de rosée: ");
Serial.print(dewpt);

// Écrire sur ThingSpeak
ThingSpeak.setField(1,temperature);
ThingSpeak.setField(2,humidity);
ThingSpeak.setField(3,dewpt);
ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);

delay(15000);
client.stop();

}


// Voici la fonction que l'interruption appelle pour incrémenter le compte de rotation
//---------------------------------------------------
////////////////////////////////////FONCTIONS////
//---------------------------------------------------


// Fonctions

// Imprimer le statut WiFi

void printWifiStatus() {
// imprimer le SSID du réseau auquel vous êtes connecté :
Serial.print("SSID: ");
Serial.println(WiFi.SSID());

// imprimer l'adresse IP de votre carte WiFi :
IPAddress ip = WiFi.localIP();
Serial.print("Adresse IP: ");
Serial.println(ip);

// imprimer la force du signal reçu :
long rssi = WiFi.RSSI();
Serial.print("force du signal (RSSI):");
Serial.print(rssi);
Serial.println(" dBm");
}

```


// Fonction du point de rosée
double dewPoint(double temperature, double humidity) //Calculer le point de rosée
{
double A0= 373.15/(273.15 + temperature);
double SUM = -7.90298 * (A0-1);
SUM += 5.02808 * log10(A0);
SUM += -1.3816e-7 * (pow(10, (11.344*(1-1/A0)))-1) ;
SUM += 8.1328e-3 * (pow(10,(-3.49149*(A0-1)))-1) ;
SUM += log10(1013.246);
double VP = pow(10, SUM-3) * humidity;
double T = log(VP/0.61078);
return (241.88 * T) / (17.558-T);
}

Vous trouverez le code sur GitHub ici


Résultats

Après quelques minutes de fonctionnement de notre dispositif, nous pourrons voir ce qui suit dans notre canal :

Thingspeak DHT11 Graphique d'humidité :

Graphique d'humidité Wemos D1 Mini

ThingSpeak DHT11 - Graphique Point de TempératureGraphique de Température Wemos D1 Mini

ThingSpeak Graphique du point de rosée

Graphique de Température DHT11 Wemos D1 Mini