کنترل LED از طریق وب
در این جلسه قصد داریم با استفاده از برد NodeMCU و محیط وب سرور یک عدد LED رو خاموش و روشن کنیم. این کار به شکل ها و راه های مختلفی انجام میشه داخل این آموزش ما به شما راحت ترین و ساده ترین راه رو آموزش میدیم و کم کم به مراحل بعدی میپردازیم. در این مرحله نحوه کار به این شکل هستش که برد NodeMCU به وایفای وصل میشه و به عنوان سرور یک صفحه وب ایجاد میکنه که داخل این صفحه دو کلید خاموش و روشن ایجاد میکنه . داخل این مرحله وقتی هرکدوم از دکمه ها کلیک بشه به ادرسی ارجاع داده میشه در واقع ما دو تا ادرس داریم یکی برای خاموش کردن LED و یکی برای روشن کردن LED حالا برای اینکه ما هردفعه برای خاموش و روشن کردن لازم نباشه ادرس رو دستی تایپ کنیم و به صفحه دیگ بریم دو تا کلید گذاشته شده که هر کدوم کلیک بشه به صفحه خودش ارجاع داده میشه. کنترل LED از طریق وب سرور روش های مختلفی داره و ما داخل این آموزش از ساده ترین روش برای کنترل یک LED استفاده میکنیم برای یادگیری روش های دیگ میتونید به آموزش های بعدی مراجعه کنید.
شماتیک و اتصالات:
پایه مثبت یا بلند تر LED = پایه D1 برد NodeMCU پایه منفی یا کوتاه تر LED = پایه GND برد NodeMCU
کد نویسی:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ ۲۹ ۳۰ ۳۱ ۳۲ ۳۳ ۳۴ ۳۵ ۳۶ ۳۷ ۳۸ ۳۹ ۴۰ ۴۱ ۴۲ ۴۳ ۴۴ ۴۵ ۴۶ ۴۷ ۴۸ ۴۹ ۵۰ ۵۱ ۵۲ ۵۳ ۵۴ ۵۵ ۵۶ ۵۷ ۵۸ ۵۹ ۶۰ ۶۱ ۶۲ ۶۳ ۶۴ ۶۵ ۶۶ ۶۷ ۶۸ ۶۹ ۷۰ ۷۱ ۷۲ ۷۳ ۷۴ ۷۵ ۷۶ ۷۷ ۷۸ ۷۹ ۸۰ ۸۱ ۸۲ ۸۳ ۸۴ ۸۵ ۸۶ ۸۷ ۸۸ ۸۹ ۹۰ ۹۱ ۹۲ ۹۳ ۹۴ ۹۵ ۹۶ ۹۷ ۹۸ ۹۹ ۱۰۰ ۱۰۱ ۱۰۲ ۱۰۳ ۱۰۴ ۱۰۵ ۱۰۶ ۱۰۷ ۱۰۸ ۱۰۹ ۱۱۰ ۱۱۱ ۱۱۲ ۱۱۳ ۱۱۴ ۱۱۵ ۱۱۶ ۱۱۷ ۱۱۸ ۱۱۹ |
#include <ESP8266WiFi.h> const char* ssid = "Wi-Fi Name"; const char* password = "Password"; int LED = D1; WiFiServer server(۸۰); void setup() { Serial.begin(۱۱۵۲۰۰); pinMode(LED, OUTPUT); digitalWrite(LED, LOW); WiFi.begin(ssid, password); server.begin(); } void loop() { WiFiClient client = server.available(); String request = client.readStringUntil('\r'); client.flush(); int value = LOW; if(request.indexOf("/LED=ON") != -۱) { digitalWrite(LED, HIGH); // Turn LED ON value = HIGH; } if(request.indexOf("/LED=OFF") != -۱) { digitalWrite(LED, LOW); // Turn LED OFF value = LOW; } //*------------------HTML Page Code---------------------*// client.println("HTTP/1.1 200 OK"); // client.println("Content-Type: text/html"); client.println(""); client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.print(" CONTROL LED: "); if(value == HIGH) { client.print("ON"); } else { client.print("OFF"); } client.println("<br><br>"); client.println("<a href=\"/LED=ON\"\"><button>ON</button></a>"); client.println("<a href=\"/LED=OFF\"\"><button>OFF</button></a><br />"); client.println("</html>"); delay(۱); } |
اول ازهمه کتابخونه esp8266 رو فرا خوانی میکنیم.
۱ |
#include <ESP8266WiFi.h> |
بعدمتغیری مینویسیم برای مشخص کردن نام وایفای و رمز عبور .
۱ ۲ ۳ |
const char* ssid = "Wi-Fi Name"; const char* password = "Password"; |
متغیری برای معرفی پایه LED مینویسیم .
۱ |
int LED = D1; |
پورت سرور رو روی ۸۰ تنظیم میکنیم.
۱ |
WiFiServer server(۸۰); |
داخل void setup سرعت آپلود رو روی ۱۱۵۲۰۰ تنظیم میکنیم.
۱ ۲ ۳ ۴ ۵ |
void setup() { Serial.begin(۱۱۵۲۰۰) |
حالت پایه LED رو مشخص میکنیم که ورودی هست یا خروجی که در اینجا خروجی هست.
۱ |
pinMode(LED, OUTPUT); |
بطور پیشفرض دستور خاموش بودن LED رو مینویسیم برای اینکه وقتی برد به برق وصل شد به طور پیش فرض LED خاموش باشه .
۱ |
digitalWrite(LED, LOW); |
اون دوتا متغیری رو که اول کد برای معرفی نام وایفای و رمز عبور وایفای نوشته بودیم فرا میخونیم و بعد سرور رو استارت میکنیم یا فرا میخونیم.
۱ ۲ ۳ ۴ ۵ ۶ |
WiFi.begin(ssid, password); server.begin(); } |
داخل void loop کد اتصال کلاینت رو مینویسیم .
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ |
void loop() { WiFiClient client = server.available(); String request = client.readStringUntil('\r'); client.flush(); |
متغیری به اسم valueمعرفی میکنیم و مقدار اولیه اون رو LOW میگذاریم.
۱ |
int value = LOW; |
حالا شرطی مینویسیم که اگه صفحه روشن شدن LED مراجعه شد LED روشن بشه ومقدار value مساوی HIGH بشه و اگه صفحه خاموش شدن LED مراجعه شد LED خاموش بشه و مقدار value مساوی LOW قرار بگیره.
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ |
{ digitalWrite(LED, HIGH); // Turn LED ON value = HIGH; } if(request.indexOf("/LED=OFF") != -۱) { digitalWrite(LED, LOW); // Turn LED OFF value = LOW; } |
داخل این قسمت هم کد های html مربوط به وب سرور رو مینویسیم.
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ ۲۹ ۳۰ ۳۱ ۳۲ ۳۳ ۳۴ ۳۵ ۳۶ ۳۷ ۳۸ ۳۹ ۴۰ ۴۱ ۴۲ ۴۳ ۴۴ ۴۵ ۴۶ ۴۷ ۴۸ ۴۹ |
//*------------------HTML Page Code---------------------*// client.println("HTTP/1.1 200 OK"); // client.println("Content-Type: text/html"); client.println(""); client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.print(" CONTROL LED: "); if(value == HIGH) { client.print("ON"); } else { client.print("OFF"); } client.println("<br><br>"); client.println("<a href=\"/LED=ON\"\"><button>ON</button></a>"); client.println("<a href=\"/LED=OFF\"\"><button>OFF</button></a><br />"); client.println("</html>"); delay(۱); } |
کتابخانه esp8266 رو از کجا آوردید؟
سلام آدرس سایتی که داخلش میرید برا خاموش و روشن کردن led رو از کجا آوردید؟
سلام باید
داخل سریال مانیتور ببینیم ولی هاست نیم دانم جواب نمی دهد