بروز رسانی پروژه‌های ESP8266 و NodeMcu آنلاین

blog
۱۳۹۸-۱۱-۰۵
5 دقیقه

فرض کنید با استفاده از NodeMcu و یا ESP8266 یک پروژه اینترنت اشیاء ساخته‌اید و آن را در نقاط مختلف کره زمین نصب کرده‌اید! همه چیز دارد به خوبی کار می‌کند تا اینکه ناگهان سرو کله یک باگ توی پروژتون پیدا میشه یا به هر دلیلی تصمیم می‌گیرید اون ها رو بروزرسانی (آپدیت) کنید. خوب چه باید کرد؟ یا باید خودتون برید همشونو جمع کنید و یا به مشتری یا نمایندتون یه فایل بدید و بگین برو آپدیتشون کن! که هر دو روش هم خیلی هزینه بر هست و هم دردسرهای خودش رو داره. توی این قسمت از پروژه های آردینو میخوام بهتون یاد بدم چجوری میتونید آنلاین و از طریق اینترنت، برنامه (فریمور) دستگاه ESP8266 رو مجدداً برنامه ریزی (پروگرام) کنید تا بروز رسانی بشه!

 

مختصری در مورد نحوه بروز رسانی

در اینترنت اشیاء و بسیاری از پروژه‌های دیگر، از NodeMcu یا ESP8266 استفاده شده. در مورد OTA قبلاً مطلبی در سیسوگ منتشر شده که پیشنهاد می‌کنم اون رو هم حتماً ببینید. توی این روش، در واقع شما با از استفاده از OTA، کابل سیمی و فیزیکی رو حذف می‌کنید و به جای اون آنلاین و از طریق وای فای بردتون رو برنامه ریزی می‌کنید. در این روش، اول باید از طریق کامپیوتر برد رو انتخاب کنید و فایل رو روی اون انتقال بدید. حالا اگه دستگاهتون داخل شبکه محلی نباشه، دسترسی بهش به این سادگی نیست. همین طور اگه شما تعداد زیادی از این بردها رو داشته باشید، پروگرام کردن دونه به دونه ی همشون خیلی زمان می گیره. توی روشی که امروز میخوام بهتون آموزش بدم، شما میتونید همزمان برنامه تعداد بسیار زیادی از برد هاتون رو از راه دور بروز رسانی کنید. حتی لازم نیست دونه دونه بهشون خبر بدید، چون خودشون از وجود برنامه جدید مطلع می‌شوند و خودشون رو بروز رسانی می‌کنند! (دیگه چی بهتر از این میخوای؟!)

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

 

مرحله اول – بدست آوردن فایل باینری پروژه

در این مثال ساده، ما می‌خواهیم برنامه چشمک زن را از طریق اینترنت بر روی برد ESP8266 بریزیم. برای این کار، ابتدا شما زیر را در آردوینو باز کنید:

توجه داشته باشید که چراغ روی برد ESP8266، به‌صورت Active Low می‌باشد. یعنی برای روشن شدن آن، باید صفر منطقی و برای خاموش شدن یک منطقی دریافت کند. (یعنی کاملاً برعکس و NOT ورودی)

توی محیط آردوینو به راحتی و از طریق منوی زیر میتونید پروژتون رو کامپایل کنید و فایل باینری اون رو به‌دست بیارید:

Sketch -> Export Compiled Binary

استخراج فایل باینری از آردوینو

 

توجه داشته باشید که حتماً پروژه خود را باید در محل مناسبی ذخیره کرده باشید. در این صورت در پوشه پروژه فایل bin. ذخیره خواهد شد.

خروجی باینری از آردوینو

 

مرحله دوم – آپلود فایل بر روی سرور

شما به یک سرور یا هاست آنلاین نیاز دارید که فایل‌های بروز رسانی را درون آن نگه داری کنید. حتی می‌توانید یک رزبری پای یا کامپیوتر خوردتان را به سرور تبدیل کنید. اما دقت داشته باشید که این سرور همیشه باید به اینترنت متصل باشد و همه جای دنیا بتوان به آن متصل شد. پس احتمالاً شما به یک آی پی ثابت یا یک دامنه هم نیاز خواهید داشت. توی این آموزش خیلی نمی‌خواهم وارد مباحث فنی سرور و… بشم، اما خلاصه اینکه اون فایل رو هر جایی که آپلود می‌کنید، بتونید با یک لینک مستقیم دانلودش کنید. نکته مهم اینه که حتماً باید آدرس فایل بروزرسانی ESP با http شروع بشه.

شاید برای شما مفید باشد: آموزش رزبری پای از 0 تا 100

 

آپلود فایل روی سرور

 

مرحله سوم – پروگرام کردن ESP

برای اینکه پروژه ESP8266 شما بتواند خود را آنلاین از طریق اینترنت بروز رسانی کند، مسلماً به دسترسی به اینترنت نیاز خواهد داشت. این دسترسی در ESP8266 از طریق اتصال به یک مودم وای فای میسر خواهد شد. بنابراین شما ابتدا باید نام وای فای و رمز عبور خود را در برنامه وارد کنید:

 

همچنین لینک مستقیم فایل باینری را خط 83 برنامه زیر تغییر بدید:

 

برنامه بالا را بر روی برد خود آپلود کنید و از طریق پنجره سریال، مراحل اتصال به وای فای و بروز رسانی را دنبال کنید!

مراحل بروز رسانی در پنجره سریال مانیتور

 

حال باید برد ESP8266 شما به‌صورت آنلاین بروز رسانی شده و به حالت چشمک زن در آمده باشد!

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

 

اطلاعات
22
0
لینک و اشتراک
profile

Digi Boy

متخصص الکترونیک

به دانش فزای و به یزدان گرای، که او باد جان تو را رهنمای (فردوسی)

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

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

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد. جستجو در آیسی
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ

پالت | بازار خرید و فروش قطعات الکترونیک

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

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد.
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند.
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

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

دیدگاه ها

profile
سهیل گفت :
۱۴۰۲-۰۹-۳۰ ۱۰:۵۳

سلام روز بخیر
خط 83 باید چیکار کنیم، کمی بیشتر توضیح میدید؟

profile
مرتضی گفت :
۱۴۰۰-۰۳-۲۵ ۰۷:۳۹

سلام سوالی داشتم از خدمتتون

من پروژه ای نوشتم با اردینو. که ماژول وای فای هم داره. که فقط بحث برقراری اینترنت رو فراهم میکنه.

میخوام به صورت اینترنتی کدهای اردینو رو اپدیت کنم ایا راهی پیشنهاد میدید ؟. منظورم کدهای ماژول وای فای نیست کدهای خود اردینو هست

profile
Digi Boy گفت :
۱۴۰۰-۰۳-۲۹ ۰۹:۳۳

درود بر شما.
خوب برای این کار شما نیاز به یک حداقل حافظه (داخلی یا خارجی) دارید که ابتدا کل آپدیت رو اونجا دانلود کنید، بعد اگر دانلود به‌صورت کامل انجام شده بود، عملیات آپدیت انجام به شه. اگر بردتون AVR هست، فکر می‌کنم به جز میکروکنترلر اصلی، یه میکروکنترلر دیگه هم لازمه تا عملیات فلش کردن رو انجام بده. حالا چه از طریق SPI، چه یوزارت و…
این پروژه گیت هاب هم فکر می‌کنم به درد شما بخوره:
https://github.com/jandrassy/ArduinoOTA

profile
آرش گفت :
۱۴۰۰-۰۲-۱۸ ۱۲:۳۹

با سلام و احترام
آیا از این روش برای آپدیت بردهای esp32 میشه استفاده کرد؟
روش شمارو برای esp8266 مینی تست کردم و جواب گرفتم.
ولی کدهای مشابه این کار و کتابخانه های مربوطه رو برای esp32 پیدا کردم اما متاسفانه جواب نمیگیرم.
موقعی که میخواد آپدیت کنه همونجا گیر میکنه و بعد از مدتی پیغام read timeout میده.
البته ارتباط با سامانه برقرار میشه. چون زمانیکه url مربوط به فریم ویر آپلود شده با urlی که توی کد تعیین شده یکسان نباشن پیغام no such file میده. پس یعنی داره درست کار میکنه. حتی وقتیکه فریم ویری که آپلود کردم مربوط به یه ماژول دیگه باشه پیغام ChipID میده. این به این معنیه که ارتباط برقراره. ولی زمانی که url به درستی تعریف شده و chipID هم درسته عملیات آپدیت انجام نمیشه.
ممنون میشم راهنمایی کنید.
لینک گیت هاب برای آپدیت esp32 از طریق اینترنت:
https://github.com/suculent/esp32-http-update

profile
Digi Boy گفت :
۱۴۰۰-۰۲-۱۹ ۱۰:۱۲

درود بر شما.
لینک گیت هاب که فرستادید، همین کتابخانه هست که برای ESP32 پورت شده و ظاهراً باید درست کار کنه. احتمالاً ESP32 شما موقع نوشتن روی حافظه به مشکل بر میخوره. توی نرم افزار آردوینو، از منوی Tools تنظیمات مربوط به Flash size و… رو تغییر بدید، حجم برنامتون و میزان فضای آزاد، حجم فایل، اجازه دسترسی و… رو بررسی کنید.

profile
آرش گفت :
۱۴۰۰-۰۲-۱۹ ۱۴:۱۱

ممنون از پاسخ شما
تست میکنم و نتیجه رو اعلام میکنم.
که ایشالا بدرد بقیه دوستانی که در این حوزه میخوان کار بکنن بخوره.
البته هدف اصصلی من esp32 نیست بلکه از این امکان میخوام برای esp32cam استفاده کنم.
ممنون از سایت خوبتون.

profile
Digi Boy گفت :
۱۴۰۰-۰۲-۲۵ ۱۶:۴۳

در.د بر شما.
خیلی هم ممنون.

profile
سید گفت :
۱۳۹۹-۱۱-۲۱ ۱۲:۱۹

سلام
تشکر بابت آموزش
موفق باشید

profile
AmirAli گفت :
۱۳۹۹-۰۵-۱۴ ۰۱:۱۲

درود

من برنامه رو پروگرم کردم و آدرس فایل رو جایگزین کردم اما این ارور ها میاد:
CALLBACK: HTTP update fatal error code -1
HTTP_UPDATE_FAILD Error (-1): HTTP error: connection failed
CALLBACK: HTTP update fatal error code -104
HTTP_UPDATE_FAILD Error (-104): Wrong HTTP Code

لینک فایل هم http هست.
برای فهمیدن ورژن فایل هایی که اپلود میکنیم باید چیکار کنیم؟یعنی چطور باید برنامه بفهمه فایلی که لینکشو دادیم اپدیت شدس یا همین ورژن فعلیه

profile
Digi Boy گفت :
۱۳۹۹-۰۵-۱۵ ۰۹:۲۷

درود بر شما.
احتمال زیاد لینکی که جای گذاری کردید، یا فرمت اشتباهی داشته، و یا سرور اجازه دانلود فایل رو به‌طور مستقیم نمی‌دهد.
لینک شما باید به این صورت باشد:
http:// example.com / some_folders / file . bin
تا حد امکان سعی کنید از فاصله و کلمات غیر انگلیسی در URL استفاده نکنید.
اینکه برنامه به نسخه بالاتر بروز رسانی شده است یا خیر، شما به عنوان برنامه نویس باید درون کدتان نشانه خاصی بگذارید. برای مثال برنامه از طریق پورت سریال یا از طریق API شماره نسخه جدید رو برای شما ارسال کند، و یا اگر دستگاه در دسترس شماست، توسط یک دکمه، یا عملکرد خاصی و یا در زمان‌های خاصی (مثل زمان روشن شدن و…) دستگاه این موضوع رو به نحوی به شما نشان دهد.

profile
AmirAli گفت :
۱۳۹۹-۰۵-۱۶ ۰۲:۵۸

ممنون از پاسختون

مشکل از لینک بود. من جایی واسه اپلود با http پیدا نکردم واسه همین به یه نفر دیگه گفتم واسم اپلود کنه و اول ادرس فایل http بود اما وقتی اونو توی دانلود منیجر میزدم لینک تغییر میکرد و تبدیل به https میشد. دیگه به خاطر همین نتونستم تست کنم…

سرچ زدی دیدم از طریق سایت گیت هاب هم میشه اپدیت کرد
و اونو امتحان کردم که اولش جواب نمیداد و مشکل اون هم فینگرپرینت سایت گیت هاب بود. و مشکلش رفع شد

واسه تعیین ورژن هم یه روش تویه سایت دیدم به این صورت بود:
یه فایل متنی ایجاد میشه و ورژن برنامه جدید داخلش نوشته میشه
و تو برنامه میکرو ابتدا اون فایل دانلود میشه و ورژن فعلی با اون چیزی ک تو فایل دانلود شده مقایسه میشه و اگ اپدیت جدید بود شروع به دانلود فایل برنامه میکنه

در کل تجربه خوبی بود. اما اگه از طریق https هم بشه اپدیت کرد خیلی خوب میشه. بعضیا امتحان کردن و جواب هم گرفتن اما من نتونستم انجامش بدم.

profile
Digi Boy گفت :
۱۳۹۹-۰۵-۱۶ ۰۸:۵۸

درود بر شما.
در رابطه با ارتباط ESP8266 با https و SSL و تنظیم Fingerprint، قبلاً نکاتی را در مقاله ”
آموزش اتصال آردوینو ESP8266 به ربات پیام رسان بله” گفته‌ایم. احتمالاً این مقاله نیز برای شما مفید خواهد بود:
https://sisoog.com/2020/04/26/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%a7%d8%aa%d8%b5%d8%a7%d9%84-%d8%b1%d8%a8%d8%a7%d8%aa-%d8%a8%d9%84%d9%87-%d8%a8%d9%87-%d8%a2%d8%b1%d8%af%d9%88%db%8c%d9%86%d9%88-esp8266-%d8%a7%db%8c%d9%86/

profile
احسان گفت :
۱۳۹۸-۱۲-۰۷ ۰۰:۳۲

سلام جناب خسته نباشید
میخواستم بدونم با توجه به قضاییی ک برای اردویینو و مخالفت ها و موافقتهایی که از این شرکت میشه برای کار در حوزه اینترنت اشیا (چون espها رو ساپورت میکنن) کار پسندیده ایه و اعتباری پیش اشخاص و اساتید داره (بطور مثال شما پروژه ای با c و در نرمافزار eclipse یا با ide اردوینو مینویسی)؟؟؟؟

profile
Digi Boy گفت :
۱۳۹۸-۱۲-۰۷ ۰۹:۴۲

درود بر شما.
آردوینو تنها یک چهارچوب برنامه نویسی متن باز است که توسط برنامه نویسانی از سراسر دنیا بروز رسانی می‌شود. این ابزار بیشتر برای کسانی ساخته شده که می‌خواهند بدون دردسر و وارد شدن به جزئیات سخت افزاری برنامه بنویسند. استفاده از آن مشکلی را ایجاد نمی‌کند.
هنگامی که شما محصولی را تولید و عرضه کردید، کسی از شما نمی‌پرسد که آن را چگونه برنامه نویسی کردید. اولین بازخورد از محصول این است که چگونه کار می‌کند، به همین سادگی!
اینکه اساتید آن را تأیید می‌کنند یا خیر، نظر شخصی آنان است.
اگر می‌خواهید به میکروکنترلرها مسلط شوید، بهتر است ابتدا با زبان C و رجیسترها شروع کنید، بعد از آن یادگیری آردوینو برای شما بسیار آسان است.
بنده بسته به نوع پروژه از هردو ابزار استفاده می‌کنم.

profile
saeed گفت :
۱۳۹۸-۱۱-۱۹ ۱۳:۲۳

سلام خسته نباشین…راه اندازی esp با eclipse رو اگه میشه توضیح بدین برای مخاطب های سایتتون ویژگی های خاصی میشه داشت مثلا دیباگ کردن با jlink که تو آردینو اینا نیستش!!!

profile
زئوس Zeus گفت :
۱۳۹۸-۱۱-۲۰ ۰۹:۳۰

خوب ماژول esp8266 رابط جی تگ نداره و برای دیباگ میشه یه سری اقدامات از طریق سریال انجام داد که به شخصه نتونستم ازش استفاده کنم ولی برای esp32 بله میشه دیباگ هم کرد
ولی راه اندازیش با eclipse یه مقداری ماجرا داره که اگر فرصت بشه در موردش مطلب خواهیم نوشت

profile
سعید گفت :
۱۳۹۸-۱۱-۱۱ ۱۱:۴۷

جالب بود خسته نباشین، یک سوالی که همیشه برام پیش میادش آیا این ماژول esp تو صنعت به درد بخوره ؟ با آردینو…سایت تولید کننده شم زیاد جامع و کامل نیست و همچنین کدهای آماده….. واقعا ترسناک به نظر میرسه!!! نظر شما چیه؟

profile
زئوس Zeus گفت :
۱۳۹۸-۱۱-۱۳ ۱۴:۲۵

به نظر من آردوینو برای استفاده تو صنعت مشکلی نداره – به هر حال زبان برنامه نویسی cpp است و اگه کسی وارد باشه که کد درست بنویسه خود آردینو مشکلی نداره
اما در مورد ماژول esp بله حق با شماست شرکتش داکیمونت های جامعی رو برای کار با این ماژول ارائه نکرده حتی دیتاشیتش هم کامل نیست !
اما مساله مهم دیگه اینه که استفاده از wifi توی محیط های صنعتی زیاد مرسوم نیست و حتی تو یه سری جاها کلا ریسکی هست
ولی برای خانه ها فکر میکنم خوب باشه 🙂

profile
محمدرضاعابدینی گفت :
۱۳۹۸-۱۱-۰۹ ۱۱:۳۵

سلام بسیار جذاب وعالی بود ..
البته من خودم بوت لودر شبکه برای میکروstm32 از طریق ماژولی مثلM66رو بیشتر میپسندم 🙂 و درحال کار بر روی اون هستم و بااصطلاحاتی مثلIAP هم برخورد کردم (به معنای پروگرام درون برنامه ای ) ..
امیدوارم مطلب سیستم عامل تکمیل بشه تا با ترکیبشون یک پروژه خیلی خفنی ساخت
(واقعا جای مطلبی در رابطه با زیگبی در سا یت خالیه )

profile
Sisoog OS گفت :
۱۳۹۸-۱۱-۰۹ ۱۳:۰۳

راستی میدونستی وقتی از OPENCPU این ماژولها استفاده میکنید یه قابلیت OTA خفن نوشته شده توسط خودشون را هم داره 🙂

profile
محمدرضاعابدینی گفت :
۱۳۹۸-۱۱-۱۰ ۱۴:۰۱

خیلی عالیه ..همچنان باید بوت لودر خودمو بنویسم ( واقعا عاشقشم) ..بی زحمت به نویسنده مطلب opencpuبگید بیاد ادامه مطلب رو بذاره که بدجور تشنه شدم

profile
Sisoog OS گفت :
۱۳۹۸-۱۱-۱۰ ۱۴:۱۹

ایشون نوشتند انشاله تو اولین فرصت منتشر میشه

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله