NodeMCU web server showing DHT11 data
In this example we will connect a DHT11 to a Node MCU v1.0 (you could use any ESP8266 board) board and we will display the temperature and humidity readings on a web page. The web page updates every 5 seconds I wouldn’t recommend changing this to a lower value.
Layout
This is the layout, I used D4 for the data in from the DHT11 but you could easily use another IO pin but you would have to change the code example later
Code
This is similar to the Arduino version, you will need the DHT library support added.
#include <ESP8266WiFi.h>
#include "DHT.h"
const char* ssid = "iainhendry";
const char* password = "iain061271";
#define DHTPIN D4 // what pin we're connected to
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
WiFiServer server(80);
void setup()
{
Serial.begin(115200);
// Connect to WiFi network
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
dht.begin();
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi connected");
// Start the server
server.begin();
Serial.println("Server started");
// Print the IP address
Serial.print("Use this URL : ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}
void loop()
{
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
return;
}
// Wait until the client sends some data
Serial.println("new client");
while(!client.available()){
delay(1);
}
// Read the first line of the request
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
// Return the response
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<meta http-equiv=\"refresh\" content=\"5\">");
client.println("<br />");
client.println(""); // do not forget this one
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f))
{
Serial.println("Failed to read from DHT sensor!");
return;
}
client.print("Temperature (C): ");
client.println(t, 1);
client.println("<br />");
client.print("Humidity (%): ");
client.println(h, 0);
client.println("<br />");
client.println("</html>");
delay(1);
Serial.println("Client disconnected");
}
Testing
Open teh Serial monitor and take a note of the IP address. Navigate to the IP address you see in the serial monitor, you shoudl see something like the following, the temperature and humidity will change every 5 seconds. This can also be changed in the code as well
Temperature (C): 24.0
Humidity (%): 36
Links
Comments are closed, but trackbacks and pingbacks are open.