Fonctionnement et programmation des composants

-------------------------- Début de la nouvelle page

Objectif :

Comprendre le fonctionnement des composants du projet et apprendre à les programmer

1. Introduction à l'Arduino Nano 

Qu'est-ce qu'un Arduino ?

https://innovation.iha.unistra.fr/books/robotique-educative/page/quest-ce-que-larduino

2. Capteur de température et d'humidité (DHT22)

Qu'est ce qu'un capteur de température et d'humidité (DHT22) et comment il fonctionne ?

https://innovation.iha.unistra.fr/books/robotique-educative/page/fonctionnement-et-programmation-du-capteur-de-temperature-et-dhumidite-dht22/edit

 

3. Ecran OLED 

Qu'est ce qu'un écran OLED et comment il fonctionne ?

-------------------------- page de base en dessous

Objectifs

Compétences techniques:

Déroulement de la séance

  1. Introduction:

    • Présentation des éléments nécessaires pour la programmation.
    • Importance de la programmation dans le projet de station météo.
  2. Programmation:

    • Commençons par la programmation sur Mblock.
    • N'oubliez pas d'installer l'extension pour le capteur en cliquant sur ce boutonimage.png,puis taper dans la barre de recherche "DHT22" et ensuite juste besoin de l'ajouter.

      image.png

    •  

      Maintenant vous avez juste besoin de faire le code qui permet de mesuré la température grâce au DHT 22 et qui la renvoie sur le moniteur série.
    • image.png

    • Avant de téléverser le code n'oubliez pas de décocher ces 2 cases ci-dessous qui se situe dans le moniteur série.

    •  

      image.png

    • Pour la suite nous allons passer sur le logiciel "Arduino IDE" car il nous offre plus de possibilités.
    • Dans un premier temps télécharger la librairie Arduino DHT de Adafruit https://www.arduino.cc/reference/en/libraries/dht-sensor-library/ 
      • bien installer la dépendance Adafruit Unified Sensor

image.png

#include <SoftwareSerial.h>
#include <DHT.h>
#include <EEPROM.h>

#define DHTPIN 9
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);

const int EEPROM_SIZE = 512;          // Taille de l'EEPROM en octets
const int ENTRY_SIZE = sizeof(float) * 2; // Taille d'une entrée (température + humidité)
const int NUM_ENTRIES = EEPROM_SIZE / ENTRY_SIZE; // Nombre total d'entrées possibles

int currentAddress = 0; // Adresse actuelle pour stocker
bool storageFull = false; // Indique si l'EEPROM est pleine

unsigned long previousMillis = 0; // Dernier temps de stockage
const unsigned long interval = 3600000; // Intervalle d'une heure (en millisecondes)

void setup() {
  Serial.begin(9600);
  dht.begin();
  Serial.println("Démarrage du système...");
}

void loop() {
  unsigned long currentMillis = millis();

  // Vérifie si une heure s'est écoulée
  if (!storageFull && currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;

    // Lecture des données du capteur
    float temperature = dht.readTemperature();
    float humidity = dht.readHumidity();

    if (!isnan(temperature) && !isnan(humidity)) {
      // Vérifie si suffisamment d'espace reste dans l'EEPROM
      if (currentAddress + ENTRY_SIZE <= EEPROM_SIZE) {
        // Stocker la température
        EEPROM.put(currentAddress, temperature);
        currentAddress += sizeof(float);

        // Stocker l'humidité
        EEPROM.put(currentAddress, humidity);
        currentAddress += sizeof(float);

        // Affichage des données
        Serial.print("Données stockées à l'adresse ");
        Serial.print(currentAddress - ENTRY_SIZE);
        Serial.print(": Température = ");
        Serial.print(temperature);
        Serial.print(" °C, Humidité = ");
        Serial.println(humidity);
      } else {
        storageFull = true; // Indiquer que l'EEPROM est pleine
        Serial.println("EEPROM pleine. Arrêt du stockage.");
      }
    } else {
      Serial.println("Erreur de lecture du capteur DHT22.");
    }
  }
}

             3. Validation:

             4. Conclusion:

Résolution de problèmes

image.png

image.png

image.png


Revision #20
Created 14 February 2024 08:19:54 by Quentin Petrazoller
Updated 9 May 2025 08:25:14 by Gaëtan Carron