基於arduino 用ESP8266獲取DHT11溫溼度數據顯示在網頁上

基於arduino 用ESP8266獲取DHT11溫溼度數據顯示在網頁上

原理: ESP8266獲取DHT11溫溼度數據發送到路由器局域網內,局域網內的手機電腦,訪問esp的ip地址,獲取實時的溫溼度數據,每個5秒刷新一次。

網頁顯示內容:
在這裏插入圖片描述
代碼見最後,將代碼拷貝到arduino中,打開串口監視器,編譯上傳。
串口監視器機會如圖二顯示局域網的ip 地址。 局域網內的手機電腦訪問ip地址,如圖一所示:
在這裏插入圖片描述

Html網頁顯示代碼:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="Refresh" content="5">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>MeiShang Web Server Test System</title>
  <style>
  	
/* -------------------------按鈕控制代碼---------------------------------------------------------------- */
h2,h1{line-height:1%;}
body {
	    margin: 0;
      padding: 0;
      width: 340px;
	    background: LightCyan
}

.button {
	width: 100px;
	height: 100px;
	text-align: center;
	font-weight: 100;
	color: darkcyan;
	margin: 0 40px 40px 0;
	position: relative;
	border: 6px solid darkcyan;
	background: LightCyan;
	font-size: 20px;
	border-radius: 50%;
}
.top1 {
	width: 360px;
	height: 45px;
	color: #FFF;
	border: 1px solid darkcyan;
	background: darkcyan;
	font-size: 25px;
	border-radius: 0%;
}

</style>
</head>
<body>
<a href="./pin?light1=1"><button class="button top1">&#x6E29;&#x6E7F;&#x5EA6;&#x663E;&#x793A;</button></a>
<center style="left: 20px; position: relative;"> </br>    <!--          主頁               -->
<a href="./pin?light1=1"><button type="button" class="button" value="temp">溫度<span style="color: red;  font-size: 25px;">
00°C</span></button></a>
<a href="./pin?light1=0"><button type="button" class="button" value="humi">溼度<span style="color: green;font-size: 25px;">
00%</span></button></a></br>
</center>
</body>
</html>

C語言部分:


#include <ESP8266WiFi.h>
#include <SimpleDHT.h>
int pinDHT11 = 4;
SimpleDHT11 dht11(pinDHT11);
 
const char* ssid = "8888";
const char* password = "88888888";

WiFiServer server(80);
 
void setup() {
  Serial.begin(115200);
  pinMode(2, OUTPUT);
  digitalWrite(2, 0);
 
  Serial.println();         // Connect to WiFi network
  Serial.println();
  Serial.print("Connecting to "); Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print(".");}
  Serial.println("");
  Serial.println("WiFi connected");
  server.begin();
  Serial.println(WiFi.localIP());
}
 
void loop() {
  WiFiClient client = server.available();// Check if a client has connected
  if (!client) { delay(100);return;}
  
  Serial.println("=========================");
  byte temperature = 0;
  byte humidity    = 0;
  int err = SimpleDHTErrSuccess;
  if ((err = dht11.read(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
    Serial.print("Read TEM-HUM failed, err="); Serial.println(err);delay(2000);
    return;}
  Serial.print("DHT11 ~ TEM-HUM : ");
  Serial.print((int)temperature); Serial.print("C, "); 
  Serial.print((int)humidity); Serial.println("%");
  delay(2000);
  
  client.flush();
  String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\n ";
  s+="<!DOCTYPE html><html lang=\"en\"><head><meta charset=\"UTF-8\"><meta http-equiv=\"Refresh\" content=\"5\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes\" /><meta http-equiv=\"X-UA-Compatible\" content=\"ie=edge\"><title>MeiShang Web Server Test System</title><style>  h2,h1{line-height:1%;}body {  margin: 0;padding: 0;width: 340px;  background: LightCyan}.button { width: 100px; height: 100px;  text-align: center; font-weight: 100; color: darkcyan;  margin: 0 40px 40px 0;  position: relative; border: 6px solid darkcyan; background: LightCyan;  font-size: 20px;  border-radius: 50%;}.top1 { width: 360px; height: 45px; color: #FFF;  border: 1px solid darkcyan; background: darkcyan; font-size: 25px;  border-radius: 0%;}</style></head><body><a href=\"./pin?light1=1\"><button class=\"button top1\">&#x6E29;&#x6E7F;&#x5EA6;&#x663E;&#x793A;</button></a><center style=\"left: 20px; position: relative;\"></br><a href=\"./pin?light1=1\"><button type=\"button\" class=\"button\" value=\"temp\">溫度<span style=\"color: red;font-size: 25px;\">";

  s += ((int)temperature);
  s += "°C</span></button></a><a href=\"./pin?light1=0\"><button type=\"button\" class=\"button\" value=\"humi\">溼度<span style=\"color: green;font-size: 25px;\">";
  
  s += ((int)humidity);
  s += "%</span></button></a></br></center></body></html>";

  client.print(s); delay(1);  
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章