Snel implementeren van sensorgebaseerde industriële IoT-apparaten op Amazon Web Services
Bijgedragen door De Noord-Amerikaanse redacteurs van DigiKey
2019-10-02
Eindpuntapparaten voor het Industrial Internet of Things (IIoT) vormen de essentiële interface tussen cloudgebaseerde resources en industriële processen. Bij het koppelen van randapparaten met de cloud zijn er steeds meer vereisten waaraan IIoT-apparaten moeten voldoen wat betreft prestaties, connectiviteit, sensorintegratie, beveiliging en betrouwbaarheid, zowel binnen het apparaat zelf als tussen het apparaat en de cloud.
Gespecialiseerde services zoals Amazon IoT Core en Amazon FreeRTOS hebben bijgedragen aan die belangrijke vereisten aan de cloudzijde. Om verbinding te maken met deze services aan de apparaatzijde kunnen IIoT-ontwikkelaars die nog maar weinig ervaring hebben met cloudservices en de vele interfaces en protocollen, met extra complicaties te maken krijgen. Behalve kosten, kracht, prestaties en ruimtebeperkingen, moeten deze ontwikkelaars ook rekening houden met geavanceerde sensor- en verwerkingsvereisten voor edge-toepassingen.
In dit artikel wordt kort ingegaan op het gebruik van cloudgebaseerde resources en hoe deze zich hebben ontwikkeld, waarna een volledige cloudkit wordt geïntroduceerd op basis van een RX65N-microcontroller van Renesas. Deze microcontroller en het referentieontwerp kunnen worden gebruikt in combinatie met het bijbehorende softwarepakket om snel sensorgebaseerde IIoT-apparaten te implementeren voor integratie met de AWS-cloud (Amazon Web Services).
Gebruik van cloudresources
Hoewel andere cloudserviceproviders langzaam aan het inhalen zijn, blijft AWS de toonaangevende provider van cloudgebaseerde schaalbare serverloze en servergebaseerde computing-, opslag- en software-as-a-service (SaaS)-diensten. Organisaties gebruiken deze diensten routinematig voor bedrijfsapplicaties die kunnen meegroeien met de veranderende vraag. Ook wordt gebruik gemaakt van een breed scala aan SaaS-pakketten, gemedieerd door uniforme, platformwijde middleware-services voor communicatie, kennisgeving, beveiliging, gegevensopslag en vrijwel elke praktische computerbehoefte.
Voor ondernemingen die grootschalige IoT-toepassingen inzetten, biedt het gebruik van deze diensten om IIoT-gegevens van voertuigen, apparatuur, gebouwen en fabrieken te analyseren duidelijke voordelen voor het verbeteren van inzicht in en controle over fysieke activa, processen en werkwijzen. Voor ontwikkelaars kan het verbindingsproces van een IIoT-apparaat met AWS of andere cloudservices vaak minder duidelijk zijn vanwege de kloof tussen realtime IoT-ontwerpen met schaarse middelen in de periferie en schaalbare virtuele services in de cloud.
Om deze kloof te overbruggen, bieden grote cloudserviceproviders een aansluitende set functies, ontworpen om de grote verschillen tussen IoT-apparaten en cloudservices te overbruggen. Wat betreft AWS zijn deze mogelijkheden opgenomen in de AWS IoT Core, die niet alleen als gateway voor het volledige AWS-platform fungeert, maar ook voor IoT-specifieke services voor gegevensopslag, analyse, visualisatie en machine learning op applicatieniveau (Afbeelding 1).
Afbeelding 1: AWS IoT levert een service-interface tussen IIoT-sensoren in het veld en het AWS-serviceplatform, dat worden gebruikt om sensorgegevens voor industriële toepassingen te analyseren, zoals de hier afgebeelde fleet management-applicatie. (Bron afbeelding: AWS)
Naast deze mogelijkheden biedt integratie van het open source real-time besturingssysteem (RTOS) van FreeRTOS met AWS IoT een belangrijk voordeel voor de levenscyclusvereisten voor systeemupdate en -onderhoud.
Zoals bij elk ander aanbod op ondernemingsniveau specificeren AWS IoT-services een uitgebreide set interface-vereisten en protocollen voor onboarding van apparaten, authenticatie en berichtuitwisseling. Hoewel consistent met de vereisten voor het bredere AWS-platform betekent het gespecialiseerde karakter van de IoT-omgeving dat zelfs ervaren AWS-ontwikkelaars kunnen worden geconfronteerd met een aanzienlijk leerproces bij het integreren van een apparaat met AWS IoT Core en bijbehorende AWS IoT-services. Bovendien hebben alle ontwikkelaars, ongeacht hun ervaring, te maken met alom bekende uitdagingen als gevolg van de voortdurende vraag naar hogere prestaties, lager energieverbruik en betere beveiliging.
Renesas biedt een oplossing voor deze uitdagingen met de RTK5RX65N0S01000BE RX65N Cloud Kit, een kant-en-klare oplossing voor het snel integreren van IIoT-apparaten op AWS.
Uitgebreid platform
De RX65N Cloud Kit biedt een compleet referentieontwerp- en ontwikkelingsplatform voor het inzetten en evalueren van IIoT-apparaten met AWS IoT-cloudservices. Samen met een uitgebreid softwareontwikkelingspakket bevat de kit drie hardwareboards, waaronder een targetboard met een Renesas R5F565NEDDFP 32-bits microcontroller die is gecertificeerd voor Amazon FreeRTOS, een Wi-Fi-board en een Renesas Cloud Option-board met USB-verbindingen en een set sensoren die doorgaans nodig zijn voor IIoT-toepassingen.
De R5F565NEDDFP-microcontroller is gebaseerd op de Renesas RXv2 32-bits processorkern en biedt 640 kilobyte (Kbyte) RAM, 32 Kbyte dataflash en 2 megabyte (Mbyte) codeflash. In deze microcontroller kan codeflashgeheugen worden geconfigureerd in een lineaire modus waarbij het fungeert als een enkele adresruimte, of in een dubbele modus waarbij het fungeert als twee afzonderlijke geheugengebieden. De dubbele modus maakt betrouwbaardere OTA-updates (Over The Air) mogelijk wanneer nieuwe firmware in een lege bank wordt geladen en de integriteit en authenticiteit wordt gecontroleerd voordat het systeem opnieuw wordt opgestart.
Samen met de geheugenondersteuning integreren de R5F565NEDDFP en andere leden van de RX65N-familie een uitgebreide set functionele blokken, waaronder een IEEE-754 floating point unit (FPU) en memory protection unit (MPU). RX65N-microcontrollers bevatten twee multi-channel 12-bits analoog-digitaalomzetters (ADC's), een tweekanaals 12-bits digitaal-analoogomzetter (DAC) en industriële communicatie-interfaces waaronder ethernet, Controller Area Network (CAN) en verschillende seriële interfaces zoals I2C, quad SPI en een multi-channel Serial Communications Interface (SCI) die I2C en SPI ondersteunt.
Sensorhardware-interface
Naast een evaluatieplatform biedt de Renesas Cloud Kit een relatief eenvoudige manier van integratie van de RX65N-microcontroller met IIoT-sensoren. In dit geval bevat de Cloud Option-board van de kit een drietal sensoren:
- De ISL29035 (ISL29035IROZ-T7) digitale lichtsensor van Renesas voor het meten van omgevings- en infraroodlicht
- De BMI160 MEMS-sensor van Bosch Sensortec voor drie-axiale versnellings- en gyroscopische metingen
- De BME680 MEMS-sensor van Bosch Sensortec voor gas-, temperatuur-, vochtigheids- en drukmetingen
Omdat alle drie sensoren een I2C seriële interface bieden, is integratie met de microcontroller simpelweg een kwestie van het aansluiten van de componenten op een gedeelde I2C-bus. Het schema van de Cloud Option-board toont deze eenvoudige hardware-interface (Afbeelding 2).
Afbeelding 2: Het referentieontwerpschema van het Renesas Cloud Option-board is onderdeel van de Renesas RX65N Cloud Kit en illustreert de eenvoudige hardware-interface voor het aansluiten van de drie sensoren op een gedeelde I2C seriële bus. (Bron afbeelding: Renesas)
Ontwikkelaars kunnen met behulp van compatibele connectoren op de Cloud Option-board de hardwarefunctionaliteit van de kit uitbreiden met PMOD- en Grove-uitbreidingsboards.
Softwareontwikkeling
Hoewel de geavanceerde microcontrollers en sensoren in IIoT-apparaten het hardwareontwerp vereenvoudigen, kan het softwareontwerp aanzienlijk complexer zijn. Behalve softwarevereisten voor het IIoT-systeem hebben ontwikkelaars ook te maken met vereisten voor communicatie met cloudgebaseerde resources zoals AWS IoT Core- en AWS-platformservices. In dit geval wordt aan deze vereisten voldaan via een tweetal AWS-softwareontwikkelingskits (SDK's) voor apparaat- en cloudservices.
Op applicatieniveau communiceren IoT-softwareontwikkelaars met AWS-services via de standaard AWS SDK. Interacties met apparaten en hun gegevens vinden hier plaats via dezelfde services, tot stand gebracht door AWS-bericht- en meldingsdiensten voor zowel AWS- als AWS IoT-services, zoals hieronder vermeld.
Op apparaatniveau communiceren ontwikkelaars met een apparaat-SDK (of ‘Thing’) om verbinding te maken met AWS IoT-services. Specifieke verzoeken en antwoorden tussen apparaten en AWS-services worden tot stand gebracht door een zogenaamde ‘message broker’ die uitwisselingen beheert met behulp van het ISO-standaard publish-subscribe (pub/sub) berichtenprotocol Message Queuing Telemetry Transport (MQTT) (Afbeelding 3).
Afbeelding 3: Implementatie van IIoT-applicaties omvat het gebruik van afzonderlijke SDK's voor apparaten en voor applicaties, maar beide maken gebruik van een set uniforme, platformwijde mechanismen voor berichten, notificaties en andere onderliggende mogelijkheden. (Bron afbeelding: AWS)
Terwijl het apparaat MQTT-berichten met data-payloads verstuurt, roept een regelengine aanvullende AWS-platformservices aan volgens een reeks expressies die door de ontwikkelaar worden geschreven in een syntaxis op basis van structured query language (SQL). Zo kan de regel in listing 1 bijvoorbeeld de door de SQL-expressie gegenereerde payload (SELECT * FROM 'iot/test) opnieuw publiceren naar een andere MQTT-wachtrij (my-mqtt-topic) als een inferentiemodel (my-model) aangeroepen door de Amazon-functie voor machine learning services (machinelearning_predict()) de gegevens classificeert als behorende tot een specifiek label (predictedLabel=1).
Copy
{
"sql": "SELECT * FROM 'iot/test' where machinelearning_predict('my-model', 'arn:aws:iam::123456789012:role/my-iot-aml-role', *).predictedLabel=1",
"ruleDisabled": false,
"awsIotSqlVersion": "2016-03-23",
"actions": [{
"republish": {
"roleArn": "arn:aws:iam::123456789012:role/my-iot-role",
"topic": "my-mqtt-topic"
}
}]
}
Listing 1: De AWS-regelengine roept AWS-services aan en verstuurt gegevens met behulp van SQL-achtige selectieregels, aangewezen acties en bijbehorende metagegevens. (Bron code: AWS)
Device shadow
Terwijl de IoT-regelengine van AWS een losjes gekoppelde verwerkingscapaciteit biedt, koppelt de AWS IoT Device Shadow-service de IoT-applicatie los van de IoT-apparaatstatus. Een device shadow (of apparaatschaduw) bevat statusinformatie over een fysiek IoT-apparaat. Als een IoT-apparaat connectiviteit verliest of om een andere reden de verbinding met AWS verbreekt, kunnen cloudgebaseerde diensten de device shadow gebruiken om te blijven werken op basis van de laatst ontvangen gegevens, zonder dat ze hun eigen cachemechanismen voor apparaatgegevens op hoeven te bouwen. Omgekeerd kunnen IoT-apparaten tijdens periodieke onderbrekingen in cloudservices via de edge-service van AWS IoT Greengrass virtueel met de cloud blijven communiceren. Zo blijft Greengrass in de randapparatuur actief om de device shadow te behouden en de benodigde subset van cloudservices te leveren zodat het IoT-apparaat kan blijven werken.
Hoewel de device shadow de apparaatstatus bevat, is de Device Shadow-service meer dan een eenvoudig cachegeheugen. De Device Shadow-service biedt tevens een gemeenschappelijke interface voor applicaties om verzoeken naar IoT-apparaten te verzenden. Omdat de service aan het MQTT-pub/submechanisme is gekoppeld, resulteren gegevensupdates en -verzoeken in een automatische melding van alle apparaten en applicaties die zich abonneren op de MQTT-wachtrijen die aan de device shadow zijn gekoppeld.
Wat betreft implementatie gebruikt de Device Shadow-service een eenvoudige JSON-documentindeling die de gegevens en metagegevens van elk fysiek apparaat bevat. De software op het IoT-apparaat kan via de SDK van het apparaat een nieuw JSON-document verzenden dat de gerapporteerde status in de device shadow bijwerkt met de meest recente gegevens. Omgekeerd kan een host- of mobiele IoT-applicatie de device shadow bijwerken met nieuwe gewenste waarden. Zo kan een applicatie voor een IIoT-apparaat dat momenteel een groene LED of groen lampje op een display weergeeft bijvoorbeeld de device shadow bijwerken om een wijziging aan te vragen naar rood en zelfs een rapport ontvangen met het verschil tussen de gewenste en de gerapporteerde status (Listing 2).
Copy
{
"state": {
"desired": {
"color": "RED",
"state": "STOP"
},
"reported": {
"color": "GREEN",
"engine": "ON"
},
"delta": {
"color": "RED",
"state": "STOP"
}
},
"metadata": {
"desired": {
"color": {
"timestamp": 12345
},
"state": {
"timestamp": 12345
},
"reported": {
"color": {
"timestamp": 12345
},
"engine": {
"timestamp": 12345
}
},
"delta": {
"color": {
"timestamp": 12345
},
"state": {
"timestamp": 12345
}
}
},
"version": 17,
"timestamp": 123456789
}
}
Listing 2: Een AWS device shadow is een JSON-document dat metagegevens en gegevens van het apparaat bevat, inclusief waarden voor zowel de gerapporteerde als gewenste apparaatstatus, evenals het verschil tussen de twee statussen. (Bron code: AWS)
Terwijl services zoals device shadows en regelengine de integratie met applicaties en het bredere AWS-platform ondersteunen, is de integratie van Amazon FreeRTOS een van de belangrijkste onderdeel van de AWS IoT-service. Deze open source RTOS breidt de populaire open source FreeRTOS-kernel uit met een uitgebreide set bibliotheken. Samen met bibliotheken voor veelgebruikte services zoals logboekregistratie, voegt Amazon FreeRTOS bibliotheken toe voor AWS IoT-services. Deze bibliotheken omvatten AWS IoT Device Shadow, AWS IoT Greengrass (gdd) en AWS IoT Device Defender voor het monitoren van apparaatbeveiliging. Amazon heeft bovendien FreeRTOS verbeterd met bibliotheken voor vele middleware-services, waaronder secure sockets, Transport Layer Security (TLS), Public Key Cryptography Standard (PKCS) nr.11, een OTA-agent, Bluetooth, Wi-Fi en MQTT-berichtuitwisseling.
Eenvoudige implementatie
Renesas helpt ontwikkelaars snel vertrouwd te raken met de Cloud Kit en connectiviteit met AWS IoT-services. Na het instellen van de Cloud Kit-boardset moeten gebruikers de op Renesas Eclipse gebaseerde e2 studio integrated development environment (IDE) en de CC-RX-compiler van Renesas installeren. Dankzij e2 studio en de CC-RX-compiler kunnen ontwikkelaars snel en eenvoudig de Amazon FreeRTOS en de Renesas open source RX65N Cloud Kit-voorbeeldcode importeren en compileren.
Renesas verstrekt bijbehorende documentatie waarin stapsgewijs wordt uitgelegd hoe AWS IoT wordt geïnstalleerd, evenals de authenticatiegegevens die vereist zijn om verbinding te maken met AWS. Na deze relatief snelle installatieprocedure moet het demonstratieprogramma worden uitgevoerd om de sensorgegevens die door het apparaat als MQTT-berichten worden verzonden te controleren en om de berichten te bekijken met een MQTT-displayclient die beschikbaar is via de AWS IoT-console.
Ontwikkeling van aangepaste software
Behalve een rechtstreekse demonstratie van IoT-apparaatintegratie met AWS IoT dient de Renesas-voorbeeldcode ook als referentieontwerp voor aangepaste toepassingen. Maar zelfs met deze code krijgen ontwikkelaars nog steeds te maken met een groot aantal configuraties voor Amazon FreeRTOS en de bijbehorende AWS IoT-services. Elke service vereist het specificeren van tal van parameters zoals wachtrijlengte en berichtgrootte.
Hoewel de Renesas-voorbeeldcode de vooraf samengestelde FreeRTOS-configuraties voor de demonstraties bevat, moeten ontwikkelaars van aangepaste codes voor elke service, bibliotheek en hulpprogramma configuratie-opties doorlopen. Daarom heeft Renesas de Smart Configurator ontwikkeld die dit proces aanzienlijk vereenvoudigt. Deze configurator is verkrijgbaar als e2 studio-plugin en als zelfstandige applicatie. Smart Configurator-ontwikkelaars kunnen zo instellingen voor elke configuratiegroep via een grafische gebruikersinterface (GUI) bekijken en wijzigen (Afbeelding 4).
Afbeelding 4: De Smart Configurator van Renesas biedt een eenvoudige GUI voor het bekijken en wijzigen van de vele configuratie-instellingen die zijn gekoppeld aan tal van bibliotheken en services die worden ondersteund in Amazon FreeRTOS. (Bron afbeelding: Renesas)
Ontwikkelaars kunnen gebruik maken van de complete broncode in de Renesas RX65N Cloud Kit-codebibliotheek. De voorbeeldroutines in deze bibliotheek demonstreren belangrijke ontwerppatronen voor het werken met de verschillende AWS IoT-services via de MQTT-gebaseerde berichtmechanismen.
Om de AWS IoT Device Shadow-service te demonstreren, illustreren een opgenomen module (aws_shadow_lightbulb_on_off.c) en bijbehorende header-bestanden bijvoorbeeld hoe software die op het IoT-apparaat draait JSON-documenten maakt, wachtrijen initialiseert en apparaatupdateberichten naar de Device Shadow-service verstuurt. Hoewel de volledige software-architectuur behoorlijk ingewikkeld is, laat deze voorbeeldmodule zien hoe een basisgegevensstructuur en een paar coderegels kunnen worden gebruikt om de kleur van een licht te wijzigen (gerapporteerde kleur groen in het JSON-document in Listing 1) door het geschikte shadow device JSON-documentkenmerk op de nieuwe kleur in te stellen (gewenste kleur rood in Listing 1). Na het initialiseren van de device shadow maakt de code een taak aan die de gewenste kleur tussen twee toestanden (rood en groen) afwisselt door met de functie prvGenerateDesiredJSON() een nieuw verzoek voor de gewenste status te verzenden om het nieuwe JSON-document met de plaatsvervangende kleurstatus te genereren (Listing 3).
Copy
#define shadowDemoDESIRED_JSON \
"{" \
"\"state\":{" \
"\"desired\":{" \
"\"%s\":\"%s\"" \
"}" \
"}," \
"\"clientToken\": \"token-%d\"" \
"}"
...
static uint32_t prvGenerateDesiredJSON( ShadowQueueData_t * const pxShadowQueueData,
const char * const pcTaskName,
uint8_t ucBulbState )
{
/* Map cBulbState to strings. */
static const char * const pColors[ 2 ] = { "green", "red" };
/* Generate JSON. */
return ( uint32_t ) snprintf( ( char * ) pxShadowQueueData->pcUpdateBuffer,
shadowDemoBUFFER_LENGTH,
shadowDemoDESIRED_JSON,
pcTaskName,
pColors[ ucBulbState ],
( int ) xTaskGetTickCount() );
}
...
/* Keep changing the desired state of light bulb periodically. */
for( ; ; )
{
configPRINTF( ( "%s changing desired state.\r\n", pxShadowTaskParam->cTaskName ) );
/* Toggle the desired state and generate a new JSON document. */
ucBulbState = !( ucBulbState );
xShadowQueueData.ulDataLength = prvGenerateDesiredJSON( &xShadowQueueData,
pxShadowTaskParam->cTaskName,
ucBulbState );
/* Add the new desired state to the update queue. */
if( xQueueSendToBack( xUpdateQueue, &xShadowQueueData, shadowDemoSEND_QUEUE_WAIT_TICKS ) == pdTRUE )
{
/* If the new desired state was successfully added, wait for notification that the update completed. */
configASSERT( ulTaskNotifyTake( pdTRUE, shadowDemoNOTIFY_WAIT_MS ) == 1 );
configPRINTF( ( "%s done changing desired state.\r\n", pxShadowTaskParam->cTaskName ) );
}
else
{
configPRINTF( ( "Update queue full, deferring desired state change.\r\n" ) );
}
vTaskDelayUntil( &xLastWakeTime, shadowDemoSEND_UPDATE_MS );
}
Dit fragment voorbeeldcode is onderdeel van de Renesas RX65N Cloud Kit-codebibliotheek en demonstreert het basisontwerppatroon voor het gebruik van een JSON-document dat is gedefinieerd in shadowDemoDESIRED_JSON en wordt geïnstantieerd door de functie prvGenerateDesiredJSON() om de gewenste status van een device shadow met behulp van een updatewachtrij te wijzigen. (Bron code: Renesas)
Conclusie
Een commerciële cloudservice zoals AWS met zijn uitgebreide reeks opties is een aantrekkelijk platform voor ontwikkelaars die grootschalige IIoT-applicaties bouwen, met name die welke met andere bedrijfstoepassingen moeten werken. Uitdagingen met betrekking tot zowel IoT-apparaatontwerp als cloudintegratie leiden voor ontwikkelaars echter vaak tot onverwachte vertragingen bij de ontwikkeling en implementatie.
De Renesas RX65N Cloud Kit is gebaseerd op de Renesas RX65N-microcontroller en biedt een compleet IIoT-sensorapparaat en referentieontwerp. De Renesas Cloud Kit, in combinatie met het bijbehorende softwarepakket, biedt een flexibel ‘rapid development platform’ voor de implementatie van sensorgebaseerde IIoT-apparaten voor integratie met AWS.
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.




