کنترل لامپ و وسایل برقی با وب سرور و ۴ADAIOT

سلام در این جلسه قصد داریم با استفاده از برد NodeMCU و پلتفرم برنامه نویسی بلوکی ۴ADAIOT یک صفحه وب بسازیم که از طریق اون بتونیم لامپ و وسایل برقی رو کنترل کنیم.
دقت کنید آدرس صفحه وب به صورت استاتیک روی ۱۹۲.۱۶۸.۱.۱۰ تنظیم شده است.
در صورتی که نتونستید مثل فیلم بلوک ها رو بیارین میتونید به قسمت پروژه های نمونه پلتفرم برید و پروژه کنترل لامپ و وسایل برقی با وب سرور رو استفاده کنید .
برای اطلاعات بیشتر در مورد سرور وب (web server)روی لینک زیر کلیک کنید و به سایت ویکی پدیا رفته و مطالعه کنید.
وب سرور چیست ؟
کارساز وب،[۱] سرور وب یا وب سرور (به انگلیسی: web server)، سامانهای (میزبان یک نرم افزار) ، و یا سخت افزاری برای اجرای یک نرم افزار است که امکان پاسخگوئی به درخواست های کاربران شبکه جهانی وب را دارد. بهطور کلی یک وب سرور میزبان یک یا چند وب سایت است که درخواست های ارسالی از پروتکل اچ تی تی پی و یا چندین پروتکل را پردازش میکند .
اصلیترین وظیفه یک وب سرور میزبانی و ذخیره صفحات وب، پردازش آنها و ارسال صحیح اطلاعات پردازش شده در صفحات وب به کاربران است. ایجاد ارتباط بین کاربر و سرور از طریق جایی به نام Hypertex Transfer Protocol و یا به اختصار HTTP انجام می شود. اطلاعات ارسالی سرور به کاربر معمولا در قالب ساختار HTML است که میتواند حاوی عکس، صفحات نوشتاری و صفحات کد نویسی شده باشد.
در پاسخ به درخواست کاربر برای ارتباط با یک صفحه وب مشخص توسط پروتکل HTTP ارسال میکند ، سرور بعد از دسترسی به صفحه درخواستی و پردازش آن، پاسخ کاربر را ارسال میکند، و اگر صفحه مورد درخواست کاربر را پیدا نکرد پیامی مبنی بر وجود مشکل در اطلاعات درخواستی به دستگاه کاربر می فرستد. اطلاعات رسیده به ماشین کاربر ابتدا توسط یک مرورگر وب یا خزنده وب دریافت میشود.
خب حالا که فهمیدیم وب سرور چیه بریم سراغ پروژمون.
برای ورود به پلتفرم برنامه نویسی بلوکی ۴ADAIOT روی دکمه زیر کلیک کنید.
شماتیک و اتصالات:
- پایه VCC ماژول رله چهارکانال = پایه VIN ولت برد NodeMCU
- پایه GND ماژول رله چهارکانال = پایه GND برد NodeMCU
- پایه IN1 ماژول رله چهارکانال = پایه D1 برد NodeMCU
- پایه IN2 ماژول رله چهارکانال = پایه D2 برد NodeMCU
- پایه IN3 ماژول رله چهارکانال = پایه D3 برد NodeMCU
- پایه IN4 ماژول رله چهارکانال = پایه D4 برد NodeMCU
- سیم فاز لامپ = پایه NO ماژول رله چهارکانال
- فاز ورودی = کلید تک پل
- فاز خروجی کلید تک پل = پایه COM ماژول رله چهار کانال
- سیم نول برق ورودی = سیم نول لامپ ها وپریز
نحوه قرار گرفتن بلوک ها در پلتفرم ۴ADAIOT :
تنها یک نکته در قسمت بلوک ها هست اون هم اینه اگه از رله چهار کانال معمولی استفاده میکنید باید جای HIGH و LOW رو در بلوک ها عوض کنید.
کد ساخته شده توسط پلتفرم۴ADAIOT:
کد ساخته شده توسط پلتفرم رو کپی میکنیم و وارد نرم افزار Arduino کرده و روی برد آپلود میکنیم .
نکته : برای سرعت بهتر و هنگ نکردن سرور بهتر است تاخیر آخر کد رو روی ۵۰ یا ۱۰۰ تنظیم کنید.
برای راحتی در کد زیر جای HIGH و LOW برعکس شده .
///////////////////////////////// // Generated with a lot of love// // with 4ADAIOT FOR ESP8266 // // Website: https://4adateam.com // ///////////////////////////////// #include <ESP8266WiFi.h> String ClientRequest; IPAddress staticIP938_10(192,168,1,10); IPAddress gateway938_10(192,168,1,1); IPAddress subnet938_10(255,255,255,0); WiFiServer server(80); void setup() { ClientRequest = ""; Serial.begin(9600); pinMode(5, OUTPUT); pinMode(4, OUTPUT); pinMode(0, OUTPUT); pinMode(2, OUTPUT); WiFi.disconnect(); delay(3000); Serial.println("START"); WiFi.begin("wifi name "," wifi password"); while ((!(WiFi.status() == WL_CONNECTED))){ delay(300); Serial.print(".."); } Serial.println("Connected"); WiFi.config(staticIP938_10, gateway938_10, subnet938_10); Serial.println("Your IP is"); Serial.println((WiFi.localIP().toString())); server.begin(); } void loop() { WiFiClient client = server.available(); if (!client) { return; } while(!client.available()){ delay(1); } ClientRequest = (client.readStringUntil('\r')); client.flush(); if (ClientRequest.indexOf("relay-1-on") > 0) { digitalWrite(5,LOW); } if (ClientRequest.indexOf("relay-1-off") > 0) { digitalWrite(5,HIGH); } if (ClientRequest.indexOf("relay-2-on") > 0) { digitalWrite(4,LOW); } if (ClientRequest.indexOf("relay-2-off") > 0) { digitalWrite(4,HIGH); } if (ClientRequest.indexOf("relay-3-on") > 0) { digitalWrite(0,LOW); } if (ClientRequest.indexOf("relay-3-off") > 0) { digitalWrite(0,HIGH); } if (ClientRequest.indexOf("relay-4-on") > 0) { digitalWrite(2,LOW); } if (ClientRequest.indexOf("relay-4-off") > 0) { digitalWrite(2,HIGH); } client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("<head>"); client.println("</head>"); client.println("<body>"); client.println("<h1 style=""color:#ff0000"">"); client.println("4ADA RELAY CONTROL"); client.println("</h1>"); client.println("<a href="); client.println("relay-1-on"); client.println("><button>"); client.println("Relay 1 ON"); client.println("</button></a>"); client.println("<a href="); client.println("relay-1-off"); client.println("><button>"); client.println("Relay 1 OFF"); client.println("</button></a>"); client.println("<a href="); client.println("relay-2-on"); client.println("><button>"); client.println("Relay 2 ON"); client.println("</button></a>"); client.println("<a href="); client.println("relay-2-off"); client.println("><button>"); client.println("Relay 2 OFF"); client.println("</button></a>"); client.println("<a href="); client.println("relay-3-on"); client.println("><button>"); client.println("Relay 3 ON"); client.println("</button></a>"); client.println("<a href="); client.println("relay-3-off"); client.println("><button>"); client.println("Relay 3 OFF"); client.println("</button></a>"); client.println("<a href="); client.println("relay-4-on"); client.println("><button>"); client.println("Relay 4 ON"); client.println("</button></a>"); client.println("<a href="); client.println("relay-4-off"); client.println("><button>"); client.println("Relay 4 OFF"); client.println("</button></a>"); client.println("</body>"); client.println("</html>"); delay(50); }