داخل این مقاله شیوۀ ساخت وبسرور ESP32 و استفاده همزمان از پروتکل ارتباطی ESP-NOW رو بهتون نشون میدیم. همچنین نشون میدیم که چجوری میشه بین master (وبسرور) و slave(گیرنده) ارتباط دوسویه برقرار کرد. همچنین در این نوشتار، با استفاده از ESP-NOW، نحوۀ اضافه کردن slaveها به شبکه بصورت اتصال خودکار رو هم بهتون نشون میدیم.
موضوعاتی که در این مقاله بهشون میپردازیم عبارتند از :
- ارتباط دوسویه میان سرور و slaveها
- اتصال خودکار دو دستگاه با استفاده از ESP-NOW | نیازی نیست مک (MAC) آدرس بردها رو بدونین. یا مثلا دو دستگاه رو به صورت دستی به هم متصل کنین. فقط کافیه کدها رو اجرا کنین و بردها خودشون به صورت خودکار به شبکه ESP-NOW وصل میشن.
اگر با ESP-NOW آشنایی ندارید، بهتون توصیه میکنیم در قدم اول برای آشنایی بیشتر با مفاهیم و کاربردهای ESP-NOW، ابتدا مقاله زیر رو مطالعه کنین:
استفاده همزمان از ESP-NOW و Wi-Fi(وب سرور)
اگر قصد دارین از Wi-Fi به عنوان هاست وب سرور استفاده کنین و به طور همزمان از ESP-NOW برای دریافت اطلاعاتی که حسگر از بردها جمعآوری میکنه استفاده کنین، به چند تا نکته باید توجه کنین:
- وب سرور و بردهای فرستنده باید روی یک کانال وایفای قرار بگیرن.
- بردهای فرستنده ESP32/ESP8266 باید از یک وایفای یکسان به عنوان برد گیرنده (سرور) استفاده کنن.
- کانال وایفای برد گیرنده رو روتر وایفای به صوت خودکار تعیین میکنه.
- حالت وایفای برد گیرنده باید نقطه دسترسی و ایستگاه (
WIFI_AP_STA
) باشه.
- کانال وایفای رو میتونین به صورت دستی راهاندازی کنین، اما ما این کار رو به صورت خودکار انجام میدیم. فرستنده کانالهای وایفای مختلفی رو امتحان میکنه تا از سرور جوابی دریافت کنه.
مروری بر پروژه اتصال خودکار توسط پروتکل ESP-NOW
در این قسمت یک مرور کلی خواهیم داشت بر پروژهای که قراره بسازیم:
- دو تا برد فرستنده ESP (ESP32/ESP8266) وجود داره که اطلاعات رو از طریق ESP-NOW به یک برد گیرنده ESP32 ارسال میکنن.
- برد گیرنده بستهها (packet) رو دریافت میکنه و اطلاعات رو روی صفحۀ وب نشون میده.
- صفحه وب هر بار که با استفاده از Server-Sent Events (SSE) اطلاعات جدیدی دریافت میکنه به صورت خودکار بهروزرسانی میشه.
- گیرنده هم دادههایی به فرستنده ارسال میکنه – که نشون بده چجوری میشه ارتباط دوسویه برقرار کرد. به عنوان مثال، ما مقادیر دلخواه رو ارسال میکنیم اما شما میتونین اونا رو به اطلاعات فرستنده یا هر دادهی دیگهای مثل مقادیر آستانه یا فرمانهای مربوط به روشن و خاموش کردن GPIOها جایگزین کنین.
نکته :
تو این پروژه ما به دلخواه مقادیر مربوط به دما و طوبت رو ارسال میکنیم و از سنسور واقعی استفاده نمیکنیم. بعد از تست کردن پروژه و بعد از اینکه مطمئن شدیم همه چیز طبق انتظار پیش میره میتونین از یک سنسور واقعی استفاده کنین (لازم هم نیست حتماً دما و رطوبت باشه).