Jak provádět aktualizace vzduchem (OTA) pomocí mikrokontroléru ESP32 a jeho ESP-IDF
Contributed By DigiKey's North American Editors
2021-08-10
Konstruktéři produktů internetu věcí (IoT) musí průběžně vyhodnocovat výběr platformy a komponent s ohledem na snižování nákladů a spotřeby energie při současném zlepšování výkonu a zrychlování návrhu aplikací konektivity. V současné době je na výběr poměrně málo řešení, ale konstruktéři se potýkají s výzvou provádět bezdrátové aktualizace vzduchem (OTA), aby byl firmware zařízení po nasazení neustále aktuální.
Klíčové je se rozhlédnout po dostupných platformách, abyste zjistili, jaké další nástroje a podpora se k podpoře aktualizací OTA nabízejí. Taková podpora může proces značně zjednodušit, i když může vyžadovat určitou pozornost předem.
Tento článek pojednává o základech technologie OTA a o tom, proč jde o kritickou funkci, kterou musí podporovat téměř každý systém IoT, a to navzdory výzvám, kterým vývojáři čelí. Poté využijeme mikrokontrolér ESP32 s funkcemi Bluetooth a Wi-Fi společnosti Espressif Systems s přidruženými moduly, sadami a vývojovým rámcem IoT ESP („ESP IoT Development Framework“, ESP-IDF), abychom si ukázali, jak vytvořit oddíl OTA a použít skript otatool.py k provedení aktualizace firmwaru během stále spuštěné aplikace.
Úvod do aktualizací OTA
Hlavním cílem většiny vývojových týmů je implementace funkcí specifických pro jejích produkt, tj. obchodní logiky, která odlišuje jejich produkt. Každý produkt IoT však má základní sadu funkcí, kterou je třeba nasadit, nakonfigurovat a udržovat po celou dobu životnosti zařízení. Dobrým příkladem jsou třeba aktualizace zabezpečení. Vzhledem k nutnosti provádět tyto aktualizace je důležitou, ale snadno přehlédnutelnou, funkcí při posuzování vhodné vývojové platformy právě schopnost aktualizací OTA (FOTA, někdy označované pouze jako OTA) zavaděče nebo firmwaru.
Funkce OTA poskytuje technikům možnost vzdáleně udržovat a upgradovat své produkty v reakci na technické i obchodní požadavky, aniž by bylo nutné k zařízení posílat personál údržby nebo nechat koncového klienta aktivně dělat něco se zařízením kvůli aktualizaci. Místo toho lze všechny tyto náklady odstranit tak, že zařízení upgradují firmware bezobslužně na pozadí nebo během provozních „prostojů“, například uprostřed noci.
Architektury OTA mohou mít mnoho různých forem a konfigurací, od řešení vytvořených kompletně na míru až po standardní implementace dodávané poskytovatelem cloudových služeb. Typický příklad architektury lze vidět na obrázku 1.
Obrázek 1: Přehled architektury OTA, který ukazuje příklad procesu aktualizace firmwaru aplikace v terénu na nasazená zařízení. (Zdroj obrázku: společnost Beningo Embedded Group)
OEM v tomto příkladu používá k odesílání nových verzí firmwaru službu Amazon Web Services (AWS) IoT Core a poté používá vestavěné funkce úlohy k nasazení aktualizací na zařízení v terénu. Jde o pouhý jeden z mnoha příkladů a téměř každý poskytovatel cloudu má nějaké podobné řešení.
Dnes je k dispozici mnoho možností mikrokontrolérů, které podporují OTA. Jedním z oblíbených mikrokontrolérů pro nízkonákladové systémy i mezi výrobci je modul ESP32. Za oblibou modulu ESP32 stojí několik důvodů včetně:
- Má integrovaný mikrokontrolér s dostupnými moduly s certifikáty Wi-Fi/Bluetooth
- Nízké náklady
- Open-source vývojové prostředí a softwarové rámce jako ESP-IDF a ESP Audio Development Framework (ESP-ADF)
- Mnoho stávajících příkladů aplikací volně dostupných na webu
Výběr modulu ESP32 k testování OTA
Existuje několik různých modulů ESP32 a vývojových desek, které si uživatelé mohou zakoupit a projít si příklady OTA. Použít lze například desku ESP32 Huzzah Feather 3405 společnosti Adafruit (obrázek 2). Jedná se o nízkonákladovou vývojovou desku, která obsahuje všechny obvody pro programování ESP32 a napájení přes konektor USB.
Obrázek 2: Deska Huzzah Feather 3405 obsahuje modul s certifikací Wi-Fi/Bluetooth ESP32 WROOM-32D se 4 MB flash paměti. Deska obsahuje veškerý hardware nezbytný k programování a komunikaci s modulem prostřednictvím rozhraní USB. (Zdroj obrázku: společnost Adafruit)
Jádrem desky 3405 je modul ESP32-WROOM-32D, který se dodává se 4 MB flash paměti, Wi-Fi, Bluetooth a kompletní sadou periferií pro téměř jakoukoli aplikaci.
Další vývojovou deskou, kterou lze použít, je zvuková deska ESP32-LYRATD-SYNA společnosti Espressif Systems (obrázek 3). Tato vývojová deska obsahuje modul ESP32-WROVER-B.
Obrázek 3: Deska ESP32-LYRATD-SYNA je založena na modulu s certifikací Wi-Fi/Bluetooth ESP32 WROVER-B se 4 MB flash paměti. Kromě toho, že umožňuje konstruktérům programovat a komunikovat s modulem přes rozhraní USB, má také obvody potřebné k vývoji audio aplikací. (Zdroj obrázku: společnost Espressif Systems)
Modul ESP32-LYRATD-SYNA má také 4 MB flash paměti a všechny obvody pro audio aplikace. Deska obsahuje zvukový kodek, audio zesilovač a konektory pro sluchátka a reproduktory, které audio aplikaci plně otestují.
Poslední vývojovou deskou, kterou lze použít pro testování OTA, je vývojová deska ESP32-S2-SAOLA-1RI společnosti Espressif (obrázek 4). Co se týče vývojových desek, jde o nejméně nákladnou položku. Deska obsahuje modul ESP32 Wrover spolu s obvody pro programování čipu. Neobsahuje žádné nadbytečnosti – obsahuje jen piny, které umožňují snadné vložení do nepájivého pole kvůli testování.
Obrázek 4: Deska ESP32-S2-SAOLA-1RI založená na modulu Wrover je holá vývojová deska s nízkou cenou, ale dostatkem obvodů pro programování vestavěného modulu. (Zdroj obrázku: společnost Espressif Systems)
Příliš nezáleží na tom, jakou konkrétní desku pro testování vyberete, protože všechny moduly ESP32 využívají vývojový rámec ESP-IDF. Tento rámec je navržen tak, aby vývojářům usnadnil vývoj softwaru zahrnutím ovladačů, middlewaru, RTOS a – což je důležité pro účely tohoto článku – zavaděčů a knihoven OTA.
Zavaděč umožňuje vývojářům využít aktualizace OTA a rozdělit jejich paměť na oddíly kvůli aktualizaci firmwaru, zatímco je primární aplikace stále spuštěna, což pomáhá minimalizovat prostoje. Nastavení zavaděče se může zdát na první pohled komplikované, ale pokud víte, jak na to, je to jednoduché.
Pracovní postup vývoje OTA
Pracovní postup vývoje OTA pro modul ESP32 se bude mírně lišit v závislosti na obchodních potřebách a výběru komponent produktu. Například tým využívající AWS bude pravděpodobně používat příručky Začínáme a příklady služby AWS, aby jejich řešení ESP32 OTA fungovalo. Naproti tomu společnost, která přizpůsobuje vlastní řešení, bude pravděpodobně využívat dokumentaci modulu ESP32. V tomto článku se podíváme na části postupu na úrovni modulu ESP32, nikoli cloudu. Důvodem je, že tyto části jsou obecné a platí pro OTA s modulem ESP32 bez ohledu na to, který cloudový poskytovatel nebo řešení se používá.
Proces nastavení aktualizace OTA na modulu ESP32 obecně zahrnuje následující kroky:
- Konfigurace tabulky oddílů modulu ESP32
- Stažení firmwaru, který podporuje OTA
- Vývoj nástroje, který bude fungovat jako server a bude zasílat nový firmware
- Stažení nejnovějšího firmwaru do modulu ESP32
- Přepnutí na novou aplikaci
Jde samozřejmě o zjednodušený přístup. Vývojáři by se měli znovu podívat na obrázek 1 a prozkoumat celkový proces aktualizace firmwaru. Tento proces může být poměrně spletitý, takže je vhodné využít existující příklady ESP32 OTA, které najdete na webové službě GitHub. Tyto příklady poskytují několik zásadních příkladů jako:
- HTTPS OTA
- Nativní OTA
- Jednoduchá OTA
- Nástroj OTA (příklad skriptů v jazyce Python)
Na obrázku 5 jsou uvedeny kroky procesu nasazení a aktualizace. Při nasazování řešení OTA do modulu ESP32 bude vývojář muset provést nejprve kroky, které jsou červeně. Následují kroky uvedené oranžovou barvou, které se provádějí k usnadnění aktualizace OTA.
Obrázek 5: Příklady aktualizací OTA společnosti Espressif Systems umístěné na webové službě GitHub poskytují vývojářům několik jednoduchých příkladů, jak využít modul ESP32 k provádění aktualizací OTA. (Zdroj obrázku: společnost Espressif Systems)
Konfigurace aplikace ESP32 pro OTA
Modul ESP32 obsahuje tabulku oddílů, která popisuje, jaký typ dat se nachází na mikrokontroléru a kde je pracuje. Standardní tabulka oddílů modulu ESP32 vypadá například jako tabulka 1:
Tabulka 1: Standardní tabulka oddílů modulu ESP32 ukazující typ dat a místo, kde se na mikrokontroléru nacházejí. (Zdroj tabulky: společnost Beningo Embedded)
Najdete v ní tovární aplikaci a poté sekci pro knihovnu NVS a data inicializace fyzické vrstvy (PHY). Tuto tabulku je nutné aktualizovat, aby bylo možné používat funkce OTA, a to tak, aby byla kromě primární (tovární) aplikace specifikována také umístění paměti pro firmware aktualizace OTA. Pro OTA jsou k dispozici obvykle dva oddíly, které jsou pro aktualizace alokovány. Jeden slouží pro aktivní aktualizovaný firmware a druhý pro stahovaný firmware, který se stane nejnovější verzí. To umožňuje, aby tovární aplikace zůstala bez jakýchkoli změn. Aktualizovaná tabulka oddílů OTA by vypadala například podobně jako tabulka 2.
Tabulka 2: Typická aktualizovaná tabulka oddílů OTA modulu ESP32. (Zdroj tabulky: společnost Beningo Embedded)
Kromě datové části (otadata), která je přidělena paměť RAM pro proces aktualizace, nyní existuje část aplikace ota_0 a ota_1, která má velikost 1 MB, jak je zde ukázáno. Tuto tabulku může vývojář upravit a aktualizovat tak, aby vyhovovala dané aplikaci.
Chcete-li spustit příklad OTA, existuje jednoduchá sada pokynů, které jsou uvedeny na webové službě GitHub v části „How to use the examples“ (Jak používat příklady). V této části je popsáno, jak vytvořit a naprogramovat aplikaci.
K dispozici je také nástroj otatool, který lze použít k aktualizaci firmwaru. Tento skript se obvykle používá k následujícím akcím:
- Čtení, zápis a mazání oddílů OTA
- Přepnutí spouštěcích oddílů
- Přepnutí na tovární oddíl
Ukázkový skript lze spustit jednoduchým spuštěním příkladu na terminálu pomocí příkazu:
./otatool_example.sh
Nebo pomocí jazyka Python:
python otatool_example.py
Pokud jde o konfiguraci modulu ESP32 pro OTA, je klíčovým krokem zajištění nastavení oddílů.
Tipy a triky pro používání
Řešení OTA modulu EPS32 může vývojáři urychlit a zjednodušit řešení aktualizace firmwaru. K tomu, aby řešení vývoj příliš nezatěžovalo, je třeba mít na paměti několik „tipů a triků“:
- Pokud je to možné, využijte stávající rámec OTA, který je součástí cloudového poskytovatele společnosti. To může vývoj a integraci dramaticky zjednodušit.
- Pomocí nízkonákladové vývojové desky otestujte možnosti OTA a zavaděčů. Modul ESP32 má několik možností a určit, která z nich je pro danou aplikaci nejvhodnější, může nějakou dobu trvat.
- Pro vlastní řešení využijte příklady OTA modulu ESP32 na webové službě GitHub.
- U aplikací, kde produkt funguje jako router nebo rozbočovač Wi-Fi, zvažte stažení bitové kopie firmwaru do externí paměti a provádění aktualizace z velkokapacitního paměťového zařízení.
- Věnujte nějaký čas dokumentaci modulu ESP32 k tabulkám oddílů. Liší se trochu od typické implementace mikrokontroléru.
- Z bezpečnostních důvodů je nejlepší zakázat vracení aplikace zpět. Pokud se aplikace může vrátit k předchozím verzím, potenciální útočníci by mohli poslat verzi se známým zneužitím a ohrozit bezpečnost systému.
Vývojáři, kteří dodržují tyto „tipy a triky“, zjistí, že při pokusech o využívání modulu ESP32 nebo jiného řešení OTA ušetří poměrně dost času a zklamání.
Závěr
Aktualizace OTA jsou zásadní funkcí pro rostoucí počet IoT a vestavěných systémů. Vývojáři potřebují dobře zvládnout, jak to udělat efektivně, aby ušetřili čas přímo během procesu návrhu a vývoje a po odeslání produktu.
Bezdrátový mikrokontrolér ESP32 si našel cestu do široké škály zařízení, a jak jsme si ukázali, má dokonale připravené řešení OTA. Využitím výhod ESP-IDF a přidružených modulů a platforem a také pomocí několika tipů a triků založených na zkušenostech mohou vývojáři výrazně zkrátit dobu návrhu a zprovoznit vlastní řešení OTA.

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.