Over-the-Air (OTA) ‑päivitysten tekeminen ESP32-mikrokontrollerilla ja sen ESP-IDF:llä
Julkaisija DigiKeyn kirjoittajat Pohjois-Amerikassa
2021-08-10
Esineiden internetiin (IoT) tarkoitettujen tuotteiden suunnittelijat joutuvat jatkuvasti pohtimaan alusta- ja komponenttivalintoja kustannusten ja tehontarpeen vähentämiseksi. Samalla täytyy pystyä parantamaan suorituskykyä ja nopeuttamaan yhteyssovellusten suunnittelua. Nykyisin on saatavana lukuisia ratkaisuvaihtoehtoja, mutta suunnittelijat joutuvat ratkaisemaan, miten langattomat over-the-air (OTA) ‑päivitykset voidaan toteuttaa niin, että laitteen laiteohjelmisto pysyy ajantasaisena laitteen käyttöönoton jälkeen.
Silloin on tärkeää tutustua saatavana oleviin alustoihin ja selvittää, millaisia lisätyökaluja ja tukea ne tarjoavat OTA-päivitysten tekemiseen. Asianmukainen tuki voi yksinkertaistaa prosessia huomattavasti, mutta siihen kannattaa kiinnittää huomiota jo etukäteen.
Tässä artikkelissa käsitellään OTA:n perusteita ja sitä, miksi se on kriittisen tärkeä toiminto, jota lähes kaikkien IoT-järjestelmien tulisi tukea suunnittelijoiden kohtaamista haasteista riippumatta. Sen jälkeen artikkelissa käsitellään esimerkkinä Espressif Systemsin Bluetoothia ja Wi-Fiä tukevaa ESP32-mikrokontrolleria ja siihen liittyviä moduuleja, sarjoja ja ESP-IDF:ää (ESP IoT Development Framework). Näitä käyttämällä näytetään miten luoda OTA-osio ja miten päivittää laiteohjelmisto otatool.py-skriptillä sovelluksen ollessa käynnissä.
Johdanto OTA-päivityksiin
Useimmat kehitystiimit keskittyvät ennen kaikkea tuoteominaisuuksiin eli siihen liiketoimintalogiikkaan, joka erottaa heidän tuotteensa muista. Jokaisella IoT-tuotteella on kuitenkin omat perusominaisuutensa, jotka on otettava käyttöön, konfiguroitava ja joita on ylläpidettävä laitteen koko eliniän ajan. Turvallisuuspäivitykset ovat tästä hyvä esimerkki. Päivityksiä joudutaan tekemään. Sopivaa kehitysalustaa arvioitaessa saattavat käynnistyslataajan tai laiteohjelmiston OTA:n (FOTA) päivitysmahdollisuudet kuitenkin jäädä ottamatta huomioon. Näihin viitataan toisinaan yksinkertaisesti nimityksellä OTA.
Suunnittelijat voivat OTAn avulla ylläpitää ja päivittää tuotteita etäyhteydellä ja täyttää uusia teknisiä ja liiketoiminnallisia vaatimuksia ilman, että laitteen luokse tarvitsee lähettää kunnossapitotyöntekijää tai että laitteen käyttäjä joutuu tekemään jonkin toimenpiteen. Kaikki näihin liittyvät kustannukset voidaan välttää käyttämällä ratkaisuja, joissa laitteet päivittävät laiteohjelmistonsa kaikessa rauhassa taustalla tai laitteen vähäisemmän käytön aikana, kuten keskellä yötä.
OTA-arkkitehtuurin voi toteuttaa monin eri tavoin ja erilaisissa konfiguraatioissa, käyttämällä räätälöityjä ratkaisuja tai vaikkapa pilvitarjoajan toimittamia standarditoteutuksia. Kuvassa 1 on esimerkki tyypillisestä arkkitehtuurista.
Kuva 1: Yleiskuva OTA-arkkitehtuurista, esimerkkinä sovellusohjelmiston päivitysprosessi käyttöönotetuissa laitteissa. (Kuvan lähde: Beningo Embedded Group)
Tässä esimerkissä OEM lataa uudet laiteohjelmistoversiot Amazon Web Services ‑palveluun (AWS) IoT Coren kautta ja päivittää sen jälkeen asiakkaille toimitetut laitteet käyttäen niiden sisäänrakennettuja tehtäväominaisuuksia. Tämä esimerkki on vain yksi monista vaihtoehdoista, ja lähes kaikilla pilvitarjoajilla on samankaltaisia ratkaisuja.
Nykyään on saatavana runsaasti erilaisia OTA-toimintoa tukevia mikrokontrollereita. ESP32 on yksi sekä edullisissa järjestelmissä että valmistajien keskuudessa suosittu mikrokontrolleri. ESP32:n suosio perustuu esimerkiksi seuraaviin syihin:
- siinä on integroitu mikrokontrolleri, johon on saatavana Wi-Fi/Bluetooth-sertifiointimoduulit
- edullisuus
- avoimen lähdekoodin kehitysympäristö sekä ESP-IDF:n ja ESP Audio Development Frameworkin (ESP-ADF) kaltaiset ohjelmistoalustat
- verkossa on vapaasti saatavilla useita valmiita sovellusesimerkkejä.
ESP32-moduulin valitseminen OTA-testaukseen
Saatavana on useita erilaisia ESP32-moduuleja ja ‑kehityskortteja, joiden avulla käyttäjät voivat käydä läpi OTA-esimerkkejä. Esimerkiksi Adafruitin 3405 ESP32 Huzzah Feather on tällainen kortti (kuva 2). Tämä edullinen kehityskortti sisältää kaikki virtapiirit, joita tarvitaan ESP32:n ohjelmointiin ja virran syöttämiseen siihen USB-liittimen kautta.
Kuva 2: 3405 Huzzah Feather ‑kortti sisältää ESP32 WROOM-32D ‑sertifioidun Wi-Fi/Bluetooth-moduulin ja 4 Mt flash-muistia. Kortti sisältää kaiken tarvittavan laitteiston moduulin ohjelmointiin ja USB-tiedonsiirtoon. (Kuvan lähde: Adafruit)
3405:n ytimen muodostaa ESP32-WROOM-32D-moduuli, jonka mukana tulee 4 Mt flash-muistia, Wi-Fi, Bluetooth ja lähes kaikkiin sovelluksiin sopiva täydellinen oheislaitesarja.
Toinen kätevä kehityskortti on Espressif Systemsin ESP32-LYRATD-SYNA-audiokortti (kuva 3). Tämä kehityskortti sisältää ESP32-WROVER-B-moduulin.
Kuva 3: ESP32-LYRATD-SYNA-kortti perustuu ESP32 WROOM-32D ‑sertifioituun Wi-Fi/Bluetooth-moduuliin, ja siinä on 4 Mt flash-muistia. Suunnittelijat voivat ohjelmoida moduulin ja kommunikoida sen kanssa USB-portin kautta. Lisäksi siinä on myös audiosovellusten kehittämiseen tarvittavat piirit. (Kuvan lähde: Espressif Systems)
Myös ESP32-LYRATD-SYNA-moduulissa on 4 Mt flash-muistia sekä kaikki audiosovelluksiin tarvittavat piirit. Kortilla on äänikoodekki, äänivahvistin sekä kuuloke- ja kaiutinliittimet, joiden avulla audiosovellusta voi testata perusteellisesti.
OTA-testaukseen sopivista kehityskorteista mainittakoon vielä Espressifin ESP32-S2-SAOLA-1RI-kehityskortti (kuva 4). Tämä kehityskortti on näistä vaihtoehdoista edullisin. Kortilla on ESP32 Wrover ‑moduuli sekä sirun ohjelmointiin tarvittavat piirit, ei mitään ylimääräistä – paitsi että kortissa on kosketinnastat, joiden avulla sen voi asentaa helposti koekytkentäalustaan testausta varten.
Kuva 4: Wrover-moduuliin perustuva ESP32-S2-SAOLA-1RI on yksinkertainen kehityskortti, jossa on edullisesta hinnasta huolimatta kaikki korttimoduulin ohjelmointiin tarvittavat piirit. (Kuvan lähde: Espressif Systems)
Testattavan korttiversion valinnalla ei ole kovin paljon merkitystä, sillä kaikissa ESP32-moduuleissa käytetään ESP-IDF:ää. Tämä kehys on suunniteltu helpottamaan ohjelmistokehitystä. Se sisältää ajurit, väliohjelmistot, RTOS:n, OTA-kirjastot ja tämän artikkelin kannalta tärkeät käynnistyslataajat.
Kehittäjät pääsevät käynnistyslataajan avulla hyödyntämään OTA-päivityksiä ja partitioimaan muistia laiteohjelmiston päivittämiseksi, vaikka ensisijainen sovellus on edelleen käynnissä. Tämä auttaa vähentämään käyttökatkoja. Käynnistyslataajan määrittely saattaa vaikuttaa aluksi monimutkaiselta, mutta oikein ohjattuna se on suoraviivaista.
OTA-kehitystyönkulku
ESP32:n OTA-kehitystyönkulku vaihtelee hieman liiketoimintatarpeiden ja valittujen tuotekomponenttien mukaan. Esimerkiksi AWS-alustaa käyttävä tiimi toteuttaa ESP32 OTA -ratkaisun todennäköisesti seuraamalla AWS-aloitusoppaita ja -esimerkkejä. Omaa sovellustaan räätälöivä yritys käyttää todennäköisesti ESP32-dokumentaatiota. Tässä artikkelissa käsitellään elementtejä ESP32-tasolla, ei pilvessä, koska tällaiset elementit ovat yleiskäyttöisiä ja sopivat ESP32 OTA -toimintoon pilven tarjoajasta tai ratkaisusta riippumatta.
OTA-päivityksen määritykseen ESP32-piirille kuuluu yleensä seuraavia vaiheita:
- ESP32-partitiotaulun määrittely.
- OTA-toimintoa tukevan laiteohjelmiston lataaminen.
- Palvelimena ja uuden laiteohjelmiston tarjoajana käytettävän työkalun kehittäminen.
- Uusimman laiteohjelmistoversion lataaminen ESP32-piiriin.
- Vaihto uuteen sovellukseen.
Edellä esitetty on tietenkin yksinkertaistettu esitys menettelystä. Kehittäjien kannattaa tutkia kuvaa 1 uudemman kerran, sillä se auttaa hahmottamaan laiteohjelmiston päivitysprosessin kokonaisuutena. Tämä prosessi saattaa olla aika monimutkainen, joten apuna kannattaa käyttää GitHub-repositorion ESP32 OTA -esimerkkejä. Niihin kuuluvat muun muassa seuraavat tärkeät esimerkit:
- HTTPS OTA
- Native OTA
- Simple OTA
- OTA Tool (python-komentosarjaesimerkki).
Kuvassa 5 on esitetty käyttöönotto- ja päivitysprosessin vaiheet. Kehittäjän täytyy tehdä ensin punaisella merkityt vaiheet, joilla OTA-ratkaisu otetaan käyttöön ESP32-moduulissa. Seuraavana vuorossa ovat oranssilla merkityt vaiheet, joita tarvitaan OTA-päivityksen tekemiseen.
Kuva 5: Espressif Systemsin GitHubissa julkaisemat OTA-päivitysesimerkit auttavat kehittäjiä toteuttamaan OTA-päivitykset ESP32-mikrokontrollerilla. (Kuvan lähde: Espressif Systems)
ESP32-sovelluksen konfigurointi OTA-päivitystä varten
ESP32 käyttää partitiotaulua, joka kertoo, minkä tyyppistä dataa mikrokontrollerissa on ja missä se sijaitsee. Taulukossa 1 on esimerkki tyypillisestä ESP32-partitiotaulusta:
Taulukko 1: Tyypillinen ESP32-partitiotaulu, joka kuvailee, millaista dataa mikrokontrollerilla on ja missä eri datatyypit sijaitsevat. (Taulun lähde: Beningo Embedded)
Tehdassovelluksen ja NVS-kirjaston lisäksi kontrollerilla on fyysisen kerroksen (PHY) alustustiedot (init). OTA-ominaisuuden käyttö edellyttää taulun päivittämistä siten, että muistiin määritetään ensisijaisen (tehdasasennetun) sovelluksen lisäksi laiteohjelmiston OTA-päivitysten sijainti. OTA-päivityksille määritetään tyypillisesti kaksi muistiosiota: yksi käytössä olevalle, päivitetylle laiteohjelmistolle, ja toinen ladattavalle laiteohjelmistolle, josta tulee uusin versio. Näin tehdasasennettuun sovellukseen ei tarvitse koskea. Taulukossa 2 on esimerkki päivitetystä partitiotaulusta.
Taulu 2: Tyypillinen päivitetty ESP32 OTA -partitiotaulu. (Taulun lähde: Beningo Embedded)
Kuten esimerkistä käy ilmi, taulussa on nyt ota_0- ja ota_1-osiot, joiden kummankin koko on 1 Mt. Lisäksi päivitysprosessille on varattu dataosio (otadata) RAM-muistista. Kehittäjä voi muokata ja päivittää tätä taulua sovelluksen tarpeiden mukaan.
OTA-esimerkin suoritus onnistuu GitHubin kohdasta ”How to use the examples” löytyvien yksinkertaisten ohjeiden avulla. Tässä kuvaillaan, miten sovellus rakennetaan ja ohjelmoidaan.
Laiteohjelmiston päivitykseen voi käyttää myös otatool-työkalua. Esimerkkikomentosarjalla voidaan tyypillisesti
- lukea, kirjoittaa ja tyhjentää OTA-partitiot
- vaihtaa käynnistyspartitiota
- hypätä tehdasohjelmapartitioon.
Esimerkkikomentosarjan voi suorittaa ajamalla se komentorivillä komennolla
./otatool_example.sh
tai Pythonia käytettäessä:
python otatool_example.py
Kun ESP32 konfiguroidaan OTA-päivitystä varten, on muistettava, että partitioiden määrittäminen on kriittisen tärkeä vaihe.
Käyttövinkkejä
EPS32 OTA -ratkaisu voi nopeuttaa ja helpottaa laiteohjelmiston päivitysratkaisun kehittämistä. Seuraavien vinkkien avulla ratkaisusta ei tule kehitykselle kohtuutonta taakkaa:
- Hyödynnä yhtiön pilvipalvelutarjoajan valmista OTA-kehystä, jos mahdollista. Se saattaa helpottaa kehittämistä ja integrointia huomattavasti.
- Testaa OTA-ratkaisun ominaisuusia ja käynnistyslataajia edullisen kehityskortin avulla. Saatavana on useita ESP32-korttivaihtoehtoja, ja tiettyyn sovellukseen parhaiten sopivan vaihtoehdon löytäminen voi vaatia useita kokeiluja.
- Hyödynnä GitHubin ESP32 OTA ‑esimerkkejä räätälöityjen ratkaisujen kehittämisessä.
- Jos tuote toimii Wi-Fi-reitittimenä tai hubina, harkitse laiteohjelmiston kuvan lataamista ulkoiseen muistiin ja päivityksen toteuttamista massatallennuslaitteelta.
- Tutustu ESP32-dokumentaation partitiotauluja koskeviin tietoihin. Niiden käyttö poikkeaa jonkin verran tyypillisestä mikrokontrolleritoteutuksesta.
- Turvallisuussyiden vuoksi aiempien sovellusversioiden palauttaminen kannattaa estää. Jos sovellus pystyy palauttamaan aiempia versioita, mahdolliset hyökkääjät saattavat pystyä pakottamaan version, joka sisältää tunnetun haavoittuvuuden, ja päästä sisään järjestelmään.
Kehittäjät, jotka noudattavat näitä vinkkejä, säästävät melkoisesti aikaa ja vaivaa yrittäessään hyödyntää ESP32-korttia tai muuta OTA-sovellusta.
Yhteenveto
OTA-päivitykset ovat kriittisen tärkeitä yhä useammissa IoT-ratkaisuissa ja sulautetuissa järjestelmissä. Kehittäjien on ratkaistava, miten päivitykset voidaan hoitaa tehokkaasti, jotta aikaa säästyy sekä suunnittelu- ja tuotekehitysprosessin aikana että tuotteen toimittamisen jälkeen.
Langaton ESP32-mikrokontrolleri on löytänyt tiensä hyvin monenlaisiin laitteisiin. Kuten edellä esitetystä käy ilmi, siihen kuuluu myös valmis OTA-ratkaisu. Kehittäjät voivat ESP-IDF:tä ja siihen liittyviä moduuleja ja alustoja sekä kokemukseen perustuvia vinkkejä hyödyntämällä nopeuttaa suunnittelua huomattavasti ja saada oman OTA-ratkaisunsa käyttöön vauhdikkaammin.
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.




