빠른 시작 플랫폼을 사용하여 센서-클라우드 연결 가속화

DigiKey 북미 편집자 제공

센서는 사물 인터넷(IoT)의 눈과 귀로서 분석 및 빅데이터 응용 분야에서 사용자가 지능적인 결정을 내리는 데 도움이 되는 정보를 제공합니다. 다양한 방법으로 여러 무선 센서를 연결하여 분석을 수행할 수 있지만 클라우드에 연결하는 일은 여전히 어려운 작업입니다. 공간, 전력, 비용 등과 관련된 경우에는 특히 까다로우며, 강력한 보안을 유지하면서 모든 센서를 프로비저닝하고 관리하는 작업과 관련된 경우에도 많은 어려움이 있습니다.

개발 주기를 단축하기 위해 센서 노드 개발을 클라우드 연결과 결합하는 개발 키트가 있습니다. 클라우드 서비스를 최종 사용자 환경과 통합하는 방법에 대한 구조적 결정(시스템에서 수행할 조치, 장치의 특정 기능이 트리거되는 이유 등)을 내릴 필요 없이 개발자는 “즉시 사용 가능한” 이 키트를 사용하여 센서 지원 설계를 상대적으로 빠르게 실행할 수 있습니다.

이 기사에서는 선택한 응용 분야에서 특수 기능을 구현하는 데 필요한 부품을 통합하는 STMicroelectronics의 STM32 Nucleo 기판 및 X-NUCLEO 확장 기판에 대해 소개합니다. 또한 FP-CLD-BLUEMIX1 확장 소프트웨어 패키지를 사용하여 Nucleo 센서 노드를 플래시하고 Nucleo 기판을 IBM Watson IoT Cloud 플랫폼에 간단하게 연결할 수 있는 방법을 보여 줍니다.1

Nucleo 플랫폼 및 소프트웨어

STM32 Nucleo 기판은 엔지니어가 새로운 개념을 시험해 보고 STMicroelectronics STM32 마이크로 컨트롤러를 통해 시제품을 만들 수 있는 유연한 방법을 제공합니다. 기판에는 모든 Nucleo 기판에 공통된 확장 헤더가 있으므로 확장 모듈을 쉽게 추가할 수 있습니다.

Nucleo 기판은 개방형 에코시스템의 일부로 Arduino를 지원하여 ST-LINK/V2-1 디버거/프로그래머를 통합하므로 별도의 프로브가 필요하지 않습니다. 또한 STM32 소프트웨어 라이브러리와 다양한 소프트웨어 예제 패키지가 함께 제공됩니다.

Arduino를 비롯한 다양한 차폐 장치를 사용할 수 있습니다. STMicroelectronics의 Morpho 헤더를 사용하는 기판은 RF, 산업, 가정 자동화용 차폐를 비롯한 모든 응용 분야 유형에서 차폐를 위한 확장성을 지원합니다. Bluetooth LE, Wi-Fi 및 시청각 응용 분야에 대한 차폐도 사용할 수 있습니다.

설계자가 Nucleo 기판을 평가하여 시작할 수 있도록 라이브러리 지원에는 STM32에 대한 표준 라이브러리뿐 아니라 운영 체제, 도구 및 개발자 에코시스템을 제공하는 IoT 장치 플랫폼인 ARM®의 무료 온라인 mbed에 대한 지원도 포함됩니다.

센서를 클라우드에 연결하도록 돕기 위해 STMicroelectronics에서는 FP-CLD-BLUEMIX1을 제공합니다. 이 제품은 STM32 마이크로 컨트롤러에서 실행되고 STMicroelectronics 웹 사이트에서 검색 가능한 STM32Cube에 대한 IoT 노드 확장 소프트웨어 패키지입니다.2 STM32Cube의 주요 목표는 응용 제품 개발 프로세스를 간소화하는 데 있습니다. 이를 위해 STM32Cube는 STM32CubeMX 및 STM32Cube 내장형 소프트웨어 라이브러리(그림 1)로 구성됩니다.

STMicroelectronics의 FP-CLD-BLUEMIX1 전체 미들웨어 그림

FP-CLD-BLUEMIX1은 Wi-Fi 연결을 기반으로 응용 제품을 빌드할 수 있는 전체 미들웨어를 제공하며 STM32 Nucleo 기판을 클라우드 기반 서비스와 연결합니다. (그림: STMicroelectronics)

STM32CubeMX는 그래픽 사용자 인터페이스에서 STM32 MCU에 대한 초기화 C 코드를 생성합니다. 또한 STM32MX에서는 IDE 지원 프로젝트를 생성하고, 전력 소비 계산기를 제공하고, st.com에서 STM32Cube 내장형 소프트웨어 라이브러리를 직접 가져올 수 있습니다.

STM32Cube 내장형 소프트웨어 패키지는 STM32 제품 계열당 하나씩 존재합니다. 이 내장형 소프트웨어 라이브러리는 STM32 주변 장치를 위한 하드웨어 추상화 계층(HAL)과 저계층(LL) API(Application Programming Interface), STMicroelectronics 개발 부품 또는 오픈 소스 부품을 기반으로 하는 미들웨어 세트(RTOS, USB, TCP/IP, 그래픽 등)로 구성됩니다. 초기화 코드, 미들웨어 부품, HAL 및 LL API는 모든 STM32 컴파일러와 호환됩니다.

FP-CLD-BLUEMIX1 패키지는 Wi-Fi, NFC 및 센서 확장 기판을 위한 기판 지원 패키지(BSP)를 제공하여 STM32Cube를 확장합니다. 이 패키지의 역할은 IBM Bluemix Cloud에 연결하여 센서 데이터를 송신하고 Cloud 응용 제품에서 명령을 수신할 수 있도록 하는 것입니다. 또한 개발자가 설계를 차별화하는 데 집중할 수 있도록 종단 간 IoT 개발을 기본적으로 점프 스타트합니다.

센서 연결

Nucleo 기판의 온도 및 습도 센서(HTS221), 압력 센서(LPS25HB), 동작 센서(LIS3MDLLSM6DS0)에 액세스하고 RFID/NFC 태그를 읽고 쓸 수 있도록 소프트웨어 인터페이스가 제공됩니다. X-NUCLEO-IKS01A1은 이러한 모든 센서를 통합합니다(그림 2).

STMicroelectronics의 X-NUCLEO-IKS01A1 MEMS 및 환경 센서 평가 기판 그림

그림 2: X-NUCLEO-IKS01A1은 동작 MEMS 및 환경 센서 평가 기판 시스템입니다. (그림: STMicroelectronics)

IKS01A1은 Arduino UNO R3 커넥터 레이아웃과 호환되며, STMicroelectronics의 LSM6DS0 3축 가속도계 + 3축 자이로스코프, LIS3MDL 3축 자력계, HTS221 습도 및 온도 센서, LPS25HB 압력 센서를 기반으로 설계되었습니다.

또한 STM32 Nucleo 기판과 IBM의 Bluemix Cloud 서비스 간의 상호 작용을 간소화하기 위해 MQTT(MQ Telemetry Transport) 프로토콜을 구현하는 미들웨어 패키지를 포함합니다. 소프트웨어에는 센서 데이터를 시각화하고 IBM Bluemix를 통해 장치를 제어하는 방법을 보여주는 예제가 포함되어 있습니다.

IBM Watson IoT 플랫폼 연결을 실험하기 위한 샘플 응용 제품은 미들웨어 스택의 맨 위에 제공되며, 종단 간 IoT 응용 제품의 시제품을 만드는 데 사용됩니다. STM32 Nucleo 마이크로 시스템을 IBM Bluemix Cloud 서비스에 등록한 후 실시간 센서 데이터를 송신하는 데 사용할 수 있습니다. NFC 동적 태그 덕분에 사용자는 IBM에서 제공하는 평가 웹 페이지를 자동으로 열고 STM32 Nucleo 기판의 모든 센서에서 생성되는 데이터를 시각화할 수 있습니다.

STM32 Nucleo 마이크로 시스템을 IBM의 Bluemix 클라우드와 연결하기 위해 STMicroelectronics에서는 MQTT 응용 제품 수준 네트워크 프로토콜의 오픈 소스 구현을 이식했습니다. MQTT는 네트워크 대역폭이 제한된 작은 코드 실장 면적의 원격 장치를 연결하는 데 유용한 M2M(Machine-to-Machine) IoT 연결 프로토콜입니다. 메시징 프로토콜은 가벼워서 전력이 절약되므로 내장형 시스템에서 센서 데이터를 원격 측정 및 구현하는 데 적합합니다. FP-CLD-BLUEMIX1에서는 MQTT가 STM32 패키지에 미들웨어 라이브러리로 통합됩니다.

X-NUCLEO-IKS01A1, X-NUCLEO-IDW01M1XNUCLEO-NFC01A1 확장 기판을 NUCLEO-F401RE 기판과 함께 사용하는 샘플 응용 제품은 기능 팩으로 제공됩니다. 이 응용 제품은 온도, 습도, 압력, 가속도계, 자력계 및 자이로스코프 센서에서 데이터 값을 읽은 다음 Wi-Fi를 통해 IBM Bluemix에 송신합니다.

이 응용 제품은 기본적으로 데이터 시각화를 위해서만 Quickstart 모드에서 실행하도록 구성됩니다. 하지만 IBM Bluemix에서 장치를 등록 및 제어하기 위해 쉽게 수정할 수 있습니다(IBM Bluemix 계정 필요).

IBM Bluemix에 등록

STM32 Nucleo 마이크로 시스템을 IBM Bluemix Cloud 서비스에 등록하여 종단 간 IoT 응용 제품에 대한 시제품을 만들고 실시간 센서 데이터 송신을 시작하는 데 사용할 수 있습니다.

시작하려면 Bluemix에 로그인하거나 Bluemix 계정을 만듭니다. 자세한 지침은 참고 자료 1을 참조하세요. 등록 절차 중에 아래와 같은 다양한 속성 및 파라미터를 제공해야 합니다.

조직 ID(예: “1w8a05”).

장치 유형(예: “stm32_nucleo”).

UM2007 FP-CLD-BLUEMIX1 소프트웨어 설명

DocID028875 Rev 2 13/23

인증 방법(“use-token-auth”만 지원됨)

인증 토큰(예: “uUURNRbeQQaX+Fvi&8”)

IBM_Bluemix_Config.c 소스 코드 파일에 있는 Config_MQTT_IBM 함수에 장치 속성을 복사합니다. 이 파일은 FP-CLD-BLUEMIX1 소프트웨어 패키지 내의 Projects/Multi/Applications/MQTT_IBM/Src 폴더에 있습니다.

그런 다음 ibm_mode 변수를 아래(코드 목록)와 같이 “REGISTERED”로 설정해야 합니다.

Void Config_MQTT_IBM (MQTT_vars * mqtt_ibm_setup , uint8_t  *macadd):

/* Default Configuration for QUICKSTART. REGISTERED mode requires account on Bluemix */

mqtt_ibm_setup->ibm_mode = REGISTERED

그런 다음 IBM Bluemix에 제공된 장치 속성을 IBM_Bluemix_Config.c 소스 코드 파일에 있는 Config_MQTT_IBM 함수에 복사해야 합니다. 이 파일은 Projects/Multi/Applications/MQTT_IBM/Src 폴더에 있습니다.

아래로 중간쯤에 다음과 같이 표시됩니다.

Copy

/* REGISTERED DEVICE */

/* Need to be customized */

The fourth through eighth line will look like this when completed:

strcpy ((char*)mqtt_ibm_setup->username,”use-token-auth); //customize

strcpy ((char*)mqtt_ibm_setup->password,” uUURNRbeQQax+Fvit&8”);

strcpy ((char*)mqtt_ibm_setup->hostname,”1w8a05.messaging.internetofthings.ibmcloud.com);

strcpy ((char*)mqtt_ibm_setup->device_type, “stm32_nucleo”);

strcpy ((char*)mqtt_ibm_setup->org_id, “1w8a05”);

코드 목록: IBM 장치 등록 및 속성 삽입 요구 사항. 등록 후 STM32 Nucleo 기반 마이크로 시스템에서 IBM Watson IoT 응용 제품과 정보를 주고받을 수 있습니다. (출처: STMicroelectronics)

FP-CLD-BLUEMIX1 패키지 샘플 응용 제품에는 장치의 MAC 주소에 따라 IBM Quickstart 웹 페이지3에 센서 데이터를 표시하기 위한 기본 구성이 포함되어 있습니다. 또한 URL 페이지는 NFC 태그로 작성됩니다. STM32 Nucleo 기판이 Wi-Fi 액세스 포인트에 연결되면 IBM Bluemix와 자동으로 상호 작용하고 센서 데이터 송신을 시작합니다. Wi-Fi 확장 기판의 MAC 주소와 IBM Quickstart URL은 직렬 단자 인터페이스에 인쇄됩니다.

실시간 센서 데이터를 보려면 Quickstart URL을 복사하여 웹 브라우저에 붙여넣으면 됩니다. NFC 지원 모바일 장치가 사용 가능한 경우 장치를 NFC 태그 근처로 이동하면 웹 페이지를 쉽게 열 수 있습니다. 연결 상태를 시각적으로 나타내기 위해 Nucleo가 IBM Bluemix에 연결되면 STM32 Nucleo 기판의 녹색 LED2가 “ON”으로 설정됩니다. 센서 데이터의 샘플이 송신될 때마다 LED가 깜박입니다.

FP-CLD-BLUEMIX1 패키지에는 그 자체에 STM32 층이 있습니다. 이 층은 상층 응용 제품, 라이브러리 및 스택과 상호 작용하는 간단하고 일반적인 다중 인스턴스 API 세트로 구성됩니다. 이러한 일반 API와 확장 API는 공통 프레임워크를 기반으로 합니다. 이 공통 프레임워크를 기반으로 모든 층(예: 미들웨어 층)에서 지정된 MCU에 대한 특정 하드웨어 정보가 없이도 해당 기능을 구현할 수 있습니다. 이 구조는 라이브러리 코드 재사용 가능성을 높이고 다른 장치에서 쉽게 이식 가능하도록 보장합니다.

API 함수 및 파라미터에 대한 자세한 기술 정보는 패키지의 “Documentation” 폴더에 컴파일된 HTML 파일에서 확인할 수 있습니다.

IBM 샘플에 사용되는 기본 API는 다음과 같습니다.

  • ·void Config_MQTT_IBM(MQTT_vars * mqtt_ibm_setup , uint8_t * macadd). 이 API는 Wi-Fi 확장 기판에 대한 MAC 주소를 기반으로 IBM Cloud 연결에 필요한 MQTT 파라미터를 구성합니다.
  • int spwf_socket_create(Network* net, uint8_t * hostname, uint32_t port_number,uint8_t * protocol). 이 API는 호스트 이름, 포트 이름 및 프로토콜 유형(TCP 또는 TLS)을 기반으로 소켓을 엽니다. 또한 네트워크 구조 내의 소켓 ID와 성공 또는 실패를 반환합니다.
  • ·void MQTTClient(Client* c, Network* network, unsigned intcommand_timeout_ms, unsigned char* buf, size_tbuf_size, unsigned char* readbuf, size_treadbuf_size). 이 API는 입력 파라미터를 기반으로 Client 구조를 구성합니다.
  • int MQTTConnect(Client* c, MQTTPacket_connectData* options). 이 API는 Client 및 MQTTPacket_connect 데이터 구조 내의 파라미터를 기반으로 IBM MQTT 브로커에 연결합니다. 성공 또는 실패를 반환합니다.
  • int MQTTSubscribe(Client* c, const char* topicFilter, enumQoSqos, messageHandlermessageHandler). 이 API는 Client 데이터 구조에 정의된 MQTT 항목을 구독합니다. 성공 또는 실패를 반환합니다.

결론

분석 데이터에 대한 수요가 증가하고 조직에서 분석 데이터에 액세스하는 방법을 간소화해야 함에 따라 무선 센서 및 연결된 MCU를 클라우드에 연결해야 하는 부담이 커지고 있습니다.

이 기사에서는 특정 구현 옵션과 최근 출시된 하드웨어 개발 키트와 관련 소프트웨어를 사용하여 센서를 클라우드에 쉽게 연결하는 방법에 대해 살펴보았습니다. 이를 통해 사용자는 원하는 개체 및 파라미터의 현재 상태를 모니터링할 수 있을 뿐 아니라 예측 분석 뷰에서 클라우드 서비스를 사용할 수 있습니다.

참고 자료

  1. IBM Watson 사물 인터넷(IoT) 알아보기
  2. IoT 노드에 대한 FP-CLD-BLUEMIX1 STM32 ODE 기능 팩
  3. IBM Watson IoT Quickstart
DigiKey logo

면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.

게시자 정보

DigiKey 북미 편집자