Partage
  • Partager sur Facebook
  • Partager sur Twitter

Commander chauffage en fonction des besoins

Arduino Ethernet Shield et projet domotique

Anonyme
    19 mars 2015 à 16:10:29

    Bonjour, 

    J'ai un projet de domotique pour commander un chauffage électrique via une page web. 

    J'ai réussi à  l'allumer ou à l'éteindre et maintenant j'aimerai essayer de developper mon programme arduino afin de pouvoir contrôler la temperature du chauffage en fonction des besoins. (Par exemple si quelqu'un va dormir, baisser le chauffage .. etc  )

    Je me demande donc si il est possible de le faire et, si oui, pourriez-vous m'aider  avec des lignes de code basique .. quelque chose comme ça.

    Voici mon code arduino: 

    #include <Ethernet.h>

    #include <SPI.h>

    String inString = String(20); // Tampon de réception des caractères

    byte etat1=1;

    float volt; //le voltage du capteur

    float temp; // On initialise la variable de température

    byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0xBA, 0xE7 }; // A adapter en fonction de votre shield

    byte ip[] = { 172, 21, 29, 121 }; // A adapter en fonction de votre réseau

    EthernetServer server(80); // Un autre port peut être choisi à ce niveau

    void setup()

    {

      Ethernet.begin(mac, ip); 

      server.begin();

      Serial.begin(9600); 

      pinMode(5,OUTPUT);

    }

    void loop()

    {

      EthernetClient client = server.available();

      if (client) {

        boolean current_line_is_blank = true;

        while (client.connected()) {

          if (client.available()) {

            char c = client.read();

            if (inString.length() < 20) {

                inString.concat(c);

             } 

            if (c == '\n' && current_line_is_blank) {

              if(inString.indexOf("b1")>0){ // Le bouton 1 a été actionné

                etat1 = digitalRead(5);

                digitalWrite (5,!etat1);            

              }

            // Envoi d'un en-tête http standard

              client.println("HTTP/1.1 200 OK");

              client.println("Content-Type: text/html");

              client.println();

            // Affichage de la page html

                client.println("<html><body><h2>Controle des sorties de l'Arduino par Internet</h2><font size= 4><form method=GET>"); // Titre et début méthode GET

                client.println("<br><input type=submit name=b1 value=Sortie_1>"); // Bouton sortie 1

                if (etat1) client.println(" Arrêt"); // Affichage état sortie 1

                else client.println(" Marche");

                client.println("<br /><br />");

                volt = analogRead(A0); //On lit les données du capteur sur le port ou tu l'as branché (dans cet exemple c'est le port analogique 0)

                volt = 4*volt/1023; //on calcule le voltage

                temp = volt/0.01; //puis la température

                client.println(temp);

                delay(1000); //un délai pour que le tout soit lisible

                client.println("</form></body></html>"); // Fin de la méthode GET

              break;

            }

            if (c == '\n') {

              // Debut d'une nouvelle ligne

              current_line_is_blank = true;

            } else if (c != '\r') {

              // Caractère reçu sur la ligne courante

              current_line_is_blank = false;

            }

          }

        }

        // Donne le temps au navigateur de traiter les données

        delay(1);

        inString = "";

        client.stop();

      }

    }

    • Partager sur Facebook
    • Partager sur Twitter
      19 mars 2015 à 16:40:29

      Bonjour,

      Premier petit conseil, n'oublies pas les balises "code", ça apporte un certain confort de lecture.

      Ensuite, pour le réglage de la température, avant d'essayer de le commander depuis ta page web, commences par essayer de réguler la température sur une constante. Tu auras besoin d'une entrée analogique pour lire cette température (analogRead...). Si tu n'as pas de capteur de température, tu peux en simuler un avec un potentiomètre.
      Autre chose : si tu ne connais pas, je t'encourage à te renseigner sur la régulation de température par hystérésis.
      • Partager sur Facebook
      • Partager sur Twitter
      "On ne remplace pas des plombs sautés avant de savoir pourquoi ils ont sauté." 2001 l'odyssée de l'espace, Arthur C. Clarke
      Anonyme
        19 mars 2015 à 16:50:51

        J'utilise le capteur de temperature LM35, branché sur l'entrée analogique A0 de notre carte arduino ethernet. La valeur affiché, ensuite, sur une page web  semble juste. 

        Je vais de ce pas me renseigner  sur hysteresis.

        • Partager sur Facebook
        • Partager sur Twitter
          19 mars 2015 à 17:22:16

          L'hystérésis c'est un peu chaud à comprendre première vue, car souvent les sources trouvées sur le net essaient d'être exhaustives.
          Mais pour faire simple, il s'agit d'éviter que ton chauffage commute sans arrêt quand tu es à  la valeur de consigne.
          Le principe :
          - ta consigne est de 20°C. Ton seuil d'arrêt de chauffage est ta consigne + 1°C, donc 21°C (seuil haut), ton seuil d'allumage c'est consigne - 1°C donc 19°C (seuil bas).
          - Il fait actuellement 15°C, et tu allumes ton arduino. 15°C c'est en dessous du seuil bas, donc ton chauffage démarre.
          - la température atteint les 20°C. On est à la consigne, mais le chauffage ne s'arrête pas : on a pas encore atteint le seuil haut.
          - la température atteint les 21°C. On a atteint le seuil haut, le chauffage s'arrête.
          - la température atteint les 19.9°C. On est en dessous de la consigne , mais le chauffage ne démarre pas : on a pas encore atteint le seuil bas.
          - la température passe sous la barre des 19°C, on rallume le chauffage. Et ainsi de suite...

          Ci dessous une illustration pêchée sur domotique-sotre.fr:

          • Partager sur Facebook
          • Partager sur Twitter
          "On ne remplace pas des plombs sautés avant de savoir pourquoi ils ont sauté." 2001 l'odyssée de l'espace, Arthur C. Clarke
            19 mars 2015 à 19:07:50

            Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention plus facilement.
            Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

            Merci d'utiliser les balises de code



            Bonjour,

            Les forums du Site du Zéro disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source. Tu as posté un code source sans utiliser cette fonctionnalité. Édite ton message en mettant ton code en forme en utilisant le bouton Image . Si tu utilises l'éditeur en version Markdown, tu dois utiliser les balises <pre class="brush: c;">Votre code ici</pre>. Cela aura pour effet de *colorer* ton code et donc d'en faciliter grandement la lecture. Tu auras ainsi beaucoup plus de chances d'avoir des réponses. Voici un exemple de code non coloré : Citation (code C) :
            int main(int argc, char *argv[])
            {
            long choixOperation;
            
            printf("Choisissez l'operation a effectuer");
            /* etc. */
            }
            Voici maintenant le même code coloré :
            int main(int argc, char *argv[])
            {
                long choixOperation;
             
                printf("Choisissez l'operation a effectuer");
                /* etc. */
            }
            C'est plus clair n'est-ce pas ? :)

            Merci de ta compréhension.
            • Partager sur Facebook
            • Partager sur Twitter

            Commander chauffage en fonction des besoins

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown