Arduino D1 は、Wi-Fi モジュールを内蔵した ESP8266 チップベースの開発ボードであり、IoT プロジェクトで非常に人気があります。このブログでは、Arduino D1 と DHT11 温湿度センサーを使用して、温度と湿度のデータをリアルタイムに表示する Web アプリケーションを構築する方法を紹介します。
1. 材料を準備する
Arduino D1 開発ボード
DHT11 温度および湿度センサー
数本の DuPont ワイヤー
2.ハードウェア接続
Dupont ワイヤを使用して 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("客户端断开连接");
}
}