بستن منو
×

وارد کردن اطلاعات وایفای در وبسرور esp8266

دسته بندی : ماژول های وای فای

چکیده :

وارد کردن اطلاعات وایفای در وبسرور esp8266 مانند وارد کردن پسورد وایفای در nodemcu و وبسرور و اتصال به وایفای مورد نظر بدون آپلود مجدد

سلام دوستان امروز میخوام بگم چطور میتونید با استفاده از esp8266 یک وبسروری ایجاد کنید که کاربر بتونه اطلاعات وایفایش رو وارد کنه و بتونه با استفاده از اون به وایفای مورد نظرش متصل بشه بدون اینکه بخواد کد رو مجددا آپلود کنه پس با آموزش اطلاعات وایفای در وبسرور esp8266 همراه باشید

پیش نیاز این آموزش

پبش نیاز اطلاعات وایفای در وبسرور esp8266 دیدن جلسات قبل هست که باید ببینید

۱ – جلسه اول – متد GET در ESP8266

۲ – جلسه دوم – متد post در esp8266

 

تغییرات مورد نیاز در کد html

اول از همه اومدیم و کد html جلسه اول رو یکم با کد های css یکم زیبا تر میکنیم و بعد از اون یه select رو گزاشتیم برای اینکه کاربر بتونه اسم وایفایش رو انتخاب کنه

و name اون رو SSID گذاشتیم و بعد از اون یه input از نوع پسورد ساختیم و name اون رو PSK گذاشتیم

تا اینجا فرم ما به شکل زیر هست

وارد کردن اطلاعات وایفای در وبسرور esp8266

حالا باید بیاییم و کد خود را به ۳ قسمت تقسیم کنیم

قسمت اول بعد از باز شد تگ select

قسمت دوم اون دیتایی که توی تگ select قرار میگیره

و قسمت آخر بعد از بسته شدن تگ select و مابقی کد

و کد نهایی میشه مثل کد پایین

<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>HamyarElectronic</title><style>input[type=submit] {width: 100%;padding: 9px;}lable {width: 15% !important;display: block;float: left;}input,select {width: 70%;margin: 5px 0;padding: 10px;border-radius: 5px;border: navajowhite;}body {background: cornflowerblue;}form {max-width: 500px;margin: auto;}</style></head><body><form method="post"><lable for="name">SSID</lable><select name="SSID" id="SSID">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select><br/><lable for="age">PSK</lable><input type="password" name="PSK" id="PSK"><br/><input type="submit"></form></body></html>

قرار دادن کد html در کد آردوینو

در ابتدا باید کد آردوینویی که در جلسه اول نوشتبم رو برداریم و ادامه تغییرات رو روی اون اعمال کنیم


void handleRoot() {
String html = "<!doctype html><html><head><meta charset='utf-8'><meta name='viewport' content='width=device-width, initial-scale=1.0'><title>HamyarElectronic</title><style>input[type=submit] {width: 100%;padding: 9px;}lable {width: 15% !important;display: block;float: left;}input,select {width: 70%;margin: 5px 0;padding: 10px;border-radius: 5px;border: navajowhite;}body {background: cornflowerblue;}form {max-width: 500px;margin: auto;}</style></head><body><form method='post'><lable for='name'>SSID</lable><select name='SSID' id='SSID'>";
int numberOfNetworks = WiFi.scanNetworks();

for (int i = 0; i < numberOfNetworks; i++) {
html += "<option value=\"" + WiFi.SSID(i) + "\">" + WiFi.SSID(i) + "</option>";
}
html += "</select><br/><lable for='age'>PSK</lable><input type='password' name='PSK' id='PSK'><br/><input type='submit'></form></body></html>";
server.send(200, "text/html", html);
if(server.arg("SSID")!=""){
ssid=server.arg("SSID");
password=server.arg("PSK");
wifi_connecting();

}
}

توضیحات کد تابع handleRoot

ابتدا دو قسمت اول و سوم کدمون رو توی کد آردوینو قرار میدهیم و پس از آن میان آن دو کد دستوری را قرار میدهیم مبتنی بر اینکه وایفای های اطراف را بخواند و در میان آن دو قسمت برای ما قرار دهد

 int numberOfNetworks = WiFi.scanNetworks();

ابتدا تعداد وایفای های اطراف را دریافت میکنیم و درون متغییر numberOfNetworks قرار میدهیم

 

 for (int i = 0; i < numberOfNetworks; i++) {
html += "<option value=\"" + WiFi.SSID(i) + "\">" + WiFi.SSID(i) + "</option>";
}

بعد از آن توسط یک حلقه for تمامی وایفای ها را به متغییر html که شامل کد های html ما است قرار میدهیم

 

if(server.arg("SSID")!=""){
ssid=server.arg("SSID");
password=server.arg("PSK");
wifi_connecting();
}

بعد از آن بررسی میکنیم که آرگیومنت SSID مقداردهی شده است و اگر مقدار دهی شده بود متغییر های ssid و password را مقدار دهی میکنیم و بعد از آن تابع wifi_connecting را اجرا میکنیم

 

توضیحات تابع wifi_connecting

ما در این تابع آمده ایم و دستوراتی که مربوط به اتصال به وایفای بود در void setup را درون آن کپی کرده ایم و در عوض آن را صدا زده ایم

دلیل این کار این است که وقتی مقادیر برای ماژول ما ارسال شد به وایفای جدید متصل شود

 

جمع بندی

این یکی از روش هایی است که شما میتوانید موقعی که محصولی را تولید میکنید این دسترسی را به کاربر بدهید که به وایفای مد نظرش متصل شود

در جلسات بعد اطلاعات وایفای در وبسرور esp8266 را درون یک حافظه ذخیره خواهیم کرد پس باما همراه باشید

 

کد نهایی

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>

#ifndef STASSID
#define STASSID "hamyarelectronic"
#define STAPSK "hamyarelectronic"
#endif

String ssid = STASSID;
String password = STAPSK;

ESP8266WebServer server(80);


void wifi_connecting(){
WiFi.begin(ssid, password);
Serial.println("");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());

}

void handleRoot() {
String html = "<!doctype html><html><head><meta charset='utf-8'><meta name='viewport' content='width=device-width, initial-scale=1.0'><title>HamyarElectronic</title><style>input[type=submit] {width: 100%;padding: 9px;}lable {width: 15% !important;display: block;float: left;}input,select {width: 70%;margin: 5px 0;padding: 10px;border-radius: 5px;border: navajowhite;}body {background: cornflowerblue;}form {max-width: 500px;margin: auto;}</style></head><body><form method='post'><lable for='name'>SSID</lable><select name='SSID' id='SSID'>";
int numberOfNetworks = WiFi.scanNetworks();

for (int i = 0; i < numberOfNetworks; i++) {
html += "<option value=\"" + WiFi.SSID(i) + "\">" + WiFi.SSID(i) + "</option>";
}
html += "</select><br/><lable for='age'>PSK</lable><input type='password' name='PSK' id='PSK'><br/><input type='submit'></form></body></html>";
server.send(200, "text/html", html);
if(server.arg("SSID")!=""){
ssid=server.arg("SSID");
password=server.arg("PSK");
wifi_connecting();
}
}


void setup(void) {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
wifi_connecting();
server.on("/", handleRoot);
server.begin();
Serial.println("HTTP server started");
}

void loop(void) {
server.handleClient();
}

مخفی کردن وای فای esp8266

مخفی کردن وای فای ESP8266

توضیحات تابع softAP و تغییر نام و پسورد وای فای داخلی و مخفی کردن وای فای esp8266 و محدود کردن دستگاه های متصل به وای فای

امنیت در وبسرور esp8266

احراز هویت در وبسرور esp8266

امنیت در صفحه های وبسرور esp8266 و ورود کاربر و احراز هویت کاربر در وبسرور nodemcu به همراه کتابخانه و توضیحات کامل امنیت در esp8266

ساخت دیمر دیجیتال

دیمر دیجیتال با ESP8266

دیمر دیجیتال با استفاده از esp8266 و یا nodemcu و کنترل ولتاژ 220 ولت با استفاده از ترایاک و ساخت دیمر هوشمند با گوشی به همراه مدار و آموزش

یک دیدگاه برای “وارد کردن اطلاعات وایفای در وبسرور esp8266”

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *