ارتباط از طریق وب سرور با بردهای الکترونیکی بسیار جذاب و همچنین حائز اهمیت است. تصور کنید از طریق رابط گرافیکی که به کمک مرورگر به آن دسترسی پیدا میکنیم. بتوانیم به یک یا چند برد الکترونیکی فرمان ارسال کنیم. در این آموزش با استفاده از برد ESP32 قصد یک ارتباط دو طرفه بین وب سرور و سخت افزار ایجاد کنیم، به این صورت که برای کنترل gpio خروجیهای برد esp32 را با استفاده از trigger موجود در صفحه وب خاموش/روشن کنیم. همچنین با استفاده از میکرو سوییج بتوانیم خروجی مربوط را کنترل کنیم.در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
برد Nodemcu با تراشه ESP32
برد ESP32 نسل پیشرفته ESP8266 است. یکی از تفاوتهای آن بلوتوث داخلیاش میباشد. همچنین دارای هسته وایفای ۲,۴ گیگا هرتزی و بلوتوث داخلی تولید شده با تکنولوژی ۴۰ نانومتری شرکت TSMC میباشد. این ماژول دارای بهترین پرفورمنس در مصرف انرژی میباشد یعنی با کمترین مصرف انرژی بهترین نتیجه را برای ما به همراه دارد. اگر بخواهیم دقیقتر به این برد نگاه کنیم باید بگوییم که این یک chip است که پلتفرم NodeMCU در اون پیاده سازی شده که به این نوع چیپ ها System on a chip microcontrollers هم گفته میشود.
وب سرور WebServer
وب سرور برنامهای است که از پروتکل HTTP استفاده میکند تا فایلهایی را در پاسخ به در خواست کاربر در اختیار ما قرار دهد. این در خواست از طریق اتصال HTTP هر کاربر ارسال میشوند. هر سروری که یک سند XML را به دستگاه دیگر تحویل میکند میتواند یک وب سرور باشد. در تعریفی مختصر میتوان گفت که یک وب سرور درواقع یک سرور در اینترنت است که به در خواست های HTTP برای تحویل محتوا و خدمات پاسخ میدهد.
توضیح تکمیلی
در این پروژه با این کلیک یا trigger فیزیکی و یک trigger نرم افزاری، خروجی های برد ESP32 را کنترل می کنیم، به این صورت که با لمس کلید در صفحه وب پیج یک در خواست از نوع HTTP به ESP ارسال می شود و وضعیت خروجی را تغییر می دهد همچنین با فعال کردن میکرو سوییچ که همان کلید فیزیکی ما محصوب می شود، دو فرآیند صورت میگیرد اول اینکه وضعیت فعال یا غیر فعال بودن trigger در صفحه وب تغییر می کند و دوم اینکه حالت خروجی در ESP نیز تغییر خواهد کرد.
شماتیک و اتصالات کنترل GPIO
در این مدار از یک میکرو سوییچ، LED و مقاومت (۱k) استفاده شده، یک پایه میکروسوییچ به ۳V3 و پایه دیگر مانند تصویر به مقاومت و سپس GND متصل میگردد همچنین GPIO4 نیز به محل اتصال بین مقاومت و میکرو سوییچ متصل می گردد در ادامه نیز LED پایه کاتد LED به GND و آند به GPIO2 متصل می گردد.
تنظیمات ESP32 در آردوینو IDE
در این آموزش برای کنترل gpio از برد ESP32 استفاده می کنیم، در ادامه مراحل را برای نصب این برد در نرم افزار آردوینو دنبال کنید:
- ابتدا در نرم افزار 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 کلیک کنید.
کتابخانه های مورد نیاز
در این آموزش از دو کتابخانه ESPAsyncWebServer و AsyncTCP استفاده می شود، در ادامه مراحل نصب را دنبال کنید.
- ابتدا به مسیر Sketch > Include Library > Add .zip Library بروید، و فایل .Zip که از لینک های زیر دانلود کرده اید را اضافه کنید.
از لینک های زیر اقدام به دانلود کتابخانه بکنید.
کد پروژه کنترل GPIO برد ESP32
در ابتدا درباره بخش هایی از کد توضیحاتی خواهم داد.
- مثل همیشه قبل از هر کاری اطلاعات ssid و پسوورد را در قسمت های مشخص شده وارد کنید.
const char* ssid = "REPLACE_WITH_YOUR_SSID"; const char* password = "REPLACE_WITH_YOUR_PASSWORD";
- در این قسمت کتابخانه های مورد نیاز را اضافه می کنیم ESPAsyncWebServer و ESPAsyncTCP همچنین Wifi که برای ساخت وب سرور مورد نیاز هستند.
#include <AsyncTCP.h> #include <ESPAsyncWebServer.h>
- در این خط از کد وضعیت پایه های LED و میکرو سوییچ را مشخص می کنیم.
int ledState = LOW;
int buttonState; int lastButtonState = LOW;
- این بخش از کد مربوط به درخواست HTTP تا تغییر وضعیت GPIO ها می باشد.
function toggleCheckbox(element) { var xhr = new XMLHttpRequest(); if(element.checked){ xhr.open("GET", "/update?state=1", true); } else { xhr.open("GET", "/update?state=0", true); } xhr.send(); }
- کد زیر را در نرم افزار آردوینو آپلود کنید.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
- تنظیمات منوی tools در نرم افزار آردوینو نیز مانند تصویر زیر می باشد.
وسایل مورد نیاز
جمع بندی
در نتیجه پس از آپلود کد در nodemcu یا تراشه ESP32؛ در نرم افزار آردوینو وارد Serial Monitor شوید، پس از ریست کردن، برد به وای فای مشخص شده متصل خواهد شد و ip مشخصی را در اختیار شما قرار خواهد داد، که با سرچ کردن آن در مرورگر می توانید به وب سرور دسترسی پیدا کنید.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
سلام آیا در این روش خطا وجود ندارد. مثلا رله چند بار با فشردن کلید فعال شود>؟؟؟
من با یک LED این مورد را چک کردم، در مواردی که شرایط اینترنت و قطعات مطلوب بود، خطایی بوجود نیامد.
سلام
آیا با این پروژه میشود از راه دور و بدون اینترنت داخلی )کنترل از راه دور و از طریق دوتا مودم( کنترل انجام داد؟
سلام، خیر این پروژه مناسب چنین کاری نیست.
سلام مهندس، وقت بخیر.
آقا یه سوال. آیا تو این پروژه وب سرور، ما باید نام ssid و پسوورد یک مودم ADSL که به اینترنت دسترسی داره رو وارد کنیم؟؟ که ESP بهش متصل بشه و سرور استارت بخوره و صفحه وب ساخته بشه و از طریق اون ما GPIO ها رو کنترل کنیم؟؟
یا اینکه نه، خود ESP بصورت مستقل یک شبکه وای فای رو ایجاد میکنه؟؟ (حالت اکسس پوینت)
کدوم حالت هستش؟
با سلام، بله مورد اول اجرا میشود وب سور به صورت لوکال به کمک شبکه وایفای مورد نظر اجرا میشود. البته مورد دوم هم با تغییرات کوچکی قابل اجراست.
سلام وقت بخیر
سلام وقت بخیر هرکاری میکنم روی این خط ارور میده
با سلام
لطفا اروری که دریافت میکنید را کپی کرده و در ادامه همین پاسخ ارسال کنید.