فرض کنید یک وب سرور با تراشه ESP خود راه اندازی کرده اید، خب این وب سرور می توانئد اطلاعات مفیدی را درون خود مانیتور کند مانند اطلاعات دما، رطوبت، تردد افراد در محیط و همچنین تصاویر زنده، حالا برای اینکه هر شخص با در دست داشتن ip این وب سرور قادر به دسترسی گرفتن از آن نباشد راه حل ساده ای وجود دارد که در این آموزش به می پردازیم. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
وب سرور
وب سرور ها برنامه هایی هستند که مسئولیت آن ها قبول کردن درخواست های Http است که از سمت کاربران ارسال می شود، وب سرور ها در پاسخ اطلاعاتی را ارسال می کنند که ما معمولا به نام صفحات Html میشناسیم. خب حالا فرض کنیم که در مرورگر https://digispark.ir را سرچ کردیم، اتفاقی که میافتد به این شکل است که مرورگر شما یک درخواست به دامنهای با نام digispark.ir ارسال میکند. در حالت عادی زمانی که شما آدرس سایتی را در مرورگر جست و جو میکنید از حروف انگلیس استفاده میکنید یعنی کلماتی قابل فهم برای انسان اما در واقع برای ورود به یک سایت باید از طریق ip آن اقدام کنید، اینجاست که مفهومی به نام DNS وارد کار میشود، پس در واقع زمانی که شما URL سایتی را جستجو می کنید مرورگر از طریق سرویس DNS، آی پی مربوط را پیدا میکند و درخواستی ارسال خواهد کرد.
برد ESP8266
تراشه های ESP8266 از موارد محبوب در زمینه اینترنت اشیا هستند که نسبت به دیگر نمونه ها کیفیت بهتر و همچنین قیمت پایین تری نیز دارند، هسته مرکزی این ماژول ESP8266 EX می باشد که در واقع زیر این شیلد فلزی قرار گرفته است، در ضمن این شیلد فلزی به منظور کاهش نویز و همچنین محافظت از قطعات SMD حساس این ماژول قرار داده شده است. این ماژول ها در سری های مختلفی تولید میشوند از جمله esp01 و esp12، در واقع تفاوتی که مدل ها با یکدیگر دارند تعداد GPIO ها و همچنین حافظه آن ها است البته معمولا از نظر ظاهری نیز تفاوت هایی که با یکدیگر دارند که قابل تشخیص است. این ماژول ها از شبکه WIFI داخلی پشتیبانی میکنند، این میکرو کنترلر ها اولین بار در سال ۲۰۱۴ به بازار عرضه شدند. ESP8266 دارای ۱۳ GPIO و همچنین یک ورودی آنالوگ (A0) است.
برد ESP32
وقتی از ESP32 صحبت میکنیم،از مصرف انرژی کمتر، قدرت پردازش بهتر، تکنولوژی بروز صحبت میکنیم، یعنی نسل جدیدی از تراشه های WIFI که در ادامه نسل قبل یعنی ESP8266 به بازار معرفی شدند، که علاوه بر WIFI از بلوتوث نیز پشتیبانی میکنند. از برد های کمکی که برای این تراشه عرضه شده میتوان به NodeMCU و ESP32-CAM اشاره کرد. این تراشه در سه نوع wroom , wrover و solo تولید میشود.
نحوه کار امنیت وب سرور
در این پروژه با ساخت یک صفحه لاگین برای وب سرور و البته مشخص کردن یک یوزر و پسوورد برای آن اقدام امن کردن وب سرور خود می کنیم، البته برای فردی که قصد دسترسی به شبکه را دارد همواره راهی برای نفوذ وجود دارد اما با این کار ما موانع را بیشتر کرده و درصد شکست برای طرف مقابل بیشتر خواهیم کرد. در ضمن این صفحه لاگین با استفاده از پروتکل HTTP اجرا خواهد.
پیش نیازهای امنیت وب سرور
در این آموزش از دو کتابخانه ESPAsyncWebServer و AsyncTCP استفاده می شود، در ادامه مراحل نصب را دنبال کنید.
- ابتدا به مسیر Sketch > Include Library > Add .zip Library بروید، و فایل .Zip که از لینک های زیر دانلود کرده اید را اضافه کنید.
وابسته به بردی که از آن استفاده می کنید اقدام به دانلود کتابخانه مربوط از لینک زیر بکنید.
ESP32: ESPAsyncWebServer و AsyncTCP
ESP8266 : ESPAsyncTCP و ESPAsyncWebServer
-
نصب برد ESP32 در Arduino IDE
در این آموزش از برد 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 کلیک کنید.
کد و تحلیل
ابتدا در این دو خط SSID و پسوورد شبکه خود را وارد کنید؛
const char* ssid = "REPLACE_WITH_YOUR_SSID"; const char* password = "REPLACE_WITH_YOUR_PASSWORD";
در این بخش یوزر و پسووردی را که می خواهید توسط آن به وب سرور دسترسی داشته باشد را وارد کنید؛
const char* http_username = "cifer"; const char* http_password = "cifer";
کد کامل پروژه امنیت وب سرور
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
جمع بندی
در نهایت پس از پروگرام کردن کد و سرچ کردن ip موجود در سریال مانیتور با صفحه لاگین روبرو خواهید شد و با وارد کردن یوزر و پسوورد از قبل مشخص شده در کد می توانید به وب سرور دسترسی داشته باشید. در این سورس کد میتوانید برای پروژه های مختلفی استفاده کنید در صورتی احساس میکنید نیاز به امنیت بیشتری دارند، تنها با چن خط کد و تنظیماتی از پیش تعریف شده از اطلاعات وب سرور خود محافظت کنید.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
عمده تفاوت برد esp32 در مقابل برد Esp8266 کدام است؟
از نظر من برجسته ترین تفاوت بین ای دو تراشه بلوتوث و تعداد ADC است. اما در واقع خیلی خیلی بیشتر از اینها پیشرفت بین این دو نسل وجود دارد که تعدادی از آن هارا در آموزش ذکر کردم.
سلام.من برنامه روبا موفقیت روی ماژول آپلود کردم ولی توی سریال مانیتور آی پی نمایش نمیده حتی نقطه پین هم نمیاد.ممنون میشم راهنمایی کنید
سلام. برای نمایش آیپی داخل سریال مانیتور. برد را ریست کنید.
سلام.اگه امکانش هست مشخص کنید که کدام قسمت های سورس بالارا میتوان در پروژه های دیگر فقط ب منظور ایجاد لاگین استفاده کرد؟
سلام. کد پروژه خودتون رو داخل بخش loop وارد کنید.
فک کنم سوالمو بد پرسیدم.منظورم این بود که توی این پروژه فقط روی یک رله کنترل داریم من میخوام که روی رله های بیشتری کنترل داشته باشم.آیا امکانش هست که بشه تعداد کنترل رله ها رو در این پروژه بیشتر کرد؟و همینطور برای اضافه کردن چیزهای بیشتر به این پروژه هر کدی که دارم رو درون تابع loopبنویسم؟در ضمن برای من سیستم احراز هویت در این پروژه خیلی مهمه
بله امکان اضافه کردن موارد بیشتر وجود دارد که نیاز به کدنویسی هست. البته میتوانید از پروژه زیر استفاده کنید که چندین رله با ESP کنترل میشوند و با این آموزش ترکیب کنید.
https://digispark.ir/esp8266-electronic-device-control-with-4-relay-module/
اگه امکان داره با جزییات بیشتری توضیح بدید که چگونه می شود دوتا پروژه ای که فرمودید رو باهم ترکیب نمود؟
هردو کد از سه بخش تقسیم شده فبل از Setup که مربوط به کتابخانه ها است،و Setup و loop. در بخش کتابخانه پروژه دوم که به شما معرفی کردم کتابخانه ها و تنظیمات مورد نیاز را از این در کد کنترل رله وارد کنید همچنین در بخش loop موارد را بدون تغییر وارد کنید. در وارد کردن بخش Setup این کد برای کد کنترل باید دقت داشته باشد موارد تکراری وارد نشوند و کد های HTML بصورت کامل جایگذاری شوند.