MCU는 CPU나 GPU와 다르게 낯설지만, 가장 많이 사용되는 반도체 중 하나다. ST 시스템 솔루션 랩의 유지 카와노 매니저에게 MCU의 활용성과 가능성이 얼마나 큰지 들어보자.
STM32WB 1대로 블루투스 LE 통화 매우 편리
모노 16㎑ WAV 압축 후 송신, 수신측 전송 재생
MEMS 마이크 탑재 STM32 X-Nucleo 보드 사용
[편집자주]일반적으로 반도체라 하면 컴퓨터의 CPU와 메모리처럼 일반인에게 익숙한 반도체를 떠올리기 마련이다. 반면에 전자제품 구동을 위해서 핵심 반도체로 쓰이는 MCU(Micro Controller Unit)의 경우 일반적으로 우리가 쉽게 접하는 모든 전자제품에서 사용되고 있으면서도 일반인에게는 아직 낯선 반도체다. 이런 MCU가 최근 반도체 부족 사태로 인해 언론에 오르내리며, 일반인들에게 주목받기 시작했다. 이에 본지는 MCU 반도체 전문기업인 ST마이크로일렉트로닉스의 유지 카와노 매니저의 연재기고를 통해 MCU에 대해 전문적으로 알아보는 자리를 마련했다.
■ STM32WB시리즈 개발 보드 사용 양방향 통화 시연
이번에는 ST마이크로일렉트로닉스의 무선 마이크로컨트롤러 STM32WB시리즈의 개발 보드를 사용하여, Bluetoothⓡ Low Energy(Bluetooth LE)로 양방향 음성 통신(통화)을 하는 시연을 해보겠습니다.
이 시연에서는 디지털 MEMS 마이크 탑재 STM32 X-Nucleo 확장 보드를 결합한 세트를 2대 사용하여, 동시 통화에 성공했습니다. STM32WB 1대로 가능하기 때문에 매우 편리해졌습니다.
모노 16KHz 샘플링 WAV 데이터를 압축한 후, Bluetooth LE로 송신하여, 수신 측에서 데이터를 전송하면서 재생합니다.
■ 하드웨어 준비
[준비물]
- STM32WB Nucleo pack(Pack 내에 탑재된 MB1355C 보드만 사용) x 2세트
- X-NUCLEO-CCA02M2(MEMS 마이크 확장 보드) x 2세트
- PC(Windows 10/7) x 2대
- Micro-USB 케이블 x 2개
이번에 사용할 보드는 STM32WB55 Nucleo Pack에 탑재된 MB1355C 보드(이하, STM32WB Nucleo 보드)와 마이크가 탑재된 STM32 X-Nucleo 마이크 확장 보드, ‘X-NUCLEO-CCA02M2’(이하, MEMS 마이크 확장 보드)를 사용합니다.
양방향 통화용으로 사용하기 때문에 2세트씩 준비합니다. 보드 외에 음성 확인용으로 스피커 또는 헤드폰 출력이 가능한 PC 2대 그리고 USB 케이블(Micro-USB)을 2개 준비합니다.
■ 소프트웨어 준비
○ STM32CubeProgrammer 설치(이미 설치가 완료되었다면 건너뛰기)
처음으로 PC에서 STM32 Nucleo 보드를 사용하는 경우, STM32CubeProgrammer(이전 툴 : ST Link Utility_를 인스톨하여, COM 포트 드라이버 등을 준비합니다(이 포스팅에서는 STM32CubeProgrammer는 사용하지 않으나, 드라이버가 필요).
이 툴은 STM32WB 마이크로컨트롤러에 소프트웨어를 다운로드할 때 필요합니다.
압축 파일을 푼 후, 실행 파일을 열어 안내에 따라 설치. 이미 STM32CubeProgrammer를 설치한 경우, 이 작업은 할 필요가 없습니다.
설치가 완료되면 다음으로 넘어갑니다.
○ 동작 확인용 소프트웨어 준비
▶데모 프로그램 파일 다운로드
이어서, 데모 프로그램 파일을 다운로드합니다.
다운로드한 파일을 풀면, 바로 통합 개발 환경용 작업 폴더가 생성됩니다. 아래의 폴더에 이번에 사용할 데모용 프로그램 파일(바이너리 파일)로 Central용과 Peripheral용 등 2종류가 준비되어 있으므로 각각의 파일이 있는 곳을 확인합니다.
하드웨어에 구별은 없으므로 어느 쪽을 사용해도 상관없습니다(단, 동일한 프로그램 파일을 2개의 보드 모두에 다운로드 하지 말 것).
저장 경로(예):
" 'Drive:....\STM32CubeFP_BVLINKWB1_Vx.x.x\Projects\P-NUCLEO-WB55.NucleoApplications\BLE\BVLCentral\Binary'
" 'Drive:....\STM32CubeFP_BVLINKWB1_Vx.x.x\Projects\P-NUCLEO-WB55.NucleoApplications\BLE\BVLPeripheral\Binary'
각 파일이 들어 있는지 확인합니다.
Central용 파일 : 「FP-AUD-BVLINKWB1_Central.bin」
Peripheral용 파일 : 「FP-AUD-BVLINKWB1_Peripheral.bin」
○ PC에 연결하여 소프트웨어 다운로드
소프트웨어를 다운로드할 때에는 사전에 보드를 다음과 같이 세팅합니다. 또한, 소프트웨어 다운로드 시 및 데모 동작 시에는 이곳의 설정이 달라지므로 주의해 주십시오. 잘못해도 보드는 망가지지 않으므로 안심해도 됩니다.
- 점퍼 JP1*의 경우, "USB STL"에 점퍼 핀을 세팅
- PC와 STM32WB Nucleo 보드를 "ST-LINK" 커넥터로 Micro-USB 케이블에 접속(Micro-USB 커넥터는 2곳에 있으므로 주의)
*점퍼 JP1: 보드의 5V 전원 공급원 선택용 점퍼
STM32WB Nucleo 보드를 PC에 USB 케이블로 접속하면, 'NODE_XXXX'라는 USB 메모리 디바이스와 같은 형식으로 인식됩니다.(처음 실시할 경우, 우선 드라이버 인스톨이 시작됩니다)
2대의 STM32WB Nucleo 보드에 대해 앞서 확인한 Central용/Peripheral용 바이너리 파일을 각각 이 'NODE_WB55RG'에 드러그&드롭.
이렇게 하면, STM32 마이크로 컴퓨터에 소프트웨어 다운로드가 완료됩니다.
첫 번째 xxx_Central.bin 다운로드
2대째 xxx_Peripheral.bin 기록
○ 동작 시 점퍼 설정으로 변경
데모 동작 전에 보드를 다음과 같이 세팅합니다. 소프트웨어를 기록할 때에도 한 번 언급했습니다만, 소프트웨어 다운로드 시 및 데모 동작 시에는 이곳의 설정이 달라지므로 주의해 주십시오.
- 점퍼 JP1*의 경우, "USB_MCU"에 점퍼 핀을 세팅(="USB_USER" 커넥터에서 5V를 공급)
- PC와 STM32 Nucleo 보드를 "USB_USER" 커넥터로 Micro-USB 케이블에 접속(Micro-USB 커넥터는 2곳에 있으므로 주의)
*점퍼 JP1 : 보드의 5V 전원 공급원 선택용 점퍼
■ 보드 연결
○ 마이크 확장 보드 내 인터페이스 라인 설정 변경
STM32WB Nucleo 보드에 MEMS 마이크 확장 보드의 X-NUCLEO-CCA02M2를 결합하는데, 그 전에 마이크 인터페이스용 라인을 이번 시연 소프트웨어용으로 2곳 정도 변경합니다(점퍼(0Ω 칩 저항) 변경).
디폴트로 표준 STM32 Nucleo 보드와의 접속을 가정하고 있기 때문에 이번 시연에서 사용하는 STM32WB Nucleo 보드의 마이크용 포트에 맞출 필요가 있습니다.
시연에서는 "M1" 마이크를 이용합니다. 마이크용 PDM 데이터 라인과 클록 라인을 각각 STM32WB의 PA10 포트와 PA8 포트에 접속합니다. 구체적으로는 다음의 점퍼 2곳을 이동시킵니다.
SB11 --> SB25(MIC_PDM12)=STM32WB_PA10(SAI1_PDM_DI1)
SB7 --> SB26(MIC_CLK_NUCLEO)=STM32WB_PA8(SAI1_PDM_CK2)
SB1과 SB2의 경우, 필수는 아니지만(디폴트로 이미 단락되어 있습니다), 마이크 확장 보드 상의 USB 커넥터를 사용할 경우에 필요합니다.
○ 보드 조립
점퍼 변경이 완료되면, 그림과 같이 MEMS 마이크 확장 보드를 STM32WB Nucleo 보드와 결합합니다. CN7과 CN10 커텍터로 접속합니다. 방향에 주의해 주십시오.
Central 측, Peripheral 측 디바이스 2대 모두 완성되면 다음으로 넘아갑니다.
■ PC 측 설정
○ 보드를 PC에 접속
그 다음, 앞에서 완성시킨 보드를 PC에 접속하여, 마이크로폰으로 인식할 수 있도록 설정합니다.
우선, 1대 디바이스의 경우, PC와 USB로 접속. 보드 측의 "USB_USER" 커넥터를 사용합니다.
○ 디바이스 인식
보드가 정상적으로 USB에 인식되면, "마이크로폰"(음성 입력 디바이스)으로 인식되므로 우선 그것을 확인
데스크톱 화면 왼쪽 아래 검색에서 「contro」 등의 문자를 입력 검색하여, 제어판을 엽니다.
이 중에서 「사운드」를 클릭하면, 사운드 속성이 열립니다. 여기에 "STM32 AUDIO Streaming FS Mode"라는 이름의 디바이스가 있으므로 이를 선택한 상태에서 "속성"을 클릭.
[디폴트 형식](아래의 그림 내 [Advanced /상세] 탭) 내에 입력 형식을 선택하는 항목이 표시되므로 「1 채널, 16bit, 16000Hz」를 선택한 상태에서 "적용"을 클릭합니다.
여기까지의 설정을 Central측, Peripheral 측 디바이스 각각의 PC에서 실시해 주십시오.
만약 이 설정이 되지 않을 경우([Advanced/상세] 탭이 없는 경우), 다음과 같이 조작해 주십시오.
1. Windows10의 시작 버튼 위에 있는 "설정"에서 "디바이스"를 엽니다.
2. 오디오 디바이스로 "STM32 AUDIO Streaming FS Mode"가 인식되므로 이를 일단 삭제합니다(언인스톨).
3. 디바이스를 한 번 PC에서 분리한 후, 다시 접속합니다.
4. PC 측에서 다시 디바이스가 인스톨되기 시작하므로 완료될 때까지 대기합니다.
5. Ready 후, 다시 사운드 속성을 열어 주십시오.
PC 측에서 마이크 입력 설정이 완료되면 동작 확인으로 넘어갑니다.
○ 추가 설명
JP1을 "5V_EXT"로 세팅하면, 마이크 확장 보드의 USB-Mini 커넥터를 사용할 수도 있습니다. 이 경우, STM32WB Nucleo 보드 뒷면의 SB2와 SB4를 단락시켜 주십시오.
■ 동작 확인
2대의 PC에서 각각 Central, Peripheral 디바이스를 접속합니다. 두 디바이스 모두에 전원을 넣으면 자동으로 Bluetooth에 접속됩니다. 정상적으로 접속이 완료되면, LED가 녹색 점멸에서 청색 점멸로 바뀝니다.
어느 쪽 보드라도 상관없지만, 예를 들어, Peripheral 측 STM32WB Nucleo 보드 상의 SW1 버튼을 누르면, Peripheral 측 보드에서 Central 측 보드로 음성 전송이 시작됩니다. 이때, 청색 LED는 빠르게 점멸됩니다.
마이크에 대고 말을 하면, 다른 쪽 STM32WB Nucleo 보드가 접속된 PC의 스피커에서 음성이 들립니다.
이 상태에서 Central 측의 SW1 버튼을 누르면, Central 측에서도 음성을 송신할 수 있는 상태가 되어, 동시 통화가 가능합니다. 다시 한 번 SW1 버튼을 누르면, 음성 송신이 정지됩니다. 이 조작은 그 어느 디바이스에서나 독립적으로 실행할 수 있습니다.
어떻습니까?
ST에서는 Bluetooth LE를 사용한 음성 전달에 관한 준비를 예전부터 진행해 왔으며, 이번에 다운로드한 FP-AUD-BVLINKWB1 파일 중에는 48KHz 스테레오 오디오을 송신할 수 있는 소프트웨어도 포함되어 있습니다.
※ 관련 정보
더 자세히 알고 싶은 분/실제로 활용해 보시고 싶은 분은 다음의 관련 정보를 참고해 주십시오.