در پروژه کنترل GPIO برد ESP32 با استفاده از یک ESP32 و همچنین با ساخت یک وب سرور و مشخص زمان مدنظر می توانیم خروجی های برد nodemcu را کنترل کنیم. فرض کنید می خواهید ماژول رله ای که به برد متصل کرده اید در ۱۰ ثانیه آینده غیر فعال شود که این آموزش در چنین سناریو هایی می تواند مفید باشد. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
برد 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 داخل برد نیز برای این پین قرار داده شده است.
پیش نیاز ها
در این آموزش از دو کتابخانه ESPAsyncWebServer و AsyncTCP استفاده می شود، در ادامه مراحل نصب را دنبال کنید. ابتدا به مسیر Sketch > Include Library > Add .zip Library بروید، و فایل .Zip که از لینک های زیر دانلود کرده اید را اضافه کنید. با استفاده از دو لینک زیر اقدام به دانلود و نصب کتابخانه های مورد نیاز کنید. این کتابخانه ها برای راهاندازی وب سرور و همچنین ارسال اطلاعات به سمت شبکه اینترنت مورد استفاده قرار خواهند گرفت ESPAsyncWebServer و AsyncTCP
نصب افزونه ESP32 در Arduino IDE
بارها روش نصب برد ESP32 را در نرم افزار آردوینو IDE آموزش دادهایم. با این حال اگر هنوز روش نصب را نمیدانید، مطابق توضیحات ادامه دهید. ابتدا در نرم افزار Arduino IDE به مسیر File> Preferences بروید. لینک زیر را در بخش مشخص شده قرار دهید.
https://dl.espressif.com/dl/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json
- سپس به مسیر Tools > Board > Boards Manager بروید.
- در بخش board manager کلمه ESP32 را سرچ کنید و بر روی install کلیک کنید.
کد کنترل برد 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?!
سلام، متاسفانه منظورتون رو دقیق متوجه نشدم!!
سلام من یک دستگاه کنترل دما و رطوبت و تایمر که با اردوینو ینو ساختم میخوام یه طوری تغیر بدم که بتونم از طریق موبایل یا اینترنت مقادیر دما و تایم اینارو تغیر بدم ایا میشه این پروژه و طوری تغیر داد که به کار من بخوره در وب سرور فقط یک افزونه برای تایمر است من چجوری اونو تغیر بدم برای کارم؟
سلام برای استفاده از تایمر میتونید داکیومنت های منتشر شده را مطالعه کنید. سناریو مد نظرتون رو متوجه نشدم! میخواین دما را با وای فای تغییر بدین ؟!
سلام
میشه لطف کنید در مورد ارتباط سریال هم توضیحات یا آموزشی قرار دهید.
مثلا از طریق پورت سریال داده ای به بردESP32 ارسال بشه.
من کمی از کار رو انجام دادم اما برای تابع وقفه سریال توی ESP32 مشکل برمیخورم.
ممنون میشم آموزشی هم در این مورد قرار دهید.
با تشکر از لطف شما
سلام، حتما این مورد را در آموزش های بعدی بررسی خواهیم کرد.
سلام. من کد رو روی esp wroom 32s اپلود کردم. کانکشن برقرار میشه و وب پیج بالا میاد ولی LED روشن نمیشه. با فعال کردن کلید روی صفحه و تغییر زمان هم اتفاقی نمی افته. ممنون میشم راهنماییم کنید.
با سلام
این مشکل به دلیل بادریت هست.
متاسفانه این کد کار نمیکنه. موقع تغییر حالت کلید یا اسلایدر هیچ اطلاعاتی ارسال نمیشه. این عدم ارسال اطلاعات رو با wireshark چک کردم.
با سلام
برد ESP و سیستم مربوطه هر دو به یک اکسس پوینت متصل هستند؟