Skip to main content

Phase 3 - Programmation

Phase 3 - Programmation de la station

Objectifs

Compétences techniques:

  • Programmation pour stocker les valeurs de température et d'humidité dans la mémoire de l'Arduino Nano.

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

    •  

      Le code fini vous pouvez constater que le code vous renvoi la température en hexadécimale donc à vous de traduire cette température grâce à internet. 
    • 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

    • Ce code va nous permettre de stocker la température dans la mémoire de notre Arduino nano et tous ca toute les heures.
    • #include <SoftwareSerial.h>
      #include <DHT.h>
      #include <EEPROM.h>
      
      #define DHTPIN 9
      #define DHTTYPE DHT22
      
      DHT dht(DHTPIN, DHTTYPE);
      
      #define RX_PIN 3
      #define TX_PIN 4
      
      SoftwareSerial BTSerial(RX_PIN, TX_PIN);
      
      const int EEPROM_SIZE = 512; // Taille de l'EEPROM en octets
      const int ENTRY_SIZE = sizeof(float); // Taille d'une entrée en octets
      const int NUM_ENTRIES = EEPROM_SIZE / ENTRY_SIZE; // Nombre d'entrées que l'on peut stocker
      
      int currentAddress = 0; // Adresse actuelle pour stocker
      
      void setup() {
        Serial.begin(9600);
        BTSerial.begin(9600);
        dht.begin();
        Serial.println("Démarrage du système...");
      
        // Stocker des données dans l'EEPROM en mode circulaire
        for (int i = 0; i < NUM_ENTRIES; i++) {
          float temperature = dht.readTemperature();
          if (!isnan(temperature)) {
            EEPROM.put(currentAddress, temperature);
            currentAddress += ENTRY_SIZE;
            if (currentAddress >= EEPROM_SIZE) {
              currentAddress = 0; // Revenir au début si on dépasse la taille de l'EEPROM
            }
          }
          delay(3600000); // Attendre 1 heure entre chaque mesure
        }
      }
      
      void loop() {
        // Pas besoin de code dans loop pour cette démonstration
      }
      
        • Ce code va nous permettre de stocker la température dans la mémoire de notre Arduino nano et tous ca toute les heures.
        • après avoir stocker les température il faut les récupérer, voici le code :
          #include <EEPROM.h>
          
          const int EEPROM_SIZE = 512;
          const int ENTRY_SIZE = sizeof(float);
          const int NUM_ENTRIES = EEPROM_SIZE / ENTRY_SIZE;
          
          void setup() {
            Serial.begin(9600);
            Serial.println("Démarrage du système...");
          
            // Lire et afficher toutes les données stockées
            for (int i = 0; i < NUM_ENTRIES; i++) {
              int address = i * ENTRY_SIZE;
              float storedTemperature;
              EEPROM.get(address, storedTemperature);
              Serial.print("Température stockée à l'adresse ");
              Serial.print(address);
              Serial.print(": ");
              Serial.print(storedTemperature);
              Serial.println(" °C");
            }
          }
          
          void loop() {
            // Pas besoin de code dans loop pour cette démonstration
          }
          
           

                   3. Validation:

        • Vérification du programme pour s'assurer du bon fonctionnement.
        • Test du stockage des valeurs dans la mémoire EEPROM.

                   4. Conclusion:

        • Récapitulation des points clés de la séance.
        • Réponses aux questions éventuelles.

      Résolution de problèmes

      image.png

      • Ajouter la librairie à la main dans ArduinoIDE

      image.png

      • Vérifier la bonne installation de la librairie, dans "contributed libraries"

      image.png