Kit Capteur Température/Humidité DHT11 & DHT22 pour Raspberry Pi & Arduino
Composants et Fournitures
| Composant | Quantité | Remarques |
|---|---|---|
| Capteur DHT11 Température & Humidité (4 broches) | 1 | Mesure 20‑90 % HR, 0‑50 °C |
| Raspberry Pi 2 Modèle B | 1 | Plateforme test principale |
| Arduino UNO | 1 | Plateforme de comparaison |
| Fils Mâle-Mâle (Jumpers) | 3 | Connexions breadboard |
| Breadboard (standard) | 1 | Montage circuit |
| Résistance 4,7 kΩ | 1 | Pull-up bus OneWire |
| Kit Cobbler Breakout (RPi) | 1 | Interface GPIO vers breadboard |
Applications et Services
- Windows 10 IoT Core – OS cible pour RPi (C#)
- Arduino IDE – Pour sketch Arduino
- Raspbian (Raspberry Pi OS) – Linux sur RPi (C/C++)
- Visual Studio 2015 – Développement C#/C++ pour IoT Core
- WinSCP – Transfert fichiers vers RPi (SSH)
- PuTTY – Terminal SSH vers RPi
À Propos du Projet
Introduction
Le DHT11 est un capteur 4 broches (une inutilisée) mesurant humidité relative 20‑90 % et température 0‑50 °C. Alimentation 3‑5,5 V DC. Communication via protocole OneWire propriétaire nécessitant temporisation très précise : bits codés par durée d'état HAUT. Lecture complète ≤ 23,4 ms (dont 18 ms délai démarrage + 5,4 ms fenêtre données). Signaux individuels 20‑80 µs.
Contexte : Défi Windows 10 IoT Core
À la sortie de Windows 10 IoT Core, j'ai testé le DHT11 en C# sur Raspberry Pi 2. Échec : C# pas assez rapide pour le timing serré du OneWire. Échanges sur forum Microsoft → réponse indiquant support OneWire futur en C++. Microsoft a publié un exemple C++ utilisant DHT11 comme capteur d'exemple.
Ce projet transforme cet exemple C++ en bibliothèque utilisable en C# pour Windows 10 IoT Core.
Bibliothèque C# (Sensors.Dht)
Refactoring simple du code Microsoft original. Classe principale : Dht11 dans namespace Sensors.Dht.
Utilisation
using Sensors.Dht;
// Ouvrir broche GPIO (ex: GPIO 4)
GpioPin pin = GpioController.GetDefault().OpenPin(4, GpioSharingMode.Exclusive);
// Instancier capteur
Dht11 dht11 = new Dht11(pin, GpioPinDriveMode.Input); // Input = pull-up externe requis
// Lecture asynchrone
DhtReading reading = await dht11.GetReadingAsync().AsTask();
// Surcharge avec max retries (défaut 20)
Structure DhtReading
public value struct DhtReading {
bool TimedOut; // Échec après max retries
bool IsValid; // Checksum OK
double Temperature; // °C
double Humidity; // % HR
int RetryCount; // Tentatives effectuées
};
Observations & Comparaisons Multi-Plateformes
Même en C++, le capteur ne répond pas à chaque fois → nécessité mécanisme retry (inclus dans exemple Microsoft). Comparaison performances sur trois plateformes :
- Raspberry Pi 2 + Windows 10 IoT Core (C# – cette bibliothèque)
- Raspberry Pi 2 + Raspbian (C – wiringPi)
- Arduino Uno (C++ – IDE Arduino)
Codes sources pour chaque plateforme inclus dans le dépôt GitHub. Vidéo démonstrative compare les résultats.
Mise en Route – Câblage
Raspberry Pi 2 (avec Cobbler)
- Placer Cobbler en bout de breadboard (broches gauche E1/F1, droite E20/F20).
- Résistance 4,7 kΩ entre A4 et 3V3 (pull-up).
- Fil orange (signal) entre B4 et F28.
- Fil rouge (VCC) entre F29 et 3V3.
- Fil noir (GND) entre F30 et GND.
- Insérer DHT11 : broche – dans J30, + dans J29, signal dans J28.
- Connecter nappe Cobbler ↔ Raspberry Pi.
Arduino Uno
- Résistance 4,7 kΩ entre E12 et E13.
- Fil blanc (signal) entre D13 et Pin 5 Arduino.
- Fil rouge (VCC) entre D12 et 5V Arduino.
- Fil noir (GND) entre D11 et GND Arduino.
- Insérer DHT11 : – dans A11, + dans A12, signal dans A13.
- Brancher USB Arduino ↔ PC.



Lancement Applications
Raspberry Pi (Windows 10 IoT Core / Visual Studio)
- Configuration : Debug, ARM, Remote Machine.
- Propriétés projet → Debug → Remote Machine = IP du RPi, décocher « Use authentication ».
- F5 → déploiement (quelques minutes la 1re fois).
Arduino (IDE Arduino)
- Ouvrir sketch Dht11_Speed (GitHub).
- Téléverser (Ctrl+U).
- Ouvrir Moniteur Série (Ctrl+Shift+M).
Raspberry Pi (Raspbian / C)
- Copier
Dht11_Speed.csur RPi (ex: WinSCP). - Installer wiringPi :
sudo apt-get install wiringpi(ou compilation depuis source). - Compiler :
gcc -o Dht11_Speed Dht11_Speed.c -L/usr/local/lib -lwiringPi -std=c99 -lm - Exécuter :
sudo ./Dht11_Speed 1000 10(délai 1000 ms, 10 échantillons).
Vidéo Démonstration
Voir vidéo YouTube en mode Cinéma pour meilleure qualité.
Code Source
https://github.com/porrey/dht.git (Visual Studio 2015 C#/C++)
Schémas
- Fritzing RPi :
Dht11_RPi2.fzz+ images PNG - Fritzing Arduino :
Dht11_Arduino.fzz+ images PNG
Processus de fabrication
- Construire un enregistreur de température Raspberry Pi avec capteur I2C à 5 $
- Capteur de température infrarouge TMP006 avec Raspberry Pi : bibliothèque Python et guide de configuration
- Construire un capteur de température distant avec Raspberry Pi et Python – Guide étape par étape
- Comment connecter un capteur de température DS1820 One‑Wire à un Raspberry Pi via GPIO
- Comment connecter un thermomètre numérique DS18B20 One-Wire à un Raspberry Pi – Guide étape par étape
- Construire un système de surveillance température et lumière multi-capteurs avec Raspberry Pi et DS18B20
- Construire un moniteur de température domestique avec Raspberry Pi, MCP9808, InfluxDB et Grafana
- Connecter un Raspberry Pi 3 au capteur DHT11 et envoyer les données vers le cloud ThingsIo.ai
- Capteur température palier de précision : détection et surveillance précises