Super enkel Arduino väder webbservern (3 / 5 steg)
Steg 3: Koden
http://arduinotronics.blogspot.com/2013/09/Arduino-Temp-humidity-Web-Server.html
#include < DHT.h >
#define DHTPIN 2 / / vilken pin vi är ansluten till
Avkommentera oavsett vilken typ du använder!
#define DHTTYPE DHT11 / / DHT 11
#define DHTTYPE DHT22 / / DHT 22 (AM2302)
#define DHTTYPE DHT21 / / DHT 21 (AM2301)
Ansluta stift 1 (till vänster) av sensorn till + 5V
Ansluta stift 2 av sensorn till vad din DHTPIN är
Ansluta stift 4 (till höger) av sensorn till marken
Ansluta en 10K motstånd från stift 2 (data) till stift 1 (power) av sensorn
DHT dht (DHTPIN, DHTTYPE);
#include < SPI.h >
#include < Ethernet.h >
Ange en MAC-adress och IP-adressen för din controller nedan.
IP-adressen kommer att bero på ditt lokala nätverk:
byte [mac] = {
0x90, 0xA2, 0xDA, 0x00, 0x23, 0x36}; MAC-adressen finns på baksidan av din ethernet shield.
IP-adress ip(192,168,254,177); IP-adressen beroende på din nätverksadresser.
Starta servern Ethernet-biblioteket
med IP-adress och port vill du använda
(port 80 är standard för HTTP):
EthernetServer server(80);
void setup() {
Öppna seriell kommunikation och vänta på port att öppna:
Serial.BEGIN(9600);
tag (!. Serial) {
; vänta för seriell port att ansluta. Behövs för Leonardo endast
}
DHT.BEGIN();
Starta Ethernet-anslutningen och servern:
Ethernet.BEGIN (mac, ip);
Server.BEGIN();
Serial.Print ("servern är på");
Serial.println(Ethernet.localIP());
}
void loop() {
Läst temperatur eller fuktighet tar cirka 250 millisekunder!
Sensormätningar kan också vara upp till 2 sekunder "gamla" (det är en mycket långsam sensor)
flyta h = dht.readHumidity();
flyta t = dht.readTemperature();
kolla om avkastningen är giltig, om de är NaN (inte ett tal) då något gick fel!
om (isnan(t) || isnan(h)) {
Serial.println ("kunde inte läsa från DHT");
} annat {
Serial.Print ("luftfuktighet:");
Serial.Print(h);
Serial.Print ("% \t");
Serial.Print ("temperatur:");
Serial.Print(t);
Serial.println ("* C");
}
lyssna efter inkommande klienter
EthernetClient klient = server.available();
om (klient) {
Serial.println ("ny kund");
en http-förfrågan avslutas med en tom rad
booleska currentLineIsBlank = sant;
samtidigt (client.connected()) {
om (client.available()) {
char c = client.read();
Serial.write(c);
Om du har fått till slutet av raden (fick en newline
karaktär) och raden är tom, http-begäran har avslutats,
så du kan skicka ett svar
om (c == '\n' & & currentLineIsBlank) {
Skicka ett standard http-svarshuvud
client.println ("HTTP/1.1 200 OK");
client.println ("Content-Type: text/html");
client.println ("anslutning: Stäng"); anslutningen kommer att stängas efter slutförandet av svar
client.println ("uppdatera: 5"); uppdatera sidan automatiskt varje 5 sek
client.println();
client.println ("<! DOCTYPE HTML > ");
client.println ("< html >");
utgående värdet av DHT-11
client.println ("< H2 >");
client.Print ("luftfuktighet:");
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 ("temperatur:");
client.println ("</H2 >");
client.println ("< H1 >");
client.Print(t*1.8+32);
client.println ("°");
client.println("F");
client.println ("</H1 >");
client.println ("</html >");
bryta;
}
om (c == "\n") {
du börjar en ny rad
currentLineIsBlank = sant;
}
annars om (c! = '\r') {
du har fått ett tecken på den aktuella raden
currentLineIsBlank = false;
}
}
}
de web webbläsare möjlighet att ta emot data
Delay(1);
stänga anslutningen:
client.stop();
Serial.println ("klient disonnected");
}
}