지난번에는 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 프로젝트 끄적

댓글을 달아 주세요

지난번에 설치한 Tizen 관련 환경을 토대로 본격적인 개발에 들어가겠다.


이번에 진행할 부분은 기어의 HRM 센서의 값을 핸드폰으로 전송하는 부분이다.


먼저 기어와 스마트폰의 블루투스 연결을 하고, 기어의 HRM 센서의 값을 받아올 것이다. 그리고 메시지 패킷을 만들어 스마트폰에 HRM 센서의 값을 전송할 것이다. 스마트폰에서는 이를 받아 출력하는 앱을 간단하게 만들 것이다.


- 사용 샘플


BLE : HelloAccessory

HRM Sensor : HRMSensorApp


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

HRMSensorApp을 잘 뜯어보면 라이브러리가 잘만들어져 있어 이를 조금만 응용하면 모든 센서의 값들을 받아올 수 있다. 혹은 Sample에 UI -> (Circle)Sensors를 이용하여 센서들의 값을 받고 출력하는 것을 연습할 수 있다.(다만 Gear S3에서는 위의 샘플 프로그램 실행 시 에러) 모든 센서들의 값을 받고 출력하는 것은 다음 포스팅에서 작성하겠다.


샘플의 적용 방법에 관해 설명을 잠깐 하겠다.

HelloAccessory에서 Android는 Connect, Disconnect, Send 기능이 존재한다. BLE 연결 후 Connect(BLE 연결과는 다름 연결 후 한번 눌러야 함)한 상태에서 Send를 누르면 설정한 문구가 전송된다. (Send 시 초기 설정 문구 "Hello Accessory!")


Tizen에서는 SAP(Samsung Accessory Protocol) 를 통해 값을 받으면 이 메시지를 그대로 복사해 다시 Smartphone으로 보내게된다.

필자는 Gear S3에서 값을 받았을 때 다시 Smartphone으로 보내는 과정에서 HRMSensorApp을 사용하여 HRM sensor 값을 Smartphone으로 전송하려 한다.



※ 사용 샘플을 다운받을 수 있는 URL은 본문 마지막에 명시



- 네트워크 환경


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. Smartphone의 작업을 먼저 하도록 하겠다. Android Studio를 실행해서 HelloAccessory를 Import 한다. 위에서 설명했듯이 Provider는 Tizen, Consumer는 Android다. 따라서 Provider(Tizen)_Consumer(Android) 폴더안에서 Consumer를 import한다. (Eclipse에서도 사용 가능)


 - File - open 에서 해당 폴더 선택 후 확인



 - 사용자 개발환경에 따라 아래와 같은 창이나 오류가 뜰 수 있음 적절하게 해결하면 된다. 아래 그림은 내가 Open 중에 나온 창과 오류들이다. 보통의 경우 Build Tool 이 맞지 않아 생기는 오류이므로 클릭만으로 해결가능하다. (설치된 버전에 따라 오류가 안날수도 내용이 다를수도 있다.)



Update 를 누른다.



Update Build Tools version and sync project Open File을 누른다.


- 모든 오류가 해결되면 아래와 같이 정상적으로 프로젝트가 Open된다.



3. Android 소스코드에 대해서는 따로 언급하지 않겠다. 관심 깊게 볼 부분은 ConsumerActivity.java에서 mOnClick 의 buttonSend 부분과 ConsumerService.java에서 ServiceConnection Class의 OnReceive 메쏘드 부분이다. 말 그대로 Send 버튼을 눌렀을 때와 Gear에서 주는 Message를 받았을 때의 처리 부분이다. 이를 원하는 방향으로 수정한다. 필자는 일단 Send Message를 수정하고 다른것은 건드리지 않았다.


4. Build하고 앱을 Smartphone에 설치한다.


 - 다음은 정상 실행 화면


HelloAccessory Consumer 초기 UI


5. Tizen Studio에서 HelloAccessory Provider를 Import한다. (Tizen Studio는 Eclipse와 같은 UI이기때문에 Eclipse를 할 줄 아는 사람은 쉽게 다룰 수 있다. Tizen Studio에서 오류로 튕기거나 Tizen Studio를 작업표시줄에서 오른쪽 클릭하면 Eclipse.exe 라고 뜨는건 안비밀..)


 - 사실 HelloAccessoryProvider를 직접 사용하는 것이 아니라 필요한 파일이 있어서 import 한 것이다 따로 import 안하고 파일만 가져와도 상관없다. 여기서 필요한 파일은 Gear 와 통신할 수 있게해주는 sap.c다.


/---- 생략 가능

 - Import는 Tizen - Tizen Project로 하며 된다.



 - Project 경로를 찾는다.



 - Load된 프로젝트 정보를 확인하고 Import 한다.



 - Import 된 결과



생략 가능 ----/


 - HRMSensorApp도 마찬가지로 Import하자.




 - 정상적으로 import 된 결과



 - HelloAccessory Provider 에서 sap.c 를 src 디렉토리 안에 복사한다.

 

 - sap.c 에서 main_app.h 를 include 한다. (#include "main_app.h")


 - sap.c 에서 update_ui 부분은 프로그램 실행 시 오류를 유발하므로 모두 지운다. (main_app.c 에서도 지울 것이다.)


 - sap.c 에서 on_data_recived 메소드를 보자 (received 를 오타낸 것 같다.) 코드를 보면 받은 데이터와 길이를 DLOG 로 출력해주고 이를 그대로 전송한다. 우리가 수정해야할 부분이다. 이곳을 기억해두고 main_app.c에서 작업을 하자. 주요하게 볼 부분은 on_sensor_event 메소드와 _sensor_start_cb 메소드다.


 - _sensor_satrt_cb에서는 센서 init 부터 실행까지의 코드가 있고(다른 센서를 테스트하고하자할 때 여기서 작업한다.) on_sensor_event 의 경우 실시간으로 실제로 센서 데이터를 받아오는 부분이다. 여기서 원하는 대로 수정하도록 하자. 필자는 HRM의 출력을 위해 HRM 센서의 값을 HRM_data라는 변수에 소수점 1자리까지 저장시켰다.



 - sap 에서 receive 작업을 하기전에 sap를 실행하는 코드를 넣도록 하자 main_app.c 에 app_create 메소드로 가자. 거기서 initialize_sap();를 추가하도록 하자.



 - 이제 sap.c 로 가자. 아까 봐둔 장소에 HRM 센서 값을 message로 넣어 전송하도록 하자. 필자는 HRM 을 측정하기 전 준비단계 및 오류값(-3) 일때는 Not Ready HRM 이라고 표시할 수 있도록 하였다.



-이제 테스트를 해보자. Smartphone 과 Gear에서 모두 앱을 실행해보자. (Network연결 필수)


Gear S3 앱 실행 화면


Start 버튼 클릭


안드로이드 앱에서 Send Test


※ TIP : 센서들의 값을 확인하기 모호한 경우가 있는데 이 경우에는 DLOG 기능을 이용하여 값들을 LOG 창에서 확인하면 된다.




< - Error - >


1. HRMSensorApp에 sap.c 를 복사 후 빌드를 했는데 sap.h 를 못찾는 다는 오류 발생 시  Package Manager에서 Extension SDK - Samsung Wearable Extension 을 설치한다.




- 소스코드 출처


HRMSensorApp : https://developer.tizen.org/community/tip-tech/accessing-heart-rate-monitor-hrm-sensor-data-native-applications?langswitch=en

HelloAccessory : http://developer.samsung.com/gear/develop/sdk# 에서 Accessory SDK를 다운로드 하고 압축을 풀으면 Sample이 있음 혹은 인터넷에 HelloAccessory라고 쳐도 됨.

블로그 이미지

Refrin

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

댓글을 달아 주세요

Samsung gear s3 를 이용하여 개발할 일이 생겼다.

Samsung gear s3는 HTML5, C, C# 등을 지원하는데

이번 프로젝트에서는 Native 에서 개발하므로 C를 사용할 예정이다.

지원하는 IDE로는 Visual studio(2015 update 3 이상), Eclipse, Tizen Studio 다.

(참고로 VS는 C#을 지원한다. Eclipse 는 잘 모르겠다.)


개발을 위해 Tizen Studio 를 설치하였다.


순서


1. Tizen Studio 다운로드


https://developer.tizen.org/development/tizen-studio/download




 

 - IDE 와 CLI(Command Line Interface) 를 선택한 후 각자 윈도우 비트를 선택한다.

 - 필자는 IDE 64bit 선택하여 다운로드


2. 설치 파일 실행 및 설치


 - 어디서나 보는 설치화면이다. 특별히 선택할 것은 경로밖에 없다. 쭉 진행한다.




 - 설치가 완료되면 Package Manager 를 실행할 수 있는 창이 나온다. 실행하자

3. Package Manager


 - 자신이 개발하고자 하는 환경을 골라 설치한다. 필자는 gear S3를 개발하고자 하므로 3.0 Wearable 을 선택하였다.

 - 설치 진행 중...


 


 - 설치 후 Package Manager를 종료하면 다음과 같은 창이 나온다. 나는 체크 후 확인


 


4. Tizen Studio


 


 - 실행 시 Tizen Studio 의 로고가 나온다. 굉장히 심플한 것 같다.

 

 - 아래와 같이 워크스페이스도 지정할 수 있다. 경로를 설정하자. (Eclipse 를 보는것만 같다.)


 


 - Tizen Studio 실행 완료


 

5. Sample - Buddy UI


 - sample 로 테스트를 해보자


 - File - new - Tizen Project 클릭



 - Sample 클릭



 - Wearable과 버전 확인 후 클릭



 - Native Application 클릭



 - 테스트 하고자 하는 Sample 클릭, 필자는 Buddy UI 선택



 - Project 이름 변경, 필자의 프로젝트는 "HelloTizen"



 - 프로젝트 생성 시 오버뷰가 등장



 - 파일 탐색기



 - 메소드와 변수들



 - 빌드를 하자. 빌드를 하면 Binaries 폴더 등장



 - Emulator Manager에서 맞는 Wearable Device 생성 및 실행



 - 에뮬레이터의 모습, UI 변경도 가능하다



 - Run Configurations에서 Native 선택 후 추가



 - 실행 결과



 - 실제 Gear S3 에서 동작시켜보자



 - 설치를 위해 Samsung Certificate Extension 을 설치하자. Package Manager의 Extension SDK에 있다.(설치할 때 Studio 종료)


 - Gear 설정을 변경하자 (설정에서 모두 변경가능, 디버깅 키고, Wifi를 킨다. Bluetooth 해제도!)






 - Connection Explorer에서 위에서 확인한 ip 를 찾는다
 


 - Gear에 이런창이 나온다. 실제 화면에서는 개인정보가 나와서 다른 이미지로 대체했다.
 

<출처 : 타이젠 홈페이지>


 - 핸드폰과 연결된 것을 확인할 수 있다.



 - Tizen은 Certificate 가 등록되어 있어야 프로그램을 넣을 수 있다. 등록하자. 이 화면은 Tools 에 있다.








 - 여기까지 어렵지 않은 영어이므로 읽어보면서 진행하자. (굳이 읽을 필요도 없다.)

 - 삼성 아이디 로그인을 하는화면인데 삼성아이디가 없으면 만들어야 한다.

 - 여기서 꼭!! 핸드폰으로 아이디를 만들지 말자. 필자는 핸드폰으로 아이디를 만들어 두시간을 헤맸다.



 

 - 로그인에 성공하고 주욱 완료하면 아래와 같이 등록된다.

 


 - 퍼밋을 주자 (이건 아까 디바이스에서 확인한 부분이라 넘어가도 된다. 혹시 모르니 한번 누르자)



 - 이제 프로젝트를 실행하자. 빨간색 동그라미처럼되면 된다. (모델명 + ip)


 


 - 실행 결과






< - Error - >


1. 핸드폰 아이디로 가입하면 이 화면에서 다음화면으로 넘어가지를 않는다... 꼭 이메일로 계정을 만들자!



2. Certificate를 등록하지 않으면 나는 Error
 - Error : SIGNATURE_VERIFICATION_FAILED
 - Certificate를 등록하자



첨부파일은 타이젠 홈페이지에서 다운받은 타이젠스튜디오 관련 pdf



참고 : Gear S3 센서의 API(native) : https://developer.tizen.org/ko/development/guides/native-application/location-and-sensors/device-sensors?langredirect=1
       Tizen guide : https://developer.tizen.org/sites/default/files/documentation/1_tizen_studio_windows.pdf



tizen_studio_windows.pdf

블로그 이미지

Refrin

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

댓글을 달아 주세요