BT5-9DOF-DK / μAHRS - Roverdyn Datasheet... · 2020. 7. 21. · - 4 - Pinout Pin connection of...

48
- 1 - BT5-9DOF-DK / μAHRS Datasheet & User Manual REV 1.2

Transcript of BT5-9DOF-DK / μAHRS - Roverdyn Datasheet... · 2020. 7. 21. · - 4 - Pinout Pin connection of...

  • - 1 -

    BT5-9DOF-DK / μAHRSDatasheet & User Manual

    REV 1.2

  • 목 차

    1. 개요

    1. 1. 특징 및 활용 ······························································································ 1

    1. 2. 제품 성능 ···································································································· 2

    1. 3. 레이아웃 및 핀맵 ······················································································ 3

    2. 개발환경 구축하기

    2. 1. Eclipse CDT 및 플러그인 설치 ······························································ 7

    2. 2. OpenOCD 디버깅 환경 구성하기 ························································· 13

    2. 3. J-Link 디버깅 환경 구성하기 ································································· 15

    2. 4. Softdevice 다운로드 하기 ······································································· 21

    2. 5. 프로젝트 생성 및 예제코드 ···································································· 24

    2. 6. nRduino 프로젝트 사용하기 ·································································· 34

    3. 제품 사용하기

    3. 1. 아날로그 및 디지털 제어 ········································································ 36

    3. 2. MPU9250 Library ······················································································ 40

    3. 3. Bluetooth LE Library ················································································ 43

    3. 4. UART Library ····························································································· 44

    3. 5. Wire Library ······························································································· 44

    3. 6. SAADC Library ·························································································· 44

    4. 지원

    4. 1. 고객센터 및 기술지원 ·············································································· 45

    4. 2. 수정 이력 ···································································································· 46

  • - 1 -

    1. 개요

    1. 1. 특징 및 활용

    본 제품은 3축 가속도 센서, 3축 자이로스코프 센서, 3축 지자기 센서를 포함하는 하나의 미소전기기계시

    스템(Micro Electro-Mechanics System, MEMS) 으로 제작된 관성측정장치(Inertial Measurement Unit, IMU)

    를 내장하고 있습니다. 9축의 IMU를 이용하여 모션과 관성 측정에 관한 다양한 시스템을 만들 수 있습니

    다. 또한 블루투스5 모뎀과 단정밀도 부동소수점 연산기(FPU)를 포함하는 Cortex-M4F 프로세서를 내장한

    SoC(System on Chip)가 포함되어 있습니다.

    Ÿ IoT 디바이스를 비롯한 각종 스마트 디바이스

    Ÿ 드론 및 AHRS 시스템

    Ÿ 모션 컨트롤러

    Ÿ 웨어러블 디바이스

    Ÿ 디지털 기압계 및 고도계

    Ÿ 유도항법시스템(Navigation & Guidance)

    Ÿ 환경 측정 센서

    해당 제품은 J-Link 혹은 OpenOCD를 이용하여 10핀 SWD 포트를 통하여 직접 소프트웨어를 디버깅하거

    나 펌웨어 업데이트를 할 수 있으며 Eclipse, IAR Embedded, Segger Embedded Studio(SES) 등 다양한 통

    합개발환경(IDE)를 지원합니다. 따라서 사용자는 빠르고 저렴하게 원하는 시스템이나 제품을 손쉽게 만들

    어 볼 수 있습니다.

    로버다인의 오픈소스 프로젝트인 nRduino 프로젝트를 이용하면 아두이노 같은(Arduino-like) 소스코드를

    구성할 수 있으며 통합개발환경 구축과 디버깅 환경만 구축하면 아두이노와 유사한 프로그래밍 인터페이

    스를 제공합니다.

  • - 2 -

    1. 2. 제품 스펙

    ■ Mainboard

    Dimension 24mm(L) × 20mm(W) × 6mm(H)

    Weight About 7.5g

    SoC Nordic nRF52832-QFAA 64MHz

    CPU Core ARM Holding Cortex-M4F

    RAM Internal 64KBytes

    Storage Internal 512KBytes Flash Storage

    Debug Interface 4-pin Serial Wire Debug(SWD) Interface

    Connectivity ADC(12-bit)×2, PWM×1, SWD×1, UART×1

    Wireless Type Bluetooth 5.0 Low Energy(BLE, 3dBi Antenna)

    Wireless Range Over 20m

    Operating Voltage 2.8V – 3.6V

    Input Voltage 5.0V – 5.5V (Max 6.0V)

    Working Temperature -20℃ - 60℃

    Power Consumption About 0.165Wh

    ■ IMU Specifications

    IC Part Number MPU-9250(IMU), LPS25HBTR(Barometer)

    IC Manufacturer Invensense / STmicroelectronics

    Connectivity I2C Fast Mode (400KHz), SDA(P0.11), SCL(P0.12)

    Accelerometer Range ±2g, ±4g, ±8g, ±16g

    Gyroscope Range ±250, ±500, ±1000, ±2000

    Magnetometer Range ±4912μT

    Barometer Range 260hPa to 1260hPa

    Update Rate

    8KHz(Gyroscope)

    1kHz(Accelerometer)

    25Hz(Magnetometer/Barometer)

    TTL 3.3V

    ■ AHRS Specifications(Optional)

    Range

    Roll : -180° ~ 180°

    Pitch : -90° ~ 90°

    Yaw : 0° ~ 360°

    AccuracyRoll/Pitch : ±1°

    Yaw : ±1.5°

    Noise Level

    Gyro : 0.1 dps/Hz

    Accel : 0.005 mg/Hz

    Mag : No data

    Signal Processing Correction-based 1st order Complementary Filter

    Operational Temperature -40℃ ~ 60℃

    Update Rate 1Hz ~ 400Hz

    Output Connectivity UART, I2C, SPI, Serial over BLE

  • - 3 -

    1. 3. 레이아웃 및 핀맵

    ■ Mainboard Layout

    ■ Drawing

  • - 4 -

    ■ Pinout

    ■ Pin connection of main SoC

    Pin No. Description

    P0.02 ~ P0.05 Analog Input (ADC)

    P0.13 ~ P0.20 GPIO / PWM

    P0.21 Reset Button (Active Low)

    P0.22 Custom Button

    P0.23 System Status LED

    P0.24 Bluetooth Status LED

    P0.25 SPI - MISO

    P0.26 SPI - MOSI

    P0.27 SPI - SCK

    P0.28 SPI – CS(SS)

    P0.29 I2C/TWI - SDA

    P0.30 I2C/TWI - SCL

  • - 5 -

    2. 개발환경 구축하기

    2. 1. Eclipse CDT 및 플러그인 설치

    ■ 필요 소프트웨어 목록

    - Eclipse CDT : www.eclipse.org

    - JDK : https://www.oracle.com/technetwork/java/javase/downloads/index.html

    - nRF5-SDK : 버전 16.0.0

    - openOCD / J-link 소프트웨어

    - ARM Windows Build Tool

    - ARM GNU MCU for Eclipse

    - 이클립스,JDK, J-Link 소프트웨어 이외의 소프트웨어는 로버다인 홈페이지에서도 다운로드

    하실 수 있습니다.

    ■ JDK 설치하기

    1. 오라클 홈페이지에서 JDK 최신 버전을 다운로드 하여 설치합니다. 이 때, 설치할 PC의 윈도우 버전

    (32비트/64비트)에 따라 설치파일이 달라집니다.

    ※ 다운로드 시 버전은 관계 없습니다.

    2. 설치파일을 다운로드 후 마우스 오른쪽 클릭하여 관리자 권한으로 실행, 설치합니다. 기본 설정으로

    설치 한 후 Close 버튼을 눌러 설치를 완료합니다.

    ※ 환경변수 설정은 자동으로 잡히기 때문에 별도로 할 필요는 없습니다)

  • - 6 -

    ■ Eclipse CDT 설치하기

    1. 이클립스 최신 버전을 홈페이지에서 다운로드 후 관리자 권한으로 설치를 실행합니다. 실행 후 다음

    과 같은 창이 뜨면 C/C++ IDE를 설치합니다.

    2. 기본 설정으로 설치를 진행합니다. 설치 시 나타나는 드라이버는 모두 예/설치 버튼을 눌러 설치를

    진행합니다.

    ※ 만약 위의 창이 나타나지 않는다면 JAVA 설치 및 환경설정이 정상적으로 되어있지 않은 상태입

    니다. 다시 JDK부터 설치를 해 주세요.(환경 및 설치버전 JAVA Standard Edition DK 확인)

  • - 7 -

    3. 설치 후 Eclipse를 실행시켜줍니다. 상단 메뉴 중 Help를 선택한 후 [Eclipse Marketpalce...]을 선택

    하여 패키지 설치 관리자 창을 열어줍니다.

    4. 패키지 설치창이 나타나면 검색창에 ARM GCC MCU를 입력하여 검색한 후 설치버튼을 눌러 설치해

    줍니다.

    5. 패키지가 설치 된 후 재시작을 해 줍니다. 설치 완료 후 재시작 유무를 물어보는 팝업창이 나타난다

    면 재시작(Restart) 버튼을 눌러 자동으로 프로그램을 재시작합니다.

  • - 8 -

    ■ 필수 패키지 설치하기(nRF5 SDK 16.0.0 버전)

    1. Roverdyn 홈페이지에서 필수 소프트웨어를 다운로드 받은 후 압축을 해제합니다. Eclipse 폴더를 C

    드라이브 최상단(C:\)에 이동 혹은 복사합니다.

    (필수패키지 다운로드 주소 : www.roverdyn.com/?page_id=30)

    2. Eclipse 폴더 내부의 파일과 경로를 확인합니다. 이때, 압축을 정상적으로 해제하지 않거나 임의의

    폴더를 만들어서 해당 파일을 복사할 경우 오류가 발생할 수 있습니다. 하기 파일들이 위치한 폴더

    와 상위 폴더의 파일명은 영어로 작성이 되어있어야 합니다.

  • - 9 -

    ■ 환경변수 경로 설정하기

    1. 필수 패키지를 사용하기 위해서는 환경변수의 경로를 설정하여야 합니다. 시스템에 환경변수 경로를

    추가하기 위하여 시스템 속성 창을 열어줍니다. 시스템 속성 창은 [시작] - [실행] 혹은 [윈도우 키

    + R]을 눌러 실행 창을 열어준 다음 “sysdm.cpl” 명령어를 적은 후 확인 버튼을 누르면 나타납니다.

    2. 시스템 속성 창이 실행되면 상단 탭 메뉴 중 [고급] - [환경변수] 메뉴를 선택합니다.

  • - 10 -

    3. 환경변수 창에서 시스템 변수 항목 중 “Path”를 찾은 후 더블클릭 하거나 아래쪽의 [편집] 버튼을 클

    릭하여 변수 입력창을 열어줍니다.

    4. 오른쪽 항목 중 [새로 만들기] 버튼을 눌러준 후 바로 [찾아보기 버튼]을 눌러 path 경로를 추가할 수

    있습니다.

  • - 11 -

    5. 제일 먼저 Windows Build Tool의 bin 폴더를 추가합니다. 경로는 다음과 같습니다.

    C:/Eclipse/GNU MCU Eclipse/Build Tools/2.12-20190422-1053/bin

    5. 다음은 ARM Embedded GCC 컴파일러의 bin 폴더를 설정합니다. 경로는 다음과 같습니다.

    C:/Eclipse/GNU MCU Eclipse/ARM Embedded GCC/bin

  • - 12 -

    6. 같은 방법으로 OpenOCD 의 bin 폴더를 추가해줍니다. 경로는 다음과 같습니다.

    C:/Eclipse/OpenOCD/0.10.0-13/bin

    6. 환경변수 설정이 완료되면 Eclipse CDT를 다시 실행시켜줍니다.

  • - 13 -

    2. 2. OpenOCD 디버깅 환경 구축하기

    OpenOCD는 J-link와 같은 상용 디버거를 사용하지 않고 JTAG와 SWD를 지원하는 오픈소스 하드웨어와

    소프트웨어를 바탕으로 만들어진 디버거를 이용하여 컴파일 및 디버깅 할 때 주로 사용됩니다.

    1. 이클립스 IDE를 실행시킨 후 상단의 [RUN] - [DEBUG CONFIGURATION] 메뉴를 클릭합니다.

    2. 설정창이 나타나면 왼쪽의 GDB OpenOCD Debugging 메뉴를 더블클릭하여 임의의 디버깅 환경설

    정을 생성한 후 오른쪽 Browse 버튼을 클릭하여 .out 확장자로 되어있는 바이너리 파일을 불러옵니

    다. 그리고 오른쪽 아래의 Apply 버튼을 눌러 적용합니다.

    ※ 기본 명칭은 New configuration으로 나타납니다.

  • - 14 -

    3. Executable path를 설정하기 위해서 상단의 Debug 탭을 선택하고 Browse 버튼을 클릭한 후 openo

    cd.exe 파일을 찾아서 입력합니다. openocd.exe 파일은 c:/Eclipse/OpenOCD-20190715-0.10.0/bin/op

    enocd.exe에 위치합니다. 브라우즈 버튼을 클릭하여 입력하는 것이 빠르고 간편합니다.

    4. Config Options에 다음과 같이 명령어를 작성한 후 하단의 Apply 버튼을 누릅니다.

    -f interface/cmsis-dap.cfg

    -f target/nrf52.cfg

    -c init

    -c halt

    -c "nrf51 mass_erase"

    -c "flash write_image erase c:/Eclipse/nRF5_SDK_15.3.0/components/softdevice/s132/hex/s132_nrf52_6.1.1_s

    oftdevice.hex"

    -c reset

    5. 하드웨어를 연결한 상태에서(전원인가 해야함) Debug 버튼을 눌러서 프로그램을 전송합니다.

  • - 15 -

    2. 3. J-Link 디버깅 환경 구축하기

    μAHRS를 디버깅 하는 또 다른 하드웨어 및 시스템으로는 J-link를 사용하는 방법이 있습니다. J-link는 독

    일의 SEGGER Microcontroller GmBH사가 만든 시스템으로서 Cortex-M 기반의 다양한 SoC와 MCU를 디버

    깅할 수 있는 툴입니다. J-link는 사용자와 목적에 따라서 다양한 버전이 있으며 교육용 모델의 경우 J-link

    EDU mini와 J-link EDU 버전이 있고 상용 버전의 경우에는 BASE, PLUS, ULTRA+, PRO 등등의 버전이 있

    습니다. 세부 항목은 SEGGER 홈페이지를 참조 해 주시기 바랍니다.

    1. 먼저 J-link 소프트웨어를 다운로드합니다. 홈페이지에 접속 후 상단 메뉴의 [Downloads] - [J-link /

    J-trace] 메뉴를 클릭한 후 [J-Link Software and Documentation Pack] 항목을 찾아서 [Click for

    downloads] 링크를 클릭합니다.

    2. 다운로드 항목이 열리면 [J-Link Software and Documentation pack for Windows] 항목을 찾아 다운

    로드합니다.

  • - 16 -

    3. 라이선스 동의를 한 후 소프트웨어를 다운로드합니다.

    4. 설치파일을 실행시킨 후 기본 설정대로 프로그램을 설치합니다.

    4-1. 아래와 같은 창이 나타나면 Ok 버튼을 눌러 업데이트를 합니다.

  • - 17 -

    5. 이클립스를 실행시킨 후 상단 메뉴 중 [Run] - [Debug Configurations]를 클릭합니다.

    6. 디버깅 환경창이 나타나면 왼쪽 메뉴 중 [GDB SEGGER J-Link Debugging] 항목을 더블클릭하여 디버

    깅 환경 설정창을 생성합니다. 만일 프로젝트가 생성되어 있는 상태라면 자동으로 프로젝트에 관한

    내용이 작성되어 있습니다.

  • - 18 -

    7. 위쪽 상단의 [Debugger] 탭을 눌러준 후 [Executable Path] 항목의 오른쪽에 있는 [Browse] 버튼을 클

    릭합니다. 이 작업은 앞서 설치한 J-Link 소프트웨어의 JLinkGDBServerCL.exe 파일의 위치를 지정하기

    위함입니다.

    8. J-Link 소프트웨어가 설치되어 있는 폴더를 찾아들어가 JLinkGDBServerCL.exe 파일을 선택한 후 확인

    버튼을 눌러 반영합니다. 기본 설정으로 설치하였다면 주소는 다음과 같습니다.

    C 드라이브 -> Program Files(x86) -> SEGGER -> JLink

    반드시 JLinkGDBServerCL.exe를 선택하여야 합니다. JLinkGDBServer.exe는 동작하지 않습니다.

  • - 19 -

    9. [Device name:] 항목을 nrf52832_xxaa로 작성합니다.

    10. Connection 항목을 USB로 선택한 후 오른쪽 빈칸에는 JLink의 시리얼 번호를 적어넣습니다. 시리얼

    번호는 JLink 본체의 뒷면에 위치합니다.

    시리얼 번호는 보유한 J-Link 버전에 따라 다릅니다.

  • - 20 -

    11. [Other Options]을 다음과 같이 작성합니다.

    -singlerun -strict -timeout 0

    12. 상단의 [Startup] 탭을 누른 후 [Enable flash braekpoints], [Enable semihosting], [Enable SWO] 항목

    을 모두 체크해제합니다.

    13. 모든 설정이 끝났습니다. 하단의 Debug 탭을 눌러 디버깅을 할 수 있으며 모든 설정은 저장이 되어

    다른 프로젝트를 만들어도 위의 설정이 유지됩니다.

  • - 21 -

    2. 4. Softdevice 다운로드 하기

    nRF52 시리즈의 칩셋의 기능을 온전히 사용하려면 Softdevice라는 스택 소프트웨어를 칩셋에 다운로드

    한 후 Application을 사용할 수 있습니다. 특히 BLE 등과 같은 핵심 기능은 Softdevice에 내장되어 있으

    므로 반드시 업로드 하는 것을 권고합니다. Softdevice는 SDK 폴더에 포함되어 있으며 nRF52 칩셋의 버

    전에 따라(예를들어 nRF52832, nRF52810 등) 적용되는 버전이 다릅니다. nRF52832 시리즈의 경우 S132

    스택을 다운로드 하여 사용하며 nRF52810의 경우 S113 스택을 다운로드 한 후 사용할 수 있습니다.

    위의 스크린샷은 nRF52832 칩 내부의 플래시 메모리의 사용 내역입니다. 주황색 영역은 Master Boot

    Record(MBR)이며 파란색 영역은 Softdevice의 영역입니다. 상단의 초록색 영역은 Application, 즉 사용자

    가 작성한 소스가 돌아가는 영역입니다.

    Softdevice는 버전, 종류에 따라서 메모리의 크기가 다릅니다. 예를들어 S132 버전은 6.6.0 버전과 7.0.1

    버전의 크기가 다릅니다. 따라서 메모리 크기에 유의해서 링커파일(LD)를 수정해주어야 합니다.

    예를 들어 위의 사진에서 메모리는 0x00001000부터 0x000258C0까지 차지하는 것을 알 수 있습니다.

  • - 22 -

    ■ nRF Connect 설치하기(J-Link only)

    Softdevice를 다운로드하기 위해서는 우선 J-Link와 같은 디버거가 필요합니다. OpenOCD를 사용하는

    경우에는 별도로 업로드 절차가 필요하지 않으며 2.2절의 명령어 상에서 Softdevice의 hex 파일의 주소

    를 지정해주면 디버깅 시 자동으로 업로드가 됩니다.

    J-Link를 사용하는 경우 nRF Connect를 사용하면 손쉽게 Softdevice를 업로드 할 수 있습니다. nRF

    Connect는 노르딕사 홈페이지에서 다운로드 할 수 있습니다.

    설치는 기본 설정 그대로 진행하면 됩니다.

    ■ Softdevice 다운로드 하기

    1. nRF Connect를 실행시킨 후 목록 중 Programmer를 설치합니다.

  • - 23 -

    2. 프로그래머를 실행시킨 후 디버거와 BT5-9DOF-DK 보드를 연결한 다음 컴퓨터와 디버거를 USB 케이

    블로 연결합니다. 그 후 왼쪽 상단의 [Select device] 메뉴를 눌러 디버거를 선택한 다음 오른쪽의

    [Add HEX file] 버튼을 눌러 Softdevice의 hex파일을 찾습니다.

    nRF52832에 사용되는 Softdevice S132 Hex 파일의 위치는 아래와 같습니다.

    C 드라이브 -> Eclipse -> nRF5_SDK_15.3.0(버전에 따라 다름) -> components -> softdevice

    -> S132 -> hex

    3. Hex 파일을 로드한 다음 오른쪽 아래의 Erase & write 버튼을 누르면 잠시 뒤 Softdevice가 업로드

    됩니다. 이 때 기존에 업로드했던 모든 내용은 삭제가 되므로 Application을 다시 업로드 해주어야 합

    니다.

  • - 24 -

    2. 5. 프로젝트 생성 및 예제 코드

    μAHRS의 메인 프로세서인 nRF52832는 Eclipse를 비롯한 다양한 환경에서 컴파일하여 디버깅할 수 있

    습니다. 본 제품의 통합개발환경(IDE)는 Eclipse CDT를 권장하며 Eclipse를 이용하여 컴파일 및 디버깅

    하는 경우에는 Makefile과 링커파일을 이용하여 크로스컴파일 할 수 있습니다. 따라서 일반적인 이클립

    스 프로젝트와 달리 Makefile 프로젝트를 생성하여야 하며 ARM Cross GCC 컴파일러를 이용하여 바이

    너리 파일을 생성합니다.

    본 매뉴얼은 [2. 1. Eclipse CDT 및 플러그인 설치]와 [2. 2. OpenOCD 디버깅 환경 구축하기] 혹은 [2.

    3. J-link 디버깅 환경 구축하기] 항목을 모두 적용한 후에 사용이 가능합니다.

    ■ 프로젝트 생성하기

    프로젝트 생성 절차를 반드시 처음부터 따라해주시기 바랍니다. 한번 작성된 프로젝트 폴더는 복사를

    하여 다시 활용할 수 있습니다.

    1. Eclipse CDT를 실행시킨 후 상단 메뉴 중 [New] - [C/C++ Project]를 선택합니다.

  • - 25 -

    2. 프로젝트 템플릿을 선택하는 창이 나타나면 C/C++ Managed Build를 선택합니다. 그리고 Next 버튼을

    눌러 다음으로 넘어갑니다.

    3. 먼저 프로젝트 명을 작성합니다.(1번) 그리고 [Project Type] 항목 중 [Makefile Project] 메뉴를 펼쳐

    [Empty Project]를 선택하고(2번) 오른쪽 [Toolchains] 항목 중 ARM Cross GCC 메뉴를 클릭(3번)한 후

    [Next >] 버튼을 눌러줍니다.

  • - 26 -

    4. [Select Configuration] 항목이 나타나면 Default를 선택하고 [Next >] 버튼을 누릅니다.

    5. [GNU ARM Cross Toolchain] 항목이 나타나면 아래와 같이 설정한 후 [Finish] 버튼을 누릅니다.

  • - 27 -

    6. 프로젝트 생성창이 닫힌 후 왼쪽상단의 [Project Explorer] 창을 열어줍니다. 창 두 개가 겹쳐있는 모양

    입니다.

    6-1. Project Explorer 아이콘이 나타나지 않는다면 아래와 같이 [Window] - [Show View] - [Project

    Explorer] 항목을 선택하여 활성화 할 수 있습니다.

  • - 28 -

    7. 프로젝트 익스플로러 창을 열면 아래와 같이 나타납니다. Includes 항목에는 헤더파일을 추가할 수 있으

    나 Makefile을 이용하므로 헤더파일이 있는 폴더를 굳이 추가하지 않아도 됩니다.

    8. 생성한 프로젝트를 컴파일 하기 위해서는 몇 개의 필수 파일을 복사해야 합니다. 컴파일하기 위해서는

    Makefile, sdk_config.h, 링커파일이 필요합니다. 해당 파일은 모두 nRF52 SDK에 포함되어 있습니다. 이

    파일을 복사하기 위하여 먼저 생성한 프로젝트 폴더를 찾아서 들어갑니다. 프로젝트 폴더는 사용자가

    설정한 값에 따라 다릅니다.

    9. 다음은 필수 파일을 복사하기 위해 다음 폴더를 찾습니다. 위의 예제를 따라했다면 주소는 다음과 같습

    니다.

    C 드라이브 -> Eclipse -> nRF5_SDK_15.3.0(버전에 따라 다름) -> config -> nrf52832

  • - 29 -

    10. 제일 먼저 링커파일을 복사합니다. 링커파일은 9번에서 찾은 폴더의 armgcc 폴더 내부에 있습니다.

    generic_gcc_nrf52.ld 파일을 8번에서 찾은 프로젝트 폴더로 복사합니다.

    11. 다음은 sdk_config.h 파일을 복사합니다. 9번에서 찾은 폴더의 config 폴더 내부에 있습니다.

    sdk_config.h 파일을 8번에서 찾은 프로젝트 폴더로 복사합니다.

    12. 마지막으로 Makefile 폴더를 복사합니다. Makefile 폴더는 9번에서 찾은 주소와 달리 예제 폴더 내부에

    있습니다. 아래의 주소로 찾아가서 Makefile을 프로젝트 폴더로 복사합니다.

    C 드라이브 -> Eclipse -> nRF5_SDK_15.3.0(버전에 따라 다름) -> examples -> peripheral -> blinky

    -> pca10040 -> s132 -> armgcc

    13. 모든 파일의 복사가 끝나면 프로젝트 폴더는 아래와 같이 파일이 있습니다.

  • - 30 -

    14. 다시 Eclipse로 돌아와서 프로젝트 탐색기를 열어줍니다. 프로젝트 탐색기 중에서 생성한 프로젝트 폴

    더를 선택한 후 F5키를 눌러주거나 마우스 오른쪽 버튼 클릭 후 Update 버튼을 클릭하여 새로 추가된

    파일을 반영합니다.

    15. 컴파일하기 위해서는 Makefile을 수정해야합니다. 프로젝트 탐색기에서 Makefile 파일을 더블클릭하여

    열어준 후 SDK_ROOT := 항목을 C:/Eclipse/nRF5_SDK_15.3.0 으로 바꾸어줍니다.(1번) 그리고

    LINKER_SCRIPT 항목을 generic_gcc_nrf52.ld로 바꾸어줍니다.(2번) 다음은 컴파일 할 소스 파일을 지정

    하는 항목입니다. 새로 추가할 소스는 main.cpp이므로 SRC_FILES 항목에 한 칸을 만든 후

    $(PROJ_DIR)/main.cpp \를 추가합니다.(3번) \(역슬래쉬)는 ‘\’ 키와 같습니다. 마지막으로 복사한

    sdk_config.h 파일의 위치를 지정합니다. INC_FOLDERS 항목에 $(PROJ_DIR) \을 추가해줍니다.(4번)

  • - 31 -

    16. INC_FOLDERS 항목중 ../config\ 줄을 지워줍니다.

    17. 다음은 프로그램을 작성할 소스파일을 만듭니다. 왼쪽의 프로젝트 탐색기에서 프로젝트 폴더를 선택한

    후 [마우스 오른쪽 클릭] - [New] - [Source File]을 선택합니다.

    18. [Source file:] 항목에 main.cpp를 적습니다. 그리고 [Finish] 버튼을 눌러줍니다.

  • - 32 -

    19. 소스파일을 작성하면 아래와 같이 기본 코드를 작성해줍니다. 아래 코드는 예제로서 마음대

    로 바꿀 수 있으며 int main() 함수는 반드시 있어야 합니다.

    20. 디버깅 하기 위해서는 상단의 [Run] - [Debug Configurations] 메뉴를 선택합니다.

  • - 33 -

    21. 디버깅 설정창에서 OpenOCD 혹은 GDB SEGGER J-Link Debugging 항목을 선택합니다. 해당 항목은

    가지고 있는 디버거에 따라 달라집니다. 2.2 항목과 2.3 항목을 따라하셨다면 기본 설정이 되어 있습니

    다. 따라서 바로 [Debug] 버튼을 누르면 디버깅을 시작합니다.

    22. 한번 디버깅 환경을 설정해두면 메인 화면에서 손쉽게 디버깅을 할 수 있습니다. 왼쪽 상단의 벌레모

    양 아이콘을 누르면 컴파일과 디버깅이 동시에 진행됩니다.

  • - 34 -

    2. 6. nRduino 프로젝트 활용하기

    nRduino는 nRF52832 프로세서를 비롯한 nRF52 시리즈의 칩셋을 아두이노처럼 프로그래밍 하게 위해 시

    작된 프로젝트입니다. 사용자가 레지스터를 직접 건드리지 않고도 아두이노 표준 함수를 이용하여 nRF52

    칩의 다양한 기능을 이용할 수 있도록 디자인되었습니다. nRduino는 ㈜로버다인이 소유하고 관리하는 오

    픈소스 프로젝트로서 GPL 라이선스를 기반으로 하고 있습니다. 따라서 해당 소스코드를 활용 및 수정하여

    배포하는 경우 해당 소스코드 또한 공개 할 의무가 있습니다.

    nRduino 프로젝트를 사용하기 위한 기본 구조는 다음과 같습니다.

    #include "arduino.h"

    extern _Serial Serial;

    void setup(){

    // Setup 프로그램

    }

    void loop(){

    // Loop 프로그램

    }

    int main(){

    setup();

    while(1){

    loop();

    }

    return 0;

    }

    ■ nRduino 프로젝트 시작하기

    1. nRduino 기본 소스 및 헤더파일을 다운로드 받습니다. 로버다인 홈페이지나 Github에서 다운로드 하

    실 수 있습니다. Github 주소는 다음과 같습니다.

    https://github.com/aerodyn890/nRduino

    2. 프로젝트를 새로 생성한 후 다운로드받은 소스코드와 헤더 파일을 프로젝트 폴더에 넣습니다.

  • - 35 -

    3. main.cpp 파일을 생성한 후 위의 기본 포맷대로 작성합니다. 만약 추가 헤더파일을 사용할 경우 클래

    스명을 extern 형식으로 선언해줍니다. 예를 들어 Wire 기능을 사용하고 싶다면 Wire.h 헤더를 Include

    한 다음 아래쪽에 extern _Wire Wire; 라는 클래스 명을 작성해야 클래스 멤버 함수를 사용할 수 있습

    니다.

    4. Makefile 함수로 이동하여 Source 파일의 위치를 설정합니다. SRC_FILES 항목을 수정해야하며 아래와

    같이 사용하고자 하는 모듈에 따라서 추가하면 됩니다.

  • - 36 -

    3. 제품 사용하기

    3. 1. 아날로그 및 디지털 제어

    μAHRS 모듈은 총 8개의 GPIO를 사용할 수 있습니다. I2C, SPI 통신 기능을 사용하지 않는다면 추가로

    6개의 GPIO를 더 사용할 수 있습니다. 사용자는 nRF52 내부의 레지스터를 이용하여 각종 기능을 제어

    할 수 있으며 일부 기능이 활성화되어 있는 경우 특정 기능을 사용하지 못하는 경우도 있습니다.

    nRF52 시리즈는 Cortex-M4 코어가 내장되어 있어 GPIO핀의 용도가 정해져 있지 않습니다. 따라서 사

    용자가 원하는 핀을 원하는 기능으로 손쉽게 할당할 수 있으나 NFC와 같이 특정 기능의 경우 사용할

    수 있는 포트가 별도로 정해져 있어 설정을 바꾸어 사용해야 하는 경우가 있습니다. 자세한 사항은

    Nordic Semiconductor 사에서 배포하는 nRF52832 / nRF52810 데이터시트를 참조 해 주시기 바랍니다.

    디지털 입출력은 가장 기본적인 기능이며 LED의 켜고 끄기, 버튼 입력 등과 같이 기본적인 사용자 인

    터페이스를 구축하는데 사용될 수 있습니다. μAHRS는 VDD_IO의 레퍼런스 전압이 3.3V로 설정되어 있

    으므로 디지털 신호를 출력 할 때 HIGH로 설정시에는 3.3V의 전압을 출력하며 LOW로 설정시에 0V의

    전압을 출력합니다. 디지털 입력의 경우 이와 반대로 3.3V 전압이 입력되면 1(True) 0V의 전압이 측정되

    면 0(False)로 간주합니다. 이 때 기준 전압인 3.3V를 초과한 입력은 제품이 파손될 수 있습니다. 해당

    PCB 이외에 다른 보드를 연결하는 경우에 이에 주의하여야 합니다.

  • - 37 -

    ■ 디지털 출력 예제

    1. 먼저 프로젝트를 생성합니다. 프로젝트 생성은 2.4 항목을 참조해 주시기 바랍니다. 프로젝트를 생

    성한 후 소스파일(main.cpp)를 열어준 후 다음과 같이 코드를 작성합니다.

    #include�

    #define� LED_BUILTIN0� 23 //� 기본�내장� LED0

    #define� LED_BUILTIN1� 24 //� 기본�내장� LED1

    int�main(void){

    //� 핀의�방향을�설정

    NRF_GPIO->DIRSET� =� 0x01�

  • - 38 -

    ■ 디지털 입력 예제

    1. 먼저 프로젝트를 생성합니다. 프로젝트 생성은 2.4 항목을 참조해 주시기 바랍니다. 프로젝트를 생

    성한 후 소스파일(main.cpp)를 열어준 후 다음과 같이 코드를 작성합니다.

    #include� "nrf_gpio.h"

    #define� BUTTON0� 22 //� 버튼

    #define� LED_BUILTIN0� 23 //� 기본�내장� LED0

    #define� LED_BUILTIN1� 24 //� 기본�내장� LED1

    int�main(void){

    //� 버튼이�연결된�핀의� 방향�설정(INPUT)

    //� PULL� UP� 설정

    NRF_GPIO->PIN_CNF[22]� =� 0x0C;

    //� LED� 핀의� 방향�설정

    NRF_GPIO->DIRSET� =� 0x01�

  • - 39 -

    2. 왼쪽 상단의 컴파일 및 디버깅 버튼을 눌러 프로그램을 다운로드 한 후 상단 메뉴 중 재생 버튼이

    나 F8키를 이용하여 프로그램을 실행시킵니다.

    3. PCB 상의 버튼 중 아래쪽에 있는 버튼을 누르면 LED가 켜집니다.(위쪽 사진 참조) 버튼에서 손을

    떼면 LED가 꺼집니다.

    ■ 다양한 예제 파일 이용하기

    사용자가 빠르고 편리하게 개발할 수 있도록 별도의 예제 파일과 프로젝트를 당사 홈페이지(www.ro

    verdyn.com)이나 Github 채널(https://www.github.com/aerodyn890)을 통해서 제공하고 있습니다. 해당

    소스코드는 무료로 이용하실 수 있으며 수정하여 사용하실 수 있으나 소스코드 원본을 다른 곳에 게

    재하거나 배포하는 행위는 금지되어 있습니다.

    위의 두 예제 이외에 다른 예제는 홈페이지나 Github에 공개되어 있습니다.

  • - 40 -

    3. 2. MPU9250 Library

    해당 모듈은 MPU9250 9-DoF 디지털 IMU를 내장하고 있습니다. 3축 가속도 센서, 3축 자이로스코프센

    서, 3축 지자기 센서를 사용하여 다양한 분야에 모션 센서를 적용할 수 있습니다. IMU를 사용해서 자세

    를 측정하는 ARS & AHRS 모듈을 만들 수 있으며 옵션으로 해당 모듈에 맞는 uAHRS 소프트웨어를 별

    도로 구매할 수 있습니다.

    로버다인에서는 MPU9250 센서를 보다 쉽게 사용할 수 있도록 별도의 라이브러리를 제공하고 있습니

    다. 해당 라이브러리는 몇 개의 함수를 이용하여 손쉽게 Raw 데이터와 DMP를 사용할 수 있도록 구성

    되어 있습니다. 라이브러리는 당사 홈페이지나 공식 Github 계정에서 다운로드 받을 수 있습니다.

    ■ MPU9250 Raw data 읽기 예제

    해당 보드는 MPU9250 센서와 I2C(TWI) 통신으로 연결되어 있으며 AD0 핀이 GND로 연결되어 있어

    Slave address는 0x68로 고정되어 있습니다. MPU9250 센서의 데이터를 이용하기 위해서 직접 코딩할

    수 있지만 로버다인에서는 별도의 라이브러리(C++)을 제공하고 있습니다.

    다음 절차를 따라 라이브러리를 이용하여 IMU 센서를 사용할 수 있습니다.

    1. MPU9250 라이브러리를 로버다인 홈페이지에서 다운로드 합니다.

    http://www.roverdyn.com/?page_id=30

    2. 다운로드 받은 파일을 압축 해제하여 프로젝트 폴더에 넣어줍니다.

  • - 41 -

    3. Makefile 파일을 열어 추가한 파일의 경로를 작성해줍니다. 프로젝트 폴더에 넣으면 다음과 같이 작

    성하면 됩니다.

    $(PROJ_DIR)/MPU9250.cpp \

    3. 주 소스코드에서 헤더파일을 인클루드 한 다음 다음과 같이 초기화 합니다.

    #include “MPU9250.h”_MPU9250 MPU9250;

    ...

    int main(void){ MPU9250.Init(); while(1){ }}

    ■ Function, Macro, Variables

    1 void� Init() Return Null

    § 매개변수� :� 없음

    § MPU9250� 센서를�사용하기�위한�초기화

    2 uint8_t� getDeviceId() Return 113(Dec.)

    § 매개변수� :� 없음

    § MPU9250� 센서의� Device� ID를�가져옴

  • - 42 -

    3 uint8_t� getMagId() Return 73(Dec.)

    § 매개변수� :� 없음

    § MPU9250� 내부의� AK8963� 지자기�센서로부터� ID를�읽음

    4 uint8_t� setCfgDLPF(uint8_t� DLPF_GYRO_CFG) Return Error� Code

    § 매개변수� :� 자이로스코프의� DLPF� 설정값

    § 자이로스코프�및�온도센서의� DLPF� 설정값�및�활성화

    5 uint8_t� setCfgAcc(uint8_t� ACCEL_FS_SEL,� uint8_t� DLPF_CFG,� uint8_t� accel_fchoice_b) Return Error� Code

    § 매개변수� :� 가속도�센서의� DLPF� 설정값,� 차단주파수,� 활성화�유무

    § 가속도�센서의� DLPF� 설정값�및� 활성화

    6 uint8_t� setCfgGyro(uint8_t� GYRO_FS_SEL,� Fchoice_b) Return Error� Code

    § 매개변수� :� 자이로스코프�센서의� DLPF� 설정값,� 활성화유무

    § 자이로스코프� DLPF� 차단주파수�설정

    7 uint8_t� setCfgDLPF(uint8_t� DLPF_GYRO_CFG) Return Error� Code

    § 매개변수� :� 자이로스코프�센서의� DLPF� 설정값

    § MPU9250� 센서의� Device� ID를�가져옴

    8 uint16_t*� setMagMode(uint8_t� RESOLUTION,� uint8_t� MODE) Return Error� Code

    § 매개변수� :� 해상도,� 동작모드

    § AK8963� 지자기�센서의�동작� 모드�설정

    9 uint16_t*� getMagASA() Return ASA값

    § 매개변수� :� 없음

    § AK8963� 센서의� ASA값을�읽음

    10 uint16_t*� getRawAcc() Return 가속도�데이터

    § 매개변수� :� 없음

    § 가속도�센서� 데이터�읽음(X,� Y,� Z)

    11 uint16_t*� getRawGyro() Return 자이로스코프�데이터

    § 매개변수� :� 없음

    § 자이로스코프�센서� 데이터�읽음(X,� Y,� Z)

    12 uint16_t*� getRawMag() Return 지자기�데이터

    § 매개변수� :� 없음

    § 지자기�센서� 데이터�읽음(X,� Y,� Z)

    13 float� getTemp(float� TEMP_OFFSET) Return 온도

    § 매개변수� :� 주위� 공기의�온도(칩� 온도를�알고� 싶으면� 0)

    § 온도�값�읽음

  • - 43 -

    3. 3. Bluetooth LE UART Library

    nRF52832의 블루투스 기능을 사용하기 위해서는 Softdevice를 사용하여야 합니다. 블루투스 저에너지

    (Bluetooth LE)는 다양한 서비스를 제공할 수 있지만 그 중에서도 Bluetooth UART 서비스는 단순히 데

    이터를 주고받을 수 있기 때문에 널리 사용됩니다. Roverdyn에서는 블루투스 UART(Nordic UART

    Service, NUS)를 손쉽게 사용할 수 있도록 라이브러리 형태로 소스코드와 함수를 제공하고 있습니다.

    ■ Donwload Library

    라이브러리는 로버다인 홈페이지의 Downloads & Manual 메뉴를 눌러 다운로드 페이지를 내린 후

    nRF52 SDK & Roverdyn Library 메뉴에서 다운로드 할 수 있습니다.

    ■ Initialize

    1. 사용하고자 하는 소스코드 상단에 라이브러리 헤더파일은 인클루드 합니다.

    #include� “Bluetooth.h”

    2. 클래스를 선언합니다. 클래스 명은 _BLE입니다.

    _BLE� BLE;

    3. main 함수 안에 초기화 함수를 호출합니다.

    ...

    int� main(void){

    � � � BLE.Init();

    � � � ...

    }

    ■ Function, Macro, Variables

    1 void� Init() Return Null

    § 매개변수� :� 없음

    § 블루투스�스택을�활성화�하고� UART� 관련�서비스를�초기화합니다.

  • - 44 -

    2 void� send(const� char� *message) Return Null

    § 매개변수� :� 보내고자�하는� 데이터

    § 연결된�장치로�데이터를�보내는�함수입니다.

    3. 4. UART Library

    - 추후 작성

    3. 5. Wire Library

    - 추후 작성

    3. 6. SAADC Library

    - 추후 작성

  • - 45 -

    4. 지원

    4. 1. 고객센터 및 기술지원

    회사명 로버다인(Roverdyn)

    연락처 070-7808-9803

    홈페이지 http://www.roverdyn.com

    기술지원 [email protected]

    주소 (14348)경기도 광명시 일직로 72 광명무역센터 A동 605호

    ※ 방문 시 사전 연락을 부탁드립니다.

  • - 46 -

    4. 2. 수정 이력

    수정일 수정내용

    1 Nov.� 12,� 2019 최초�작성

    2 Dec.� 31,� 2019 SDK� 버전� 업,� MPU9250� 라이브러리�내용�추가

    3 Feb.� 11,� 2019 라이브러리�내용� 수정