MCU는 CPU나 GPU와 다르게 낯설지만, 가장 많이 사용되는 반도체 중 하나다. ST 시스템 솔루션 랩의 유지 카와노 매니저에게 MCU의 활용성과 가능성이 얼마나 큰지 들어보자.
“Bluetoothⓡ LE로 음성 통신, STM32WB 1대로 가능”
소프트웨어 다운로드 시 사전 보드 세팅 중요
48KHz 오디오 송신 데모 Android 대응 가능
[편집자주]일반적으로 반도체라 하면 컴퓨터의 CPU와 메모리처럼 일반인에게 익숙한 반도체를 떠올리기 마련이다. 반면에 전자제품 구동을 위해서 핵심 반도체로 쓰이는 MCU(Micro Controller Unit)의 경우 일반적으로 우리가 쉽게 접하는 모든 전자제품에서 사용되고 있으면서도 일반인에게는 아직 낯선 반도체다. 이런 MCU가 최근 반도체 부족 사태로 인해 언론에 오르내리며, 일반인들에게 주목받기 시작했다. 이에 본지는 MCU 반도체 전문기업인 ST마이크로일렉트로닉스의 유지 카와노 매니저의 연재기고를 통해 MCU에 대해 전문적으로 알아보는 자리를 마련했다.
이번에는 ST마이크로일렉트로닉스의 무선 마이크로컨트롤러 STM32WB 시리즈의 개발 보드를 사용해, Bluetoothⓡ Low Energy (Bluetooth LE)로 음성 통신을 실시하는 데모를 해보겠다.
이번 데모에서는 스마트폰 내의 오디오 파일을 Bluetooth LE로 마이크로컨트롤러 보드에 송신&재생시킬 수 있다.
STM32WB 1대로 가능하기 때문에 매우 편리해졌다.
압축된 스테레오 48KHz 샘플링 WAV 데이터를 Bluetooth LE로 수신해 PC에서 재생한다.
■ 하드웨어 준비
※ 준비물
- STM32WB Nucleo Pack(Pack 내에 탑재된 MB1355C 보드만 사용)
- PC(Windows 10/7)
- 스마트폰(Android)*Bluetooth 4.2 이상
- USB 케이블(Micro-USB)
이번에 사용할 보드는 STM32WB55 Nucleo Pack에 탑재된 MB1355C 보드(이하, STM32 Nucleo 보드)다.
보드 외에 PC와 USB 케이블(Micro-USB), Android 스마트폰을 준비한다.
■ 소프트웨어 준비
STM32CubeProgrammer를 설치한다. 이미 설치가 완료되었다면 건너뛴다.
처음으로 PC에서 STM32 Nucleo 보드를 사용하는 경우, STM32CubeProgrammer(이전 툴 : ST Link Utility)를 인스톨해, COM 포트 드라이버 등을 준비한다.(이 포스팅에서는 STM32CubeProgrammer는 사용하지 않으나, 드라이버가 필요).
이 툴은 STM32WB 마이크로컨트롤러에 소프트웨어를 다운로드할 때 필요하다.
압축 파일을 푼 후, 실행 파일을 열어 안내에 따라 설치한다.
이미 STM32CubeProgrammer를 설치한 경우, 이 작업은 할 필요가 없다.
설치가 완료되면 다음으로 넘어간다.
■ 동작 확인용 소프트웨어 준비
이어서, 데모 프로그램 파일을 다운로드합니다.
다운로드 바로가기 :
FP-AUD-BVLINKWB1
다운로드한 파일을 풀면, 바로 통합 개발 환경용 작업 폴더가 생성된다.
아래의 폴더에 이번에 사용할 데모용 프로그램 파일(바이너리 파일)이 준비되어 있으므로 우선 파일을 확인한다.
저장 경로(예): ‘Drive:...\STM32CubeFunctionPack_BVLINKWB1_Vx.x.x\Projects\P-NUCLEO-WB55.Nucleo\Applications\BLE\BVLPeripheral_FullBand\Binary’
파일명: FP-AUD-BVLINKWB1_FullBand.bin
■ PC에 연결해 소프트웨어 다운로드
소프트웨어를 다운로드할 때에는 사전에 보드를 다음과 같이 세팅한다.
또한 소프트웨어 다운로드 시 및 데모 동작 시에는 이곳의 설정이 달라지므로 주의해야한다. 잘못해도 보드는 망가지지 않으므로 안심해도 된다.
- 점퍼 JP1*의 경우, ‘USB STL’에 점퍼 핀을 세팅
- PC와 Nucleo 보드를 ‘ST-LINK’ 커넥터로 Micro-USB 케이블에 접속(Micro-USB 커넥터는 2곳에 있으므로 주의)
*점퍼 JP1은 보드의 5V 전원 공급원 선택용 점퍼다.
Nucleo 보드를 PC에 USB 케이블로 접속하면, ‘NODE_XXXX’라는 USB 메모리 디바이스와 같은 형식으로 인식된다. 처음 실시할 경우, 우선 드라이버 인스톨이 시작된다.
앞서 확인한 ‘FP-AUD-BVLINKWB1_FullBand.bin’라는 바이너리 파일을 이 ‘NODE_WB55RG’에 드러그&드롭한다. 이렇게 하면 STM32 마이크로 컴퓨터에 소프트웨어 다운로드가 완료된다.
■ 스마트폰 애플리케이션 설치
다음은 스마트폰으로 송신 측을 준비한다.
ST의 센서 애플리케이션 ‘ST BLE Sensor’를 스마트폰에 설치한다. 여기에서는 오디오 송신용으로 사용한다. 이미 설치가 완료됐다면 건너뛴다.
현시점에서는 48KHz 오디오 송신 데모와 관련해서는 Android만 대응이 가능하다.
Google Play 스토어에서 ‘st ble’ 등으로 검색하면 찾을 수 있으므로 이것을 설치한다. ST의 센서 데모는 대부분로 이 애플리케이션에 대응한다.
‘ST BLE Sensor’에서는 접속된 디바이스의 애플리케이션 데모 프로그램에 따라 사용 가능한 기능이 자동으로 설정된다. 이번 데모의 경우, 오디오 송신 기능을 사용할 수 있도록 돼 있다.
■ 오디오 파일 준비 및 보드 연결
○ 준비
사전에 스마트폰 내의 적당한 폴더에 오디오 데이터 파일(WAV)을 넣어 둔다.
이 데모에서 스트리밍이 가능한 파일은 48KHz 샘플링 WAV 파일뿐이다. 사용하는 오디오 파일이 48KHz PCM 데이터가 아닌 경우, 리샘플링이 필요하다. Audacity 등의 프리 소프트웨어로 샘플링도 가능하다.
또한 MP3나 AAC 등의 압축 파일도 이 데모에서는 사용할 수 없다.
다음은 한 예로 44.1KHzPCM 데이터를 Audacity로 48KHz에 리샘플링하는 순서에 대해 간단히 소개하겠다.
위의 그림의 순서대로 리샘플링 처리 실행 후, WAV 파일로 저장한다.
이것으로 48KHz WAV 파일이 만들어졌다. 스마트폰 내의 적당한 폴더에 넣어 둔다.
■ 보드를 PC에 연결
데모 동작 전에 보드를 다음과 같이 세팅한다. 소프트웨어를 다운로드할 때에도 한 번 언급했습니다만, 소프트웨어 다운로드 시 및 데모 동작 시에는 이곳의 설정이 달라지므로 주의해야한다.
- 점퍼 JP1*의 경우, ‘USB_MCU’에 점퍼 핀을 세팅(="USB_USER" 커넥터에서 5V를 공급)
- PC와 STM32 Nucleo 보드를 "USB_USER" 커넥터로 Micro-USB 케이블에 접속
(Micro-USB 커넥터는 2곳에 있으므로 주의)
*점퍼 JP1은 보드의 5V 전원 공급원 선택용 점퍼다.
■ 디바이스 인식
보드가 정상적으로 USB에 연결되면, ‘마이크로폰’(음성 입력 디바이스)으로 인식되므로 우선 그것을 확인한다.
데스크톱 화면 왼쪽 아래 검색에서 ‘contro’ 등의 문자를 입력 검색해, 제어판을 연다.
이 중에서 ‘사운드’를 클릭하면, 사운드 속성이 열린다. 여기에 ‘STM32 AUDIO Streaming FS Mode’라는 이름의 디바이스가 있으므로 이를 선택한 상태에서 ‘속성’을 클릭한다.
‘디폴트 형식’(아래의 그림 내 [Advanced/상세] 탭) 내에 입력 형식을 선택하는 항목이 표시되므로 ‘2 채널, 16bit, 48000Hz’를 선택한 상태에서 ‘적용’을 클릭한다.
이상으로 PC 측의 준비는 완료됐다. 이상, 수신한 오디오 데이터를 USB 오디오를 경유해 PC로 전달할 준비가 완료됐다.
■ 동작 확인
○ 스마트폰 애플리케이션을 실행
PC에 STM32 Nucleo 보드가 접속된 상태에서 송신 측의 스마트폰 애플리케이션(ST BLE Sensor)을 실행 시킨다.
그리고 다음과 같은 순서로 스마트폰과 디바이스를 Bluetooth에 접속한다.
○ 오디오 송신(테스트 확인)
이것으로 테스트용 시연 음악을 재생 송신할 수 있는 상태가 되므로 먼저 재생 버튼을 탭한다. PC의 스피커 또는 헤드폰으로 음을 확인해 보시기 바란다. 데이터 송신 중에는 보드 측의 파란색 LED가 빠르게 점멸될 것이다.
○ 오디오 파일 선택
‘Song List’ 내에 오디오 파일을 추가하면, 자유롭게 송신할 수도 있습니다. ‘Song List’ 옆의 폴더 아이콘을 탭해, 오디오 파일이 든 폴더를 지정한다. 순서는 다음과 같다.
어떤가?
ST에서는 Bluetooth LE를 사용한 음성 전달에 관한 준비를 예전부터 진행해 왔으며, 이번에 다운로드한 FP-AUD-BVLINKWB1 파일 중에는 양방향으로 동시에 음성을 송수신할 수 있는 소프트웨어도 포함돼 있다. 이 부분에 대해서도 순차적으로 소개하겠다.
■ 동작의 구조
마지막으로 동작의 구조에 대하여 간단히 설명하겠다.
- 압축 형식 : OPUS codec
- 통신 데이터율 : 96Kbps or 192Kbps
- 오디오 프레임 사이즈 : 10ms
원본 오디오 PCM 데이터를 압축해, Bluetooth LE(4.2)로 송신할 수 있는 레이트까지 낮춰 송신한다.
여기에서는 OPUS라는 오픈 소스 압축 코덱을 사용한다.
수신 측에서는 반대의 요령으로 압축 데이터를 디코드해, 출력된 오디오 PCM 데이터를 USB 오디오로 전달한다.
※ 관련 정보
더 자세한 사항은 다음의 관련 정보를 참고하면 된다.
FP-AUD-BVLINKWB1의 사용자 매뉴얼
STBLESensor source code/Android
BlueST-SDK/Git-Hub
OPUS/Git-Hub