کنترل موتور dc با وب سرور و ۴ADAIOT

سلام در این جلسه قصد داریم با استفاده از برد NodeMCU و پلتفرم برنامه نویسی بلوکی ۴ADAIOT یک صفحه وب بسازیم که از طریق اون بتونیم یک موتور رو کنترل کنیم.
دقت کنید آدرس صفحه وب به صورت استاتیک روی ۱۹۲.۱۶۸.۱.۱۰ تنظیم شده است.
در صورتی که نتونستید مثل فیلم بلوک ها رو بیارین میتونید به قسمت پروژه های نمونه پلتفرم برید و پروژه کنترلموتور dc با وب سرور رو استفاده کنید .
برای اطلاعات بیشتر در مورد سرور وب (web server)روی لینک زیر کلیک کنید و به سایت ویکی پدیا رفته و مطالعه کنید.
وب سرور چیست ؟
کارساز وب،[۱] سرور وب یا وب سرور (به انگلیسی: web server)، سامانهای (میزبان یک نرم افزار) ، و یا سخت افزاری برای اجرای یک نرم افزار است که امکان پاسخگوئی به درخواست های کاربران شبکه جهانی وب را دارد. بهطور کلی یک وب سرور میزبان یک یا چند وب سایت است که درخواست های ارسالی از پروتکل اچ تی تی پی و یا چندین پروتکل را پردازش میکند .
اصلیترین وظیفه یک وب سرور میزبانی و ذخیره صفحات وب، پردازش آنها و ارسال صحیح اطلاعات پردازش شده در صفحات وب به کاربران است. ایجاد ارتباط بین کاربر و سرور از طریق جایی به نام Hypertex Transfer Protocol و یا به اختصار HTTP انجام می شود. اطلاعات ارسالی سرور به کاربر معمولا در قالب ساختار HTML است که میتواند حاوی عکس، صفحات نوشتاری و صفحات کد نویسی شده باشد.
در پاسخ به درخواست کاربر برای ارتباط با یک صفحه وب مشخص توسط پروتکل HTTP ارسال میکند ، سرور بعد از دسترسی به صفحه درخواستی و پردازش آن، پاسخ کاربر را ارسال میکند، و اگر صفحه مورد درخواست کاربر را پیدا نکرد پیامی مبنی بر وجود مشکل در اطلاعات درخواستی به دستگاه کاربر می فرستد. اطلاعات رسیده به ماشین کاربر ابتدا توسط یک مرورگر وب یا خزنده وب دریافت میشود.
خب حالا که فهمیدیم وب سرور چیه بریم سراغ پروژمون.
برای ورود به پلتفرم برنامه نویسی بلوکی ۴ADAIOT روی دکمه زیر کلیک کنید.
ماژول درایور موتور دوکاناله L9110s:



شماتیک مشخصات فنی نمایش این محصول در فروشگاه
شماتیک و اتصالات:
- پایه VCC ماژول درایور موتور = پایه VIN برد NodeMCU
- پایه GND ماژول درایور موتور = پایه GND برد NodeMCU
- پایه B_A ماژول درایور موتور = پایه D1 برد NodeMCU
- پایه B_B ماژول درایور موتور = پایه D2 برد NodeMCU
- سیم مثبت یا قرمز جاباتری چهارتایی = پایه VIN برد NodeMCU
- سیم منفی یا مشکی جاباتری چهارتایی = پایه GND برد NodeMCU
نحوه قرار گرفتن بلوک ها در پلتفرم ۴ADAIOT :
کد ساخته شده توسط پلتفرم۴ADAIOT:
کد ساخته شده توسط پلتفرم رو کپی میکنیم و وارد نرم افزار Arduino کرده و روی برد آپلود میکنیم .
نکته : برای سرعت بهتر و هنگ نکردن سرور بهتر است تاخیر آخر کد رو روی ۵۰ یا ۱۰۰ تنظیم کنید.
///////////////////////////////// // Generated with a lot of love// // with 4ADAIOT FOR ESP8266 // // Website: https://4adateam.com // ///////////////////////////////// #include <ESP8266WiFi.h> String ClientRequest; IPAddress staticIP758_10(192,168,1,10); IPAddress gateway758_10(192,168,1,1); IPAddress subnet758_10(255,255,255,0); WiFiServer server(80); void setup() { ClientRequest = ""; Serial.begin(9600); pinMode(5, OUTPUT); pinMode(4, 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(staticIP758_10, gateway758_10, subnet758_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("right") > 0) { digitalWrite(5,HIGH); digitalWrite(4,LOW); } if (ClientRequest.indexOf("left") > 0) { digitalWrite(5,LOW); digitalWrite(4,HIGH); } if (ClientRequest.indexOf("stop") > 0) { digitalWrite(5,LOW); digitalWrite(4,LOW); } 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 MOTOR CONTROL"); client.println("</h1>"); client.println("<a href="); client.println("right"); client.println("><button>"); client.println("Right"); client.println("</button></a>"); client.println("<a href="); client.println("left"); client.println("><button>"); client.println("Left"); client.println("</button></a>"); client.println("<a href="); client.println("stop"); client.println("><button>"); client.println("Stop"); client.println("</button></a>"); client.println("</body>"); client.println("</html>"); delay(50); }