Étape 3: Le code
http://arduinotronics.blogspot.com/2013/09/Arduino-Temp-Humidity-Web-Server.html
#include < DHT.h >
#define DHTPIN 2 / / quelle broche nous sommes connectés à
Décommentez peu importe le type que vous utilisez !
#define DHTTYPE DHT11 / / DHT 11
#define DHTTYPE DHT22 / / DHT 22 (AM2302)
#define DHTTYPE DHT21 / / DHT 21 (AM2301)
Connecter la broche 1 (à gauche) du capteur à + 5V
Relier la broche 2 du capteur à tout ce qui est votre DHTPIN
Relier la broche 4 (à droite) du capteur au sol
Connecter une résistance de 10K de la broche 2 (données) à la broche 1 (puissance) du capteur
DHT dht (DHTPIN, DHTTYPE) ;
#include < SPI.h >
#include < Ethernet.h >
Entrez une adresse MAC et l’adresse IP de votre contrôleur ci-dessous.
L’adresse IP sera tributaire de votre réseau local :
la mac de Byte [] = {}
0X90, 0xA2, 0xDA, 0 x 00, 0 x 23, 0 x 36} ; Adresse MAC sur l’arrière de votre bouclier ethernet.
IPAddress ip(192,168,254,177) ; Adresse IP dépend de vos adresses de réseau.
Initialiser la bibliothèque de serveur Ethernet
avec l’adresse IP et le port que vous souhaitez utiliser
(le port 80 est par défaut pour HTTP) :
EthernetServer server(80) ;
void setup() {}
Ouvrez la communication série et attendez de port à ouvrir :
Serial.Begin(9600) ;
while (!. {Série)
; attendre pour port série pour se connecter. Nécessaire uniquement pour Leonardo
}
DHT.Begin() ;
Démarrez la connexion Ethernet et le serveur :
Ethernet.Begin (mac, ip) ;
Server.Begin() ;
Serial.Print ("serveur est à") ;
Serial.println(Ethernet.localIP()) ;
}
void loop() {}
Lecture de température ou humidité prend environ 250 millisecondes !
Lectures du capteur peuvent également être jusqu'à 2 secondes « ancienne » (c’est un capteur très lent)
flotter h = dht.readHumidity() ;
flotteur t = dht.readTemperature() ;
vérifier si les retours sont valables, s’ils sont NaN (pas un nombre), puis quelque chose s’est mal passé !
Si (isnan(t) || isnan(h)) {}
Serial.println ("Impossible de lire de DHT") ;
} else {}
Serial.Print ("humidité:") ;
Serial.Print(h) ;
Serial.Print ("\t %") ;
Serial.Print ("température:") ;
Serial.Print(t) ;
Serial.println ("* C") ;
}
écoute des clients entrants
EthernetClient client = server.available() ;
Si {(client)
Serial.println ("nouveau client") ;
une requête http se termine par une ligne vide
Boolean currentLineIsBlank = true ;
tandis que (client.connected()) {}
Si (client.available()) {}
char c = client.read() ;
Serial.Write(c) ;
Si vous avez obtenu à la fin de la ligne (a reçu un saut de ligne
caractère) et la ligne est vide, la requête http est terminée,
ainsi vous pouvez envoyer une réponse
Si (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 sera fermée après l’achèvement de la réponse
client.println ("Refresh: 5") ; Actualisez la page automatiquement toutes les 5 sec
client.println() ;
client.println ("< ! DOCTYPE HTML > ") ;
client.println ("< html >") ;
la valeur de la DHT-11
client.println ("< H2 >") ;
client.Print ("humidité:") ;
client.println ("</H2 >") ;
client.println ("< p/>") ;
client.println ("< H1 >") ;
client.Print(h) ;
client.Print ("\t %") ;
client.println ("</H1 >") ;
client.println ("< p/>") ;
client.println ("< H2 >") ;
client.Print ("température:") ;
client.println ("</H2 >") ;
client.println ("< H1 >") ;
client.Print(t*1.8+32) ;
client.println (« ° ») ;
client.println("F") ;
client.println ("</H1 >") ;
client.println ("</html >") ;
rupture ;
}
Si (c == « \n ») {}
vous commencez une nouvelle ligne
currentLineIsBlank = true ;
}
ElseIf (c! = « \r ») {}
vous avez obtenu un personnage sur la ligne courante
currentLineIsBlank = false ;
}
}
}
donner le temps de navigateur web pour recevoir les données
Delay(1) ;
fermer la connexion :
client.Stop() ;
Serial.println ("client disonnected") ;
}
}