Lecture d’un capteur SHT41 avec Arduino Pro Mini (3.3V, 8 MHz)
Description :
Le but de ce projet est de réaliser une station de mesure environnementale ultra-précise et compacte. Le choix s’est porté sur le capteur SHT41 de Sensirion, successeur du célèbre SHT3x, offrant une précision de ±1.8 % RH et ±0.2 °C.
Pour piloter ce capteur, l’Arduino Pro Mini en version 3.3V / 8 MHz est l’allié idéal : sa petite taille et l’absence de puce USB intégrée permettent de réduire la consommation électrique au minimum pour des applications sur batterie.
Prérequis :
- 1 x Module de port série USB 2.0 vers TTL FT232BL
- 1 x Carte Pro mini 3.3V 8MHz
- 1 × Module SHT41 I2C
- 1 x Breadboard
- Fils de connexion
Version IDE :
- Arduino IDE 2.3.5
Bibliothèque :
- Adafruit_Unified_Sensor (version: 1.1.15 par Adafruit)
- Adafruit_SHT4x.h (version: 1.0.5 par Adafruit)
- Adafruit BusIO (version: 1.7.14 par Adafruit)
Vidéo de démonstration :
Schéma de câblage :


Code :
#include <Wire.h>
#include <Adafruit_SHT4x.h>
Adafruit_SHT4x sht4 = Adafruit_SHT4x();
void setup() {
// Sur un Pro Mini 8MHz, assurez-vous que le moniteur série est bien sur 9600
Serial.begin(9600);
while (!Serial) delay(10);
Serial.println("Initialisation du SHT41...");
if (!sht4.begin()) {
Serial.println("Erreur : SHT41 introuvable !");
while (1) delay(1);
}
// --- PHASE DE NETTOYAGE ---
//Serial.println("Activation du chauffage pour stabilisation (1s)...");
// On chauffe à haute puissance pendant 1 seconde pour évaporer l'humidité
//sht4.setHeater(SHT4X_HIGH_HEATER_1S);
// On attend un peu que le capteur refroidisse après le chauffage
// pour ne pas fausser la première mesure de température
delay(2000);
// Réglage de la précision
sht4.setPrecision(SHT4X_HIGH_PRECISION);
Serial.println("SHT41 pret !");
}
void loop() {
sensors_event_t humidity, temp;
// Lecture du capteur
sht4.getEvent(&humidity, &temp);
// Affichage des valeurs
Serial.print("Temperature : ");
Serial.print(temp.temperature);
Serial.print(" C | ");
Serial.print("Humidite : ");
Serial.print(humidity.relative_humidity);
Serial.println(" %");
// On attend 5 secondes entre les lectures pour éviter l'auto-échauffement
delay(5000);
}
