آردوینو اینترنت اشیا IOT برد Esp32 برد ESP8266

کنترل GPIO برد ESP32 با تایمر بصورت نرم افزاری توسط وب سرور گرافیکی

وب سرور ESP32: کنترل خروجی ها با تایمر
نوشته شده توسط CiferTech

در پروژه کنترل GPIO برد ESP32 با استفاده از یک ESP32 و همچنین با ساخت یک وب سرور و مشخص زمان مدنظر می توانیم خروجی های برد nodemcu را کنترل کنیم. فرض کنید می خواهید ماژول رله ای که به برد متصل کرده اید در ۱۰ ثانیه آینده غیر فعال شود که این آموزش در چنین سناریو هایی می تواند مفید باشد. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

وب سرور ESP32: کنترل خروجی ها با تایمر

 


برد ESP32


وقتی از ESP32 صحبت می‌کنیم، از مصرف انرژی کمتر، قدرت پردازش بهتر، تکنولوژی بروز صحبت می‌کنیم، یعنی نسل جدیدی از تراشه های WIFI که در ادامه نسل قبل یعنی ESP8266 به بازار معرفی شدند، که علاوه بر WIFI از بلوتوث نیز پشتیبانی می‌کنند. از برد های کمکی که برای این تراشه عرضه شده می‌توان به NodeMCU و ESP32-CAM اشاره کرد. این تراشه در سه نوع wroom , wrover و solo تولید می‌شود.

 


وب سرور


وب سرور ها برنامه هایی هستند که مسئولیت آن ها قبول کردن درخواست های Http است که از سمت کاربران ارسال می شود، وب سرور ها در پاسخ اطلاعاتی را ارسال می کنند که ما معمولا به نام صفحات Html می‌شناسیم. خب حالا فرض کنیم که در مرورگر https://digispark.ir را سرچ کردیم، اتفاقی که می‌افتد به این شکل است که مرورگر شما یک درخواست به دامنه‌ای با نام digispark.ir ارسال می‌کند. در حالت عادی زمانی که شما آدرس سایتی را در مرورگر جست و جو می‌کنید از حروف انگلیس استفاده می‌کنید یعنی کلماتی قابل فهم برای انسان اما در واقع برای ورود به یک سایت باید از طریق ip آن اقدام کنید، اینجاست که مفهومی به نام DNS وارد کار می‌شود، پس در واقع زمانی که شما URL سایتی را جستجو می کنید مرورگر از طریق سرویس DNS، آی پی مربوط را پیدا می‌کند و درخواستی ارسال خواهد کرد.

 


توضیح تکمیلی


نحوه کار پروژه کنترل GPIO برد ESP32 به این صورت است که ESP32 ما یک وب سرور را هست می کند که در این وب سرور می توانیم تایمر مربوط را تنظیم کنیم، در ادامه با فعال کردن تایمر، خروجی که از قبل مشخص کرده ایم فعال(HIGH) خواهد شد و در زمان مشخص شده خاموش(LOW) خواهد شد. پین مربوط که بر روی آن کنترل خواخیم داشت پین GPIO2 خواهد بود که همچنین LED داخل برد نیز برای این پین قرار داده شده است.

وب سرور ESP32: کنترل خروجی ها با تایمر

 


پیش نیاز ها


در این آموزش از دو کتابخانه ESPAsyncWebServer و  AsyncTCP استفاده می شود، در ادامه مراحل نصب را دنبال کنید. ابتدا به مسیر Sketch Include Library > Add .zip Library بروید، و فایل .Zip که از لینک های زیر دانلود کرده اید را اضافه کنید. ‌با استفاده از دو لینک زیر اقدام به دانلود و نصب کتابخانه های مورد نیاز کنید. این کتابخانه ها برای راه‌اندازی وب سرور و همچنین ارسال اطلاعات به سمت شبکه اینترنت مورد استفاده قرار خواهند گرفت ESPAsyncWebServer و AsyncTCP

 


نصب افزونه ESP32 در Arduino IDE


بارها روش نصب برد ESP32 را در نرم افزار آردوینو IDE آموزش داده‌ایم. با این حال اگر هنوز روش نصب را نمی‌دانید، مطابق توضیحات ادامه دهید. ابتدا در نرم افزار Arduino IDE به مسیر FilePreferences بروید. لینک زیر را در بخش مشخص شده قرار دهید.

وب سرور ESP32: کنترل نور LED

  • سپس به مسیر Tools > Board > Boards Manager بروید.
  • در بخش board manager  کلمه ESP32  را سرچ کنید و بر روی install  کلیک کنید.

وب سرور ESP32: کنترل نور LED

 


کد کنترل برد ESP32 با تایمر


کدهای زیر را کپی کرده و به نرم افزار آردوینو منتقل کنید. پیشنیازها شامل کتابخانه‌های مورد نیاز را بایستی نصب کنید. که در بالاتر این مورد توضیح داده شد.

 

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

 

دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندس‌های دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید.

 

 


تحلیل کدهای پروژه


در چند خط اول مانند روال عادی اقدام معرفی برد و کتابخنه های مربوط می کنیم.

#include <WiFi.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>

 

در این خط دو اطلاعات شبکه مورد نظر را وارد می کنیم.

const char* ssid = "cifer";
const char* password = "cifer";

 

در این خط کد می توانید حداکثر مقدار اسلاید بار زمان را تغییر دهید.

String timerSliderValue = "10";

 


جمع بندی و نتیجه پروژه


در انتها پس آپلود کد با مراجعه به سریال مانیتور و ریست کردن برد، اگر ESP با موفقیت به شبکه متصل شود، ip مربوط به وب سرور برای شما به نمایش در خواهد آمد وبا جستجو کردن آن در مرورگر، به وب سرور دسترسی خواهید داشت و با حرکت دادن اسلاید بار می توانید زمان HIGH بودن پین GPIO 2 را که LED پیشفرض برد نیز برای این پین می باشد را مشخص کنید.

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

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

 

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

 

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

CiferTech

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

۱۰ دیدگاه

  • سلام میخواستم بدونم روی سایت چه کدی باید بزنم برای ایجاد کلید فعال و غیر فعال کردن esp32?!

  • سلام من یک دستگاه کنترل دما و رطوبت و تایمر که با اردوینو ینو ساختم میخوام یه طوری تغیر بدم که بتونم از طریق موبایل یا اینترنت مقادیر دما و تایم اینارو تغیر بدم ایا میشه این پروژه و طوری تغیر داد که به کار من بخوره در وب سرور فقط یک افزونه برای تایمر است من چجوری اونو تغیر بدم برای کارم؟

    • سلام برای استفاده از تایمر می‌تونید داکیومنت های منتشر شده را مطالعه کنید. سناریو مد نظرتون رو متوجه نشدم! میخواین دما را با وای فای تغییر بدین ؟!

  • سلام
    میشه لطف کنید در مورد ارتباط سریال هم توضیحات یا آموزشی قرار دهید.
    مثلا از طریق پورت سریال داده ای به بردESP32 ارسال بشه.
    من کمی از کار رو انجام دادم اما برای تابع وقفه سریال توی ESP32 مشکل برمیخورم.
    ممنون میشم آموزشی هم در این مورد قرار دهید.
    با تشکر از لطف شما

  • سلام. من کد رو روی esp wroom 32s اپلود کردم. کانکشن برقرار میشه و وب پیج بالا میاد ولی LED روشن نمیشه. با فعال کردن کلید روی صفحه و تغییر زمان هم اتفاقی نمی افته. ممنون میشم راهنماییم کنید.

  • متاسفانه این کد کار نمیکنه. موقع تغییر حالت کلید یا اسلایدر هیچ اطلاعاتی ارسال نمیشه. این عدم ارسال اطلاعات رو با wireshark چک کردم.