Uncle Den's Uncle Den's

Fleur connectée

mars 2017 Mooc France Université Numérique FUN.

papertoy fleur connectée

Par manque de temps, l'aspect papertoys n'a pas été réalisé.Voici cependant le résultat du montage en video:



/*
  Web Server

  A simple web server that shows the value of the analog input pins.
  using an Arduino Wiznet Ethernet shield.

  Circuit:
   Ethernet shield attached to pins 10, 11, 12, 13
   Analog inputs attached to pins A0 through A5 (optional)

  created 18 Dec 2009
  by David A. Mellis
  modified 9 Apr 2012
  by Tom Igoe
  modified 02 Sept 2015
  by Arturo Guadalupi

*/

#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192,168,1,37);//IP fixe attribué à la carte
// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80); //port du serveur - par defaut (80)

int mesureT = 0; //Variable pour le stockage mesure retournee par le capteur de temperature
float T = 0;     //Variable pour le stockage de la temperature
int analogT = A5;  //Numero du port analogique sur lequel la temperature est mesuree

int mesureH = 0;     //Variable pour le stockage mesure retournee par le capteur d'humidite
float H = 0;         //Variable pour le stockage de l'humidite
int analogH = A0;    //Numero du port analogique sur leq

unsigned long previousMillis = 0; //Variable pour stocker l'heure de la dernière mesure
const long interval = 2000;   //1 mesure toutes les 2 secondes

void setup() {
// Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  // start the Ethernet connection and the server:
  Ethernet.begin(mac,ip); // connexion du serveur avec son adresse mac et son adresse ip

  //Ethernet.begin(mac, ip); // connexion du serveur avec son adresse mac et son adresse ip
 
  delay(1000);
server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP()); // vérification de l'ip du serveur
}


void loop() {
  unsigned long currentMillis = millis(); // gestion de l'interval de temps de la demande des informations
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    T = mesureTemp(); //appel de la fonction mesureTemp()
    H = mesureHum(); // appel de la fonction mesureHum();
  }

  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        // Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
       client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // the connection will be closed after completion of the response

          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html><head><meta charset=\"UTF-8\"><meta http-equiv=\"refresh\" content=\"5\">");

          client.println("<title>Température et humidité - Plante connectée</title>");
          client.println("<meta name=\"viewport\" content=\"width=device-width\"/>");
          client.println("</head><body>");
          
          //Affichage Graphique
          client.println("<h1 style=\"margin-left:100px;\">Température et humidité</h1>");
          client.println("<div id=\"fond\" style=\"position:relative;\">");
          client.println("<img src=\"http://arduino.mooc.gobelins.fr/images/illustration.svg\" style=\"height:400px;\" />");
          client.println("<div id=\"temperature\" style=\"width:41px;background: white;position: absolute; top:92px;left:127px;height:");
          client.print(215-(T*215/40));
          client.print("px;\"></div>");
          client.println("<div id=\"humidite\" style=\"width:65px;background: white;position: absolute; top:49px;left:360px;height:");
          client.print(335-(H*335/100)); //H*335/100 correspond à la hauteur du bloc div.
          client.print("px;\"></div>");
          client.println("</div> <!--Fin de la div fond-->");
          
          //Affichage en texte
          client.print("<p style=\"margin-left:90px;float:left\">Température : ");
          //client.print(mesureT);
          client.print(T);
          client.println("°C</p>");
          client.print("<p style=\"margin-left:110px;float:left\">Humidité : ");
          client.print(H); // calcul pour convertir la taille du rectangle en % d'humidité
          client.print("%</p>");
          client.println("</body></html>");
          break;
        }

        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        } else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disconnected");
    Ethernet.maintain();
  }

}//Fin loop



float mesureTemp() {          
  mesureT = analogRead(analogT);            //Lecture de la valeur fournie par le capteur de temperature- 0.10v/°c. Ce résultat est une tension
  float degre = mesureT * (1.1/1023.0)*100; //conversion de la tension en °C
  Serial.print("degre : ");Serial.println(degre);
  return degre;
}

float mesureHum() {
  mesureH = analogRead(analogH);              // Mesure du capteur d'humidité
  mesureH = constrain(mesureH, 0,500);     // Changement d'interval de la mesure en valeurs s'échelonnant de 100 à 0.
                                              // On a inversé les valeurs de min et max car une tension faible indique une grande résistance et donc une faible humidité.
                                              // Ainsi la valeur 16 correspondra à une humidité de 100%.
                                              // Et la valeur 670 correspondra à une forte résistance, donc  une absence d'humidité.
  Serial.print("humidite : ");Serial.println(map(mesureH, 0,500,0,100));
  return map(mesureH, 0,500,0,100);         // retour du taux d'humidité
}









Voir mes Aquarelles - Mon site sur les aquarelles

Blog sur mes aquarelles