경제적인 마이크로컨트롤러가 폭넓게 보급되면서 신세대 개발자들이 독창적인 임베디드 애플리케이션을 개발하는데 고무적인 환경이 마련됐다. 테스트와 프로토타입 제작을 빠르게 할 수 있는 플러그인 하드웨어와 소프트웨어 모듈 형태의 손쉬운 툴이 도움이 될 수 있다.

STM32 오픈 개발 환경은 겹쳐 쌓는 보드로 구성된 다양한 모듈형 하드웨어와, 드라이버에서 애플리케이션 레벨에 이르는 모듈형 소프트웨어의 독창적인 결합으로, 아이디어를 신속하게 프로토타입으로 제작하도록 하여 최종 설계로의 빠른 전환을 돕는다.

이번에는 STM32Cube 확장 소프트웨어와 애플리케이션 프로젝트 예제에 대해 알아보겠다.

 

STM32Cube 확장 소프트웨어
클레오 확장 보드는 레고 블럭과 같은 방식으로 구성돼 몇 분 만에 HW 플랫폼 솔루션을 제공할 수 있다. 게다가 소프트웨어는 설계 프로젝트에서 가장 많은 시간이 소요되는 부분으로 
통상 개발 시간의 70-80%를 차지한다. STM32Cube는 소프트웨어 레벨에 이러한 레고 방식을 적용하여 하드웨어와 일관성을 유지하며, 이는 바로 STM32 오픈 개발 환경의 핵심이다. 

각 STM32Cube 확장 소프트웨어 패키지에는 사용자를 위한 구현 예제가 제공된다. 
확장 소프트웨어 패키지는 모터 제어, 블루투스LE 스택, NFC 무선 처리 기능과 같은 
다양한 라이브러리를 포함하며 오픈 소스 형식에서 이용할 수 있다. STM32Cube 확장 소프트웨어에 포함되어 제공되는 예제들은 디바이스 SW 라이브러리에 빠르게 익숙해지는 데 매우 유용하다. 예를 들면 스테퍼 모터의 구동 방법을 보여주는 SW 데모 프로젝트를 본 다음 
자신의 프로젝트에 필요한 기능을 간단히 잘라내기/복사/붙여넣기 하면 된다.


//----- Init of the Motor control library 
    /* Start the L6474 library to use 1 device */
    /* The L6474 registers are set with the predefined values */
      /* from file l6474_target_config.h*/
      BSP_MotorControl_Init(BSP_MOTOR_CONTROL_BOARD_ID_L6474, 1);
      /* Attach the function MyFlagInterruptHandler (defined below) to the flag interrupt */
      BSP_MotorControl_AttachFlagInterrupt(MyFlagInterruptHandler);
    /* Attach the function Error_Handler (defined below) to the error Handler*/
    BSP_MotorControl_AttachErrorHandler(Error_Handler);

//----- Move of 16000 steps in the FW direction
     /* Move device 0 of 16000 steps in the FORWARD direction*/
    BSP_MotorControl_Move(0, FORWARD, 16000);
    /* Wait for the motor of device 0 ends moving */
    BSP_MotorControl_WaitWhileActive(0);
    /* Wait for 2 seconds */
    HAL_Delay(2000);  

//----- Move of 16000 steps in the BW direction
    /* Move device 0 of 16000 steps in the BACKWARD direction*/
    BSP_MotorControl_Move(0, BACKWARD, 16000);
     /* Wait for the motor of device 0 ends moving */
    BSP_MotorControl_WaitWhileActive(0);
    …

 

그림 5. 미들웨어 컴포넌트로 추가된 STM32 누클레오 확장 보드를 위한 SW 라이브러리.

STM32ODE에 제공되는 기능 팩 SW 프로젝트 및 추가 SW 라이브러리 
하나 이상의 기능 블럭이 필요한 경우 가장 간단한 방법은 기능 팩 SW 소스 코드 프로젝트를 사용하는 것이다. 이 기능 팩에는 다양한 STM32 누클레오 확장 보드 디바이스의 SW 라이브러리가 바로 사용할 수 있는 완벽한 프로젝트로 통합돼 있다. 예를 들면 STM32 누클레오 개발 보드에 연결된 NFC 및 블루투스LE 확장 보드를 사용하여 NFC와 BLE 페어링을 위한 기능 팩을 다운로드할 수 있다.

STM32 오픈 개발 환경에 더하여 개발자가 자신의 애플리케이션에서 첨단 기능들을 사용할 수 있게 하는 다양한 추가 SW 라이브러리(그림 6)가 제공된다. 

이러한 첨단 기능에는 몇 년 전만 해도 일반인들이 쉽게 접근할 수 없었던 센서 퓨전, 동작 인식, BLE를 통한 음성(Voice over BLE), 빔포밍(Beam forming), 음원 위치추적 등이 포함된다. 
이와 같은 라이브러리에는 매우 전문적인 특정 IP가 사용되므로 전체 소스 코드 형식으로 제공되지는 않는다.(반면 STM32 오픈 개발 환경 컴포넌트는 100% 오픈 소스 형식이다) 하지만 st.com 웹사이트에서 특별한 라이선스 형식을 다운로드 받고 활성화 시키는 몇 분만 투자한다면 사용이 가능하다.

그림 6. STM32 오픈 개발 환경에 제공되는 Open.X 라이브러리 및 오픈 프레임워크.

오픈 기능 팩과 유사하게 BLUEMICROSYSTEM1 데모(그림 7)와 같은 구현 예제가 제공된다. 이 예제에서 STM32 F4가 MEMS 가속도 센서/자이로스코프/지자기 센서(RAW 형식과 센서 퓨전 알고리즘 출력 모두 지원), 온도 및 습도 센서, 압력 센서로부터 데이터를 읽고, 이를 블루투스LE 프로토콜을 통해 스마트폰에서 실행되는 애플리케이션으로 전송한다(그림 8). 이러한 규모있는 데모지만 설계자가 프로젝트를 위해 관심 있는 부분만 “자르고 붙여(copy + paste)” 다른 많은 애플리케이션에서 다양하게 적용할 수 있다. 

SW 설계자가 각 디바이스의 데이터시트 정보 정도의 전무한 상태에서 비슷한 수준의 데모를 구성하려면 개발과 상세 튜닝에 수 개월이 걸릴 수 있다.  

그림 7. BLUEMICROSYSTEM1 오픈 기능 팩 데모.

STM32 오픈 개발 환경 기능 팩과 오픈 프레임워크 구현 예제들은 해당 STM32 누클레오 확장 보드의 웹페이지에서 다운로드할 수 있다. 스마트폰/태블릿 GUI 애플리케이션의 소스 코드는Bluetooth LE 소프트웨어 개발키트와 함께BlueST-SDK 웹페이지에서 다운로드 할 수 있다.

 

그림 8. MEMS 모션 센서와 주변환경 센서(온도, 습도, 압력), 그리고 커넥티비티를 위해 최신 블루투스LE를 사용했다.

애플리케이션 프로젝트 예제 
각 STM32 누클레오 확장 보드의 예제 SW 프로젝트나 오픈 기능 팩에서 시작하면 복잡한 데모와 시스템을 빠르게 생성할 수 있다. 블루투스LE 연결을 이용해 3D 원격 제어로 조정하는 모형 자동차를 예로 들 수 있다(그림 9). 아래의 HW 및 SW 기본 블럭을 조합해 설계됐다. 

STM32 누클레오 자동차(HW): NUCLEO-F401RE, X-NUCLEO-IHM02A1(듀얼 스테퍼 모터 드라이버), X-NUCLEO-IDB04A1(블루투스LE)
STM32 누클레오 자동차(SW): X-CUBE-SPN2(스테퍼 모터 드라이버 라이브러리 기본 SW 예제), X-CUBE-BLE1(BLE 라이브러리 기본 SW 예제)
3D 원격 제어(HW): NUCLEO-F401RE, X-NUCLEO-IKS01A1(MEMS 센서), X-NUCLEO-IDB04A1(블루투스LE)
3D 원격 제어(SW): BLUEMICROSYSTEM1(블루투스LE로 센서 RAW 데이터 및 센서 퓨전 출력 전송하는 기능 팩)
STM32 누클레오 자동차: STM32누클레오 보드에 기반한 모형 자동차 데모와 3D 원격 제어

웨어러블 및 사물 인터넷과 같은 애플리케이션의 경우 평가 보드의 물리적 크기가 문제가 될 때가 있다. 이러한 IoT 개발자의 니즈를 위해 STM32 누클레오 보드의 동일한 디바이스를 사용하는 초소형 데모 보드를 추가해 포트폴리오를 키우고 있다.

 

STM32 누클레오와 호환되는 아두이노 보드로 STM32 오픈 개발 환경을 넘어서기 

그림 11. STM32 누클레오 확장 보드에 연결된 Adafruit 1.8” TFT 쉴드를 사용한 데모.

내장된 아두이노 커넥터를 이용하면 STM32 누클레오 확장 보드에 아두이노 쉴드 보드를 추가해 사용할 수 있다.

기계적인 부분의 호환성과 함께 사용중인 특정 보드 및 디바이스와 관련된 SW 드라이버와 라이브러리를 갖추어야 한다. <www.st.com> 웹사이트만이 아니라 기타 엔지니어링 오픈 소스 커뮤니티에도 STM32 누클레오 확장 보드와 아두이노 보드를 함께 사용할 수 있는 즉시 이용 가능한 프로젝트들이 있다.

대표적인 예로 Adafruit TFT 및 터치 스크린 쉴드(그림 11)가 있는데 STM32CubeF4 라이브러리 팩 내에도 해당 SW 프로젝트가 포함되어 있다. 

 

상상력을 펼쳐라 
HW 및 SW 개발자를 위한 환경은 지난 5년 사이 크게 변화해왔다. 제품 출시는 더욱 빠른 시간 내에 이루어져야 하고, 전통적인 컨슈머 애플리케이션(MEMS, NFC, 블루투스LE 등) 기술이 산업용 애플리케이션에서 폭넓게 이용되고 있다. 또 3D 모델링에서부터 PCB 회로와 SW 프로젝트에 이르기까지 점점 더 완벽한 프로젝트가 오픈 소스 커뮤니티에 등장하고 있다.(드론, 3D 프린터, 센서 퓨전, 복잡한 오디오 기능, USB 전력 공급 등)

STM32 오픈 개발 환경은 개발자의 작업을 한층 더 쉽게 만드는 데 초점을 맞추고 있기 때문에 맞춤화가 쉬운 간단한/복잡한 HW 및 SW 기능 블럭을 제공한다. 설계자가 원격으로 시스템을 제어하거나 데이터를 얻기 위해 RF 연결을 시스템에 추가 할 때 복잡한 RF 지식이 필요 없다. 몇 분이면 STM32 누클레오 확장 보드를 시스템에 연결하고 사용 가능한 SW 프로젝트를 맞춤화 할 수 있다. 

최첨단 기술력 기반의 상용 제품과 모듈형 소프트웨어를 기반으로하는 다양한 확장 보드를 독창적으로 결합하는 STM32 오픈 개발 환경은 드라이버에서 애플리케이션 레벨에 이르기 까지 설계자가 프로토타입 아이디어를 빠르게, 문제없이 최종 애플리케이션으로 변신할 수 있도록 돕는다. 

 

글 : 마테오 마라비타(MATTEO MARAVITA) / ST 역량센터
자료제공 : ST마이크로일렉트로닉스 <www.st.com>

이 기사를 공유합니다
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지