در سلسله آموزش های شبکه مش، قسمت ششم به بررسی یک قابلیت کلیدی و بسیار کاربردی خواهیم پرداخت. در قسمت پیش راجع به ارتباط بین کاربر و شبکه مش پرداختیم. آنطور که از قسمت قبل به یاد داریم، ارتباطی را بین کاربر و شبکه مش برقرار نمودیم. در این ارتباط، کاربر می تواند از طریق مرورگر رایانه و یا تلفن همراه خود، پیغامی را به شبکه مش ارسال نماید. بدین ترتیب کاربر می تواند از طریق تلفن همراه خود به تعداد بسیاری از گره دسترسی داشته باشد. این مورد در خانه های هوشمند بسیار کاربردی است؛ آنجا که کاربر می تواند کنترل بسیاری از وسایل برقی را در اختیار گیرد. در این آموزش اما قصد داریم تا موضوعی بسیار مهم را مورد بررسی قرار دهیم. قسمت ششم سلسله آموزش، به بروز رسانی برنامه نوشته شده گره های حاضر در شبکه، از طریق فناوری OTA می پردازد. به کمک این فناوری می توانیم از راه دور بردهای ESP را پروگرام نماییم. در این آموزش قصد داریم تا بردهای ESP حاضر در شبکه مش را از طریق این فناوری پروگرام نماییم. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
فناوری OTA توضیح و تشریح
فناوری OTA، فناوری است که توسط شرکت ESPRESSIF جهت آپلود برنامه ها به صورت بی سیم روی بردهای ESP ارایه شده است. این فناوری که مخفف عبارت Over The Air است، می تواند به سادگی و بدون نیاز به کابل، برنامه ها را روی بردهای ESP فلش کند. این شیوه در پروژه هایی که امکان دسترسی به برد میسر نیست، بسیار کاربردی خواهد بود.
مطابق روش فوق ابتدا باید فایل باینری پروژه ایجاد گردد. این فایل با کلیک بر روی گزینه sketch و سپس export compiled binary ایجاد می شود. پس از انتخاب این گزینه می توان برنامه را بر روی برد آپلود نمود. توجه داشته باشید که برای آپلود برنامه روی برد، نیازمند رعایت مراحلی هستید. این مراحل پیشتر در آموزشی به طور کامل توسط همکارم شرح داده شده است. برای مطالعه این آموزش کلیدی و کاربردی می توانید روی این لینک کلیک نمایید. پس از آشنایی با این فناوری و نحوه کار، نوبت به بررسی آن در شبکه مش و چگونگی آپلود کد بر روی گره ها در شبکه مش می رسد. در قسمت بعد ابتدا به بررسی مکانیزم این روش می پردازیم. سپس قسمت به قسمت شرح موضوع را از نظر، خواهیم گذراند.
فناوری OTA در شبکه مش Mesh
پس از آشنایی با فناوری OTA، نوبت به بررسی اجرای این روش در شبکه مش می رسد. در این آموزش ما قصد داریم تا یک فایل باینری شده که حاوی برنامه است را از طریق OTA به یک گره در شبکه ارسال کنیم. در این روش، فایل باینری از طریق یک برد NODEMCU به برد NODEMCU دیگر که درشبکه حضور دارد، منتقل می گردد. برای این مورد، فایل برنامه که به صورت باینری کامپایل شده، درون کارت SD قرار می گیرد. این کارت SD درون ماژول SD قرار گرفته و ماژول SD به برد NODEMCU ارسال کننده متصل می گردد. برد NODEMCU با خواندن فایل باینری، آن را به گیرنده ارسال می کند.
در این روش فایل باینری را باید به شیوه زیر تغییر نام داده و درون کارت SD ذخیره کنیم.
firmware_ESP8266_ otareceiver.bin
توجه داشته باشید که فایل مورد نظر باید در پوشه روت(اصلی) کارت SD ذخیره گردد. پس از ذخیره باید فایل در شبکه ارسال گردد. به همین منظور، دستورات و توابع ارسال را در قسمت بعد مورد بحث و بررسی قرار می دهیم.
توابع و دستورات شبکه مش بر پایه OTA
در قسمت پیش نحوه ارسال برنامه(فریمور) بیان شد. به همین منظور باید از دستورات و توابع کتابخانه SD جهت ارسال برنامه استفاده نماییم. به همین منظور در ابتدا نام فایل کنترل شده و در صورت وجود فایل، به خواندن آن اقدام می شود. در اینجا جهت خواندن نام فایل از کلاس TSTRING استفاده می شود. کلاس TSTRING مشابه کلاس String بوده، با این تفاوت که بیشینه کاراکترها در این کلاس ۱۱ کاراکتر به ازای هر رشته خواهد بود. توجه داشته باشید که در ابتدا فایل به کمک دستور زیر خوانده می شود.
File entry = dir.openNextFile();
پس از این مرحله، نام فایل به شکل زیر خوانده می شود.
TSTRING name = entry.name()
پس از خواندن نام فایل، با عملیات string parsing(پردازش رشته ای) نام فایل با فرمتی که تعیین شده کنترل می شود. در صورت صحت نام فایل، عملیات ادامه خواهد یافت. در قسمت بعد، باید بایت های فایل را در قالب شبکه مش به گیرنده ارسال کنیم. به این منظور در ابتدا به کمک تابع زیر ارسال را آغاز می کنیم.
initOTASend
در این تابع پارامتر ورودی به عنوان یک تابع قرار می گیرد. این تابع داده های فایل را خوانده و در ورودی تابع ارسال OTA قرار می دهد. در ادامه، به کمک کلاس هش، یک هش کد برای داده های ارسالی ایجاد می کنیم. به کمک هش کد می توانیم یک کد یکتا برای داده های ارسالی ایجاد کنیم. این مورد برای کنترل خطا صورت می گیرد. در ظرف گیرنده نیز کد دریافتی با کد ارسالی مقایسه شده و چنانچه همان هش کد ارسال شده باشد، داده های معتبر خواهد بود. به همین منظور، برای ایجاد کد هش داریم.
MD5Builder md5
پس از محاسبه هش کد، مقدار آن به گیرنده ارسال خواهد شد. البته روال ارسال فریمور بسیار گسترده تر بوده که در قسمت بعد با مشاهده کدها، این مورد را کامل بررسی خواهیم کرد.
کدها و اجرای ارسال برنامه
پس از آشنایی با توابع و دستورات فناوری ota در شبکه مش ESP، نوبت به اجرا می رسد. کدهای زیر مربوط به ارسال فریمور در شبکه مش و مبتنی بر OTA است.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
لوازم مورد نیاز
جمع بندی
در مجموعه آموزش های شبکه مش، قسمت ششم به یکی از قابلیت های بی نهایت کلیدی و کاربردی پرداختیم. به کمک این قابلیت می توانیم بردهای حاضر در شبکه را از راه دور و بدون نیاز به کابل، پروگرام کنیم. این قابلیت که OTA نام دارد، روال پروگرام کردن بردها را بسیار ساده می نماید. در این حالت نیازی به دسترسی فیزیکی به بردها نبوده و از راه دور می توان برنامه ها را آپلود نمود. در این آموزش ما فایل برنامه را درون کارت SD قرار می دهیم. سپس با اتصال کارت SD به کمک ماژول SD به برد NODEMCU، می توانیم به کمک توابع و دستورات شبکه مش، برنامه را به گره گیرنده ارسال نماییم.
چنانچه مطالب ابن آموزش را گنگ یافتید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. تاکنون بیش از هزاران نظر و پاسخ در دیجی اسپارک درج شده است؛ پس نظرات شما ارزشمند بوده و سوالات بی پاسخ نمی مانند.