Amazon Web Services에서 센서 기반 산업 강도 IoT 장치를 빠르게 배포
DigiKey 북미 편집자 제공
2019-10-02
산업용 사물 인터넷(IIoT)을 위한 종단점 장치는 클라우드 기반 리소스와 산업 공정 사이의 필수 인터페이스를 제공합니다. 하지만 주변 장치를 클라우드와 연결할 때 IIoT 장치는 장치 내부와 장치와 클라우드 사이의 성능, 연결, 센서 통합, 보안 및 안정성 강화 요구 사항을 갖춰야 합니다.
Amazon IoT Core, Amazon FreeRTOS 등 특수 서비스를 활용하면 클라우드 측면에서 핵심 요구 사항을 충족하는 데 도움이 됩니다. 하지만 클라우드 서비스에 입문한지 얼마되지 않았고 다양한 인터페이스와 프로토콜에 적응되지 않은 IIoT 개발자의 경우 이러한 서비스를 장치에 연결하는 것을 복잡하게 느낄 수 있습니다. 그렇다 하더라도 개발자는 에지 응용 제품 감지 및 처리 요구 사항과 비용, 전력, 성능 및 공간 제약 조건에 대처해야 합니다.
이 기사에서는 클라우드 기반 리소스의 용도와 진화 과정을 간략하게 설명하고, Renesas의 RX65N 마이크로 컨트롤러를 기반으로 하는 완전한 클라우드 키트를 소개합니다. 그런 다음 이 마이크로 컨트롤러 및 참조 설계를 관련 소프트웨어 패키지와 함께 사용하여 Amazon Web Services(AWS) 클라우드와의 통합을 위해 센서 기반 IIoT 장치를 빠르게 구현할 수 있는 방법을 보여줍니다.
클라우드 리소스 활용
다른 클라우드 서비스 제공업체들이 서서히 따라잡고 있긴 하지만 AWS는 클라우드 기반 확장형 서버리스 및 서버 기반 컴퓨팅, 스토리지 및 SaaS(서비스로서의 소프트웨어) 제품을 선도하는 공급업체입니다. 조직에서는 일반적으로 수요 변화에 따라 확장시킬 수 있는 엔터프라이즈급 응용 분야에서 이러한 서비스를 이용하며, 광범위한 SaaS 패키지 어레이를 활용합니다. 모든 기능은 플랫폼 차원의 균일한 미들웨어 서비스를 통해 통신, 알림, 보안, 데이터 스토리지 및 모든 실제 컴퓨팅 요구 사항에 맞게 조정됩니다.
엔터프라이즈 기업의 경우 대규모 IoT 애플리케이션을 배포하고, 서비스를 활용하여 차량, 장비, 빌딩, 제조 공장 등에서 IIoT 데이터 분석을 통해 통찰력을 높이고 물리적 자산, 공정 및 방법을 제어할 수 있다는 분명한 이점이 있습니다. 하지만 개발자의 경우 리소스 제약이 있는 주변 장치의 실시간 IoT 설계와 클라우드의 확장 가능한 가상 서비스 사이의 분명한 격차로 인해 IIoT 장치를 AWS 또는 다른 클라우드 서비스로 연결하는 공정이 명확하지 않을 수 있습니다.
이러한 격차를 해소하기 위해 주요 클라우드 서비스 제공업체에서는 IoT 장치와 클라우드 서비스 간의 광범위한 차이를 조정하기 위해 고안된 다양한 연결 기능을 제공합니다. AWS의 경우 데이터 스토리지, 분석, 시각화 및 기계 학습을 위한 IoT 특정 응용 제품 레벨 서비스뿐 아니라 전체 AWS 플랫폼에 대해서도 게이트웨이 역할을 하는 AWS IoT Core에 이러한 기능이 포함되어 있습니다(그림 1).
그림 1: AWS IoT는 여기서 추천하는 기업 차량 관리 등 산업 응용 분야의 센서 데이터를 분석하는 데 사용되는 서비스의 광범위한 AWS 플랫폼을 제공하며, 현장의 IIoT 센서 사이에 서비스 인터페이스를 제공합니다. (이미지 출처: AWS)
이러한 기능 외에도 FreeRTOS 오픈 소스 실시간 운영 체제(RTOS)를 AWS IoT와 통합하여 시스템 업데이트 및 유지 보수에 대한 수명 주기 요구 사항을 처리하는 데 중요한 이점을 제공합니다.
다른 엔터프라이즈급 제품과 마찬가지로 AWS IoT 서비스는 장치 기판 실장, 인증, 메시지 교환을 위한 포괄적인 인터페이스 요구 사항 및 프로토콜을 지정합니다. 광범위한 AWS 플랫폼에 대한 요구 사항을 충족하지만 IoT 환경의 특수한 특성으로 인해 숙련된 AWS 개발자라도 AWS IoT Core 및 관련 AWS IoT 서비스와 장치를 통합하는 방법을 학습하는 데 많은 시간이 소요될 수 있습니다. 또한 숙련도에 상관없이 모든 개발자는 성능 향상, 전력 소비 감소, 보안 향상에 대한 지속적인 요구를 충족하도록 IoT 설계를 구현해야 하는 과제를 안고 있습니다.
이 과제를 해결하기 위해 Renesas의 RTK5RX65N0S01000BE RX65N 클라우드 키트는 AWS에서 IIoT 장치를 빠르게 배포할 수 있도록 준비된 솔루션을 제공합니다.
포괄적인 플랫폼
RX65N 클라우드 키트는 AWS IoT 클라우드 서비스를 통해 IIoT 장치를 배포하고 평가하는 완벽한 참조 설계 및 개발 플랫폼을 제공합니다. 포괄적인 소프트웨어 개발 패키지와 함께 이 키트에는 Amazon FreeRTOS용으로 인증된 Renesas R5F565NEDDFP 32비트 마이크로 컨트롤러가 실장된 대상 기판, Wi-Fi 기판, 일반적인 IIoT 응용 분야에 필요한 센서와 USB 연결부가 있는 Renesas 클라우드 옵션 기판의 세 가지 하드웨어 기판이 있습니다.
Renesas RXv2 32비트 프로세서 코어를 기반으로 하는 R5F565NEDDFP 마이크로 컨트롤러는 640Kb RAM, 32Kb 데이터 플래시 및 2Mb 코드 플래시를 제공합니다. 이 마이크로 컨트롤러에서 단일 주소 공간으로 작동하는 선형 모드 또는 두 개의 개별 메모리 영역으로 작동하는 이중 모드에서 코드 플래시 메모리를 구성할 수 있습니다. 이중 모드에서는 새 펌웨어를 비어 있는 뱅크로 로드하여 무결성과 인증을 검증한 후 시스템을 재부팅하므로 더 안정적인 무선(OTA) 업데이트가 가능합니다.
메모리 지원과 함께 RX65N 제품군의 다른 제품 및 R5F565NEDDFP는 IEEE-754 부동 소수점 처리 장치(FPU) 및 메모리 보호 장치(MPU)를 비롯한 확장 기능 블록 세트를 통합합니다. 외부 인터페이스 중 RX65N 마이크로 컨트롤러에는 다중 채널 12비트 아날로그 디지털 컨버터(ADC) 2개, 2채널 12비트 디지털 아날로그 컨버터(DAC), 산업용 통신 인터페이스(이더넷, 계측 제어기 통신망(CAN) 등), 여러 직렬 인터페이스(I2C, quad SPI 등), I2C 및 SPI를 지원하는 다중 채널 직렬 통신 인터페이스(SCI)가 포함되어 있습니다.
센서 하드웨어 인터페이스
평가 플랫폼을 제공하는 외에도 Renesas 클라우드 키트는 상대적으로 쉽게 RX65N 마이크로 컨트롤러를 IIoT 센서와 통합할 수 있습니다. 이 경우 키트의 클라우드 옵션 기판에는 다음과 같은 3조 1세트의 센서가 포함되어 있습니다.
- 주변 조명/적외선 조명 관리를 위한 Renesas의 ISL29035(ISL29035IROZ-T7) 디지털 광센서
- 3축 가속 및 자이로스코프 측정을 위한 Bosch Sensortec의 BMI160 MEMS 센서
- 가스, 온도, 습도 및 압력 측정을 위한 Bosch Sensortec의 BME680 MEMS 센서
세 가지 센서는 모두 I2C 직렬 인터페이스를 제공하므로 장치를 공유 I2C 버스에 연결하여 마이크로 컨트롤러와 간단히 통합할 수 있습니다. 클라우드 옵션 기판 회로도는 다음과 같은 간단한 하드웨어 인터페이스를 보여줍니다(그림 2).
그림 2: Renesas RX65N 클라우드 키트에 포함된 Renesas 클라우드 옵션 기판 참조 설계 회로도는 세 개의 센서를 공유 I2C 직렬 버스에 연결하는 데 필요한 간단한 하드웨어 인터페이스를 보여줍니다. (이미지 출처: Renesas)
클라우드 옵션 기판에 사용 가능한 호환되는 커넥터를 사용하여 개발자는 PMOD 및 Grove 애드온 기판을 통해 키트의 하드웨어 기능을 확장할 수도 있습니다.
소프트웨어 개발
IIoT 장치에 고급 마이크로 컨트롤러 및 센서를 사용하면 하드웨어 설계를 간소화할 수 있지만, 소프트웨어 설계는 훨씬 더 복잡해질 수 있습니다. IIoT 시스템에 대한 소프트웨어 요구 사항과 함께 개발자는 AWS IoT Core 및 AWS 플랫폼 서비스와 같은 클라우드 기반 리소스를 연결해야 합니다. 이 경우 AWS 소프트웨어 개발 키트(SDK) 대상 장치 및 클라우드 서비스 쌍을 통해 이러한 요구 사항을 해결할 수 있습니다.
응용 제품 수준에서 IoT 소프트웨어 개발자는 표준 AWS SDK를 통해 AWS 서비스와 연동합니다. 이 수준에서 장치 및 데이터 상호 작용은 동일한 서비스를 통해 이루어지며, 아래 언급한 대로 AWS와 AWS IoT 서비스 모두에 공통적인 AWS 메시징 및 알림 서비스에 의해 조정됩니다.
장치 수준에서 개발자는 장치(또는 “사물”) SDK를 사용하여 AWS IoT 서비스에 연결합니다. 장치와 AWS 서비스 사이의 특정 요청과 응답은 ISO 표준 게시-구독(pub/sub) 메시징 프로토콜 MQTT(메시지 대기열 원격 측정 전송)를 사용하여 상호 교환을 관리하는 메시지 브로커에 의해 조정됩니다(그림 3).
그림 3: IIoT 응용 제품을 구현할 때 장치와 응용 제품에 대해 별도의 SDK를 사용하지만, 메시징, 알림 및 기타 기본 기능에는 모두 플랫폼 차원의 균일한 메커니즘이 사용됩니다. (이미지 출처: AWS)
장치에서 데이터 페이로드를 통해 MQTT 메시지를 보내면 규칙 엔진은 구조적 쿼리 언어(SQL) 기반 구문으로 개발자가 작성한 표현식에 따라 추가 AWS 플랫폼 서비스를 호출합니다. 예를 들어 목록 1에 표시된 규칙에서는 Amazon 기계 학습 서비스 함수(machinelearning_predict())에 의해 호출되는 유추 모델(my-model)이 일부 특정 레이블(predictedLabel=1)에 따라 데이터를 분류하는 경우 SQL 식(SELECT * FROM 'iot/test)에 의해 생성되는 페이로드를 다른 MQTT 대기열(my-mqtt-topic)에 다시 게시할 수 있습니다.
복사 { "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" } }] }
목록 1: AWS 규칙 엔진은 AWS 서비스를 호출하고 SQL과 유사한 선택 규칙, 지정된 작업 및 연결된 메타데이터를 사용하여 데이터를 라우팅합니다. (코드 출처: AWS)
장치 섀도
AWS IoT 규칙 엔진은 느슨하게 결합된 처리 기능을 제공하지만, AWS IoT 장치 섀도 서비스를 활용하면 IoT 장치 상태에서 IoT 응용 제품을 분리할 수 있습니다. 장치 섀도는 물리적 IoT 장치에 대한 상태 정보를 보관합니다. 따라서 IoT 장치에서 AWS 연결이 끊어지거나 연결이 차단될 경우 클라우드 기반 서비스에서는 자체 장치 데이터 캐싱 메커니즘을 구축할 필요 없이 장치 섀도를 사용하여 마지막 수신된 데이터를 기반으로 하여 작동을 계속할 수 있습니다. 반면에 AWS IoT Greengrass 에지 서비스를 사용하면 클라우드 서비스에서 간헐적으로 차단이 발생할 때 IoT 장치에서 클라우드와 가상으로 상호 작용할 수 있습니다. 여기서 Greengrass는 에지 장치에서 계속 작동하여 장치 섀도를 유지하고 IoT 장치 작동을 유지하는 데 필요한 클라우드 서비스를 제공합니다.
장치 섀도가 장치 상태를 유지하기는 하지만 장치 섀도 서비스는 단순한 캐싱 메커니즘 그 이상입니다. 또한 장치 섀도 서비스는 응용 제품에서 IoT 장치에 요청을 보내는 데 사용되는 공통 인터페이스를 제공합니다. 장치 섀도는 MQTT 게시/구독 메커니즘에 연결되므로 데이터를 업데이트하거나 요청하면 각 장치 섀도에 연결된 MQTT 대기열을 구독하는 모든 장치 및 응용 제품에 대한 자동 알림이 생성됩니다.
구현 수준에서 장치 섀도 서비스는 각 물리적 장치에 연결된 데이터 및 메타데이터를 보관하는 단순 JSON 문서 형식을 사용합니다. 장치 SDK를 통해 작동하는 IoT 장치의 소프트웨어는 장치 섀도에 보고된 상태를 최신 데이터로 업데이트하는 새 JSON 문서를 전송할 수 있습니다. 반면에 호스트 또는 모바일 기반 IoT 응용 제품은 장치 섀도를 원하는 새 값으로 업데이트할 수 있습니다. 예를 들어, IIoT 장치가 디스플레이에 현재 녹색 LED 또는 녹색 조명을 표시하는 경우 응용 제품은 장치 섀도를 업데이트하여 빨간색으로 변경하도록 요청하고 원하는 상태와 보고된 상태 사이의 델타를 보여주는 보고서를 수신할 수 있습니다(목록 2).
복사 { "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 } }
목록 2: AWS 장치 섀도는 보고된 장치 상태와 원하는 장치 상태 모두에 대한 값과 두 상태 사이의 델타를 비롯한 장치 메타데이터 및 데이터가 들어 있는 JSON 문서입니다. (코드 출처: AWS)
장치 섀도, 규칙 엔진과 같은 서비스는 응용 제품 및 광범위한 AWS 플랫폼과의 통합을 지원하지만 AWS IoT 서비스의 핵심 요소는 Amazon FreeRTOS의 통합입니다. 이 오픈 소스 RTOS는 포괄적인 라이브러리를 통해 널리 사용되는 오픈 소스 FreeRTOS 커널을 확장합니다. 일반 서비스(예: 로깅)를 위한 라이브러리와 함께 Amazon FreeRTOS는 AWS IoT 서비스를 위한 라이브러리를 추가합니다. 이러한 라이브러리는 장치 보안 모니터링을 위한 AWS IoT 장치 섀도, AWS IoT Greengrass(gdd) 및 AWS IoT Device Defender를 포함합니다. 또한 Amazon은 보안 소켓, TLS(전송 계층 보안), PKCS(공개 키 보안 표준) #11, OTA 에이전트, Bluetooth, Wi-Fi, MQTT 메시지 교환을 비롯한 다양한 미들웨어 서비스용 라이브러리를 통해 FreeRTOS를 개선합니다.
간단한 배포
Renesas는 클라우드 키트와 AWS IoT 서비스 연결을 통해 개발자가 빠르게 경험을 쌓을 수 있도록 도와줍니다. 클라우드 키트 기판 세트를 설정한 후 사용자는 Renesas Eclipse 기반 e2 studio 통합 개발 환경(IDE) 및 Renesas CC-RX 컴파일러를 설치해야 합니다. e2 studio 및 CC-RX 컴파일러를 사용하여 개발자는 Amazon FreeRTOS 및 Renesas 오픈 소스 RX65N 클라우드 키트 샘플 코드를 빠르게 가져와서 컴파일할 수 있습니다.
Renesas는 AWS IoT를 설정하는 단계별 설명과 AWS에 연결하는 데 필요한 인증 자격 증명을 제공하는 연결된 설명서를 제공합니다. 상대적으로 빠른 이 설정 절차를 마친 후 데모 프로그램을 실행하여 장치에서 MQTT 메시지로 보낸 센서 데이터를 모니터링하고 AWS IoT 콘솔을 통해 제공되는 MQTT 디스플레이 클라이언트를 사용하여 메시지를 확인합니다.
맞춤형 소프트웨어 개발
IoT 장치와 AWS IoT 간의 통합을 보여주는 데모 외에도 Renesas 샘플 코드는 맞춤형 응용 제품에 대한 참조 설계 역할도 합니다. 이 코드가 제공되더라도 개발자는 맞춤형 프로젝트에서 Amazon FreeRTOS 및 관련 AWS IoT 서비스와 관련하여 많은 구성을 처리해야 하는 과제를 안고 있습니다. 각 서비스에서는 대기열 길이, 메시지 크기 등과 같은 많은 관련 파라미터를 지정해야 합니다.
Renesas 샘플 코드는 데모용으로 사전 빌드된 FreeRTOS 구성을 포함하지만 맞춤형 코드 개발자는 각 서비스, 라이브러리 및 유틸리티에 맞는 구성 옵션으로 작업해야 합니다. Renesas는 이 공정을 간소화하기 위해 스마트 구성기를 개발했습니다. e2 studio 플러그인과 독립형 응용 제품으로 모두 사용 가능한 스마트 구성기를 사용하면 개발자가 그래픽 사용자 인터페이스(GUI)를 통해 각 구성 그룹에 대한 설정을 검사 및 수정할 수 있습니다(그림 4).
그림 4: Renesas 스마트 구성기는 Amazon FreeRTOS에서 지원되는 많은 라이브러리 및 서비스와 연결된 다양한 구성 설정을 검사 및 수정하는 데 사용되는 간단한 GUI를 제공합니다. (이미지 출처: Renesas)
코드에서 개발자는 Renesas RX65N 클라우드 키트 코드 리포지토리에 제공된 전체 소스를 활용할 수 있습니다. 이 리포지토리에 포함된 샘플 루틴은 MQTT 기반 메시징 메커니즘을 통한 AWS IoT 서비스 작업을 위한 주요 설계 패턴을 보여줍니다.
예를 들어 AWS IoT 장치 섀도 서비스를 시연하기 위해 포함된 모듈(aws_shadow_lightbulb_on_off.c) 및 연결된 헤더 파일에서는 IoT 장치에서 실행 중인 소프트웨어가 JSON 문서를 생성하고, 대기열을 초기화하고, 장치 업데이트 메시지를 장치 섀도 서비스에 전송하는 방법을 보여줍니다. 전체 소프트웨어 아키텍처가 포함되어 있지만 이 샘플 모듈은 기본 데이터 구조와 몇 줄의 코드를 통해 적절한 섀도 장치 JSON 문서 속성을 새로운 색(목록 1에 필요한 색: 빨간색)으로 설정하여 표시등의 색(목록 1에 표시된 JSON 문서에 보고된 색: 녹색)을 변경하는 방법을 보여줍니다. 장치 섀도를 초기화한 후 이 코드에서는 prvGenerateDesiredJSON() 함수를 사용하여 대체 색상 상태로 새 JSON 문서를 생성하도록 요구하는 원하는 새 상태 요청을 실행하여 두 상태(빨간색 및 녹색) 간에 원하는 색상을 대체하는 작업을 생성합니다(목록 3).
복사
#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 );
}
목록 3: Renesas RX65N 클라우드 키트 코드 리포지토리의 이 샘플 코드 조각은 shadowDemoDESIRED_JSON에 정의되고 prvGenerateDesiredJSON() 함수에 의해 인스턴스화되는 JSON 문서를 사용하여 업데이트 대기열에서 장치 섀도의 원하는 상태를 수정하는 기본 설계 패턴을 보여줍니다. (코드 출처: Renesas)
결론
광범위한 제품과 함께 상업용 클라우드 서비스(예: AWS)는 대규모 IIoT 응용 제품을 빌드하려는 개발자, 특히 다른 엔터프라이즈 응용 제품으로 작업해야 하는 개발자에게 매력적인 플랫폼입니다. 하지만 IoT 장치 설계와 클라우드 통합 문제를 모두 처리해야 하는 개발자의 경우 개발 및 배포 과정에서 예기치 못한 지연이 발생할 수 있습니다.
Renesas RX65N 마이크로 컨트롤러를 기반으로 하는 Renesas RX65N 클라우드 키트는 완벽한 IIoT 센서 장치 및 참조 설계를 제공합니다. 연결된 소프트웨어 패키지와 함께 사용되는 Renesas 클라우드 키트는 AWS 통합을 위해 센서 기반 IIoT 장치를 구현하는 유연하고 빠른 개발 플랫폼을 제공합니다.
면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.


