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

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

وب سرور ESP32: کنترل GPIO بصورت سخت افزاری و نرم افزاری
نوشته شده توسط CiferTech

ارتباط از طریق وب سرور با بردهای الکترونیکی بسیار جذاب و همچنین حائز اهمیت است. تصور کنید از طریق رابط گرافیکی که به کمک مرورگر به آن دسترسی پیدا می‌کنیم. بتوانیم به یک یا چند برد الکترونیکی فرمان ارسال کنیم. در این آموزش با استفاده از برد ESP32 قصد یک ارتباط دو طرفه بین وب سرور و سخت افزار ایجاد کنیم، به این صورت که برای کنترل gpio خروجی‌های برد esp32 را با استفاده از trigger موجود در صفحه وب خاموش/روشن کنیم. همچنین با استفاده از میکرو سوییج بتوانیم خروجی مربوط را کنترل کنیم.در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

وب سرور ESP32: کنترل GPIO بصورت سخت افزاری و نرم افزاری

 


برد Nodemcu با تراشه ESP32


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

برد nodemcu برپایه تراشه ESP32 - دیجی اسپارک

 


وب سرور WebServer


وب سرور برنامه‌ای است که از پروتکل HTTP استفاده می‌کند تا فایل‌هایی را در پاسخ به در خواست کاربر در اختیار ما قرار دهد. این در خواست از طریق اتصال HTTP هر کاربر ارسال می‌شوند. هر سروری که یک سند XML را به دستگاه دیگر تحویل می‌کند می‌تواند یک وب سرور باشد. در تعریفی مختصر میتوان گفت که یک وب سرور درواقع یک سرور در اینترنت است که به در خواست های HTTP برای تحویل محتوا و خدمات پاسخ می‌دهد.

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

 


توضیح تکمیلی


در این پروژه با این کلیک یا trigger فیزیکی و یک trigger نرم افزاری، خروجی های برد ESP32 را کنترل می کنیم، به این صورت که با لمس کلید در صفحه وب پیج یک در خواست از نوع HTTP به ESP ارسال می شود و وضعیت خروجی را تغییر می دهد همچنین با فعال کردن میکرو سوییچ که همان کلید فیزیکی ما محصوب می شود، دو فرآیند صورت میگیرد اول اینکه وضعیت فعال یا غیر فعال بودن trigger  در صفحه وب تغییر می کند و دوم اینکه حالت خروجی در ESP نیز تغییر خواهد کرد.

ارتباط وب سرور با برد ESP32 اتصال تریگر به برد - دیجی اسپارک

 


شماتیک و اتصالات کنترل GPIO


در این مدار از یک میکرو سوییچ، LED و مقاومت (۱k) استفاده شده، یک پایه میکروسوییچ به ۳V3 و پایه دیگر مانند تصویر به مقاومت و سپس GND متصل میگردد همچنین GPIO4 نیز به محل اتصال بین مقاومت و میکرو سوییچ متصل می گردد در ادامه نیز LED پایه کاتد LED به GND و آند به GPIO2 متصل می گردد.

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

 


تنظیمات ESP32 در آردوینو IDE


در این آموزش برای کنترل gpio از برد ESP32 استفاده می کنیم، در ادامه مراحل را برای نصب این برد در نرم افزار آردوینو دنبال کنید:

  • ابتدا در نرم افزار Arduino IDE به مسیر FilePreferences بروید.

تنظیمات نرم افزار آردوینو IDE برد ESP32 - دیجی اسپارک

  • لینک زیر را در بخش مشخص شده قرار دهید.
https://dl.espressif.com/dl/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json

 

تنظیمات نرم افزار آردوینو IDE برد ESP32 - دیجی اسپارک

  • سپس به مسیر Tools > Board > Boards Manager بروید.

انتخاب برد ESP32 در نرم افزار آردوینو IDE - دیجی اسپارک

  • در بخش board manager  کلمه ESP32  را سرچ کنید و بر روی install  کلیک کنید.

نصب برد ESP32 در نرم افزار آردوینو IDE - دیجی اسپارک

 


کتابخانه های مورد نیاز


در این آموزش از دو کتابخانه ESPAsyncWebServer و  AsyncTCP استفاده می شود، در ادامه مراحل نصب را دنبال کنید.

  • ابتدا به مسیر Sketch Include Library > Add .zip Library بروید، و فایل .Zip که از لینک های زیر دانلود کرده اید را اضافه کنید.

نصب کتابخانه ESP32 در نرم افزار آردوینو IDE - دیجی اسپارک

از لینک های زیر اقدام به دانلود کتابخانه بکنید.

 


کد پروژه کنترل 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 در نرم افزار آردوینو نیز مانند تصویر زیر می باشد.

تنظیمات Tools برای برد ESP32 در نرم افزار آردوینو - دیجی اسپارک

 


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


  1. برد NodeMCU ESP32
  2. ال ای دی LED
  3. مقاومت یک کیلواهم
  4. میکروسوییچ

 


جمع بندی


در نتیجه پس از آپلود کد در nodemcu یا تراشه ESP32؛ در نرم افزار آردوینو وارد Serial Monitor شوید، پس از ریست کردن، برد به وای فای مشخص شده متصل خواهد شد و ip مشخصی را در اختیار شما قرار خواهد داد، که با سرچ کردن آن در مرورگر می توانید به وب سرور دسترسی پیدا کنید.

 

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

 

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

 

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

CiferTech

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

۹ دیدگاه

  • سلام
    آیا با این پروژه میشود از راه دور و بدون اینترنت داخلی )کنترل از راه دور و از طریق دوتا مودم( کنترل انجام داد؟

  • سلام مهندس، وقت بخیر.
    آقا یه سوال. آیا تو این پروژه وب سرور، ما باید نام ssid و پسوورد یک مودم ADSL که به اینترنت دسترسی داره رو وارد کنیم؟؟ که ESP بهش متصل بشه و سرور استارت بخوره و صفحه وب ساخته بشه و از طریق اون ما GPIO ها رو کنترل کنیم؟؟
    یا اینکه نه، خود ESP بصورت مستقل یک شبکه وای فای رو ایجاد میکنه؟؟ (حالت اکسس پوینت)
    کدوم حالت هستش؟

    • با سلام، بله مورد اول اجرا می‌شود وب سور به صورت لوکال به کمک شبکه وای‌فای مورد نظر اجرا می‌شود. البته مورد دوم هم با تغییرات کوچکی قابل اجراست.