🏠 درس 90: پروژه: داشبورد خانه روی گوشی
یک صفحه برای همهچیز: کلید لامپ، دمای اتاق و اسلایدر سرعت پنکه.
سطح: پیشرفته · زمان: حدود 25 دقیقه · مفاهیم: پروژه، وبسرور، موتور
قدمهای این درس
- نقشهی پروژه
- قدم ۱ — مدار کامل
- قدم ۲ — سرور داشبورد
- اشتباه رایج — موتور مستقیم روی پایه
- چالش
نمونهای از کد این درس
// ESP32 home dashboard: lamp switch, temperature and a fan slider.
#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
dht.begin();
WiFi.begin("MyHome", "YOUR_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", []() {
server.send(200, "text/plain", String(dht.readTemperature(), 1));
});
server.begin();
}
void loop() {
server.handleClient();
}
چرا این درس؟
دورهی تینکرکد فارسی تعاملی است: هر قدم را خودت داخل شبیهساز انجام میدهی — مدار واقعی میچینی، کد واقعی اجرا میکنی و نتیجه را همان لحظه میبینی. این درس روی درسهای قبلی ساخته شده، پس اگر تازه شروع کردهای از درس ۱ بیا!
این درس را رایگان در شبیهساز شروع کن 🎓