در آموزش قبلی برای برد هایی نظیر 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(“”);
}