תוכן עניינים:

תכנות Arduino Over the Air (OTA) - Ameba Arduino: 4 שלבים
תכנות Arduino Over the Air (OTA) - Ameba Arduino: 4 שלבים

וִידֵאוֹ: תכנות Arduino Over the Air (OTA) - Ameba Arduino: 4 שלבים

וִידֵאוֹ: תכנות Arduino Over the Air (OTA) - Ameba Arduino: 4 שלבים
וִידֵאוֹ: How to Perform the OTA Upload to an ESP32 Board Using Arduino Cloud 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!

אספקה

אמבה ארדואינו 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, אמבה שומר את התמונה לכתובת ספציפית ומגדיר אפשרות אתחול לאתחול מתמונה זו בפעם הבאה.

זרימת העבודה מורכבת משלושה חלקים: תהליך תמונת mDNS, TCP ו- OTA. פרטים הקשורים ל- mDNS מתוארים במדריך mDNS. תכנות שקע TCP משמש בהעברת תמונה וכבר מסופק ב- OTA API.

בחלק הבא נדון כיצד לעבד את תמונת OTA, ונציג קצת ידע בסיסי על פריסת זיכרון פלאש של אמבה וזרימת אתחול.

שלב 2: פריסת זיכרון פלאש של Ameba

פריסת זיכרון פלאש של אמבה
פריסת זיכרון פלאש של אמבה

גודל זיכרון הבזק של Ameba RTL8195A הוא 2MB, נע בין 0x00000000 ל 0x00200000. עם זאת, גודל זיכרון ההבזק של Ameba RTL8710 הוא 1MB. כדי להתאים לשימוש בלוחות שונים, אנו מניחים שפריסת זיכרון הבזק היא 1MB.

כפי שמוצג באיור לעיל, תוכנית אמבה תופסת שלושה חלקים של זיכרון הבזק:

- תמונת אתחול:

כלומר, מטעין האתחול. כאשר אמבה מתחילה, היא ממקמת את תמונת האתחול לזיכרון ומבצעת אתחול. יתר על כן, הוא קובע לאן להמשיך לאחר מטען האתחול. מטען האתחול בוחן את כתובת ה- OTA ואת סיכת השחזור באזור נתוני המערכת וקובע איזו תמונה תבוצע לאחר מכן. בסוף מטען האתחול, הוא ממקם את התמונה לזיכרון וממשיך לבצע אותה.

- תמונה ברירת מחדל 2:

קוד המפתח ממוקם בחלק זה, הכתובת מתחילה מ- 0x0000B000. 16 הבייטים הראשונים הם כותרת התמונה, 0x0000B008 ~ 0x0000B00F כוללת את החתימה, המשמשת לאימות אם התמונה תקפה. לשדה החתימה שני ערכים תקפים להבחין בין התמונה החדשה לתמונה הישנה.

- תמונת OTA:

הנתונים בחלק זה הם גם קוד מפתח. כברירת מחדל, חלק זה של הזיכרון מתחיל מ- 0x00080000 (ניתן לשנות). ההבדלים העיקריים בין תמונת OTA לתמונת ברירת מחדל 2 הם כתובת זיכרון ההבזק וערך החתימה.

מלבד הקוד, ישנם כמה בלוקים של נתונים:

- נתוני מערכת:

חסימת נתוני המערכת מתחילה מ- 0x00009000. ישנם שני נתונים הקשורים ל- OTA:

1. כתובת OTA: נתוני 4 בתים החל מ- 0x00009000. הוא מספר את כתובת התמונה OTA. אם ערך כתובת OTA אינו חוקי (כלומר 0xFFFFFFFF), לא ניתן לטעון את תמונת OTA בזיכרון הבזק.

2. סיכת השחזור: נתוני 4 בתים החל מ- 0x00009008, סיכת השחזור משמשת לקביעת איזו תמונה (תמונה ברירת מחדל 2 או תמונת OTA) לביצוע כאשר שתי התמונה תקפות. אם ערך סיכת השחזור אינו חוקי (כלומר 0xFFFFFFFF), התמונה החדשה תתבצע כברירת מחדל.

נתוני המערכת יוסרו כאשר נעלה את התוכנית לאמבה באמצעות DAP. כלומר, כתובת OTA תוסר ואמבה תקבע שאין תמונת OTA.

- נתוני כיול: נתוני הכיול ההיקפיים ממוקמים בבלוק זה. בדרך כלל אין למחוק נתונים אלה.

שלב 3: זרימת אתחול

זרימת אתחול
זרימת אתחול

מהתמונה למעלה, אנו דנים בתרחישים הבאים: (i) אין להשתמש ב- OTA, השתמש ב- DAP להעלאת התוכנית:

במצב זה, מטען האתחול בודק את החתימה של ברירת המחדל של תמונה 2 וכתובת OTA. מכיוון שכתובת OTA מוסרת, תבחר ברירת המחדל של תמונה 2 לביצוע.

(ii) תמונת OTA מועברת לאמבה, כתובת OTA מוגדרת כראוי, סיכת שחזור אינה מוגדרת :

אמבה קיבלה תמונה מעודכנת באמצעות OTA, החתימה של תמונת ברירת המחדל 2 תוגדר לחתימה ישנה.

מטעין האתחול בודק את חתימת ברירת המחדל של תמונה 2 וכתובת OTA. הוא ימצא שכתובת OTA מכילה תמונת OTA חוקית. מכיוון שסיכת השחזור אינה מוגדרת, היא בוחרת את התמונה החדשה (כלומר, תמונת OTA) לביצוע.

(iii) תמונת OTA מועברת לאמבה, כתובת OTA מוגדרת כראוי, סיכת שחזור מוגדרת :

אמבה קיבלה תמונה מעודכנת באמצעות OTA, החתימה של תמונת ברירת המחדל 2 תוגדר לחתימה ישנה.

מטען האתחול בודק את החתימה של ברירת המחדל של תמונה 2 וכתובת OTA. הוא ימצא שכתובת OTA מכילה תמונת OTA חוקית. לאחר מכן בדוק את ערך סיכת השחזור. אם מחובר סיכת שחזור ל- LOW, התמונה החדשה (כלומר, תמונת OTA) תבוצע. אם מחובר סיכת שחזור ל- HIGH, התמונה הישנה (כלומר, תמונת ברירת המחדל 2) תבוצע.

שלב 4: דוגמה

דוגמא
דוגמא
דוגמא
דוגמא
דוגמא
דוגמא
דוגמא
דוגמא

כדי להשתמש בתכונת OTA, שדרג את קושחת ה- DAP לגרסה> 0.7 (v0.7 אינו כלול). קושחת ברירת המחדל של DAP הינה גירסה 0.7. אנא עקוב אחר ההוראות לשדרוג קושחת DAP:

פתח את הדוגמה: "קובץ" -> "דוגמאות" -> "AmebaOTA" -> "ota_basic"

מלא את פרטי ה- ssid והסיסמה בקוד לדוגמא לחיבור רשת.

ישנם כמה פרמטרים הקשורים ל- OTA:

§ MY_VERSION_NUMBER: בגרסה הראשונה, עלינו להגדיר כתובת OTA וסיכת שחזור. מכיוון שהפעם אנו מעלים באמצעות USB היא הגרסה הראשונה, איננו צריכים לשנות ערך זה.

§ OTA_PORT: Arduino IDE ימצא את אמבה באמצעות mDNS. אמבה תגיד ל- Arduino IDE שהיא פותחת יציאת TCP 5000 כדי לחכות לתמונת OTA.

§ RECOVERY_PIN: הגדר את הסיכה המשמשת לשחזור. אנו משתמשים בסיכה 18 כאן.

לאחר מכן אנו משתמשים בתוכנית העלאת USB לאמבה. לחץ על כלים -> יציאות, בדוק את היציאה הסדרתית לשימוש:

שים לב כי Arduino IDE משתמש ביציאה אחת לתוכנית העלאה ולפלט. כדי להימנע מהמצב שלא ניתן להוציא את היומן כאשר אנו משתמשים ב- OTA, אנו משתמשים במסוף יציאות סדרתי אחר (למשל מונח טרה או מרק) במקום צג סדרתי לצפייה בהודעת יומן.

לאחר מכן לחץ על העלה ולחץ על כפתור האיפוס.

בהודעת היומן:

1. בין "===== הזן תמונה 1 ====" לבין "הזן תמונה 2 ====", תוכל למצוא "Flash Image 2: Addr 0xb000". המשמעות היא שאמבה קובעת אתחול מתמונת ברירת המחדל 2 ב- 0xb000.

2. לאחר "הזן תמונה 2 ====", תוכל למצוא "זו גרסה 1". זוהי הודעת היומן שאנו מוסיפים בסקיצה.

3. לאחר שמחוברת אמבה ל- AP ומקבלת כתובת IP "192.168.1.238", היא מפעילה mDNS ומחכה ללקוח.

לאחר מכן, אנו משנים את "MY_VERSION_NUMBER" ל -2.

לחץ על "כלים" -> "יציאה", תוכל לראות רשימה של "יציאות רשת". מצא את "MyAmeba ב 192.168.1.238 (Ameba RTL8195A)", MyAmeba הוא שם התקן mDNS שהגדרנו בקוד לדוגמה, ו- "192.168.1.238" הוא ה- IP של Ameba.

אם אינך יכול למצוא את נמל הרשת של אמבה, אשר:

- האם המחשב שלך ואמבה נמצאים באותה רשת מקומית?

- נסה להפעיל מחדש את Arduino IDE.

- בדוק את הודעת היומן ב- Serial Monitor כדי לראות אם אמבה מחוברת ל- AP בהצלחה.

לאחר מכן לחץ על העלה. הפעם התוכנית תעלה באמצעות TCP. במסוף היומן תוכל לראות מידע על חיבור לקוח.

כאשר הורדת תמונת OTA בהצלחה, אמבה תאתחל מחדש והיומן הבא יוצג במסוף היומן.

- בין "===== הזן תמונה 1 ====" לבין "הזן תמונה 2 ====", תוכל לראות הודעת יומן "Flash Image 2: Addr 0x80000". המשמעות היא שאמבה מחליטה לאתחל מתמונת OTA ב 0x80000.

- לאחר "הזן תמונה 2 ====", יומן הרישום "זוהי גרסה 2" הוא ההודעה שאנו מוסיפים בסקיצה.

כדי לשחזר לתמונה הקודמת לאחר הורדת תמונת OTA לאמבה, חבר את סיכת השחזור שהגדרנו בסקיצה (כלומר, סיכה 18) ל- HIGH (3.3V) ולחץ על איפוס.

לאחר מכן תמונת ברירת המחדל 2 תיבחר בעת אתחול. שים לב שתמונת OTA שהורדת אינה נמחקת, לאחר שסיכת השחזור תנתק מ- HIGH, תמונת ה- OTA תבוצע.

אנו מסכמים את זרימת הפיתוח באמצעות OTA באיור הבא.

מוּמלָץ: