Stap 3: De code
http://arduinotronics.blogspot.com/2013/09/Arduino-Temp-humidity-web-server.html
#include < DHT.h >
#define DHTPIN 2 / / welke pin wij verbonden bent met
Uncomment welke type u!
#define DHTTYPE DHT11 / / DHT 11
#define DHTTYPE DHT22 / / DHT 22 (AM2302)
#define DHTTYPE DHT21 / / DHT 21 (AM2301)
Aansluiten aan vastmaken 1 (aan de linkerkant) van de sensor + 5V
Verbinden met pin 2 van de sensor wat uw DHTPIN is
Pin 4 (aan de rechterkant) van de sensor verbinden met grond
Verbinding maken met een 10K Ohm weerstand van pin 2 (gegevens) aan pin 1 (kracht) van de sensor
DHT dht (DHTPIN, DHTTYPE);
#include < SPI.h >
#include < Ethernet.h >
Voer een MAC-adres en het IP-adres voor uw controller hieronder.
Het IP-adres zal afhankelijk van uw lokale netwerk zijn:
byte mac [] {} =
0x90, 0xA2, 0xDA, 0x00, 0x23, 0x36}; MAC-adres vinden op de achterzijde van uw ethernet-shield.
IP-adres ip(192,168,254,177); IP-adres afhankelijk van uw netwerkadressen.
Initialiseren van de Ethernet server bibliotheek
met het IP-adres en de poort die u wilt gebruiken
(poort 80 is de standaardwaarde voor HTTP):
EthernetServer server(80);
VOID Setup {}
Seriële communicatie te openen en te wachten voor de poort te openen:
Serial.begin(9600);
terwijl (!. Seriële) {}
; wachten op de seriële poort te verbinden. Alleen nodig voor Leonardo
}
DHT.begin();
de Ethernet-verbinding en de server starten:
Ethernet.begin (mac, ip);
server.begin();
Serial.Print ("server is op");
Serial.println(Ethernet.localIP());
}
void loop {}
Lezing temperatuur of vochtigheid neemt ongeveer 250 milliseconden!
Sensor lezingen kan maximaal 2 seconden 'oude' (het is een zeer langzame sensor)
zweven h = dht.readHumidity();
zweven t = dht.readTemperature();
Controleer als opbrengsten geldig zijn, indien zij NaN (geen getal zijn) dan iets mis gegaan!
Als (isnan(t) || isnan(h)) {}
Serial.println ("kon aflezen uit DHT");
} else {}
Serial.Print ("vochtigheid:");
Serial.Print(h);
Serial.Print ("% \t");
Serial.Print ("temperatuur:");
Serial.Print(t);
Serial.println ("* C");
}
luisteren voor clients voor inkomende
EthernetClient client = server.available();
Als (client) {}
Serial.println ("nieuwe klant");
een http-verzoek eindigt met een lege regel
Boole currentLineIsBlank = waar;
terwijl (client.connected()) {}
Als (client.available()) {}
char c = client.read();
Serial.write(c);
Als u toegang hebt verkregen tot het einde van de regel (ontvangen een newline
teken) en de regel is leeg, de http-aanvraag is beëindigd,
zodat u kunt een antwoord sturen
Als (c == '\n' & & currentLineIsBlank) {}
verzenden van een standaard http-antwoordheader
client.println ("HTTP/1.1 200 OK");
client.println ("Content-Type: text/html");
client.println ("verbinding: sluiten"); de verbinding zal worden gesloten na voltooiing van de reactie
client.println ("vernieuwen: 5"); Vernieuw de pagina automatisch elke 5 sec
client.println();
client.println ("<! HTML DOCTYPE > ");
client.println ("< html >");
uitgang de waarde van de DHT-11
client.println ("< H2 >");
client.Print ("vochtigheid:");
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 ("temperatuur:");
client.println ("</H2 >");
client.println ("< H1 >");
client.Print(t*1.8+32);
client.println ("°");
client.println("F");
client.println ("</H1 >");
client.println ("</html >");
breken;
}
Als (c == '\n') {}
je begint een nieuwe regel
currentLineIsBlank = true;
}
anders als (c! = '\r') {}
je hebt gekregen een teken op de huidige regel
currentLineIsBlank = false;
}
}
}
de web browser tijd geven om te ontvangen van de gegevens
delay(1);
de verbinding sluiten:
client.stop();
Serial.println ("client disonnected");
}
}