Distribuera snabbt sensorbaserade IoT-enheter med industriell styrka på Amazon Web Services

Av Stephen Evanczuk

Bidraget med av DigiKeys nordamerikanska redaktörer

Slutpunktsenheter för det industriella sakernas internet (IIoT) tillhandahåller det nödvändiga gränssnittet mellan molnbaserade resurser och industriella processer. När periferin kopplas till molnet måste dock en IIoT-enhet hantera stigande krav på prestanda, anslutningsbarhet, sensorintegrering, säkerhet och tillförlitlighet inom själva enheten, samt mellan enheten och molnet.

Specialiserade tjänster som Amazon IoT Core och Amazon FreeRTOS har hjälpt till att uppfylla dessa nyckelkrav på molnsidan. Att ansluta till dessa tjänster på enhetssidan kan medföra ytterligare komplikationer för IIoT-utvecklare som precis kommit igång med molntjänster och deras många gränssnitt och protokoll. Dessa utvecklare måste även vara medvetna om edge-tillämpningars avkännings- och behandlingskrav, samt kostnader, effekt, prestanda och utrymmeskrav.

Den här artikeln diskuterar kortfattat användningen av molnbaserade resurser och hur de har utvecklats och introducerar därefter ett komplett molnpaket baserat på en RX65N-microcontroller från Renesas. Den visar hur microcontroller- och referensdesignen kan användas i kombination med sitt förknippade programvarupaket för att snabbt implementera sensorbaserade IIoT-enheter för integrering med Amazon Web Services (AWS) moln.

Använda molnresurser

Trots att andra molntjänstleverantörer långsamt kommer ifatt är AWS fortfarande den ledande leverantören av molnbaserade skalbara serverlösa och serverbaserade behandlings-, lagrings- och Saas-tjänster (software-as-a-service). Organisationer använder rutinmässigt dessa tjänster i tillämpningar på bolagsnivå som kan växa med ändrad efterfrågan och som utnyttjar en bred uppsättning SaaS-paket, alla förmedlade via enhetliga, plattformstäckande mellanprogramtjänster för kommunikation, aviseringar, säkerhet, datalagring och nästan alla praktiska beräkningsbehov.

För företag som distribuerar storskaliga IoT-tillämpningar erbjuder användning av dessa tjänster för att analysera IIoT-data från fordon, utrustning, byggnader och tillverkningsanläggningar tydliga fördelar för att förbättra överblick över och kontroll av fysiska tillgångar, processer och rutiner. För utvecklare kan dock processen att ansluta en IIoT-enhet till AWS eller andra molntjänster verka mindre tydlig på grund av det uppenbara avståndet mellan resursbegränsade realtids-IoT-konstruktioner i periferin och skalbara virtuella tjänster i molnet.

För att överbrygga detta erbjuder större molntjänstleverantörer en sammanfogande uppsättning funktioner för att lösa de stora skillnaderna mellan IoT-enheter och molntjänster. För AWS finns dessa funktioner i AWS IoT Core, som fungerar som gateway inte bara för hela AWS-plattformen utan även för IoT-specifika tillämpningsnivåtjänster för datalagring, analys, visualisering och maskininlärning (figur 1).

Diagram över AWS IoT visar tjänstgränssnittet mellan IIoT-sensorer på fältet och den bredare AWS-plattformenFigur 1: AWS IoT visar tjänstgränssnittet mellan IIoT-sensorer på fältet och den bredare AWS-plattformen med tjänster som används för att analysera sensordata för industriella tillämpningar, såsom förvaltning av en fordonsflotta som illustreras här. (Bildkälla: AWS)

Bortom dessa funktioner innebär integreringen av open source-realtidsoperativsystemet (RTOS) FreeRTOS med AWS IoT en stor fördel när det gäller att hantera livscykelkrav för systemuppdatering och underhåll.

Som för alla andra erbjudanden på företagsnivå specificerar AWS IoT-tjänster en omfattande uppsättning gränssnittskrav och protokoll för enhetsanslutning, autentisering och meddelandeutbyte. Trots att det följer kraven för den bredare AWS-plattformen innebär den specialiserade karaktären på IoT-miljön att även erfarna AWS-utvecklare kan ställas inför en brant inlärningskurva när de ska integrera en enhet med AWS IoT Core och förknippade AWS IoT-tjänster. Dessutom ställs utvecklare på alla erfarenhetsnivåer inför de bekanta utmaningarna i att implementera en IoT-design som uppfyller de ständiga kraven på högre prestanda, lägre strömförbrukning och högre säkerhet.

Inför de här utmaningarna erbjuder Renesas molnsats RTK5RX65N0S01000BE RX65N en färdig lösning för snabb distribuering av IIoT-enheter i AWS.

Omfattande plattform

Molnsatsen RX65N ger en fullständig referensdesign och utvecklingsplattform för att distribuera och utvärdera IIoT-enheter med AWS IoT-molntjänster. Tillsammans med ett omfattande programvaruutvecklingspaket innehåller satsen tre maskinvarukort inklusive ett målkort med en Renesas R5F565NEDDFP 32-bitars microcontroller som är certifierad för Amazon FreeRTOS, ett Wi-Fi-kort och ett Renesas Cloud Option-kort med USB-anslutningar och en uppsättning sensorer som normalt behövs i en IIoT-tillämpning.

Microcontrollern R5F565NEDDFP är baserad på Renesas RXv2 32-bitars processorkärna och ger 640 kilobyte (kbyte) RAM, 32 kbyte dataflash och 2 megabyte (Mbyte) kodflash. I den här microcontrollern kan kodflashminnet konfigureras i linjärt läge där det fungerar som ett enskilt adressutrymme eller i dubbelt läge där det fungerar som två separata minnesområden. Dubbelt läge möjliggör tillförlitligare OTA-uppdateringar (via luften) när det läser in fast programvara i en ledig bank och validerar dess integritet och autenticitet innan systemet startas om.

Tillsammans med sitt minnesstöd innehåller R5F565NEDDFP och andra medlemmar i RX65N-familjen en omfattande uppsättning funktionsblock, inklusive en IEEE-754 flytpunktsenhet (FPU) och minnesskyddsenhet (MPU). Bland de externa gränssnitten har RX65N-microcontrollers två flerkanaliga 12-bitars analog-till-digitalomvandlare (ADC), en tvåkanalig 12-bitars digital-till-analogomvandlare (DAC) och industriella kommunikationsgränssnitt inklusive Ethernet, CAN (Controller Area Network) och flera seriegränssnitt inklusive I2C, quad SPI och ett flerkanaligt seriekommunikationsgränssnitt (SCI) med stöd för I2C och SPI.

Sensormaskinvarugränssnitt

Förutom att tillhandahålla en utvärderingsplattform demonstrerar Renesas Cloud Kit den relativa lättheten i integrationen av microcontrollern RX65N med IIoT-sensorerna. I det här fallet inkluderar satsens Cloud Option-kort en uppsättning med tre sensorer:

  • Renesas ISL29035 (ISL29035IROZ-T7) digital ljussensor för mätning av omgivningsljus/infrarött ljus
  • Bosch Sensortecs BMI160 MEMS-sensor för treaxelacceleration och gyroskopisk mätning
  • Bosch Sensortecs BME680 MEMS-sensor för mätning av gas, temperatur, luftfuktighet och tryck

Eftersom alla tre sensorer har ett I2C-seriegränssnitt, är integrationen med microcontrollern bara en fråga om att ansluta enheterna till en delad I2C-buss. Cloud Option-kortets schema demonstrerar det här enkla maskinvarugränssnittet (figur 2).

Diagram över Renesas Cloud Option-korts referensdesignschema (klicka för att förstora)Figur 2: I Renesas molnsats RX65N illustrerar Renesas Cloud Option-korts referensdesignschema det enkla maskinvarugränssnitt som krävs för att ansluta dess tre sensorer till en delad I2C-seriebuss. (Bildkälla: Renesas)

Med kompatibla kontakter på Cloud Option-kortet kan utvecklarna även utöka satsens maskinvarufunktionalitet med PMOD- och Grove-tilläggskort.

Programvaruutveckling

Trots att de avancerade microcontrollers och sensorer som används i IIoT-enheter förenklar maskinvarudesignen, kan programvarudesignen vara betydligt mer komplex. Tillsammans med programvarukraven för IIoT-systemet ställs utvecklarna inför krav på gränssnitt till molnbaserade resurser som AWS IoT Core och AWS-plattformstjänster. I det här fallet tillgodoses dessa krav genom ett par AWS-programvaruutvecklingssatser (SDK:er) som är inriktade på enhets- och molntjänster.

På tillämpningsnivå interagerar IoT-programvaruutvecklare med AWS-tjänster via AWS standard-SDK. På den här nivån sker interaktioner med enheter och deras data genom samma enheter, förmedlat genom AWS meddelande- och aviseringstjänster som är gemensamma för både AWS och AWS IoT-tjänster som nämns nedan.

På enhetsnivån arbetar utvecklarna med en enhets-SDK (eller ”Sak”-SDK) för att ansluta till AWS IoT-tjänster. Specifika förfrågningar och svar mellan enheter och AWS-tjänster förmedlas via en meddelandehanterare som hanterar utbyten med ISO-standardens pub/sub-meddelandeprotokoll MQTT (Message Queuing Telemetry Transport) (figur 3).

Användningsdiagram för separata SDK:er för enheter och tillämpningarFigur 3: Implementering av IIoT-tillämpningar innefattar användning av separata SDK:er för enheter och för tillämpningar, men båda bygger på en uppsättning enhetliga, plattformstäckande mekanismer för meddelanden, aviseringar och andra underliggande funktioner. (Bildkälla: AWS)

Eftersom enheten skickar MQTT-meddelanden med datanyttolaster avfrågar en regelhanterare ytterligare AWS-plattformstjänster enligt en uppsättning uttryck som skrivits av utvecklaren med en syntax som baseras på SQL. Till exempel kan regeln som visas i lista 1 återpublicera nyttolasten som genereras av SQL-uttrycket (SELECT * FROM 'iot/test) till en annan MQTT-kö (my-mqtt-topic) om en slutledningsmodell (my-model) som anropas av Amazons maskininlärningstjänstfunktion (machinelearning_predict()) klassificerar data efter tillhörande till en specifik etikett (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" } }] } 

Lista 1: AWS-regelmotorn anropar AWS-tjänster och leder data med SQL-liknande urvalsregler, tilldelade åtgärder och förknippade metadata. (Kodkälla: AWS)

Enhetsavbildningar

AWS IoT-regelmotor har en löst kopplad bearbetningskapacitet medan AWS IoT Device Shadow-tjänst hjälper till att frånkoppla IoT-tillämpningen från IoT-enhetens hälsa. Enhetsavbildningar innehåller statusinformation om en fysisk IoT-enhet. Om en IoT-enhet tappar anslutningen eller på annat vis bryter anslutningen till AWS kan molnbaserade tjänster använda enhetsavbildningen för att fortsätta driften baserat på de senaste mottagna data utan att behöva bygga sina egna cachelagringsmekanismer för enhetsdata. Omvänt gör AWS IoT Greengrass edge-tjänsten det möjligt för IoT-enheter att fortsätta virtuell interaktion med molnet under avbrott i molntjänsterna. Här fortsätter Greengrass driften i edge-enheter för att underhålla enhetsavbildningar och tillhandahålla den nödvändiga underkategori av molntjänster som krävs för att underhålla IoT-enhetsdriften.

Trots att enhetsavbildningar håller enhetsstatusen är Device Shadow-tjänsten mer än en enkel cachelagringsmekanism. Den ger även ett gemensamt gränssnitt för tillämpningar att skicka förfrågningar till IoT-enheter. Eftersom det är kopplat till MQTT pub/sub-mekanismen leder datauppdateringar och förfrågningar till automatisk avisering till alla enheter och tillämpningar som abonnerar på MQTT-köerna som är kopplade till varje enhetsavbildning.

På implementeringsnivån använder Device Shadow-tjänsten ett enkelt JSON-dokumentformat som lagrar data och metadata som är kopplade till varje fysisk enhet. Programvara på IoT-enheten arbetar via enhetens SDK och kan överföra ett nytt JSON-dokument som uppdaterar den rapporterade statusen i enhetsavbildningen med den senaste datan. Omvänt kan en värd eller en mobilbaserad IoT-tillämpning uppdatera enhetsavbildning med nya önskade värden. Till exempel, för en IIoT-enhet som visar en grön LED-lampa eller grön lampa på en display kan en tillämpning uppdatera enhetsavbildningar för att begära en ändring till rött och till och med ta emot en rapport som visar skillnaden mellan önskade och rapporterade statusar (lista 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 } } 

Lista 2: En AWS-enhetsavbildning är ett JSON-dokument som innehåller enhetsmetadata och data, inklusive värden för både rapporterade och önskade enhetsstatusar samt skillnaden mellan de båda statusarna. (Kodkälla: AWS)

Medan tjänster som enhetsavbildningar och regelhanterare ger stöd för integration med tillämpningar och den bredare AWS-plattformen, är en central komponent i AWS IoT-tjänsten dess integrering med Amazon FreeRTOS. Det här RTOS med öppen källkod utökar den populära open source-FreeRTOS-kärnan med en omfattande uppsättning bibliotek. Tillsammans med bibliotek för vanliga tjänster som loggning, lägger Amazon FreeRTOS till bibliotek för AWS IoT-tjänster. Dessa bibliotek inkluderar AWS IoT Device Shadow, AWS IoT Greengrass (gdd) och AWS IoT Device Defender för enhetssäkerhetsövervakning. Dessutom förbättrar Amazon FreeRTOS med bibliotek för många mellanprogramtjänster, inklusive SSL-teknik, TLS (Transport Layer Security), PKCS (Public Key Cryptography Standard) #11, en OTA-agent, Bluetooth, Wi-Fi och MQTT-meddelandeutbyte.

Enkel distribuering

Renesas hjälper utvecklarna att få erfarenhet snabbt med sin molnsats och anslutningar med AWS IoT-tjänster. Efter att ha installerat Cloud Kit-kortsatsen måste användarna installera den Renesas Eclipse-baserade e2 studio-integrerade utvecklingsmiljön (IDE) och Renesas CC-RX-kompileraren. Med e2 studio och CC-RX-kompileraren kan utvecklarna snabbt importera och kompilera Amazon FreeRTOS samt Renesas öppenkällkod RX65N Cloud Kit exempelkod.

Renesas tillhandahåller förknippad dokumentation som ger en steg för steg-beskrivning för att konfigurera AWS IoT och autentiseringsuppgifter som krävs för att upprätta en anslutning till AWS. Efter den här relativt snabba installationsproceduren måste demonstrationsprogrammet köras för att övervaka sensordata som skickas av enheten som MQTT-meddelanden och visa meddelandena med en MQTT-displayklient som är tillgänglig via AWS IoT-konsolen.

Anpassad programvaruutveckling

Förutom att tillhandahålla en omedelbar demonstration av IoT-enhetsintegrationen med AWS IoT, fungerar Renesas-exempelkoden som referensdesign för anpassade tillämpningar. Även med den här kodtillgängligheten är en av utmaningarna som utvecklarna ställs inför i anpassade projekt att hantera det stora antalet konfigurationer som är förknippade med Amazon FreeRTOS och de relaterade AWS IoT-tjänsterna. Varje tjänst kräver specifikation av många förknippade parametrar som kölängder och meddelandestorlekar.

Trots att Renesas-exempelkoden inkluderar förbyggda FreeRTOS-konfigurationer för sina demonstrationer måste utvecklare av anpassad kod arbeta igenom konfigurationsalternativ för varje tjänst, bibliotek och tillbehör. Renesas tog fram Smart Configurator för att förenkla processen. Smart Configurator finns som både e2 studio-insticksprogram och fristående applikation och gör det möjligt för utvecklarna att undersöka och modifiera inställningar för varje konfigurationsgrupp genom ett grafiskt användargränssnitt (GUI) (figur 4).

Bild på Renesas Smart Configurator (klicka för att förstora)Figur 4: Renesas Smart Configurator har ett enkelt GUI för att undersöka och modifiera de många konfigurationsinställningar som är förknippade med de många biblioteken och tjänsterna som stöds i Amazon FreeRTOS. (Bildkälla: Renesas)

För koden kan utvecklarna dra nytta av hela källan som tillhandahålls i Renesas RX65N Cloud Kits kodcentrallager. Exempelrutinerna i det här lagret demonstrerar grundläggande konstruktionsmönster för arbete med varje AWS IoT-tjänst via de MQTT-baserade meddelandemekanismerna.

För att demonstrera AWS IoT Device Shadow-tjänst, till exempel, illustrerar en ingående modul (aws_shadow_lightbulb_on_off.c) och förknippade rubrikfiler hur programvara som körs på IoT-enheten skapar JSON-dokument, initierar köer och skickar enhetsuppdateringsmeddelanden till Device Shadow-tjänsten. Även om den fullständiga programvaruarkitekturen är relativt invecklad visar den här exempelmodulen hur en grundläggande datastruktur och några kodrader kan användas för att ändra färgen på en lampa (rapporterad färg grön i JSON-dokumentet som visas i lista 1) genom att ställa in den aktuella skuggenhetens JSON-dokumentattribut på den nya färgen (önskad färg röd i lista 1). Efter att ha initierat enhetsavbildningen skapar koden en uppgift som växlar den önskade färgen mellan två statusar (röd och grön) genom att utfärda en begäran om ny önskad status med funktionen prvGenerateDesiredJSON() för att generera det nya JSON-dokumentet med den alternativa färgstatusen (lista 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 ); } 

Lista 3: Det här kodutdraget i kodcentrallagret för Renesas RX65N Cloud Kit demonstrerar det grundläggande designmönstret för att använda ett JSON-dokument som definieras i shadowDemoDESIRED_JSON och instansieras med funktionen prvGenerateDesiredJSON() för att modifiera den önskade statusen för en enhetsavbildning med en uppdateringskö. (Kodkälla: Renesas)

Slutsats

Med sin breda uppsättning tjänster är en kommersiell molntjänst som AWS en attraktiv plattform för utvecklare som bygger stora IIoT-tillämpningar, särskilt de som måste arbeta med andra företagstillämpningar. För utvecklare leder dock hanteringen av både IoT-enhetsdesign och molnintegreringsutmaningar ofta till oförutsedda fördröjningar i utveckling och distribuering.

Renesas RX65N Cloud Kit bygger på Renesas RX65N-microcontroller och tillhandahåller en komplett IIoT-sensorenhet och referensdesign. I kombination med sitt programvarupaket ger Renesas Cloud Kit en flexibel och snabb utvecklingsplattform för att implementera sensorbaserade IIoT-enheter för integrering med AWS.

DigiKey logo

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.

Om skribenten

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk har arbetat i mer än 20 år med att skriva för och om elektronikbranschen inom många olika områden som maskinvara, programvara, system och applikationer – inklusive sakernas internet. Han har en kandidatexameni neurovetenskap om artificiella neuronnät och har arbetat inom rymdfartsindustrin med mycket distribuerade säkra system och metoder för acceleration av algoritmer. När han inte skriver artiklar om teknik och konstruktion arbetar han med applikationer för djupinlärning för igenkänningssystem och rekommendationssystem.

Om utgivaren

DigiKeys nordamerikanska redaktörer