فهرست مطالب:

برنامه نویسی Arduino Over The Air (OTA) - آمبا آردوینو: 4 مرحله
برنامه نویسی Arduino Over The Air (OTA) - آمبا آردوینو: 4 مرحله

تصویری: برنامه نویسی Arduino Over The Air (OTA) - آمبا آردوینو: 4 مرحله

تصویری: برنامه نویسی Arduino Over The Air (OTA) - آمبا آردوینو: 4 مرحله
تصویری: نحوه کنترل 4 بار بار AC با استفاده از رله از راه دور بی سیم KR1204 2024, نوامبر
Anonim
برنامه نویسی Arduino Over The Air (OTA) - Ameba Arduino
برنامه نویسی Arduino Over The Air (OTA) - Ameba Arduino

تعداد زیادی میکروکنترلر Wi-Fi در بازار وجود دارد ، بسیاری از سازندگان از برنامه نویسی میکروکنترلر Wi-Fi خود با استفاده از Arduino IDE لذت می برند. با این حال ، یکی از جالبترین ویژگیهایی که یک میکروکنترلر Wi-Fi ارائه می دهد نادیده گرفته می شود ، این برنامه نویسی و بارگذاری کد شما از راه دور و بی سیم با استفاده از عملکرد OTA (Over-The-Air) است.

در این دستورالعمل ، نحوه تنظیم OTA روی میکروکنترلر Wi-Fi خود را با استفاده از Arduino IDE در همه جا در میکروکنترلر Wi-Fi Ameba Arduino نشان می دهم!

تدارکات

Ameba Arduino x 1

مرحله 1: OTA

OTA
OTA

OTA (Over-The-Air) به مکانیسم ارتقاء آنلاین از طریق اینترنت اشاره دارد.

Arduino IDE ویژگی OTA را ارائه می دهد ، که روند کار را در شکل بالا دنبال می کند.

(i) Arduino IDE از طریق mDNS دستگاه هایی را با سرویس Arduino IDEOTA در شبکه محلی جستجو می کند.

(ii) از آنجا که سرویس mDNS در Ameba اجرا می شود ، Ameba به جستجوی mDNS پاسخ می دهد و پورت TCP خاص را برای اتصال باز می کند.

(iii) کاربر برنامه ای را در Arduino IDE توسعه می دهد. پس از اتمام ، پورت شبکه را انتخاب کنید.

(iv) روی بارگذاری کلیک کنید. سپس Arduino IDE تصویر OTA را از طریق TCP به Ameba ارسال می کند ، Ameba تصویر را در آدرس خاصی ذخیره می کند و گزینه بوت را برای بوت شدن بعدی از این تصویر تنظیم می کند.

گردش کار شامل سه بخش است: فرایند تصویر mDNS ، TCP و OTA. جزئیات مربوط به mDNS در آموزش mDNS توضیح داده شده است. برنامه نویسی سوکت TCP در انتقال تصویر استفاده می شود و قبلاً در API OTA ارائه شده است.

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

مرحله 2: چیدمان حافظه فلش آمبا

چیدمان حافظه فلش آمبا
چیدمان حافظه فلش آمبا

حجم حافظه فلش Ameba RTL8195A 2 مگابایت است ، از 0x0000000000 تا 0x00200000. با این حال ، حجم حافظه فلش Ameba RTL8710 1 مگابایت است. برای تناسب استفاده از بردهای مختلف ، فرض می کنیم طرح حافظه فلش 1 مگابایت باشد.

همانطور که در شکل بالا نشان داده شده است ، برنامه Ameba سه قسمت از حافظه فلش را اشغال می کند:

- تصویر بوت

یعنی بوت لودر. هنگامی که Ameba بوت می شود ، تصویر بوت را در حافظه قرار می دهد و مقداردهی اولیه را انجام می دهد. علاوه بر این ، تعیین می کند که بعد از بوت لودر کجا باید اقدام کرد. Bootloader به آدرس OTA و پین بازیابی در منطقه داده سیستم نگاه می کند و تعیین می کند که کدام تصویر پس از آن اجرا شود. در انتهای بوت لودر ، تصویر را در حافظه قرار می دهد و به اجرای آن ادامه می دهد.

- تصویر پیش فرض 2

کد توسعه دهنده در این قسمت قرار می گیرد ، آدرس از 0x0000B000 شروع می شود. 16 بایت اول سرصفحه تصویر است ، 0x0000B008 ~ 0x0000B00F شامل Signature است که برای تأیید صحت تصویر مورد استفاده قرار می گیرد. فیلد امضا دارای دو مقدار معتبر برای تشخیص تصویر جدید از تصویر قدیمی است.

- تصویر OTA

داده های این قسمت نیز کد توسعه دهنده است. به طور پیش فرض ، این قسمت از حافظه از 0x00080000 شروع می شود (قابل تغییر است). تفاوت اصلی بین تصویر OTA و Default Image 2 آدرس فلش مموری و مقدار Signature است.

به غیر از کد ، چند بلوک داده وجود دارد:

- داده های سیستم

بلوک داده سیستم از 0x00009000 شروع می شود. دو داده مربوط به OTA وجود دارد:

1. آدرس OTA : 4 بایت داده از 0x00009000 شروع می شود. آدرس OTA Image را می گوید. اگر مقدار آدرس OTA نامعتبر باشد (یعنی 0xFFFFFFFF) ، تصویر OTA در حافظه فلش نمی تواند به درستی بارگیری شود.

2. بازیابی پین by 4 بایت داده از 0x00009008 شروع می شود ، پین بازیابی برای تعیین اینکه کدام تصویر (تصویر پیش فرض 2 یا تصویر OTA) هنگام اعتبار هر دو تصویر اجرا شود ، استفاده می شود. اگر مقدار پین بازیابی معتبر نباشد (یعنی 0xFFFFFFFF) ، تصویر جدید به طور پیش فرض اجرا می شود.

وقتی برنامه را از طریق DAP در Ameba بارگذاری کنیم ، داده های سیستم حذف می شود. یعنی آدرس OTA حذف می شود و Ameba تعیین می کند که هیچ تصویر OTA وجود ندارد.

- داده های کالیبراسیون data داده های کالیبراسیون محیطی در این بلوک قرار می گیرد. به طور معمول این داده ها نباید حذف شوند.

مرحله 3: Boot Flow

Boot Flow
Boot Flow

از تصویر بالا ،

ما در مورد سناریوهای زیر بحث می کنیم: (i) OTA استفاده نمی شود ، برای بارگذاری برنامه از DAP استفاده کنید:

در این وضعیت ، بوت لودر امضای تصویر پیش فرض 2 و آدرس OTA را بررسی می کند. از آنجا که آدرس OTA حذف شده است ، تصویر پیش فرض 2 برای اجرا انتخاب می شود.

(ii) تصویر OTA به Ameba منتقل می شود ، آدرس OTA به درستی تنظیم شده است ، پین بازیابی تنظیم نشده است

Ameba تصویر به روز شده را از طریق OTA دریافت کرده است ، امضای تصویر پیش فرض 2 بر روی امضای قدیمی تنظیم شده است.

Bootloader امضای تصویر پیش فرض 2 و آدرس OTA را بررسی می کند. آدرس OTA حاوی تصویر معتبر OTA است. از آنجا که پین بازیابی تنظیم نشده است ، تصویر جدید (یعنی تصویر OTA) را برای اجرا انتخاب می کند.

(iii) تصویر OTA به Ameba منتقل می شود ، آدرس OTA به درستی تنظیم شده است ، پین بازیابی تنظیم شده است

Ameba تصویر به روز شده را از طریق OTA دریافت کرده است ، امضای تصویر پیش فرض 2 بر روی امضای قدیمی تنظیم شده است.

Bootloader امضای تصویر پیش فرض 2 و آدرس OTA را بررسی می کند. آدرس OTA حاوی یک تصویر OTA معتبر است. سپس مقدار پین بازیابی را بررسی کنید. اگر پین بازیابی به LOW متصل باشد ، تصویر جدید (یعنی تصویر OTA) اجرا می شود. اگر پین بازیابی به HIGH متصل باشد ، تصویر قدیمی (یعنی تصویر پیش فرض 2) اجرا می شود.

مرحله 4: مثال

مثال
مثال
مثال
مثال
مثال
مثال
مثال
مثال

برای استفاده از ویژگی OTA ، لطفاً سیستم عامل DAP را به نسخه> 0.7 ارتقا دهید (v0.7 شامل نمی شود). سیستم عامل پیش فرض DAP نسخه 0.7 است. لطفاً دستورالعمل ارتقاء سیستم عامل DAP را دنبال کنید:

مثال را باز کنید: "File" -> "Examples" -> "AmebaOTA" -> "ota_basic"

اطلاعات ssid و رمز عبور را در کد نمونه برای اتصال به شبکه وارد کنید.

پارامترهای مربوط به OTA وجود دارد:

§ MY_VERSION_NUMBER : در نسخه اول ، ما باید آدرس OTA و پین بازیابی را تنظیم کنیم. از آنجا که این بار که از طریق USB بارگذاری می کنیم اولین نسخه است ، نیازی به تغییر این مقدار نداریم.

§ OTA_PORT : Arduino IDE Ameba را از طریق mDNS پیدا می کند. Ameba به Arduino IDE می گوید که پورت TCP 5000 را باز می کند تا منتظر تصویر OTA باشید.

§ RECOVERY_PIN pin پین مورد استفاده برای بازیابی را پیکربندی کنید. ما در اینجا از پین 18 استفاده می کنیم.

سپس از برنامه بارگذاری USB به Ameba استفاده می کنیم. روی Tools -> Ports کلیک کنید ، پورت سریال را برای استفاده بررسی کنید

لطفاً توجه داشته باشید که Arduino IDE از یک پورت برای بارگذاری برنامه و خروجی وبلاگ استفاده می کند. برای جلوگیری از این وضعیت که هنگام استفاده از OTA نمی توان log را خروجی داد ، از ترمینال پورت سریال دیگر (به عنوان مثال ، اصطلاح Tera یا بتونه) به جای مانیتور سریال برای تماشای پیام log استفاده می کنیم.

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

در پیام ورود به سیستم:

بین "===== وارد کردن تصویر 1 ====" و "وارد کردن تصویر 2 ====" ، می توانید "تصویر فلش 2: Addr 0xb000" را بیابید. این بدان معناست که Ameba تصمیم می گیرد از تصویر پیش فرض 2 در 0xb000 بوت شود.

2. پس از "Enter Image 2 ====" ، می توانید "This is version 1" را پیدا کنید. این پیامی است که در طرح اضافه می کنیم.

3. پس از اتصال Ameba به AP و دریافت آدرس IP "192.168.1.238" ، mDNS را فعال کرده و منتظر سرویس گیرنده می ماند.

در مرحله بعد ، "MY_VERSION_NUMBER" را به 2 تغییر می دهیم.

روی "Tools" -> "Port" کلیک کنید ، می توانید لیستی از "Ports Network" را مشاهده کنید. "MyAmeba at 192.168.1.238 (Ameba RTL8195A)" را پیدا کنید ، MyAmeba نام دستگاه mDNS است که ما در کد نمونه تنظیم کرده ایم ، و "192.168.1.238" IP Ameba است.

اگر نمی توانید پورت شبکه Ameba را پیدا کنید ، لطفاً تأیید کنید:

- آیا کامپیوتر شما و Ameba در یک شبکه محلی هستند؟

- سعی کنید Arduino IDE را راه اندازی مجدد کنید.

- پیام ورود را در مانیتور سریال بررسی کنید تا ببینید آیا Ameba با موفقیت به AP متصل شده است.

سپس روی بارگذاری کلیک کنید. این بار برنامه از طریق TCP بارگذاری می شود. در ترمینال ورود ، می توانید اطلاعات اتصال مشتری را مشاهده کنید.

هنگامی که تصویر OTA با موفقیت بارگیری می شود ، Ameba راه اندازی مجدد می شود و پس از آن log در ترمینال log نشان داده می شود.

- بین "===== وارد کردن تصویر 1 ====" و "وارد کردن تصویر 2 ====" ، می توانید یک پیام ورود "Flash Image 2: Addr 0x80000" را مشاهده کنید. این بدان معناست که Ameba تصمیم می گیرد که از OTA Image در 0x80000 بوت شود.

- پس از "وارد کردن تصویر 2 ====" ، گزارش "این نسخه 2 است" پیامی است که ما در طرح اضافه می کنیم.

برای بازیابی تصویر قبلی پس از بارگیری تصویر OTA در Ameba ، لطفاً پین بازیابی را که در طرح (به عنوان مثال ، پین 18) تنظیم کرده ایم به HIGH (3.3V) وصل کنید و تنظیم مجدد را فشار دهید.

سپس تصویر پیش فرض 2 هنگام بوت شدن انتخاب می شود. توجه داشته باشید که تصویر OTA بارگیری شده حذف نمی شود ، هنگامی که پین بازیابی از HIGH جدا شد ، تصویر OTA اجرا می شود.

ما در شکل زیر جریان توسعه را با استفاده از OTA خلاصه می کنیم.

توصیه شده: