지난번에는 HRM sensor의 값만을 받아왔다.


지난번 포스팅 : http://refrin.tistory.com/4


이번에 진행할 부분은 Gear S3가 지원하는 모든 센서들의 값을 받아 핸드폰으로 전송하는 부분이다.


먼저 기어와 스마트폰의 블루투스 연결을 하고, 기어가 지원하는 센서들의 값을 받아올 것이다. 그리고 그 값들을 스마트폰에 전송할 것이다. 스마트폰에서는 이를 받아 출력할 것이다.


- 사용 샘플


BLE : HelloAccessory

Sensor : UI -> (Circle)Sensors


HelloAccessory는 Provider와 Consumer로 구분되는데 센서의 값을 받을 것이기 때문에 Provider를 Gear(Tizen)로 Consumer를 Smartphone(Android)으로 하여 진행한다.

Sample에 UI -> (Circle)Sensors를 이용하여 센서들의 값을 받고 출력하는 앱을 만든다.


샘플의 적용 방법은 지난 포스팅에서 설명하였으니 따로 작성하지 않겠다.

스마트폰의 경우 지난 포스팅에서 설치한 HelloAccessory 가 설치되어 있다는 전제하에 진행하겠다.


- 네트워크 환경


Gear - Computer Wifi(같은 네트워크)

Gear - Smartphone : BLE


※ TIP : Gear S3의 경우 초기설정에서 블루투스 연결 시 와이파이 해제 라는 부분이 체크되어 있다. 이를 해제하고 와이파이를 항상 연결상태로 바꾸면 위의 네트워크 환경을 껏다 킬 필요 없이 항상 유지할 수 있다.

※ TIP : BLE는 SAP 방식의 블루투스를 사용하므로 이를 지원하기 위해 Smartphone에 Samsung Gear 앱을 설치한다. Tizen Studio 에서는 Package Manager에서 Extension SDK - Samsung Wearable Extension 을 설치한다.



- 사용툴

Tizen studio 1.2, werable SDK 2.3.1 (3.0도 가능), Android studio 2.3.1, Android SDK 4.2 (Android SDK 버전은 별로 큰 상관은 없는 듯)



- 순서


1. 위의 프로젝트의 네트워크 환경을 구축한다.


 - Gear S3 <-> Computer : Wifi(using Tizen studio)



 - Gear S3 <-> Smartphone : BLE

  위의 TIP 대로 Samsung Wearalbe Extension 과 Samsung Gear App 이 설치되어야 한다.


2. HelloAccessory sample 의 sap 부분과 sensor sample 의 sensor 부분을 가져온다.


  - SAP



  - Sensor



 - 위의 사진의 메소드들만 있으면 실행가능하다.    


 ※ TIP : app_create 에서 initalize_sap() 메소드를 실행하는 것을 꼭 잊지 말자!


3. Gear S3 에서 지원하는 것은 다음 7가지 센서다. (Test 결과)


- Accelerometer, Gravity, Linear Acceleration, Gyroscope, Light, Pressure, HRM


- 센서들의 설명은 타이젠 홈페이지에 자세히 설명되어 있다. 해당 URL을 첨부한다.

https://developer.tizen.org/ko/development/guides/native-application/location-and-sensors/device-sensors?langredirect=1


  - Gear S3 에서 지원하는 센서들의 값을 확인 하는 메소드 API도 다음 URL 에서 설명하고 있으니 참고하세요.

  https://developer.tizen.org/dev-guide/2.3.1/org.tizen.sampledescriptions/html/mobile_n/sensorapp_sd_mn.htm


4. 우리가 사용하는 sensor 관련 메소드는 다음과 같다

  

 - sensor_get_default_sensor, sensor_create_listener,

  sensor_listener_set_event_cb, sensor_listener_set_interval,

  sensor_listener_set_option, sensor_listener_start, 

  sensor_listener_read_data


  - Sensor의 type은 다음과 같다.



  - Sensor 옆의 숫자는 Sensor의 Index 번호다. O / X 는 Gear S3 의 지원여부다. ?는 따로 테스트해보지 않았다. 0, 1, 2, 6, 7, 9, 13 (Accelerometer, Gravity, Linear Acceleration, Gyroscope, Light, Pressure, HRM)  총 7개의 센서가 지원가능하다.


5. 프로젝트를 빌드하면 #inlcude <sap.h> 에서 오류가 발생할 것이다. 다음과 같이 해결하자.


  - 프로젝트 오른쪽 클릭 Properties 클릭



 - C/C++ Build - Tizen Settings -> Framework 를 차례로 누르면 samsung-sap 라는 항목이 있다. 이를 체크하면 오류가 사라진다.



6. 테스트


  - 값들에 각각 로그를 달아 안드로이드에 전송하도록 코드를 수정하였다. 다음은 Gear의 화면, 지원 가능한 센서의 index 를 출력하도록 하였다. 전송속도는 10Hz



 - 다음은 값을 받는 SmartPhone의 화면



 - 값을 받아오는 순서는 (Type) 0 ~ 13순인데 특이하게도 값이 표시되는 순서는 ACC - Gravity - Linear ACC - HRM - Gyroscope - Light - Pressure (0 - 1 - 2 - 13 - 6 - 7 - 순으로 고정적이였다.(재빌드 및 프로그램 재실행, 코드 변경 후에도 일치)




다음번 포스팅에서는 Gear 에서 메시지 패킷을 만들어 SmartPhone으로 보내고 SmartPhone 에서 값을 파싱하는 것을 해보도록 하겠다.



< - Error - >


1. 프로젝트 빌드 시 sap.h 를 못찾을 경우

 - 프로젝트 속성 - C/C++ Build - Framework - samsung-sap 체크 후 재빌드

 - Error : fatal error: 'sap.h' file not found


- 참고 URL


Gear Sensor

 - https://developer.tizen.org/ko/development/guides/native-application/location-and-sensors/device-sensors?langredirect=1

 - https://developer.tizen.org/dev-guide/2.3.1/org.tizen.sampledescriptions/html/mobile_n/sensorapp_sd_mn.htm


블로그 이미지

Refrin

일상생활 끄적 IT 프로젝트 끄적

댓글을 달아 주세요