چگونه از wifi تراشه esp32 برای تولید تجاری استفاده کنیم؟
Wifi provisioning & wifi manager

 از آنجایی که اینترنت اشیا یوکاسافت از قطعه esp32 برای تولید محصولات خود استفاده میکند. مراحل استفاده تجاری از wifi قطعه esp32 را برنامه ریزی و پیاده سازی کرده است و شما میتوانید با بهره گیری از خدمات اینترنت اشیا یوکاسافت از انواع مختلف مدیریت wifi و provisioning  آن استفاده کنید. در این بلاگ به طور مختصر به آموزش انواع روش های wifi provisioning و wifi manager می پردازیم. 

معرفی 

ESP32 یک میکروکنترلر شگفت انگیز است. ارزان و در عین حال قدرتمند، دارای پردازنده 32 بیتی است و بسیاری از مدل های آن دارای دو هسته هستند. دارای تعداد زیادی پورت I/O، چندین مبدل A/D  دوازده بیتی، مبدل دیجیتال به آنالوگ و ارتباطات I2C، I2S، SPI و UART است. حتی دارای قابلیت سوئیچ لمسی است و بسیاری از مدل های آن دارای دوربین، نمایشگر و/یا میکروفون داخلی هستند. 

اما با وجود تمام این قابلیت‌ها، ویژگی‌ای که اکثر آزمایش‌کنندگان در ESP32 از آن استقبال می‌کنند، قابلیت‌های WiFi داخلی و بلوتوث آن است. این یک دنیای کامل از کنترل از راه دور و برنامه های کاربردی متصل به اینترنت را باز می کند.  کار با WiFi در ESP32، به لطف کتابخانه WiFi موجود، بدون دردسر است. اما یک نقطه ضعف در سیستم وجود دارد و آن در وهله اول اتصال به شبکه وای فای است.

اتصال به وای فای 


روش معمولی برای اتصال به شبکه WiFi در طرح ESP32 این است که پارامترهای ورود به شبکه (SSID و رمز عبور) را مستقیماً در متن ساده کدگذاری کنید. در حالی که این مطمئناً زمانی که شما فقط در حال آزمایش هستید کافی است، تعدادی معایب دارد:

 ESP32 شما فقط می‌تواند به شبکه‌ای متصل شود که شما کدنویسی کرده‌اید. 

تغییر شبکه های WiFi نیاز به ویرایش و کامپایل مجدد کد دارد. 

در صورت اشتراک گذاری یا توزیع، باید آن داده ها را از کد خود ویرایش کنید. 

شما نمی توانید یک محصول تجاری با استفاده از پارامترهای WiFi رمزگذاری شده ایجاد کنید. 

یک روش ترجیحی استفاده از سیستمی است که به شما امکان می دهد اعتبار وای فای خود را پس از کامپایل و بارگذاری کد در ESP32 پیکربندی کنید. این نوع سیستم به “WiFi Provisioning” معروف است.

WiFi Provisioning


“WiFi Provisioning” دقیقاً چیست؟ 

Provisioning فرآیند آماده سازی و تجهیز یک شبکه به منظور ارائه خدمات جدید است. هنگامی که ما با WiFi سروکار داریم، شامل ارائه اعتبار برای اتصال به یک شبکه و به دست آوردن یک آدرس IP است. 

اتصال به شبکه WiFi به دو اطلاعات نیاز دارد: 

Network SSID – SSID: مخفف Service Set Identifier و نام شبکه شما است.

رمز عبور شبکه - برای یک شبکه وای فای ایمن استفاده می شود که اکثر آنها هستند (و امیدوارم مال شما باشد). 

یکی از روش های WiFi Provisioning استفاده از صفحه کلید و صفحه نمایش برای وارد کردن این اطلاعات است. اگر پروژه شما قبلاً دارای این قطعات سخت افزاری است، این یک گزینه عملی است. اما بسیاری از پروژه های ESP32 ما، در واقع، اکثر آنها صفحه کلید یا نمایشگر ندارند. و افزودن آنها فقط برای اتصال به شبکه WiFi واقعا مقرون به صرفه نخواهد بود. آنچه ما نیاز داریم روشی برای انجام این کار بدون هیچ سخت افزار اضافی است. و ما می توانیم به دنیای دستگاه های تجاری نگاهی بیندازیم تا نمونه های عالی به دست آوریم.

دستگاه های اینترنت اشیا و تجهیزات جانبی کامپیوتر 

دستگاه‌های تجاری اینترنت اشیا در اشکال و اندازه‌ها، از دوربین‌ها و نمایشگرها گرفته تا حسگرهای دما و لامپ‌ها وجود دارند. و همه آنها برای عملکرد نیاز به اتصال به یک شبکه WiFi دارند. 

بدیهی است که قرار دادن یک پنل کنترل روی هر یک از این دستگاه‌ها برای تنظیم WiFi غیرممکن است، تصور کنید چگونه می‌توانید این کار را با یک لامپ انجام دهید! 

سپس ما لوازم جانبی کامپیوتر، به ویژه چاپگرها و اسکنرها را داریم. در حالی که بسیاری از این دستگاه ها دارای نمایشگر هستند، اما معمولاً یک دستگاه ورودی محدود دارند. وارد کردن اعتبار وای فای خود در دستگاهی که تنها چهار دکمه روی صفحه کلید آن دارد کار چندان آسانی نیست، به خصوص اگر از یک رمز عبور امن با ترکیبی از اعداد، حروف الفبا و نشانه گذاری استفاده کنید. 

این دستگاه ها از چند روش مختلف برای دستیابی به اتصال WiFi استفاده می کنند.

روشهای Provisioning 

راه های مختلفی وجود دارد که می توانیم WiFi Provisioning را انجام دهیم. امروز سه مورد از آنها را بررسی می کنیم:

 SmartConfig : روشی که توسط Texas Instruments توسعه یافته است. برای پیکربندی اعتبار وای فای به یک برنامه در دستگاه Android یا IOS نیاز دارد.

WiFi Protected Setup (روش WPS) : که از یک دکمه فشاری روی روتر و دستگاه مورد نظر برای دستیابی به جفت شدن و اتصال استفاده می کند. هر روتر از WPS پشتیبانی نمی کند. 

Local Access Point  : این دستگاه را در ابتدا به عنوان یک وب سرور در یک آدرس ثابت تنظیم می کند. سرور یک صفحه پیکربندی را نمایش می دهد و یک دستگاه خارجی (رایانه، تبلت، تلفن) برای پیکربندی آن استفاده می شود و سپس آن را در حالت WiFi slave قرار می دهد. 

هر کدام از این روش ها دارای نقاط قوت و ضعفی هستند و توجه داشته باشید که هر یک از آنها برای هر کاربردی مناسب است. روشی که امروز از آن استفاده خواهیم کرد، روش Local Access Point است.

Wifi manager

 Local Access Point (یا به اختصار Local AP) یک روش ایده آل برای استفاده با ESP32 است. این به شما امکان می دهد از تلفن و رایانه ای با قابلیت WiFi برای تنظیم اعتبار WiFi ESP32 خود و همچنین هر پارامتر پیکربندی اضافی مورد نیاز خود استفاده کنید.  در ادامه یک نمونه تز wifi manager به صورت مرحله به مرحله آورده شده. قابل ذکر است که نحوه پیاده سازی wifi manager میتواند مطابق اهداف هر محصول متفاوت باشد.

1_ wifi manager بوت می شود و بررسی می کند که آیا از قبل یک شبکه WiFi پیکربندی شده است یا خیر.

 2 - اگر دارای اعتبار وای فای باشد، از آنها برای ورود به شبکه استفاده می کند. با فرض موفقیت آمیز بودن، هیچ اقدام دیگری لازم نیست و می تواند شروع به اجرای طرح خود کند.

 3 - اگر اعتبار وای فای نداشته باشد یا نامعتبر باشد، به جای آن خود را به عنوان یک Access Point تنظیم می کند. نقطه دسترسی جایی است که ESP32 شبکه وای فای خود را برای اتصال دستگاه های دیگر فراهم می کند

4 – یک صفحه وب به آدرس 192.168.4.1 ایجاد می کند. در صفحه وب، فهرستی از شبکه‌های WiFi موجود وجود دارد که می‌توانید به آنها بپیوندید، به علاوه کادرهای متنی برای وارد کردن SSID و رمز عبور. همچنین می‌توانید آن را به گونه‌ای پیکربندی کنید که کادرهای متنی اضافی (یا سایر عناصر HTML) داشته باشد تا اطلاعات پیکربندی دیگری را که ممکن است به آن نیاز داشته باشید دریافت کند. 

5 – کاربر اطلاعات مناسب را وارد کرده و دکمه Save را فشار می دهد. اطلاعات به ESP32 بازگردانده می شود.

 6 – ESP32 به حالت Station برمی گردد و سعی می کند با استفاده از اعتبار ارائه شده به شبکه WiFi مورد نظر متصل شود. 

7- با فرض اینکه کاربر اعتبار ورود صحیح را ارائه کرده باشد، ESP32 اکنون به شبکه WiFi متصل خواهد شد. 

اطلاعات تکمیلی در ​این لینک موجود است.


پروتکل ارتباطی بین Thingsboard و دستگاه Body Analyzer TANITA