به تارنمای مجموعه ی AKTonics خوش آمدید
لطفا در نظر داشته باشید با توجه به مشغله ی کاری زیاد بروزرسانی سایت و اضافه کردن محتوی جدید به کندی پیش خواهد رفت. همچنین در با توجه به کمبود وقت کافی برای مواردی که در جای درست ثبت نشده اند، هرگونه نظر یا پیغامی که در جای مناسب ثبت نشده باشد بدون اطلاع قبلی حذف خواهد شد. لطفا برای راهنمایی در مورد یک مطلب خاص در بخش انتهایی همان صفحه سوال خود را ثبت کنید و برای خرید از سایت، سفارش پروژه یا پشتیبانی موارد خریداری شده از طریق صفحه ی تماس با ما روی پیام رسان واتزاپ یا تلگرام پیغام ثبت کنید. خواهشمندیم از موارد بیهوده بپرهیزید. از همراهی و شکیبایی شما متشکریم...
آموزش کنترل پین از طریق وب برای برد های مبنی بر ESP8266

در آموزش قبلی برای برد هایی نظیر NodeMCU، D1 Mini و Mini S1 که مبنی بر هسته ی ESP8266 هستند، صفحه ی وب ساده ای را ساختیم که مختصر اطلاعاتی را نمایش می داد. در این آموزش نیز با استفاده از یک Sketch ساده و نرم افزار Arduino این صفحه ی وب را کمی کامل تر و کاربردی تر می کنیم تا بتوان با استفاده از آن LED ماژول ESP8266 را خاموش و روشن کنیم.
همانطور که گفته شد، یکی از مزیت های استفاده از ESP8266 امکان نمایش صفحات وب به صورت مستقیم روی دستگاه های دارای WiFi است و محدودیتی در استفاده از محتوی نیست پس صرفا به خلاقیت فرد بستگی دارد. همچنین در کدنویسی و برنامه ریزی میکروکنترلر ها نیز محدودیتی وجود ندارد. در اینجا با استفاده از یک صفحه ی ساده و چند خط کد، کنترل LED ماژول ESP8266 را به دست میگیریم و آن را از طریق یک صفحه ی وب خاموش یا روشن می نماییم. کد ارائه شده تنها جهت امتحان و آشنایی با مباحث مطرح شده است و در استفاده ای اصلی می توان آن را بسیار کامل تر، پیچیده تر، کارآمد تر و با ظاهر مناسب تری ارائه کرد.
توضیحات لازم به زبان فارسی داخل اسکچ ذکر شده است. دانلود اسکچ
/*
AK ESP8266 Pin Control
*/
#include <ESP8266WiFi.h>
// تنظیمات شبکه ی خود را در این قسمت وارد کنید.
const char* ssid = "ssid"; //نام شبکه
const char* password = "password"; //رمز شبکه
// تعریف پین LED
int ledPin = 2; // GPIO2
// تعریف اولین مقدار به صورت پیش فرض HIGH
int value = HIGH;
WiFiServer server(80);
void setup()
{
delay(1000);
Serial.begin(115200);
// تعریف پین LED به صورت خروجی
pinMode(ledPin, OUTPUT);
// خاموش نگه داشتن LED پس از هر بار شروع مجدد برد
digitalWrite(ledPin, HIGH);
// در حال برقراری ارتباط با مودم یا روتر
WiFi.begin(ssid, password);
// نمایش وضعیت ارتباط
Serial.println();
Serial.print("Connecting");
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
// نمایش ارتباط موفقیت آمیز
Serial.println("success!");
// نمایش ایپی برد
Serial.print("IP Address is: ");
Serial.println(WiFi.localIP());
// شروع سرور
server.begin();
Serial.println("Server started");
}
void loop() {
// بررسی وضعیت بازدید کننده
WiFiClient client = server.available();
if (!client) {
return;
}
// منتظر ارسال فرمان بازدید کننده
Serial.println("new client");
while(!client.available()){
delay(1);
}
// خواندن اولین خط درخواست بازدید کننده
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
// بررسی درخواست بازدید کننده
// چنانچه در درخواست دریافت شده مقدار /LED=ON وجود داشت
if (request.indexOf("/LED=ON") != –1) {
// پین خروجی و مقدار داده را LOW کن
digitalWrite(ledPin, LOW);
value = LOW;
}
// چنانچه در درخواست دریافت شده مقدار /LED=OFF وجود داشت
if (request.indexOf("/LED=OFF") != –1){
// پین خروجی و مقدار داده را HIGH کن
digitalWrite(ledPin, HIGH);
value = 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("<center>");
// LED را روشن کن
client.println("<a href=\"/LED=ON\">روشن کن</a> – ");
// LED را خاموش کن
client.println("<a href=\"/LED=OFF\">خاموش کن</a><br>");
// ابوالفضل خزائی
client.println("ابوالفضل خزائی");
client.println("</center>");
client.println("</html>");
delay(1);
// قطع ارتباط بازدید کننده
Serial.println("Client disonnected");
Serial.println("");
}