Lähes kaikissa sulautetuissa laitteissa tarvitaan langaton yhteys internetiin. Sen toteuttaminen onnistuu parhaiten oikein valitun alustan avulla.
Artikkelin on kirjoittanut Cypress Semiconductorin vanhempi sovellusinsinööri Vikram Ramanna. |
Esineiden internet (IoT) houkuttaa monia elektroniikkataloja, koska mahdollisuus liittää aiemmin erillisiä laitteita verkkoon on niin laaja. Lähes joka kodista löytyy wifi-reititin ja standardin Bluetoothin tai Bluetooth Smart Radion avulla laitteet voidaan liittää satoihin miljooniin aina päällä oleviin älypuhelimiin tai tabletteihin.
Vaikka IoT:lle on olemassa lähes universaali radioinfrastruktuuri, ei tämä tarkoita että luotettavan langattoman internet-yhteyden tuominen sulautettuihin laitteisiin olisi helppoa. Itse asiassa monilla tapaa radio itsessään on sulautetun laitteen suunnittelijan ongelmista pienimpiä. Suunnittelun ohjelmisto-osuus vaatii erityistä huomiota, kuten tässä artikkelissa pyritään osoittamaan.
Miksi tarvitaan alusta?
WiFi- ja Bluetooth-yhteydet – sekä klassiessa että BLE- eli low energy -muodossaan – ovat tulossa selvästi yleisimmiksi tavoiksi liittää kodin, toimiston, tehtaan ja julkisten tilojen IoT-laitteet verkkoon. Tämä johtuu siitä, että näitä tekniikoita tukevia verkkoja löytyy lähes kaikkialta. Muut radiotekniikat eivät tarjoa läheskään vastaavaa käytettävyyttä tai peittoa.
Tämän takia monet komponenttien valmistajat ovat tuoneet markkinoilla laajan valikoima wifi- ja Bluetooth-piirisarjoja, RF-mikro-ohjaimia, RF-moduuleita ja jopa kokonaisia WiFi-yhdyskäytäviä. Nyt internet-liitännän sulauttamiseen vaatimat komponentit on helppo löytää ja suhteellisen edullisia ostaa.
Radiokomponentin valitseminen on tietenkin vasta toimivan WiFi- tai Bluetooth-järjestelmän suunnittelun ensimmäinen askel. Vaikeinta ja eniten aikaa vievää missä tahansa IoT-laiteprojektissa on ohjelmiston kehitys. Kun verkkoon liitytään WiFin tai Bluetoothin välityksellä, ohjelmistovaatimuksiin sisältyy todennäköisesti tuki useilla sovellusprotokollille kuten HTTP, SMTP, NTP ja MQTT, joilla toteutetaan yhteys webbi- ja sovelluspalvelimiin internetin yli. Erityisesti kuluttajalaitteissa toteutetaan usein alempi sovellustaso, jotta saadaan saumaton yhteensopivuus yhteensopivien laitteiden kanssa – esimerkkeihin kuuluvat Applen HAP-protokolla (Homekit Accessory Protocol) tai Googlen ”Works with Nest” -järjestelmä (ks. kuva 1).
Vahva tietoturva on tänään pakollinen osa jokaisessa nettiin kytketyssä laitteessa, sekä varmistamaan käyttäjän datan ja toimintojen suojaainen että suojaamaan luvaton pääsy verkkoon IoT-laitteen kautta. Tämä edellyttää, että sulautetun laitteen kehittäjä hyödyntää viimeisimpiä internetin tietoturvatekniikoita, kuten TLS 1.2:aa (Transport Layer Security) tai muita turvaprotokollia, joilla voidaan suojata datatoiminnot ja viestinvaihto laitteiden ja pilven välillä SSL-kerroksen (Secure Sockets Layer) yli.
Kuva 1. Nest-termostaatti, joka on Googlen Works with Nest -ekosysteemin sydän.
Yksityiskohtaisesti nämä tietoliikenne- ja tietoturvaprotokollat tuntevia sulautettuja kehittäjiä on vähän, joten useimmat laitevalmistajat tarvitsevat tukea toteuttaakseen ne omissa tuotteissaan. Vaikka WiFi- tai Bluetooth-piirisarjan toimittaja voi tuoda perustason TCP/IP-pinon käyttöön, on harvinaista että kaikki edellä mainitut yhteys- ja suojatoiminnot liitetään RF-komponentin mukaan.
Ongelma ei lisäksi pääty tähän. Jotta sovellustaso, tietoturvataso ja tietoliikennetaso toimivat koordinoidusti ja hallittavalla tavalla, järjestelmäarkkitehtuuri edellyttää käyttöjärjestelmän hallinnoimaan toimintoja kute priorisointi ja muistin allokointi. Sulautetuissa laitteissa valitaan yleensä reaaliaikakäyttöjärjestelmä (RTOS), joka toimii nopeasti ja deterministisesti, ja joka tarvitsee vähän muistia. Näin kehitystehtää laajenee lisää ja pitää sisällään myös RTOS:n integroinnin sekä alla olevaan radiolaitteistoon että RTOS:n päällä oleviin turva-, tietoliikenne- ja sovelluskerroksiin.
Mittava softahaaste
Nyt näemme jo ohjelmistokehitystehtävän laajuuden, kun halutaan toteuttaa langaton nettiliitäntä laitteeseen. Koska tehtävä on mittava, suunnittelijan pitäisi miettiä kahta asiaa ennen kuin ryhtyy komponenttien valintaan:
Onko olemassa tuottavaa kehitysympäristöä, joka pystyy tukemaan suunnittelijaa koko projektin läpi, käyttöjärjestelmästä protokollakerrokseen ja sovelluskerrokseen?
Mitä tapahtuu tämän projektin lopussa? Onko laiteohjelmisto uudelleen käytettävissä seuraavassa IoT-projektissa ja sitä seuraavissa projekteissa?
Vastaukset näihin kysymyksiin johtavat suoraan kehitystiimin RF-laitevalintaan, koska se määrittelee pääseekö tiimi käsiksi tarvitsemiinsa ohjelmistonkehitysresursseihin. Tällä valinnalla voi olla kauaskantoisia seurauksia: tämän päivän projektissa luodaan periytyvää legacy-koodia, jota tulevissa projekteissa voi olla hyödyllistä käyttää. Tuossa tulevassa projektissa voidaan kuitenkin käyttää uutta laitteistoa, joka on esimerkiksi päivitetty tukemaan WiFin tai Bluetoothin tulevia määrityksiä. Mikäli aiempaan projektiin ei ole sisäänrakennettua mekanismia ohjelmiston siirrettävyydelle (portability), sen uudelleenkäyttö uudella raudalla voi olla mahdotonta.
WICED
Näitä kahta ongelmaa Cypress on lähtenyt ratkaisemaan WICED-alustallaan (nimi WICED on lyhenne nimestä Wireless Internet Connectivity for Embedded Devices). Alustan perustan muodostaa WICED-ohjelmistokehitysalusta (SDK). Sillä toteutettu ohjelmisto toimii millä tahansa Cypressin WICED-radiomoduulilla. Moduuleja on tarjolla pelkkään WiFi-yhteyteen, WiFin ja klassisen Bluetoothin yhdistelmään, sekä klassisen Bluetoothiin ja BLE-yhteyden yhdistelmään. Lisäksi WICED-alusta tukee erilaisia mikro-ohjainperheitä:
- Cypressin FM4-sarja
- STMicroelectronicsin STM32F2- ja STM32F4-perheet
- Microchipin AT91SAM4S16B
- NXP Semiconductorsin Kinetis K61-, LPC17xx- ja LPC18xx-perheet
SDK-alustan tarkoitus (ks. kuva 2) on kiihdyttää ja yksinkertaistaa verkkoon liitettävän laitteen ohjelmiston kehitystä. Pakettiin sisältyy:
- Sovellusohjelmointirajapintoja ja ajureita.
- ThreadX-, NuttX- ja FreeRTOS-reaaliaikakäyttöjärjestelmien natiivi tuki. Kehittäjät voivat myös kääntää muista RTOSeja WICED-alustalla. ThreadX jaetaan binäärimuodossa WICEDin mukana rojaltivapaasti.
- NetX-, NetXDuo- ja LwIP-verkkoprotokollien tuotantovalmiiden versioiden natiivi tuki. Muita TCP/IP-pinoja voidaan helposti portata WICED-alustalle. NetX ja NetXDuo toimiteraan binäärimuodossa WICEDin mukana rojaltivapaasti.
- Tuotantovalmiit tietoturvapinot.
- Integroidut, lisensoidut kirjastot, joilla toteutetaan kolmansien osapuolten ohjelmistoja kuten Applen Homekit-protokolla.
- Integroitu tuki IoT-pilvialustoille kuten Amazonin AWS ja IBM:n BlueMix.
Kuva 2. WICED SDK tarjoaa kokonaisen ohjelmistokehyksen IoT-laitteen suunnitteluun.
Kehitysalusta on yhteensopiva avoimen lähdekoodin Eclipse-kehitysympäristön kanssa, joten suunnittelijan voivat hyödyntää kaikkia Eclipsen ominaisuuksia ja toimintoja sovellusten kehittämiseen ja debuggaukseen Cypressin RF-tuotteilla. Käyttäjät voivat myös laajentaa alustaa Eclipse-yhteensopivilla lisäosilla, jotka on tuotu muista kehitysympäristöistä kuten vaikkapa IAR:n Embedded Workbenchistä.
Nopeasti liikkeelle
SDK mahdollistaa internetiin liittyvien laitteiden nopean kehityksen tarjoamalla kattavan kehyksen tietoliikenteelle, tietoturvalle, middleware-ohjelmistoille ja sovelluksille. Cypress auttaa kehittäjiä myös tarjoamalla suuren kirjaston sovelluskoodiesimerkkejä, joten kehittäjät saavat varaslähdön pyrkiessään toteuttamaan heille usein tuntemattomia elementtejä kuten Googlen Works With Nest.
Laiteidean toimivuuden todistava proof-of-concept -kehitys onnistuu Arduino-yhteensopivilla kehityskorteilla, joita on tarjolla jokaiselle Cypressin valmistamalle WICED RF -moduulille ja RF-mikro-ohjeimelle. Yhdistämällä tuotantovalmista ohjelmistoa ja IoT-pilvialustojen natiivia tukea kehityskorteilla voivat käyttäjät saada ideansa toimimaan livenä internetissä muutaman minuutin sisällä paketin avaamisesta ja virran syöttämisestä kortille.
Toinen avainkysymys sulautettujen laitteiden kehittäjälle IoT-projektin alussa on, kuinka taata koodin uudelleenkäyttö tulevissa projekteissa. WICED-alustalla tämä mahdollistetaan laitteiston HAL-absraktiokerroksella (HAL, hardware abstraction layer), joka näkyy kuvassa 2. Tämä tekee koko ajurien, pinojen, RTOSin ja sovellusten ohjelmistokehyksestä laiteriippumatonta. Esimerkiksi WICED WiFi 802.11b -moduulia varten kehitetty koodi voidaan yksinkertaisesti uudelleenkäyttää päivitetyssä 802.11n-moduulissa, koska molemmat moduulit tukevat alustan HAL-kerrosta.
Kuva 3. WICED-alustan tukemat laitearkkitehtuurit.
Tämä mahdollistaa laitteiston vaihtamisen kesken projektin. WICED tukee laajaa valikoimaa laitearkkitehtuureita (ks. kuva 3). Protokehitysvaiheessa suunnittelutiimi saattaa päättää haluta siirtää WiFi-protokollan ulkoiselta isäntäprosessorilta integroidulla WiFi-moduulille, kuten CYW43907-piiri, jolla on ARM Cortex-R4 -prosessoriydin. Arkkitehtuuri toimii HAL-kerroksen päällä, joten se voidaan uudelleenkäyttää toisessa arkkitehtuurissa saman HAL-kerroksen päällä.
Ohjelmisto määrittelee laitevalinnat
IoT-laitekehityksessä ohjelmistovaatimusten pitäisi määritellä laitteiston valinnan. Monet markkinoilla tarjolla olevista WiFi- ja Bluetooth-radioista ovat laitenäkökulmasta erinomaisia suorituskyvyltään ja määrityksiltään. Suunnittelijan näkökulmasta niiden ongelmana on integrointi tietoturvalliseksi ohjelmistoympäristöksi, joka tukee koodin uudelleenkäyttöä.
Tämän toiminnallisuuden toteuttaminen peräänkuuluttaa dedikoitua ohjelmistoalustaa, jossa kehitys on helppoa, koodi on laiteriippumatonta ja eri laitearkkitehtuurien välillä voidaan valita. Tämä on tarkoitus WICED-alustan takana. Laajentamalla jatkuvasti alustalla tarjolla olevien moduulien alaa ja toimintoja Cypress haluaa tuoda alustan käytettäväksi mahdollisimman monessa huomisen IoT-suunnittelussa.