Suffisant est le capteur DHT11 bon marché mais peu précis, pas mieux que le degré et le pourcent. L'affichage est fourni par un écran Oled 128x32 I2C et le contrôle s'effectue par un Arduino UNO.
Connections
- Oled 128x32 SDA --> A4 SCL-->A5
- DHT11 data--> pin 2 Vcc--> pin 3 GND--> pin 4 voir le setup
Exemple d'impression ratée avec un filament contenant de l'humidité car stocké à l'air libre et humide de l'automne. D'où la nécessité de sécher les filaments pendant le stockage.
Sketch Arduino
/**** UNO_DHT11_Oled12832_SL02.ino *******
* DHT Temperature & Humidité
* slazare 2020 03 17
*/
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#define GND 4 //pin utilisée par le capteur DHT11
#define Vcc 3 //pin utilisée par le capteur DHT11
#include <U8g2lib.h>
U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C lcd(U8G2_R0, /* reset=*/ U8X8_PIN_NONE, /* clock=*/ SCL, /* data=*/ SDA); // pin remapping with ESP8266 HW I2C
#define DHTPIN 2 // Pin which is connected to the DHT sensor.
// Uncomment the type of sensor in use:
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301
DHT_Unified dht(DHTPIN, DHTTYPE);
uint32_t delayMS;
void setup() {
Serial.begin(9600);
pinMode (3, OUTPUT); pinMode(4, OUTPUT); digitalWrite(3, HIGH); digitalWrite(4,LOW);
//Initialize lcd
lcd.begin();
// Initialize device.
dht.begin();
sensor_t sensor;
dht.temperature().getSensor(&sensor);
dht.humidity().getSensor(&sensor);
delayMS = sensor.min_delay / 1000;
}
void loop() {
// Delay between measurements.
delay(delayMS);
// Get temperature event and print its value.
sensors_event_t event;
// Get humidity event and print its value.
dht.humidity().getEvent(&event);
if (isnan(event.relative_humidity)) {
//Serial.println("Error reading humidity!"); //pour debbug
}
else {
//Serial.print("Humidity: "); //pour debbug
//Serial.print(event.relative_humidity); //pour debbug
//Serial.println("%"); //pour debbug
lcd.clearBuffer();
lcd.setFont(u8g2_font_logisoso32_tr);
lcd.setCursor(0,32);
dht.humidity().getEvent(&event);
String relhString = String(event.relative_humidity);
relhString = relhString.substring(0,2); //précision moins de 1% inutile
lcd.print(relhString); lcd.print("%");
dht.temperature().getEvent(&event);
String tempString = String(event.temperature);
tempString = tempString.substring(0,2); //précision moins de 1% inutile
lcd.print(tempString); lcd.print("°C");
lcd.sendBuffer();
}
}
Résultats
Le dispositif de mesure est placé dans la boîte étanche utilisée pour le stockage de la bobine et l'atmosphère intérieure est desséchée par 500 g de gel de silice. Après environ 15 minutes d'attente, le degré d'hygrométrie se stabilise aux alentours de 16% ce qui montre que le desséchant fait bien son travail et que l'atmosphère intérieure est suffisamment sèche pour conserver dans de bonnes conditions les filaments tels que le PLA. Il est très intéressant d'utiliser un module bluetooth HC06 pour communiquer les résultats à une unité centrale extérieure à la Dry Box, surtout si celle-ci n'est pas faite d'un matériaux translucide. A suivre donc...
Autres capteurs plus précis
- DHT22 T only and precision 0.1 C environ 3€
- BMP180 P T et H
- BME680 P T et H et VOC
- SHT21 module GY-21 T et H
- HTU21D T et H
- CCS811 HDC1080 dioxyde de carbone CO2 capteur de température et d'humidité cov moniteur de qualité de l'air capteur Module enrouleur T et H