در سلسله آموزش های مقدماتی ماژول ESP8266، در قسمت چهارم وارد مباحث شبکه ای ماژول و دستورات آردوینو برای مد STA و دریافت IP می پردازیم. همانطور که اطلاع دارید، اصلی ترین کاربرد این ماژول در پروژه های مبتنی بر وای فای جهت تبادیل داده به صورت بی سیم، در حالت LOCAL و یا در بستر اینترنت است. در این آموزش نحوه اتصال ماژول به یک مودم، دریافت آی پی و نمایش آی پی را مورد بررسی قرار می دهیم. در ادامه با مرجع تخصصی آردوینو به زبان فارسی ، دیجی اسپارک همراه باشید.
تعریف مد کاری ایستگاهی STATION
مد کاری ایستگاهی که از این به بعد آن را STA می نامیم، یکی از مد های کاری اصلی در ماژول ESP8266 است. شما بارها با این مد کار کرده اید. دقیقا زمانیکه تلفن همراه خود را به مودم خانگی متصل می کنید، گوشی در حالت STA جهت دریافت آی پی از مودم قرار گرفته است. ماژول ESP8266 نیز قابلیت اتصال به مودم های خانگی و حتی تلفن همراه در حالت نقطه دسترسی(Access Point) را دارد. با اتصال به این دستگاه ها، ماژول آی پی دریافت کرده و می تواند وارد شبکه اینترنت شود. از طرفی دیگر، با ایجاد یک شبکه محلی، این ماژول قادر به اتصال به نقطه دسترسی و دریافت آی پی در شبکه محلی خواهد بود.
بنابراین در مد کاری STA، با دریافت آی پی از مودم می توانیم ماژول را در شبکه به ماژول های دیگر و یا اینترنت متصل کنیم. البته از آنجاییکه برای اتصال به مودم نیاز به رمز عبور و نام SSID است، می باید این موارد نیز رعایت شوند. به همین منظور، در قسمت بعدی به توابع توسعه یافته مخصوص این روند، می پردازیم.
ماژول در مد STA و اتصال به مودم
در این قسمت به بررسی توابع و دستورات آردوینو جهت قرارگیری ماژول در حالت STA می پردازیم. ابتدا به کمک تابع زیر، ماژول در حالت STA قرار می گیرد.
WiFi.mode(WIFI_STA)
پس از اجرای تابع فوق، ماژول در حالت STA قرار می گیرد. پس از این، می بایست با اطلاع از SSID و رمز عبور، ماژول را به مودم متصل کنید. برای این مورد می بایست به شکل زیر عمل کنید.
WiFi.begin(“SSID”,”PASSWORD”)
مطابق تابع فوق، عبارت SSID نام مودم و عبارت PASSWORD رمز عبور مودمی که قصد اتصال به آن را دارید، تعیین می نماید. پس از فراخوانی تابع فوق، به کمک تابع زیر می توانید اتصال به مودم را کنترل نمایید. البته اتصال به مودم و دریافت آی پی، معمولا کمی زمانبر است.
WiFi.status()
خروجی تابع فوق در صورت اتصال موفقیت آمیز به مودم، عبارت WL_CONNECTED خواهد بود. در نهایت به کمک تابع زیر می توانید آی پی دریافت شده از مودم که به ESP8266 تخصیص یافته را مشاهده کنید.
WiFi.localIP()
در صورتیکه بخواهیم موارد فوق را در یک برنامه کامل مشاهده کنیم، می توانیم برنامه ای به شکل زیر بنویسیم.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
قطع ارتباط با مودم و ارتباط مجدد
پس از اینکه ماژول به مودم متصل گردید، این امکان وجود دارد که بتوانید ارتباط را با مودم قطع کنید. برای این مورد می توانید از تابع زیر استفاده کنید.
WiFi.disconnect(wifioff)
پس از فراخوانی تابع فوق، ارتباط ماژول با مودم قطع خواهد شد. توجه داشته باشید که قرار دادن ورودی برای این تابع اختیاری است. اما در صورتیکه این ورودی برابر با true گردد، پس از قطع ارتباط، ماژول از حالت STA خارج خواهد شد. پس از اینکه ارتباط قطع شد جهت برقرای مجدد ارتباط به مودم، می بایست از تابع زیر استفاده کنید.
WiFi.reconnect()
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
فعال و غیر فعال سازی اتصال خودکار
ماژول ESP8266 قابلیت تعریف حالت اتصال خودکار را دارد. بدین ترتیب پس از قطع ارتبط با مودم، ماژول به طور خودکار پس از فعال سازی مودم، به آن متصل خواهد شد. برای این مورد، می بایست از تابع زیر استفاده نمایید.
WiFi.setAutoConnect(autoConnect)
ورودی این تابع مقداری اختیاری است. در صورتیکه ورودی false شود، قابلیت اتصال خودکار غیر فعال خواهد شد. در صورتیکه ورودی را true قرار دهید، این قابلیت مجددا فعال می شود. توجه داشته باشید که این تابع اتصال خودکار را به آخرین AP که ماژول به آن متصل بوده، برقرار می سازد. در ادامه، به کمک تابع زیر می توانید از فعال و یا غیر فعال بودن اتصال خودکار، مطلع شوید. خروجی true به معنای فعال بودن و خروجی false به معنای غیر فعال بودن اتصال خودکار است.
WiFi.getAutoConnect()
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
لوازم مورد نیاز
جمع بندی
در سلسله آموزش های ماژول ESP8266، قسمت چهارم به حالت STA جهت اتصال به یک مودم دریافت آی پی می پردازد. در این آموزش مطابق قسمت های پیشین، به معرفی امکانات، نحوه دریافت آی پی و … می پردازیم. در این آموزش ضمن نحوه دریافت آی پی و اتصال به یک مودم، امکانات جانبی را بررسی کردیم. در هر قسمت با ارائه یک برنامه کامل، چگونگی استفاده از امکانات در برنامه ها را مشاهده نمودیم.
چنانچه مطالب این آموزش را گنک یافتید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در مطالب درج شده و یا کدها وجود دارد میتوانید از همین طریق اطلاع رسانی کنید.
سلام مهندس
میشه یه دستگاه فرستنده و گیرنده دیتا درست کرد ؟
که مثلاً چهار کاناله باشه و و دیتا را بدیم به فرستنده و از گیرنده به صورت بیسیم همون دیتا را دریافت کنیم ؟
سلام
بله کاملان امکان پذیر هست.
آموزش مشابه این مورد در چند روز آینده منتشر خواهد شد.
سلام من از ماژول ESP8266 روی برد UNO برای اتصال استفاده میکنم دستورات شما رو چه جوری توی کد خودم بذارم
سلام
این آموزش برنامه ها را روی برد ESP8266 اجرا می کند. برای ارسال فرمان از طریق آردوینو UNO، آموزش زیر را مطالعه کنید:
لینک آموزش فرامی ماژول ESP8266، کلیک کنید
سلام مهندس جان وقت بخیر. چطوری میتونیم با ماژول ESP8266 یک گیت وی بسازیم؟؟
منظورم از گیت وی این هستش که مثلا فرض کنید یک ماژول ESP8266 در یک مکانی قرار گرفته، مد کاریش هم AP+STA هست و همزمان هم به مودم ADSL خانگی متصله، هم به یک گوشی موبایل هوشمند. تو اینجا وظیفه ماژول فقط و فقط این باشه که دیتاهایی که بین گوشی موبایل و مودم ADSL رد و بدل میشه رو مستقیما بدون هیچ کم و کاست و دستکاری بتونه انتقال بده، چه ارسال دیتا چه دریافت دیتا و در واقع نقش یک GateWay رو بازی کنه…
آیا در این مورد آموزشی توی دیجی اسپارک منتشر شده که بتونیم استفاده کنیم ؟؟
سلام
اگر درست متوجه شده باشم، این لینک مورد مد نظر شما را انجام می دهد:
https://digispark.ir/esp8266-tutorial-step-seven-communicate-mobile-and-esp-with-modem/
خیر مهندس جان منظورم این نبود. مثل اینکه یکم بد توضیح دادم. بذارید اینجوری خدمت تون عرض کنم: ببینید ما میخواییم ماژول ESP8266 رو صرفا به عنوان یک واسطه بین مودم و تلفن همراه برای افزایش برد و آنتن دهی مودم ADSL قرار بدیم. در حقیقت ماژول ESP کاری نداره که چه دیتایی داره سند و رسیو میشه، اون فقط دیتاها رو از گوشی موبایل میگیره و به مودم تحویل میده، و بالعکس از مودم به تلفن همراه تحویل میده. درست مثل یک ارتباط عادی که با وای فای تلفن همراه مون به ADSL وصل میشیم و داخل اینترنت و فضای مجازی به گشت و گذار میپردازیم. هدف ما کنترل رله یا کنترل پایه های GPIO ماژول نیست، بلکه هدف ما، ایجاد یک گیت وی برای تبادل ” هر گونه دیتا ” بین گوشی موبایل و مودم و همپنین افزایش برد و آنتن دهی مودم ADSL هستش. امیدوارم خوب توضیح داده باشم.
سلام
متشکرم
شما ببخشید، من بد متوجه شده بودم. برای این مورد حقیقتا چیزی به ذهنم نمی رسد. باید بررسی کنم. اگر راهکاری پیدا کردم حتما قرار می دهم.
با سلام دوست عزیز شما نیاز به یه ریپیتر یا همون تقویت کننده آنتن وای فای یا وای فای اکستندر دارید
سلام وقتتون بخیر
بنده می خوام esp826612f رو از طریق میکروکنترلر atmaga32 در مد station راه اندازی کنم و از طریق اینترنت به تبادل اطلاعات بپردازم.
اکثر آموزش ها با آردیونو هستش 🙁
میتونید منو راهنمایی چه کاری باید انجام بدم؟
سلام
برای این مورد باید از فرامین AT ماژول استفاده کنید، آموزش زیر را مطالعه کنید:
https://digispark.ir/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%85%D8%A7%DA%98%D9%88%D9%84-wifi-esp-8266-%D8%A2%D8%B1%D8%AF%D9%88%DB%8C%D9%86%D9%88-%D8%A8%D8%AE%D8%B4-%D8%AF%D9%88%D9%85/
سلام
من میخوام با استفاده از ماژول esp8266 و یا nodemcu آی پی دینامیک را بدست بیارم. منظور همون آی پی هست که با هاش به شبکه اینترنت متصل می شویم. کسی نظری داره؟
سلام
از کد زیر استفاده کنید:
void GetExternalIP()
{
WiFiClient client;
if (!client.connect(“api.ipify.org”, 80)) {
Serial.println(“Failed to connect with ‘api.ipify.org’ !”);
}
else {
int timeout = millis() + 5000;
client.print(“GET /?format=json HTTP/1.1\r\nHost: api.ipify.org\r\n\r\n”);
while (client.available() == 0) {
if (timeout – millis() >> Client Timeout !”);
client.stop();
return;
}
}
int size;
while ((size = client.available()) > 0) {
uint8_t* msg = (uint8_t*)malloc(size);
size = client.read(msg, size);
Serial.write(msg, size);
terminal.flush();
terminal.write(msg, size);
terminal.flush();
free(msg);
}
}
}
سلام , من esp8266 01s رو تهیه کردم , متاسفانه اطلاعاتی که روی ترمینال میفرسته اصلا مفهوم نیست ، باود ریت رو ۱۹۶۰۰ گذاشتم رو دو طرف ولی اطلاعاتی که ارسال میشه مفهوم نیست ممکنه بفرمائید مشکل از کجاست؟
سلام
باودریت ۹۶۰۰ یا ۱۱۵۲۰۰ را تست کنید. همچنین آیا پایه EN فعال است؟
جناب صابری عزیز باود ریت ترمینال رو یه پله پایین تر گذاشتم ارتباط سریال درست شد, ولی هر کار میکنم وای فای فعال نمیشه , EN رو هم به ۳٫۳ وصل کردم, نه د رمد اکسس پوینت و نه در مد استیشن
شما با فریمور AT کار می کنید یا آردوینو؟
سلام مهندس جان، من یه ایراد در هنگام کامپایل دارم که وقتی برای esp میخوام پروژه ای کامپایل کنم، کامپیایل نمیشه ارور can not excute cc1plus رو دارم اگه ممکنه راهنمایی کنین چه کار کنم
باتشکر از زحماتتون
پیام خطای “can not execute cc1plus” به واحد اجرایی C++ کامپایلر GCC (GNU Compiler Collection) اشاره دارد که در فرآیند کامپایل کد برنامه شما برای ESP8266 یا ESP32 (میکروکنترلرهای IoT از شرکت Espressif) در معرض خطا قرار گرفته است. این پیام ممکن است به دلایل مختلفی رخ دهد، از جمله: عدم نصب موفقیتآمیز ابزارهای توسعه (Toolchain) است. برای توسعه برنامههای ESP8266 و ESP32، شما باید از یک محیط توسعه مناسب مانند Arduino IDE یا PlatformIO استفاده کنید. ممکن است ابزارهای توسعه به درستی نصب نشده باشند یا به روز نباشند. پیشنهاد میشود که فایل های نصب esp را از نو اجرا کنید.