Club Robotique collège Cycle 2 - Station de mesure (T°, H)

Phase 1 Conception (2 séances)

Phase 1 - Conception

Objectifs

Compétences techniques:

Savoir-être, compétences transversales:

Déroulement de la séance:

  1. Consignes: Sécurité, précautions matériel

    • Travail individuel.

    • Rappel: Tout est fragile.

  2. Phases et méthodes d’animation a. Présentation de l'activité du jour

    • Objectifs rappelés.

    • Importance de la modélisation 3D dans le projet.

  3. Prendre en main le logiciel TinkerCad

    • Démonstration interactive.

    • Manipulation guidée des outils de base.

  4. La conception du fichier :

Création du Boîtier Principal:

Création du Passage pour le Capteur:

Conception du Capot:

Ajustements Finaux:

Validation et Export:


Conclusion / Rangement / Démontage:

Phase 2 - Impression 3D

Phase 2 - Impression 3D

Objectifs :

Compétences techniques :

Savoir-être et compétences transversales :

Déroulement de la séance :

Conclusion / Rangement :

Dans cette phase, les participants vont apprendre à préparer leur modèle 3D pour l'impression en utilisant le logiciel Cura. Ils vont importer leur fichier STL, ajuster les paramètres d'impression, générer le code pour l'imprimante 3D et exporter le fichier prêt pour l'impression. Si des questions se posent ou si vous avez besoin de plus d'informations, n'hésitez pas à demander !

Phase 3 - Câblage et Programmation

Phase 3 - Câblage et Programmation de la station

Objectifs

Compétences techniques:

Déroulement de la séance

  1. Introduction:

    • Présentation des éléments nécessaires pour le câblage et la programmation.
    • Importance du câblage et de la programmation dans le projet de station météo.
  2. Câblage:

    • Branchement de l'Arduino Nano au Sensor Shield.
    • Connexion du capteur de température (DHT-11 ou DHT-22) aux broches spécifiques :
      • VCC sur une pin 5V.
      • DAT sur la pin 2.
      • GND sur une pin GND.
      • image.png

  3. Programmation:

image.png

    • Déclaration des librairies nécessaires et des adresses de stockage dans la mémoire EEPROM.
    • #include <DHT.h>
      #include <EEPROM.h>
      
      #define DHTPIN 2        // La broche à laquelle le capteur DHT est connecté
      #define DHTTYPE DHT22   // Type de capteur DHT (DHT11 dans cet exemple)
      
      void setup(){
      Serial.begin(9600);
      
      } 
      
      DHT dht(DHTPIN, DHTTYPE);
      
      int adresseEEPROM = 0; // Adresse de la mémoire EEPROM pour stocker la température (partie entière)
      int adresseDecimaleEEPROM = 1; // Adresse suivante pour stocker la partie décimale
      int adresseHumiditeEEPROM = 2; // Adresse suivante pour stocker l'humidité (partie entière)
      int adresseDecimaleHumiditeEEPROM = 3; // Adresse suivante pour stocker la partie décimale de l'humidité
    • Fonctionnement de la fonction loop pour mesurer la température et l'humidité.
    • Stockage des valeurs dans la mémoire EEPROM avec gestion des adresses.
    • Réinitialisation des adresses lorsque la mémoire est pleine.
    • void loop() {
        // Mesurer la température et l'humidité
        float temperature = dht.readTemperature();
        float humidite = dht.readHumidity();
      
        // Vérifier si les mesures sont valides
        if (!isnan(temperature) && !isnan(humidite)) {
          // Stocker la température en interne (partie entière à adresse, partie décimale à adresseDecimaleEEPROM)
          EEPROM.write(adresseEEPROM, int(temperature));
          EEPROM.write(adresseDecimaleEEPROM, int((temperature - int(temperature)) * 100));
      
          // Stocker l'humidité en interne (partie entière à adresseHumiditeEEPROM, partie décimale à adresseDecimaleHumiditeEEPROM)
          EEPROM.write(adresseHumiditeEEPROM, int(humidite));
          EEPROM.write(adresseDecimaleHumiditeEEPROM, int((humidite - int(humidite)) * 100));
      
          // Incrémenter les adresses pour la prochaine mesure
          adresseEEPROM += 4;  // Incrémenter de 4 pour laisser un espace pour la prochaine paire (température et humidité)
          adresseDecimaleEEPROM += 4;
          adresseHumiditeEEPROM += 4;
          adresseDecimaleHumiditeEEPROM += 4;
      
          // Vérifier si nous avons atteint la fin de l'espace EEPROM
          if (adresseEEPROM >= EEPROM.length()) {
            adresseEEPROM = 0; // Revenir au début de l'espace EEPROM
            adresseDecimaleEEPROM = 1;  // Commencer à l'adresse suivante pour la partie décimale de la température
            adresseHumiditeEEPROM = 2;  // Commencer à l'adresse suivante pour la partie entière de l'humidité
            adresseDecimaleHumiditeEEPROM = 3;  // Commencer à l'adresse suivante pour la partie décimale de l'humidité
          }
        } else {
          Serial.println("Erreur de lecture du capteur.");
        }
      
        // Attendre avant la prochaine mesure
        delay(600000);  // Attendre temps de secondes entre les mesures (ajustez selon vos besoins)
      }0
    • Maintenant il nous faut le code pour lire les valeurs stockées. 
      #include <EEPROM.h>
      
      int adresseEEPROM = 0; // Adresse de la mémoire EEPROM pour la lecture des données
      
      void lireDonneesEEPROM() {
        Serial.println("Lecture des données depuis l'EEPROM:");
      
        while (adresseEEPROM < EEPROM.length()) {
          // Lire la partie entière de la température
          int partieEntiereTemperature = EEPROM.read(adresseEEPROM);
          // Lire la partie décimale de la température
          int partieDecimaleTemperature = EEPROM.read(adresseEEPROM + 1);
          
          // Lire la partie entière de l'humidité
          int partieEntiereHumidite = EEPROM.read(adresseEEPROM + 2);
          // Lire la partie décimale de l'humidité
          int partieDecimaleHumidite = EEPROM.read(adresseEEPROM + 3);
      
          // Afficher les valeurs lues
          Serial.print("Température: ");
          Serial.print(partieEntiereTemperature);
          Serial.print(".");
          Serial.print(partieDecimaleTemperature);
          Serial.print(" °C, Humidité: ");
          Serial.print(partieEntiereHumidite);
          Serial.print(".");
          Serial.print(partieDecimaleHumidite);
          Serial.println(" %");
      
          // Incrémenter l'adresse pour la prochaine paire de valeurs
          adresseEEPROM += 4;
        }
      }
      
      void setup() {
        Serial.begin(9600);
        lireDonneesEEPROM();
      }
      
      void loop() {
        // Votre code principal ici
      }
       
  1. Validation:

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

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

Résolution de problèmes

image.png

image.png

image.png