اینترنت اشیا IOT برد Esp32 برد Nodemcu برد ویموس Wemos خانه هوشمند

کنترل وسایل برقی از راه دور با پروتکل ESP-NOW و برد ESP32

نوشته شده توسط CiferTech

همواره در پروژه های مختلف یکی از موادری که نظر ما را جلب میکند و مفید واقع می‌شود کنترل ماژول رله به روش های مختلف است که در نتیجه آن قادر خواهیم بود هر واسیله برقی را کنترل کنیم، در این آموزش بوسیله پروتکل ESP-NOW قصد از راه دور یک رله را کنترل و به آن فرمان دهی کنیم. به عبارتی اقدام به کنترل وسایل برقی با ESP-Now میکنیم. لازم به ذکر در فضای باز می‌توانیم تا ۱۵۰ متر فاصله بین فرستنده و گیرنده ایجاد کنیم و همچنان رله قابل کنترل باشد. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 

کنترل وسایل برقی با پروتکل ESP-Now - دیجی اسپارک

 


پروتکل ESP-Now


ESP-NOW یک پروتکل ارتباطی بی سیم است که توسط Espressif ساخته شده و دارای قابلیت انتقال پکت است. این پروتکل چندین دستگاه را قادر می سازد تا به روشی آسان با یکدیگر صحبت کنند و اطلاعات را بصورت بهینه بین یکدیگر انتقال دهند. این  پروتکل مشابه اتصال بی سیم ۲٫۴GHz است، که اغلب در ماوس های بی سیم استفاده می شود. بنابراین، جفت شدن دستگاه ها قبل از برقراری ارتباط لازم است. این به این معنی است که پس از جفت شدن دستگاه ها با یکدیگر، اتصال پایدار است. به عبارت دیگر، اگر بطور ناگهانی یکی از ESP های شما قطع شود یا ریست شود، هنگام راه اندازی مجدد بطور خودکار اتصال برقرار می شود.

کنترل وسایل برقی با پروتکل ESP-Now و برد ESP8266 - دیجی اسپارک

مزیت های پروتکل ESP-NOW

  • انتقال داده تا ۲۵۰ بایت.
  • بهره مندی از ارتباط رمزگذاره شده.
  • استفاده از Call Back برای اطلاع رسانی به لایه های مختلف در صورت موفقیت یا عدم موفقیت در انتقال داده.

 

محدودیت های پروتکل ESP-NOW

  • حدکثر محدوده ۲۵۰payload بایت.
  • حداکثر پشتیبانی از ۱۰عدد SoftAP رمزگذاری شده.
  • حداکثر تعداد پشتیباتی در حالت رمزگذاری نشده ۲۰ عدد.

 


نقش فرستنده و گیرنده


در این پروژه برد فرستنده که برد nodemcu با تراشه ESP32 در نظر گرفته شده، وظیفه تحلیل موقعیت یک میکروسویییچ را دارد. در طرف دیگر سناریو برد Wemos D1 MINI قرار دارد که وظیفه دریافت این تغییرات و در نتیجه فعال و غیرفعال کردن ماژول رله را دارد.

 


 برد Wemos


برد Wemos یکی از پرطرافدار ترین برد هایی است که در زمینه iot مورد استفاده قرار میگیرد، یکی از مزیت های این برد نسبت به برد هایی مانند Node MCU اندازه کوچک آن می باشد تراشه وای فای مورد استفاده در این برد ESP8266 می باشد. از دیگر مزیت های این برد وجود شیلد های مختلفی برای این برد می باشد، که انجام هر پروژه ای را برای کاربر بسیار آسان و لذت بخش می کند، شیلد هایی از جمله شیلد باتری، multi sensor ، DHT22 ، رله ، oled تعداد بسیار زیادی شیلد برای این برد توسعه داده شده که در نتیجه تجربه خوبی از iot برای شما به جا خواهد گذاشت. در این آموزش از برد ویموس به عنوان گیرنده در کنترل وسایل برقی با ESP-Now از راه دور استفاده می‌کنیم.

 


برد ESP32


ESP32 نسل پیشرفته ESP8266 است. یکی از تفاوت‌های آن بلوتوث داخلی‌اش می‌باشد. همچنین دارای هسته وایفای ۲,۴ گیگا هرتزی و بلوتوث داخلی تولید شده با تکنولوژی ۴۰ نانومتری شرکت TSMC می‌باشد. این ماژول دارای بهترین پرفورمنس در مصرف انرژی می‌باشد یعنی با کمترین مصرف انرژی بهترین نتیجه را برای ما به همراه دارد. اگر بخواهیم دقیق‌تر به این برد نگاه کنیم باید بگوییم که این یک chip است که پلتفرم NodeMCU در اون پیاده سازی شده که به این نوع چیپ ها System on a chip microcontrollers هم گفته می‌شود.

 


روش کار این پروژه


در این پروژه از دو برد ESP32 و Wemos استفاده کردیم که یکی از برد ها در این سناریو در حالت Master قرار خواهد گرفت تا دیتای مد نظر را تحلیل و به برد دوم یعنی بردی که در حالت Slave قرار دارد ارسال کند برد دوم ما وظیفه دریافت این دیتا، تحلیل موارد دریافتی و فعال کردن ماژول رله را بر اساس دیتای دریافتی دارد. از آنجایی که از دو برد ESP استفاده می‌کنیم، قادر هستیم این دیتا را تا ۱۰۰ متر نیز ارسال و دریافت کنیم.

کنترل رله توسط پروتکل ESP-Now - دیجی اسپارک

 


وسایل مورد نیاز


برد wemos

برد ESP برپایه تراشه ESP8266 یا ESP32

ماژول رله Relay

میکرو سوویچ

مقاومت ۱K

کابل جامپر مخصوص اتصالات سنسور و بردها

وسایل لازم برای کنترل وسایل برقی با پروتکل ESP-Now - دیجی اسپارک

 


نصب کتابخانه مرجع


در این بخش اقدام به نصب کتابخانه مرجع ESP-NOW خواهیم کرد تا در نتیجه این امکان فراهم شود که از توابع و دستورات مورد نیاز در کد پروژه استفاده کنیم. در صورت دریافت هرگونه ارور مبنی بر عدم وجود کتابخانه espnow.h طبق مراحل زیر پیش بروید.

  1. این مسیر را دنبال کنید Sketch Include Library > Manage Libraries
  2. کلمه espnow را جستجو کنید.
  3. کتابخانه را نصب کنید.

 


بدست آوردن مک آدرس ESP32


پیش از این در آموزش راه اندازی پروتکل ESP-Now روش بدست آوردن مک آدرس را توضیح دادیم. چنانچه این مورد را اطلاعی ندارید، کافیست به پست اشاره شده مراجعه کنید.

 


کد و شماتیک ESP32 ارسال کننده


در اولین مرحله اتصالات برد ارسال کننده که شامل برد ESP32 و میکروسوویچ و همچنین یک مقاومت است را برقرار خواهیم کرد، اتصالات را مطابق شماتیک و جدول زیر برقرار کنید.

اتصال میکروسوئیچ به برد ESP32 - دیجی اسپارک

  • شماتیک بخش فرستنده پروژه کنترل رله از راه دور بوسیله پروتکل ESP-NOW.

شماتیک اتصال میکروسوئیچ به برد ESP32 - دیجی اسپارک

 

در مرحله بعد نوبت به کد های بخش فرستنده این پروژه می‌رسد، ابتدا بخش های مهمی از کد را بررسی می‌کنیم. در چند خط اول کتابخانه espnow.h را قبل تر نصب کردیم را فراخوانی خواهیم کرد.

 

در این بخش Mac Address های بدست آمده از ESP های دریافت کننده را وارد می کنیم.

 

در این مرحله ساختار دیتای ارسالی را مشخص می‌کنیم. که در این سناریو ۰ یا ۱ میباشد، من از int استفاده کردم در صورت نیاز میتوانید از boolean استفاده کنید.

 

این متغیر ها مربوط به فانکشن های میکروسوییچ هستتند تا بدرستی کار کند.

 

این بخش مربوط به دریافت دیتا از میکرو سوییچ استفاده شده در مدار است.

 

کد کامل بخش فرستنده پروژه کنترل رله از راه دور بوسیله پروتکل ESP-NOW

 

جهت دسترسی به این بخش، اشتراک اسپارکر پلاس تهیه کنید.

 

 


کد و شماتیک Wemos دریافت کننده


در بخش پایانی این آموزش نوبت به راه‌اندازی ماژول دریافت کننده دیتا از برد ESP32 می‌رسد. همانطور که در بخش های قبلی اشاره کردیم این برد که Wemos نام دارد با تراشه ESP8266 وظیفه دریافت یک دیتا بین ۰ و ۱ از ارسال کننده است تا به این وسیله یک ماژول رله در مقصد کنترل شود. ابتدا اتصالات را طبق جدوا و شماتیک زیر برقرار کنید.

اتصالت ماژول رله به برد ویموس Wemos کنترل وسایل برقی با ESP-Now - دیجی اسپارک

 

  • شماتیک بخش گیرنده و فرمان دهی به ماژول رله

شماتیک کنترل وسایل برقی با پروتکل ESP-Now - دیجی اسپارک

در ادامه بخش های مهمی از کد را بررسی خواهیم کرد. در این کد یک Void داریم که وظیفه دیتای ارسال را به درست دریافت و نمایش دهد.

 

در این قسمت دیتای ذخیره شده در myData ذخیره می‌کنیم.

 

در این قسمت شرط برای فعال و غیر فعال کردن رله را بر اساس دیتای ذخیره شده در mydata.x مشخص می‌کنیم.

 

کد کامل بخش گیرنده پروژه کنترل رله از راه دور بوسیله پروتکل ESP-NOW

 

جهت دسترسی به این بخش، اشتراک اسپارکر پلاس تهیه کنید.

 

 


 جمع بندی


در این آموزش با استفاده از پروتکل ESP-NOW دیتای مدنظر را برای کنترل یک ماژول رله از برد ESP32 مقصد به یک برد Wemos که وظیفه کنترل ماژول رله داشت، ارسال کردیم با استفاده از این آموزش میتوانید وسایل اکترونیکی مختلفی را کنترل کنید و آن هارا بوسیله رله خاموش یا روشن کنید.

کنترل وسایل برقی از راه دور با برد ESP32 - دیجی اسپارک

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

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

CiferTech

فقط 10 نوع آدم در این دنیا وجود داره، اونی که باینری میفهمه و اونی که باینری نمیفهمه! ^-^

~ اینستاگرام: CiferTech

تبادل نظر و رفع عیب با ثبت دیدگاه

۶ دیدگاه

  • سلام مهندس.پروزه کنترل وسایل برقی برای کنترل روشنایی هم می توان استفاده کرد ممنون میشم راهنمایی کنید چون برای پروزه دانشگاهم میخام و خیلی عجله دارم وبرای خرید وسایل و موارد نیاز این پروزه راهنمایی کنید.۰۹۱۵۳۱۲۹۶۳۸

    • بله برای کنترل خاموش یا روشن بودن منابع روشنایی می‌تونید استاده کنید. لطفا برای درخواست پروژه یا راهنمایی از بخش تیکت ها مراجعه کنید.

  • درود و عرض ادب
    من تمامی تنظیمات رو مطابق فرمایشات انجام دادم، ولی کامپایل نمیشه! ارور دارم و میگه Error compiling for board WeMos D1 R2 & mini.
    متوجه نمیشم دلیلش چی میتونه باشه
    لطفا کمک بفرمایید

    • سلام، خیلی ممنونم. در بخش انتخاب برد برای برد Wemos یک گزینه دیگر هم وجود دارد با نام Wemos mini pro، با این مورد فرایند را چک کنید.

  • سلام . چرا وقتی کلید رو میزنید چراغ با تاخیر روشن میشه؟ نمیشه سرعت روشن کردنش رو بیشتر کرد؟