Arduino D1是一种基于ESP8266芯片的开发板,具有内置的Wi-Fi模块,使得它在物联网项目中非常流行。本篇博客将介绍如何使用Arduino D1与DHT11温湿度传感器构建一个实时显示温湿度数据的网页应用。
1.准备材料
Arduino D1开发板
DHT11温湿度传感器
杜邦线若干
2.硬件连接
使用杜邦线将DHT11传感器与Arduino D1连接:
DHT11 VCC引脚 → Arduino D1 3.3V引脚
DHT11 GND引脚 → Arduino D1 GND引脚
DHT11 OUT引脚 → Arduino D1 D4引脚
3.编写代码
1.导入库
#include <ESP8266WiFi.h>
#include <DHT.h>
2.配置WiFi
const char* ssid = "您的Wi-Fi网络名称";
const char* password = "您的Wi-Fi网络密码";
3.定义DHT11传感器
#define DHTPIN D4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
4.设置Web服务器
WiFiServer server(80);
5.初始化DHT11和WIFI
void setup() {
Serial.begin(115200);
dht.begin();
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("WiFi连接成功!");
Serial.println("Wi-Fi connected.");
server.begin();
Serial.println("IP address: " + WiFi.localIP().toString());
}
创建WEB界面并获取传感器数据
void loop() {
WiFiClient client = server.available();
if (client) {
Serial.println("新的客户端连接");
String currentTemperature = String(dht.readTemperature());
String currentHumidity = String(dht.readHumidity());
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html; charset=utf-8"); // 设置正确的 Content-Type
client.println("");
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<h2>温度和湿度</h2>"); // 使用中文文本
client.print("温度:");
client.print(currentTemperature);
client.print("°C");
client.println("<br>");
client.print("湿度:");
client.print(currentHumidity);
client.print("%");
client.println("<br>");
client.println("</html>");
delay(100);
client.stop();
Serial.println("客户端断开连接");
}
}
IP地址可以在串口中查询:
在浏览器中输入IP地址即可获得数据
完整代码
#include <ESP8266WiFi.h>
#include <DHT.h>
// 替换为您的网络凭据
const char* ssid = "319";
const char* password = "5201314520";
// 替换为您的传感器引脚
#define DHTPIN D4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
WiFiServer server(80);
void setup() {
Serial.begin(115200);
dht.begin();
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("连接到WiFi网络...");
}
Serial.println("WiFi连接成功!");
server.begin();
Serial.println("WiFi connected");
Serial.println("IP address: " + WiFi.localIP().toString());
}
void loop() {
WiFiClient client = server.available();
if (client) {
Serial.println("新的客户端连接");
String currentTemperature = String(dht.readTemperature());
String currentHumidity = String(dht.readHumidity());
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html; charset=utf-8"); // 设置正确的 Content-Type
client.println("");
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<h2>温度和湿度</h2>"); // 使用中文文本
client.print("温度:");
client.print(currentTemperature);
client.print("°C");
client.println("<br>");
client.print("湿度:");
client.print(currentHumidity);
client.print("%");
client.println("<br>");
client.println("</html>");
delay(100);
client.stop();
Serial.println("客户端断开连接");
}
}