- Code: Tout sélectionner
#include <SPI.h>
#include <Ethernet.h>
#include <Wire.h>
// Entrez une adresse MAC et l'adresse IP de votre commande ci-dessous.
// L'adresse IP sera fonction de votre réseau local:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(172,17,50,147);
// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);
void setup() {
/***********************************/
#define HYT_ADDR 0x28 // Adresse I2C HYT 221, 271, 371 et le reste de la famille
Wire.begin(); // rejoinez le bus i2C en tant que maître
pinMode(13, OUTPUT); // reglez la broche 13 et la sortie de statut LED
//************************************/
// Ouvrez les communications série et attendre pour le port à ouvrir:
Serial.begin(9600);
while (!Serial) {
; // attendre pour le port série pour connecter.
}
// démarrer la connexion Ethernet et le serveur:
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
void loop() {
/*********lecture du capteur********************************/
double humidity;
double temperature;
Wire.beginTransmission(HYT_ADDR); // Commencer la transmission d'un dispositif donné sur le bus I2C
Wire.requestFrom(HYT_ADDR, 4); //Demander 4 octets
//Lire les octets si elles sont disponibles
// Les deux premiers octets sont l'humidité les deux derniers sont la température
if(Wire.available() == 4) {
int b1 = Wire.read();
int b2 = Wire.read();
int b3 = Wire.read();
int b4 = Wire.read();
Wire.endTransmission(); // Fin de transmission et la libération bus I2C
// combiner octets d'humidité et de calculer l'humidité
int rawHumidity = b1 << 8 | b2;
//composé de bits pour obtenir 14 bits mesure deux premiers bits
// sont état / peu de décrochage (voir texte d'introduction)
rawHumidity = (rawHumidity &= 0x3FFF);
humidity = 100.0 / pow(2,14) * rawHumidity; //cf. doc.pdf
// combiner octets de température et de calculer la température
b4 = (b4 >> 2); // Masque trouve à 2 bits de poids faible voir HYT 221 doc
int rawTemperature = b3 << 6 | b4;
temperature = 165.0 / pow(2,14) * rawTemperature - 40;
Serial.print(" Humidite : ");
Serial.print(humidity);
Serial.print("% - Temperature: ");
Serial.print(temperature);
Serial.println("°C");
}
else {
Serial.println("Not enough bytes available on wire.");
}
blinkWait();
/****************Serveur ****************************/
// écouter pour les clients entrants
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
// une requête http se termine par une ligne vide
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// si vous avez obtenu à la fin de la ligne (reçu une nouvelle ligne
// caractère) et la ligne est vide, la requête HTTP est terminée,
// de sorte que vous pouvez envoyer une réponse
if (c == '\n' && currentLineIsBlank) {
//envoyer un en-tête de réponse HTTP standard
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close"); // la connexion est fermée après l'achèvement de la réaction
client.println("Refresh: 5"); // actualise la page automatiquement toutes les 5 sec
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
// sortie la valeur de chaque broche d'entrée analogique
for (int analogChannel = 0; analogChannel < 1; analogChannel++) {
int sensorReading = analogRead(analogChannel);
client.print("Humidité : ");
client.print(humidity);
client.print(" %");
client.print("<br />");
client.print(" Température : ");
client.print(temperature);
client.print(" °C");
client.print("<br />");
}
client.println("</html>");
break;
}
if (c == '\n') {
// vous commencez une nouvelle ligne
currentLineIsBlank = true;
}
else if (c != '\r') {
// vous avez obtenu un caractère sur la ligne courante
currentLineIsBlank = false;
}
}
}
// laisser le temps au navigateur Web pour recevoir les données
delay(1);
// fin de la communication:
client.stop();
Serial.println("client disconnected");
}}
void blinkWait() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
Merci de vous donner la peine de m'aider .
ps: désoler pour les faute d'orthographe