Test du shield SHT30 pour LoLin d1 mini, température et humidité en I2C (ESP8266) • Domotique et objets connectés à faire soi-même

Le Shield SHT30 pour l’ESP8266 LoLin d1 mini (WeMos) permet réaliser des mesures numériques de température et d’humidité via le bus I2C ce qui permet de réduire le câblage des projets. 

Le capteur de température et d’humidité DHT22 (et son petit frère le DHT11) sont omniprésents dans les tutoriels Arduino / ESP8266 / Raspberry Pi. Vus connaissez également très certainement de Dallas DS18b20 qui utilise le protocole 1-Wire. Avec ce nouveau shield, vous pourrez économiser une broche supplémentaire pour vos projets. Le Shield embarque le capteur miniature Sensirion SHT30.

Déballage du shield SHT30

Vendu moins de 4€ en direct d’Asie, le shield SHT30 est livré dans une pochette anti-statique. Contrairement aux autres Shields de la famille, il n’est livré qu’avec un seul type de connecteur au pas de 2.54mm.

Version 1.0 (moins de 2€) Version 2.1.0 (environ 4€)

Deux adresses sont disponibles 0x44 et 0x45 qui peut être sélectionné à l’aide d’un Jumper présent à coté du capteur. L’adresse par défaut est 0x44. Depuis la version 2.0.0, il est possible de déporter la sonde de température en la détachant du Shield. Il suffira ensuite de connecter la sonde au bus I2C à l’aide d’un câble 4 brins (+3V, GND, SDA, SCL) au format JST SH 1.0mm 4 broches. La sonde pourra être fixée à l’aide d’un perçage de 2mm de diamètre.

Shield, breakouts et modules M5Stack

Le SHT30 est disponible sous la forme du shield pour LoLin d1 mini, breakout pour projets ESP32, ESP8266 ou Raspberry Pi, module M5Stack.

Consulter

Shield SHT30 pour LoLin d1 mini (WeMos)

Breakout SHT30 pour ESP32, ESP8266, Raspberry Pi

Module SHT30 I2C compatible M5Stack

Caractéristiques techniques

La documentation technique du fabricant Sensirion est disponible ici. Le SHT30 (et son grand frère, le SHT31) permet de mesurer la température dans une plage de -40°C à +125°C. L’humidité peut être mesurée de 0 à 100%. La précision de mesure varie en fonction de la température. Autour de l’ambiant (de -10°C à +55°C), la précision de mesure de la température est de ±0,3°C.

Source : https://www.wemos.cc/sites/default/files/2016-11/SHT30-DIS_datasheet.pdf

Montage du Shield SHT30 sans soudure :

Lorsque j’ai eu le shield dans mes mains, j’ai trouvé dommage de souder les connecteurs. J’ai donc essayé d’étamer les bords des broches GND, 3V3, D1 et D2 (utilisées par le bus I2C). J’ai ensuite empilé la carte sur un Shield OLED. On obtient ainsi une assemblage extrêmement compact. De bas en haut :

Attention. Le montage sans soudure peut empêcher le Shield SHT30 de fonctionner correctement. En cas de problème, revenez à un montage classique

Installer la librairie SHT30 sur IDE Arduino

Wemos a mis a disposition une librairie que l’on peut récupérer sur GitHub ici. Téléchargez d’abord le dépôt avant de le décompresser dans le dossier Library de l’IDE Arduino. Relancez l’IDE pour que ce dernier prenne en compte la librairie.

Programme de base

Un exemple basique SHT30_Shield.ino est livré avec la librairie. Il montre comment récupérer la mesure de température et d’humidité. On appel la librairie WEMOS_SHT3X en début de programme

#include 

Par défaut, le SHT30 est accessible à l’adresse 0x45. Pour utiliser l’adresse 0x44, il faudra faire un point de soudure sur le jumper ADDR

SHT3X sht30(0x45);

Ensuite, il suffit d’appeler la fonction sht30.get()  pour récupérer les mesures. On dispose enfin de trois classes publiques qui permettent de récupèrer les mesures :

  • sht30.cTemp pour la température en Celcius
  • sht30.fTemp pour avoir la température en Fahrenheit
  • sht30.humidity pour l’humidity
#https://github.com/wemos/WEMOS_SHT3x_Arduino_Library
#include 
SHT3X sht30(0x45);

void setup() {
  Serial.begin(115200);
}

void loop() {
  sht30.get();
  Serial.print("Temperature in Celsius : ");
  Serial.println(sht30.cTemp);
  Serial.print("Temperature in Fahrenheit : ");
  Serial.println(sht30.fTemp);
  Serial.print("Relative Humidity : ");
  Serial.println(sht30.humidity);
  Serial.println();
  delay(1000);
}

Le Shield étant installé en dessous d’un Shield OLED (présenté précédemment), je vous propose un petit programme permettant d’afficher la température et l’humidité sur ce dernier. Pour fonctionner, il est nécessaire d’inclure manuellement la librairie Adadruit_SSD1306 modifiée par Mike Causer disponible sur Github ici.

Après compilation, voici à quoi ressemblera la sonde

/*
 * SHT30 Shield for Wemos d1 mini
 * - Read temperature and humidity
 * - Display value on OLED Shield (64x48 pixels) 
 *  
 * - Lit la température et l'humidité sur le capteur 
 * - Affiche les mesures sur l'écran OLED (64x48 pixels)
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see .
 * 
 * Licence : MIT
 * Copyright (C) 2017 : www.projetsdiy.fr and www.diyprojects.io
 */
#include 
#include 
#include 
#include "Adafruit_SSD1306.h"
#include 

#define OLED_RESET 0  // GPIO0
Adafruit_SSD1306 display(OLED_RESET);
SHT3X sht30(0x45);

void setup() {
  Serial.begin(115200);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3C (for the 64x48)
  display.display(); 
}

void loop() {
  sht30.get();  
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0,0);

  display.println("- SHT30 -");
  display.print("T ");
  display.print(sht30.cTemp);
  display.println(" *C");

  display.print("H ");
  display.print(sht30.humidity);
  display.println(" %");
  display.println("");
  display.println("projetsdiy");
  display.display();
  delay(2000);
}

Le Shield SHT30 a donc de nombreux atouts. Son prix est équivalent au Shield DHT22 (environ 2,90€ au lieu de 2,77€). Il utilise le bus I2C pour communiquer avec la LoLin – Wemos ce qui permet d’économiser une broche. Enfin, le Shield est extrêmement compact. Il pourra être intercalé entre 2 autres shields. Petit bémol pour les débutants, ce capteur étant moins répondu, vous trouverez moins d’exemples et aucun plugin ESP Easy n’a encore été développé.

Tous les shields compatibles LoLin d1 mini

La liste détaillée et les informations techniques des cartes d’extension pour L’ESP8266 LoLin d1 mini sont mises à jour régulièrement sur cette page.

Avez-vous aimé cet article ?