🌡️ صفحه‌ی وب دما و رطوبت با سنسور DHT روی ESP32

✍️ تیم ووکوی فارسی ·

چه می‌شود اگر دمای اتاقت را از روی گوشی ببینی؟ در این پروژه یک سنسور DHT11 را به ESP32 وصل می‌کنیم و برد یک صفحه‌ی وب می‌سازد که دما و رطوبت را نشان می‌دهد و هر پنج ثانیه خودش تازه می‌شود. این یکی از محبوب‌ترین پروژه‌های ووکوی (Wokwi) و دنیای اینترنت اشیاست و ما آن را در شبیه‌ساز ESP32 فارسی می‌سازیم.

سنسور DHT چیست؟

سنسور DHT یک قطعه‌ی آبی یا سفید کوچک است که هم دما و هم رطوبت هوا را اندازه می‌گیرد و جوابش را به‌صورت دیجیتال، فقط از یک سیم، می‌فرستد. DHT11 ارزان‌تر و ساده‌تر است و DHT22 دقیق‌تر. برای کار با آن از کتابخانه‌ی DHT sensor library شرکت Adafruit استفاده می‌کنیم.

قطعه‌ها و سیم‌کشی

پایه‌ی DHT11به ESP32
VCC (+)3V3
DATA (OUT)GPIO15
GND (−)GND

اگر سنسور خام (چهار پایه) داری، یک مقاومت ۱۰ کیلواهم بین DATA و 3V3 بگذار. ماژول‌های سه‌پایه این مقاومت را خودشان دارند.

کد کامل

#include <WiFi.h>
#include <WebServer.h>
#include <DHT.h>

DHT dht(15, DHT11);        // DATA on GPIO15, sensor type DHT11
WebServer server(80);

void handleRoot() {
  float t = dht.readTemperature();   // Celsius
  float h = dht.readHumidity();      // percent
  String html = "<!doctype html><html><head><meta charset='utf-8'>";
  html += "<meta name='viewport' content='width=device-width, initial-scale=1'>";
  html += "<meta http-equiv='refresh' content='5'></head>";   // reload every 5 s
  html += "<body style='font-family:sans-serif;text-align:center'>";
  html += "<h2>ESP32 weather</h2>";
  if (isnan(t) || isnan(h)) {
    html += "<p>Sensor error! Check the DATA wire.</p>";
  } else {
    html += "<p>Temperature: <b>" + String(t, 1) + " C</b></p>";
    html += "<p>Humidity: <b>" + String(h, 0) + " %</b></p>";
  }
  html += "</body></html>";
  server.send(200, "text/html", html);
}

void setup() {
  Serial.begin(115200);
  dht.begin();
  WiFi.begin("Wokwi-GUEST", "");     // simulator network, no password
  while (WiFi.status() != WL_CONNECTED) delay(200);
  Serial.print("Open http://");
  Serial.println(WiFi.localIP());
  server.on("/", handleRoot);
  server.begin();
}

void loop() {
  server.handleClient();
}

توضیح بخش‌های مهم

💡 در شبیه‌ساز می‌توانی روی سنسور DHT کلیک کنی و دما و رطوبت را تغییر دهی. بعد از چند ثانیه عدد جدید را در صفحه‌ی وب می‌بینی.

ایده برای کامل‌تر کردن

وقتی صفحه کار کرد، می‌توانی آن را به یک ایستگاه هواشناسی واقعی تبدیل کنی. بیشترین و کمترین دمای روز را در دو متغیر نگه دار و در صفحه نشان بده. یا اگر دما از ۳۰ درجه بالاتر رفت، یک LED قرمز روشن شود و متن صفحه هم قرمز شود. برای پروژه‌ی مدرسه هم می‌توانی هر ده دقیقه عدد را در سریال مانیتور چاپ کنی و بعد نمودارش را در اکسل بکشی.

امتحانش کن

این مدار آماده است: صفحه‌ی وب دماسنج. مثال آماده‌ی دیگری که عدد سنسور را بدون رفرش کل صفحه نشان می‌دهد، نمایش زنده‌ی سنسور در صفحه‌ی وب است. خواندن هر دو رایگان است و اجرای ESP32 با اشتراک Plus است. اگر می‌خواهی خود DHT را اول بدون وای‌فای بشناسی، درس «دما و رطوبت با DHT» و برای نسخه‌ی وبی، درس «صفحه‌ی وب سنسور» را ببین.

اشکال‌های رایج

قدم بعدی این است که به‌جای HTML، داده‌ی خام بفرستیم تا هر برنامه‌ای بتواند آن را بخواند: ساخت API با JSON روی ESP32. فهرست کامل پروژه‌های شبکه در وای‌فای و اینترنت اشیا است.

صفحه‌ی دماسنج ESP32 را باز کن 🌡️

مقاله‌های مرتبط

🧩

ساخت API با JSON روی ESP32 با کتابخانه‌ی ArduinoJson

⚡

داده‌ی زنده با WebSocket روی ESP32

📈

نمودار زنده‌ی سنسور با EventSource (SSE) روی ESP32

📌

پین اوت رزبری پای پیکو: نقشه‌ی کامل ۴۰ پایه، GP، ADC، I2C، SPI، UART و تغذیه

همه‌ی آموزش‌های ESP32 و اینترنت اشیا ← · همه‌ی مقاله‌ها