آموزش Espآموزش آردوینوآموزش اینترنت اشیاپروژه های Espپروژه های اینترنت اشیا

ساخت وب سرور با آردوینو و ESP8266 (آموزش جامع)

با ظهور سیستم های هوشمند و استفاده از داده ها و هوش مصنوعی، پیش بینی های در مورد اینترنت اشیا درست از آب در آمده است. اینترنت اشیا انقلاب صنعتی چهارم شده است و با موفقیت تکنولوژی و تولید مسکونی را تغییر داده است. چه زمانی بهتر از امروز برای یادگیری اینترنت اشیا؟ در این آموزش قصد داریم با استفاده از آردوینو و ESP8266-01 یک وب سرور راه اندازی کنیم. بیایید شروع کنیم!

وب سرور در مقابل کلاینت

وب سرور نرم افزار، سخت افزار یا ترکیبی از هر دو است که حاوی فایل های مورد نیاز برای پردازش و ارائه صفحات وب است. کلاینت وب به سادگی هر دستگاهی است که می تواند یک درخواست HTTP/Web را به یک وب سرور ارسال کند. پروتکل HTTP یا Hypertext Transfer Protocol یک پروتکل منحصر به فرد است که وب سرور و سرویس گیرنده وب برای برقراری ارتباط از آن استفاده می کنند.

برای درک بهتر، فکر کنید میخواهید وارد سایت irenx.ir شوید. ابتدا آدرس را در مرورگر خود وارد میکنید، چند ثانیه بعد صفحه اصلی آیرنکس مشاهده میشود.

در این مثال، کامپیوتر شما یک سرویس گیرنده وب است. رایانه شما با استفاده از یک مرورگر وب، مثلا Chrome یا Firefox، یک درخواست وب ارسال می کند. مرورگر وب درخواست را به سرور وب که میزبان آیرنکس است می فرستد. سپس داده های مورد نیاز برای نمایش صفحه اصلی آیرنکس در کامپیوتر شما دریافت میشود. وب سروری که یک وب سایت را میزبانی می کند، معمولاً یک رایانه هدفمند است که حجم عظیمی از داده ها را ذخیره می کند. آنها آدرس های IP منحصر به فردی نیز دارند.

وب سرور آردوینو

شما به سرور های بزرگ که مخصوص سایت ها هستند نیازی نخواهید داشت. شما میتوانید به سادگی یک آردوینو را به یک ماژول ESP8266 متصل کنید و یک وب سرور ساده اما کار آمد بسازید. با یک وب سرور آردوینو میتوانید یک صفحه وب ایجاد کنید که داده های سنسور ها را نمایش دهد یا کنترل پایه ها را از طریق آن انجام دهید.

وب سروری که از طریق اینترنت در هر نقطه ای از جهان قابل دسترسی باشد، سرور جهانی نامیده می شود. همچنین وب سروری که فقط در شبکه محلی (LAN) شما قابل دسترسی است، سرور محلی نامیده می شود. راه های زیادی برای ایجاد یک سرور جهانی وجود دارد. در این آموزش قصد داریم از روشی به نام پورت فورواردینگ استفاده کنیم.

درخواست های وب

برای دریافت داده از سرورهای وب، کلاینت ها (درخواست کننده – کاربر) از درخواست های HTTP استفاده می کنند. چندین نوع درخواست HTTP وجود دارد، اما برای ایجاد یک سرور آردوینو فقط باید دو مورد را یاد بگیرید. این درخواست ها HTTP GET و HTTP POST نامیده می شوند.

  • HTTP GET یک درخواست وب است که داده ها را از یک مرورگر وب دریافت می کند. هیچ چیز روی سرور تغییر نمی کند. فقط داده ها را از دریافت میکند و میخواند.
  • HTTP POST یک درخواست وب است که داده ها را به سرور منتقل می کند. یعنی چیز جدیدی را به سرور اضافه می کند.

یک مثال معمولی از درخواست GET، مرور ساده یک وب سایت است. از سوی دیگر، درخواست های POST در تایپ متن در یک صفحه وب، به عنوان مثال، نام کاربری و رمز عبور استفاده می شود.

ماژول ESP8266-01

ماژول ESP8266-01

ESP8266 یک تراشه وای فای است که توسط Espressif Systems ساخته شده است. این ماژول امکانات کامل شبکه WiFi را ارائه می دهد و کاربران را قادر می سازد تا یک وب سرور یا سرویس گیرنده وب با یک پردازنده جداگانه یا حتی مستقل راه اندازی کنند. این ماژول به خوبی با آردوینو سازگار است، به این معنی که می توانید آن را با استفاده از Arduino IDE برنامه ریزی کنید.

ما قصد داریم از ماژول ESP8266 نسخه ESP-01 استفاده کنیم. این ماژول توسط یک سازنده شخص ثالث به نام AI-Thinker توسعه یافته است. ESP8266 دارای یک MCU (واحد میکروکنترلر) داخلی است که به کاربران امکان می دهد پین های دیجیتال I/O را مستقیماً از طریق Arduino IDE کنترل کنند.

پین های ماژول ESP8266

  • GND – زمین
  • GPIO2 – پین ورودی/خروجی قابل برنامه ریزی با یک مقاومت پول آپ داخلی
  • GPIO0 – پین ورودی/خروجی قابل برنامه ریزی با مقاومت پول آپ داخلی
  • RX – پین گیرنده UART
  • VCC – پین 3.3 ولت
  • REST – پین تنظیم مجدد خارجی
  • CH_PD – پین فعال کردن تراشه
  • TX – پین فرستنده UART

راه اندازی وب سرور محلی با آردوینو

قبل از ایجاد یک سرور جهانی، باید بدانیم که چگونه یک سرور محلی کار می کند. برای راه اندازی یک سرور محلی، باید راهی برای ارسال دستورات AT به ESP-01 پیدا کنیم. این دستورات از سیستم عامل از پیش نصب شده AT ESP-01 می آیند. ما می‌توانیم از کابل FTDI برای ارسال مستقیم آنها استفاده کنیم یا می‌توانیم از یک پردازنده جداگانه مانند آردوینو استفاده کنیم. در این آموزش قصد داریم از یک آردوینو استفاده کنیم.

مطلب پیشنهادی:  سیستم بررسی کیفیت و میزان آب با esp32

ابتدا به قطعات زیر نیاز دارید:

  • آردوینو اونو
  • ماژول ESP8266 ESP-01
  • دو مقاومت 1 کیلو اهم
  • برد بورد
  • سیم های جامپر
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

سپس ESP-01 را مانند شکل زیر به آردوینو متصل کنید:

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

راه اندازی وب سرور محلی با آردوینو

حداکثر ولتاژ ورودی ESP8266-01 برابر با 3.6 ولت است. هنگام اتصال آن به منبع تغذیه 3.3 ولت، همیشه پین ​​ها را دوبار بررسی کنید. اگر به طور تصادفی آن را به منبع تغذیه 5 ولت وصل کنید، ممکن است ماژول به صورت دائمی آسیب ببیند.

هر دو مقاومت 1 کیلو اهم به ترتیب به عنوان مقاومت پول آپ و پول دان برای پین های CH_PD و RX عمل می کنند.

استفاده از Arduino IDE

پس از آماده سازی سخت افزار، اکنون به برنامه نویسی می پردازیم.

Arduino IDE را باز کنید. به File >> Examps >> Basics >> BareMinimum بروید سپس کد را آپلود کنید. این کار برای اطمینان از اینکه هیچ برنامه ای روی برد آردوینو اجرا نمی شود است. سپس سریال مانیتور را باز کنید. مطمئن شوید که نرخ باود را روی پیش‌فرض تنظیم کنید که معمولاً 115200 است. سپس دستور AT زیر را تایپ کنید:

AT

اگر “OK” را مشاهده کردید، به این معنی است که ESP8266-01 کار می کند. اگر پاسخی دریافت نکردید، پین ​​RST را به GND وصل کنید و دوباره امتحان کنید.

دستورات AT در ESP8266

دستورات ESP8266 AT به کاربران این امکان را می دهد تا عملیاتی مانند آزمایش اتصال، تنظیم حالت عملکرد، اتصال به WiFi، تعیین آدرس IP و … را انجام دهند.

تنظیم حالت

پس از تایید کارکرد تراشه، حالت عملکرد را با تایپ دستور AT زیر تنظیم کنید:

AT+CWMODE=1

ESP8266-01 دارای سه حالت کار است: (1) ایستگاه (STA); (2) نقطه دسترسی (AP)؛ و (3) هر دو

در حالت اول، ماژول WiFi را طوری تنظیم می کنید که به عنوان یک ایستگاه (STA) عمل کند. این ماژول توانایی اتصال به شبکه WiFi موجود را به دست می آورد.

در حالت دوم، ماژول WiFi را طوری تنظیم می کنید که به عنوان یک نقطه دسترسی (AP) عمل کند. این ماژول به عنوان یک شبکه WiFI عمل می کند که در آن دستگاه هایی مانند رایانه می توانند به آن متصل شوند.

در حالت سوم، ماژول WiFi را طوری تنظیم می کنید که هم به عنوان AP و هم به عنوان STA عمل کند.

اگر می‌خواهیم از آن به عنوان وب سرور استفاده کنیم، باید ماژول را روی حالت AP تنظیم کنیم. برای بررسی اینکه ESP8266 در چه حالتی است، AT+CWMODE را تایپ کنید. پاسخ شماره 1، 2 یا 3 خواهد بود که مربوط به حالت عملکرد است.

اتصال به وای فای

برای اتصال به شبکه وای فای، دستور زیر را تایپ کنید:

AT+CWJAP= “SSID”,“Password”

این موارد به حروف کوچک و بزرگ حساس هستند، بنابراین حتماً نام و رمز عبور شبکه WiFi را دقیقا تایپ کنید. همچنین بین علامت نقل قول و کاما نباید فاصله وجود داشته باشد. در صورت موفقیت آمیز بودن اتصال، یک پاسخ OK دریافت خواهید کرد.

اتصال را با استفاده از این دستور AT تأیید کنید:

AT+CIFSR

این دستور AT آدرس های IP و MAC ماژول ESP-01 را می دهد. مطمئن شوید که هر دو آدرس IP و MAC خود را یادداشت کنید زیرا ما بعداً از آن برای ارسال پورت استفاده خواهیم کرد.

فعال کردن اتصالات

همچنین باید ESP-01 را طوری تنظیم کنیم که از چندین اتصال پشتیبانی کند زیرا به آن به عنوان یک سرور نیاز داریم. برای انجام این کار، این دستور را در مانیتور سریال وارد کنید:

AT+CIPMUX=1

علاوه بر این، سرور را با استفاده از دستور راه اندازی کنید:

AT+CIPSERVER=1,80

عدد اول وضعیت پورت را نشان می دهد. مقدار 0 به این معنی است که بسته است در حالی که مقدار 1 به معنای باز شدن است. از طرفی عدد دوم نشان دهنده شماره پورت است. پورت 80 شماره پورت پیش فرض پروتکل HTTP است که برای صفحات HTML نیز از آن استفاده می کنیم.

در این مرحله، ما یک ارتباط بین روتر خانگی شما و ESP-01 برقرار کردیم. اکنون آماده ارسال درخواست های HTTP از رایانه شما به ماژول هستیم.

ارسال و دریافت داده ها

برای ارسال درخواست GET، کافی است آدرس IP ماژول ESP-01 خود را در مرورگر خود وارد کنید. این یک پاسخ روی سریال مانیتور شما ارسال می کند. پاسخ حاوی چندین اطلاعات مفید مانند جزئیات فایلی که باید بازیابی شود، نام مرورگر مورد استفاده برای درخواست، سیستم عامل و … است.

توجه داشته باشید که اگر مرورگر وب شما چیزی را نمایش نمی دهد به این دلیل است که هنوز هیچ داده ای برای بازیابی وجود ندارد.

مطلب پیشنهادی:  دستور isPrintable در آردوینو (بررسی قابل پرینت بودن)

ما میخواهیم عبارت “Hello World” معمولی را برای آزمایش اتصال خود ارسال کنیم. دستور زیر را در مانیتور سریال خود تایپ کنید:

AT+CIPSEND=0,12

عدد اول نشان می دهد که داده ها از چه کانالی قرار است منتقل شوند. در حالی که عدد دوم تعداد کاراکترهای ارسالی را نشان می دهد. از آنجایی که قصد داریم “Hello World” را ارسال کنیم، باید عدد دوم را روی 12 تنظیم کنیم تا به طور کامل با احتساب فاصله ارسال شود.

پس از فشار دادن enter، علامت > ظاهر می شود. این بدان معناست که سرور از قبل منتظر پیام است. بعد، Hello World را در مانیتور سریال خود تایپ کنید. پس از مدتی سریال مانیتور SEND OK را نمایش می دهد. در نهایت برای نمایش داده ها در مرورگر وب خود، کانال ارتباطی را با تایپ دستور زیر ببندید:

AT+CIPCLOSE=0

به محض اینکه Enter را فشار دهید، یک پیام Hello World باید در مرورگر وب شما ظاهر شود.

راه اندازی سرور جهانی با ESP8266

اکنون که کار با سرور محلی تمام شد، با اتصال ESP-01 به اینترنت پیشروی میکنیم. در این بخش، ما قصد داریم یک سرور جهانی ایجاد کنیم که تاریخ، زمان، دما و رطوبت را در یک صفحه وب نمایش می دهد که می توانید در هر جایی به آن دسترسی داشته باشید.

با استفاده از قطعات ذکر شده در زیر، آردوینو و ماژول ESP8266 ESP-01 خود را همانطور که در تصویر زیر نشان داده شده است متصل کنید:

  • آردوینو اونو
  • ماژول ESP8266 ESP-01
  • سنسور دما و رطوبت DHT22
  • دو مقاومت 10K اهم
  • یک مقاومت 1K اهم
  • یک مقاومت 2.2K اهم
  • برد بورد
  • سیم های جامپر

راه اندازی سرور جهانی با ESP8266

قبلاً از سریال مانیتور برای ارسال دستورات AT به ESP-01 استفاده می کردیم. این بار برنامه نویسی واقعی را انجام خواهیم داد.

پین RST (Reset) آردوینو را به GND (زمین) وصل کنید. تنظیم RST روی GND تراشه آردوینو را غیرفعال می کند تا بتوانیم از برد به عنوان برنامه نویس ESP استفاده کنیم. در مرحله بعد، ESP-01 را روشن می کنیم. برخلاف قبل، ما از منبع 3.3 ولت آردوینو استفاده نخواهیم کرد. از آنجایی که اکنون از سنسور استفاده می کنیم، به جریان بیشتری نیاز خواهیم داشت. خوشبختانه، پایه 5 ولت جریان کافی برای هر دو را تامین می کند، اما برای تغییر ولتاژ به 3.3 ولت به یک تقسیم کننده ولتاژ نیاز داریم. مانند تصویر بالا یک مقاومت 1 کیلو اهم و 2.2 کیلو اهم را به صورت سری وصل کنید. انتهای سری را به GND وصل کنید. در نهایت، پایه دیگر مقاومت 1 کیلو اهم را به ریل مثبت برد بورد وصل کنید.

بعد، DHT22 را روشن می کنیم. ماژول DHT22 برای کار به 3.3 ولت تا 5 ولت نیاز دارد. می توانید آن را به هر یک از منابع وصل کنید. اگر می خواهید از 5 ولت استفاده کنید، آن را قبل از تقسیم کننده ولتاژ به پین ​​وصل کنید. سپس، از یک مقاومت pull-up 10k در امتداد خط داده استفاده کنید که DHT22 و ESP-01 را به هم متصل می کند.

سپس، برای مقداردهی اولیه ماژول ESP-01، پایه EN/CH-PD (Enable) را به منبع تغذیه 3.3 ولت وصل کنید. از یک مقاومت pull-up 10k استفاده کنید.

سرانجام. برای شروع حالت برنامه نویسی، پین GPIO 0 را به GND وصل کنید.

برنامه نویسی ESP8266 برای ساخت سرور اینترنتی

در مرحله اول با آموزش ESP8266، موارد مورد نیاز این برد را در نرم افزار آردوینو نصب کنید.

سپس تمام کتابخانه های مورد نیاز را نصب کنید. ESP8266WiFi.h و ESP8266WebServer.h داخلی هستند، بنابراین پس از نصب برد ESP8266 در Boards Manager در دسترس خواهند بود. این دو کتابخانه به توابعی دسترسی می‌دهند که به شما کمک می‌کنند به یک شبکه WiFi متصل شوید، یک سرور راه‌اندازی کنید و درخواست‌های HTTP را مدیریت کنید.

کتابخانه DHT.h کتابخانه ای از Adafruit است که از سنسورهای دما و رطوبت DHT پشتیبانی می کند. این کتابخانه را می توانید از اینجا دانلود کنید.

NTPClient.h و WiFiUdp.h به ترتیب برای همگام سازی سرور NTP و مدیریت پروتکل UDP هستند. کتابخانه NTPClient را می توان از اینجا دانلود کرد. کتابخانه WiFiUdp.h داخلی است، بنابراین نیازی به نصب آن نیست.

پس از نصب کتابخانه ها، کدکامل که در فایل دانلودی انتهای صفحه قرار گرفته است را در نرم افزار آردوینو جایگذاری و سپس در ماژول ESP8266 آپلود کنید.

در اینجا قسمت های مهم کد را توضیح میدهیم.

ابتدا همه کتابخانه ها را شامل می کنیم:

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <DHT.h>
#include <NTPClient.h>
#include <WiFiUdp.h>

سپس، برای اتصال به وای فای منزل خود، اطلاعات شبکه خود را در دو خط زیر وارد کنید.

const char* ssid = "نام وای فای";
const char* password = "رمز وای فای";

در مرحله بعد، یک نمونه WifiUDP و NTPClient را مقداردهی اولیه می کنیم. راه اندازی یک شی NTPClient به یک شی WiFiUDP، یک سرور NTP و یک افست برای تعیین منطقه زمانی شما نیاز دارد. ما از pool.ntp.org به عنوان آدرس سرور NTP استفاده می کنیم. این به طور خودکار نزدیکترین سرور زمانی را از مکان شما شناسایی می کند. در نهایت، برای افست UTC برای منطقه زمانی خود، از این فرمول استفاده کنید:

UTC X = X * 60 * 60

ما در ایران در GMT+3:30 هستم بنابراین برای من،

مطلب پیشنهادی:  پروژه ساخت دماسنج با ترمیستور و آردوینو

UTC 3.5 = 3.5 * 60 * 60 = 12600

WiFiUDP ntpUDP;
const long utcOffsetInSeconds = 12600;
NTPClient timeClient(ntpUDP، "pool.ntp.org"، utcOffsetInSeconds);

تابع epoch time تعداد ثانیه هایی را که از 1 ژانویه 1970 گذشته است را برمی گرداند. ما از این تابع به همراه ساختار زمانی برای بدست آوردن تاریخ استفاده می کنیم.

unsigned long epochTime = timeClient.getEpochTime();

struct tm *ptm = gmtime ((time_t *)&epochTime);

اکنون پورت 80 را با استفاده از سرور ESP8266WebServer server(80); باز می کنیم.

سپس در تابع Setup، ما سریال مانیتور را در 115200 مقداردهی اولیه می‌کنیم تا دستورات و اطلاعات نمایش داده شود. علاوه بر این، با استفاده از توابع start، ما به WiFi متصل می‌شویم، سرور را راه‌اندازی می‌کنیم و سپس سنسور DHT و سرور زمان را راه‌اندازی می‌کنیم.

void setup() {
  Serial.begin(115200);
  pinMode(DHTPin, INPUT);           

  Serial.println("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
  delay(1000);
  Serial.print(".");
  } 
  Serial.println("");
  Serial.println("Connected to WiFi");
  Serial.print("IP: ");  Serial.println(WiFi.localIP());

  server.on("/", handle_OnConnect);
  server.onNotFound(handle_NotFound);
  server.begin();
  dht.begin();
  timeClient.begin();
}

در ادامه وقت راه اندازی loop است. بخش loop فقط شامل یک خط است. این خط تابعی از کتابخانه ESPWebserver است. حضور یک سرویس گیرنده وب را نظارت می کند و درخواست های HTTP را درست مانند POST و GET کنترل می کند.

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

اگر handleClient() درخواستی را از یک سرویس گیرنده وب شناسایی کند و با موفقیت وصل شود، طرح را به تابع handle_OnConnect() هدایت می کند. از طرف دیگر، اگر در اتصال خطایی وجود داشته باشد، به handle_NotFound() می رود.

void handle_OnConnect(){
}
void handle_NotFound(){
}

در داخل تابع handle_OnConnect() دستوراتی وجود دارد که تاریخ، زمان، دما و رطوبت را از کتابخانه های مربوطه دریافت می کند. با استفاده از ساختار زمانی که قبلا تنظیم کرده بودیم، تاریخ فعلی را دریافت می کنیم. برای زمان، ما از getFormattedTime() مستقیماً از کتابخانه NTPClient استفاده می کنیم. همین امر در مورد دما و رطوبت نیز صدق می کند، جایی که ما از dht.readTemperature() و dht.readHumidity() مستقیماً از کتابخانه DHT استفاده می کنیم. در نهایت، server.send() داده ها را به کلاینت برمی گرداند.

void handle_OnConnect() {

  timeClient.update();
 
  epochTime = timeClient.getEpochTime(); 
  String Time = timeClient.getFormattedTime();
  
  tm *ptm = gmtime ((time_t *)&epochTime); 

  int monthDay = ptm->tm_mday;
  int currentMonth = ptm->tm_mon+1;
  int currentYear = ptm->tm_year+1900;
 
  Time = timeClient.getFormattedTime(); 
  Date = String(currentYear) + "-" + String(currentMonth) + "-" + String(monthDay);
  Temperature = dht.readTemperature(); 
  Humidity = dht.readHumidity(); 

  server.send(200, "text/html", SendHTML(Temperature,Humidity,Time,Date)); 
}

در آخر ما از SendHTML() برای ایجاد یک صفحه وب برای داده های جمع آوری شده استفاده میکنیم.

String SendHTML(float TemperatureWeb,float HumidityWeb, String TimeWeb,String DateWeb){
  String ptr = "<!DOCTYPE html> <html>\n";
  ptr +="<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n";
  ptr +="<title>ESP8266 Global Server</title>\n";

  ptr +="</head>\n";
  ptr +="<body>\n";
  ptr +="<div id=\"webpage\">\n";
  ptr +="<h1>ESP8266 Global Server</h1>\n";

  ptr +="<p>Date: ";
  ptr +=(String)DateWeb;
  ptr +="</p>";
  ptr +="<p>Time: ";
  ptr +=(String)TimeWeb;
  ptr +="</p>";
  ptr +="<p>Temperature: ";
  ptr +=(int)TemperatureWeb;
  ptr +="C</p>";
  ptr +="<p>Humidity: ";
  ptr +=(int)HumidityWeb;
  ptr +="%</p>";
  
  ptr +="</div>\n";
  ptr +="</body>\n";
  ptr +="</html>\n";
  return ptr;
}

مشاهده نتیجه ساخت وب سرور

کد را در ESP-01 آپلود کنید. “Generic ESP8266 Module” را به عنوان برد انتخاب کنید. حتماً شماره پورت صحیح را نیز انتخاب کنید.

مشاهده نتیجه ساخت وب سرور

بعد از آپلود، سریال مانیتور را باز کنید و چیزی شبیه به این را ببینید:

نمایش آیپی ESP8266 در سریال مانیتور

با استفاده از یک مروگر، وارد آدرس آیپی داده شده شوید. سپس شما میتوانید نتیجه را مشاهده کنید:

ساخت صفحه HTML با ESP8266

این هنوز یک سرور محلی است. برای در دسترس قرار دادن این صفحه وب در خارج از شبکه خانگی شما، باید از تکنیکی به نام پورت فرواردینگ استفاده کنیم.

پورت فرواردینگ ESP8266

ارسال پورت یک ویژگی روتر شبکه است که ترافیک را از یک پورت خاص در شبکه WAN به دستگاهی در داخل شبکه محلی شما هدایت می کند. در اینجا نحوه انجام انتقال پورت آمده است:

  1. ابتدا آدرس IP خود را بشناسید. شما می توانید این کار را با تایپ “my pi” در گوگل انجام دهید.
  2. از صفحه اصلی روتر خود بازدید کنید. آدرس IP روتر خود را در مرورگر وب خود وارد کنید. هر مدلی متفاوت است اما برای اکثر مودم ها روی 198.168.1.1 تنظیم شده است.
  3. سپس وارد بخش DHCP شوید. آدرس IP ماژول ESP8266 را به Static اضافه کنید تا ثابت بماند. برای سور
  4. نحوه تغییر تنظیمات DHCP را بیاموزید. آدرس IP ESP-01 را به استاتیک اضافه کنید تا ثابت بماند. برای سرور مثال ما در بالا، “192.168.0.18” خواهد بود. همچنین آدرس MAC را که از دستور AT+CIFSR دریافت کرده اید وارد کنید. پس از اعمال این موارد، روتر شما آدرس 192.168.0.18 را برای ESP-01 رزرو می کند.
  5. سپس به تنظیمات Port Forwarding بروید. با استفاده از پروتکل TCP یک سرور مجازی ایجاد کنید. از پورت 80 استفاده کنید سپس آدرس IP ESP-01 را وارد کنید. فراموش نکنید که تغییراتی را که انجام داده اید در روتر خود ذخیره کنید.
  6. در آخر تنظیمات فایروال خود را به گونه ای پیکربندی کنید که به پورت 80 اجازه دهد مستقیماً با دستگاه های شما ارتباط برقرار کند.

هر درخواست HTTP ورودی از پورت شماره 80  شما اکنون به ESP-01 هدایت می شود. بازدید از آدرس IP در خارج از خانه نیز شما را به صفحه وب هدایت می کند که روز، زمان، دما و رطوبت فعلی را نشان می دهد.

اگر سوالی دارید حتما کامنت بگذارید!

موارد موجود در فایل : فایل سورس کامل

5 (4 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

برای ارسال تصاویر از انجمن سایت استفاده کنید.

سوالات فنی را در انجمن سایت مطرح کنید تا در مسابقه شرکت کنید. ورود به انجمن

24 نظر

  1. سلام خسته نباشید
    این کد قابلیت این رو داره که از هر جای جهان برد را کنترل کنیم؟
    و اینکه چگونه کد را برای برد ESP32 تغییر بدم؟

    1. سلام عزیز
      برای یادگیری کامل با برد ESP32 دوره اینترنت اشیا حرفه ای را مشاهده کنید

  2. سلام. وقتتون بخیر. من میخوام از دو حالت اکسس پوینت و کلاینت ماژول استفاده کنم. به این شکل که در حالت اکسس پوینت اطلاعات SSID و PASSWORD مودم مورد نظرم رو از یک صفحه وب با آی پی دلخواه تعیین شده برای ماژول دریافت کنم و در حالت کلاینت ازش استفاده کنم و به مودم متصل بشم. ممنون میشم اگه راهنمایی بفرمایید.

  3. سلام برای دریافت فایل پروژه در سایت ثبت نام کردم می خواستم بدونم چجوری میتونم شماره تماسم رو تغییر بدم ممنون میشم اگه راهنمایی بفرمایید.

    1. سلام عزیز
      با پشتیبانی در ارتباط باشید

  4. سلام
    کدهایی که قرار دادین رو در اردوینو کپی کردم اروور کامپایل میده چرا؟
    exit status 1
    Error compiling for board Generic ESP8285 Module.

    1. سلام عزیز
      متن ارور را به صورت کامل ارسال کنید

  5. سلام
    موقع آپلود کد، ارور زیر رو نمایش میده. لطفا اگه کسی راه حل رو میدونه راهنمایی کنه.

    . Variables and constants in RAM (global, static), used 28844 / 80192 bytes (35%)
    ║ SEGMENT BYTES DESCRIPTION
    ╠══ DATA 1504 initialized variables
    ╠══ RODATA 1316 constants
    ╚══ BSS 26024 zeroed variables
    . Instruction RAM (IRAM_ATTR, ICACHE_RAM_ATTR), used 59855 / 65536 bytes (91%)
    ║ SEGMENT BYTES DESCRIPTION
    ╠══ ICACHE 32768 reserved space for flash instruction cache
    ╚══ IRAM 27087 code in IRAM
    . Code in flash (default, ICACHE_FLASH_ATTR), used 269824 / 1048576 bytes (25%)
    ║ SEGMENT BYTES DESCRIPTION
    ╚══ IROM 269824 code in flash
    esptool.py v3.0
    Serial port COM3
    Connecting…….._____….._____….._____….._____….._____….._____….._____

    A fatal esptool.py error occurred: Failed to connect to ESP8266: Invalid head of packet (0xF0)

  6. سلام.این اموزش با برد nodemuc esp8266 چجوری میشه؟ اردوینو رو باید حذف کرد؟

  7. سلام
    آیا میشه حافظه فلش esp8266 رو قفل کرد؟ مثل avr و stm32
    برای جلوگیری از خوانش فایل هگز

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

  8. سلام خسته نباشید ببخشید چطوری میشه یه مودم همراه ساخت ؟ با اردواینو
    ممنون میشم کمک کنید

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

    1. اینترنت مخابرات برای پروژه های اینترنت اشیا زیاد مطمئن نیست از اینترنت همراه اول یا ایرانسل استفاده کنید.
      برای بررسی کدتون حقیقا الان وقت ندارم میتونید در انجمن ارسال کنید بقیه دوستان بررسی کنند

  10. سلام آقای رحیمی.من یک ماژولesp8266 node mcuرا با سنسور دما ds18b20 نصب کردم پورت فرواردینگ مودم راهم انجام دادم فقط مشکلی که هست زمانی که اینترنت قطع میشه یا دیسکانکت میشه برنامه میره تو یه حالتی که صفحه وب اصلا باز نمیشه و باید دوباره اول با وای فای اتصال برقرار کرد بعد بیای با وب سرور جهانی ارتباط برقرار کنی.من سورس کدم دارم فقط امکان دیدنشو‌اگه دارین یک چک بکنین ممنون میشم.با تشکر

    1. سلام عزیز
      اتصال به صورت دستی برقرار میشه یا خود کد اتصال به وای فای و وب سرور رو انجام میده؟

    2. سلام دوست عزیز، این روش چنتا مشکل داره که بزرگترینش اینه که امنیت پایینی داره و ربات ها به راحتی و به سرعت سیستم شما رو هک می کنند مگر اینکه روی امنیت سیستم کار کنید. مشکل بزرگ بعدی اینه که با هر بار خاموش و روشن شدن مودم ip شما تغییر میکنه مراحل ۱ و ۲ و ۳ رو باید دوباره انجام بدین. در مجموع که این روش به خاطر مشکلاتی که داره هیچ عنوان توصیه نمیشه.

  11. سلام
    با چه ادرسی در مرورگر اینترنت میشه به اطلاعات مدار دسترسی پیدا کرد

    1. سلام عزیز
      این وب سرور محلی هست اگر میخواهید اینترنتی از هرجا به اطلاعات دسترسی داشته باشید میتونید دوره آموزش اینترنت اشیا رو مشاهده کنید

  12. سلام میوتم با ماژول وای فای esp-01 پروژه های lot اینترنت اشیا را انجام دهم

    1. سلام عزیز
      بستگی به پروژه داره

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

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