🏠 داشبورد خانه‌ی هوشمند روی گوشی با ESP32

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

وقت آن است که هرچه یاد گرفته‌ای را کنار هم بگذاری. در این پروژه یک داشبورد خانه‌ی هوشمند می‌سازیم: یک صفحه‌ی وب مرتب که روی گوشی باز می‌شود و سه کار می‌کند؛ کلید چراغ، نمایش دمای اتاق و اسلایدر سرعت پنکه. همه‌چیز را در شبیه‌ساز ESP32 فارسی می‌سازیم و تست می‌کنیم؛ همان کاری که در ووکوی (Wokwi) انجام می‌دادی، این بار با راهنمای فارسی و درس‌به‌درس.

چه چیزهایی کنار هم می‌آیند؟

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

قطعهاتصال
LED (چراغ) + مقاومت ۲۲۰ اهمGPIO4 → مقاومت → LED → GND
DHT11VCC به 3V3، DATA به GPIO15، GND به GND
ترانزیستور NPNبیس از طریق مقاومت ۱ کیلواهم به GPIO25، امیتر به GND
موتور DC (پنکه)یک سر به منبع مثبت موتور، سر دیگر به کلکتور ترانزیستور
دیودموازی با موتور، خط دیود سمت مثبت (برای محافظت)
⚠️ موتور را هیچ‌وقت مستقیم به پین ESP32 وصل نکن. پین فقط چند ده میلی‌آمپر می‌دهد و موتور خیلی بیشتر می‌خواهد. ترانزیستور مثل یک شیر برقی، جریان بزرگ را با فرمان کوچک برد کنترل می‌کند.

کد کامل

این کد برای هسته‌ی ESP32 نسخه‌ی ۳ (ledcAttach) نوشته شده است:

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

const int LAMP = 4;        // LED = the lamp
const int FAN = 25;        // NPN transistor base -> DC motor
DHT dht(15, DHT11);
WebServer server(80);

const char page[] PROGMEM = R"rawliteral(<!DOCTYPE html><html>
<head><meta name="viewport" content="width=device-width, initial-scale=1"></head>
<body style="font-family:sans-serif;text-align:center">
<h2>My home</h2>
<p>Lamp <input type="checkbox" onchange="fetch('/lamp?on='+(this.checked?1:0))"></p>
<p>Temperature: <b id="t">...</b></p>
<p>Fan <input type="range" min="0" max="255" value="0" onchange="fetch('/fan?v='+this.value)"></p>
<script>
setInterval(function () {
  fetch('/temp').then(function (r) { return r.text(); })
    .then(function (x) { document.getElementById('t').innerText = x + ' C'; });
}, 2000);
</script></body></html>
)rawliteral";

void setup() {
  Serial.begin(115200);
  pinMode(LAMP, OUTPUT);
  ledcAttach(FAN, 1000, 8);            // motor speed by PWM, 0..255 (core 3.x)
  dht.begin();
  WiFi.begin("Wokwi-GUEST", "");       // simulator network, no password
  while (WiFi.status() != WL_CONNECTED) delay(200);
  Serial.println(WiFi.localIP());

  server.on("/", []() { server.send(200, "text/html", page); });
  server.on("/lamp", []() {
    bool on = server.arg("on") == "1";
    digitalWrite(LAMP, on ? HIGH : LOW);
    server.send(200, "text/plain", on ? "lamp on" : "lamp off");
  });
  server.on("/fan", []() {
    int v = constrain(server.arg("v").toInt(), 0, 255);
    ledcWrite(FAN, v);
    server.send(200, "text/plain", String(v));
  });
  server.on("/temp", []() {
    float t = dht.readTemperature();
    server.send(200, "text/plain", isnan(t) ? String("--") : String(t, 1));
  });
  server.begin();
}

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

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

امتحانش کن

این مدار کامل در تینکرکد فارسی آماده است: داشبورد خانه روی گوشی. صفحه‌ی ESP32 در مرورگر مجازی شبیه‌ساز باز می‌شود و با تیک زدن چراغ و کشیدن اسلایدر، LED و موتور را در مدار سه‌بعدی می‌بینی. خواندن مثال رایگان است و اجرای ESP32 با اشتراک Plus. توضیح قدم‌به‌قدم در درس «پروژه: داشبورد خانه روی گوشی» است.

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

برای کنترل از بیرون خانه و وصل کردن چند برد، این داشبورد را با MQTT ترکیب کن. همه‌ی پروژه‌های شبکه در وای‌فای و اینترنت اشیا.

داشبورد خانه‌ی هوشمند را باز کن 🏠

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

📌

پین اوت ESP32 به زبان ساده: جدول کامل پایه‌های DevKit سی‌پایه و این‌که کدام‌ها امن‌اند

🛠️

نصب ESP32 در آردوینو IDE: از آدرس Board Manager تا درایور CP2102 و CH340 و اولین آپلود

🎛️

analogRead در ESP32: خواندن پتانسیومتر با ADC دوازده‌بیتی و تبدیل به ولتاژ

🌡️

سنسور دما و رطوبت DHT11 و DHT22 با میکروپایتون روی رزبری پای پیکو

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