Station météo indoor avec écran OLED

Mesure température et humidité de la pièce et affiche les valeurs sur un petit écran OLED. Parfait pour apprendre les capteurs DHT et l’affichage.

Arduino Débutant Arduino / C++

Schémas et photos

Le montage

Station météo indoor

Projet simple et très pédagogique pour découvrir :

  • Le capteur DHT11 / DHT22
  • L’écran OLED 0.96" (I2C)
  • La bibliothèque Adafruit SSD1306

Fonctionnement

Toutes les 2 secondes le système mesure la température et l’humidité, puis met à jour l’écran.

Améliorations possibles

  • Ajouter un bouton pour changer d’unité (°C / °F)
  • Enregistrer les min/max de la journée
  • Ajouter un buzzer d’alerte si température trop haute

Liste de composants

Composants nécessaires, quantités et prix indicatifs en francs CFA.
Composant Qté Prix unitaire Sous-total
Breadboard + fils 1 1 000 FCFA 1 000 FCFA
Arduino Nano 1 3 500 FCFA 3 500 FCFA
Capteur DHT22 (AM2302) 1 2 200 FCFA 2 200 FCFA
Écran OLED 0.96 pouce I2C SSD1306 1 2 800 FCFA 2 800 FCFA
Total 9 500 FCFA

Code

station_meteo.ino

Télécharger

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>

#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

void setup() {
  Serial.begin(9600);
  dht.begin();
  
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("Écran OLED non trouvé"));
    for(;;);
  }
  display.clearDisplay();
  display.setTextColor(SSD1306_WHITE);
}

void loop() {
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  if (isnan(h) || isnan(t)) {
    Serial.println("Erreur lecture DHT");
    return;
  }

  display.clearDisplay();
  display.setTextSize(1);
  display.setCursor(0,0);
  display.println("Station Meteo");
  
  display.setTextSize(2);
  display.setCursor(0, 20);
  display.print(t, 1);
  display.println(" C");
  
  display.setCursor(0, 45);
  display.print(h, 0);
  display.println(" %");
  
  display.display();
  delay(2000);
}

Code sous licence MIT, documentation sous CC BY 4.0.

Ils l'ont reproduit

C'est le signal le plus utile de la page : un montage que quelqu'un a refait chez lui, ce n'est pas la même chose qu'un montage qui a l'air de marcher.

Connectez-vous pour dire que vous avez reproduit ce projet.

Personne ne l'a encore refait. Si vous le montez, revenez le dire.

Questions

Aucune question pour l'instant. Si quelque chose n'est pas clair dans ce montage, demandez : la réponse servira à d'autres.

Connectez-vous pour poser une question ou répondre.

Partager