ガーミンとあそぼ

# はじめに
GARMINウォッチ(235J)でいろいろやっていく会
自分用備忘録です

なお，Windows推奨(Macでは未確認)

# ひつようなもの
・GARMINウォッチ本体(今回は235Jシリーズを使用)
・ANTドングル(純正じゃなくても大丈夫です)
・PC(Windows10以外ではプログラムが正常に動作しないっぽい)

# 今回の目的
ガーミンで取得したFIT形式の心拍数をリアルタイムに変換してPC上で計測．オフラインで動作，結果計測まで完結．
そのうち複数台計測できるようにしたい．


# 今回やること
<!-- タイトルとアンカー名を編集 -->
1. [アカウント作りなどもろもろの準備](#Chapter1)
1. [FIT形式→csv形式の拡張子変換](#Chapter2)
1. [ANTを使ったオフラインデータ取得](#Chapter3)

<!-- 各チャプター -->
<a id="#Chapter1"></a>
# アカウント作りなどもろもろの準備
ガーミン用のアカウントやANT用のアカウントなど，色々と必要になります．
めんどくさいけど我慢して一からアカウントを作成していく．

## GARMINのアカウント
[ガーミンエクスプレス](https://www.garmin.com/ja-JP/software/express/windows/)をダウンロードする．ガーミンエクスプレスとはガーミン本体とPCの同期用のアプリ．DLするとアカウントを作りなさいと言われるので，メールアドレスで新規登録．


DL，インストールしたら実際にデータを計測してPCと同期できるか試してみる．
ガーミンを腕につけ計測モードを選ぶ．実験で使用するなら基本は「屋内ラン」が良き(屋外ランだとGPSが計測できないと動かないのであまりよくない)．

10分ほど計測したら終了してPCと接続，同期してみる．
計測データはPC>Garmin ForeAthlete 235J>GARMIN>ACTIVITYに.FITというバイナリ形式で格納されている．

しばらくすると[ガーミンコネクト](https://connect.garmin.com/signin/)(webアプリで取得したデータを一覧形式で見れる)に反映される．
![スクリーンショット (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268861/c1da9069-2887-4907-e101-5e92cd32c8c3.png)
ガーミンコネクトでは，左側のアクティビティから一覧の結果が表示される．
ここでデータを選択して，右上の「csvをエクスポート」を押すとcsv形式でデータを取得できる．（サーバ側からみてのエクスポート/インポートなのでちょっとニュアンスに違和感）


## ANTのアカウント
ANTのSDKやらをDLするのに必要なANTアカウントも作っておく．
[THIS IS ANT](https://www.thisisant.com/)に接続してふつーにアカウントを登録するだけだが`認証まで数日待たされるので注意`


<a id="#Chapter2"></a>
# FIT形式→csv形式の拡張子変換

ガーミンで取得した.FIT形式を自由に閲覧できるようにローカルでも.csvに変換したい．
参考ページはここ
[Using FitCSVTool on Windows](https://developer.garmin.com/fit/fitcsvtool/windows/)

jarファイルを扱うので念のためjavaが入っているかかくにんしとく．

```
java -version
```


次に，[THIS IS ANT](https://www.thisisant.com/)に接続してFitSDKをDLしてくる(DEVELOPER>RESOURCES>Downloads)．
今回使用したバージョンはFitSDKRelease_21.47.00.zip
![スクリーンショット 2021-04-02 13.02.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268861/eafa9dc7-9287-27a6-665b-753e0f02f310.png)

DLしたらどこでもいいので展開，今回はDocuments直下にした．
ディレクトリも同じ階層に移動しておく．

```
C:\Users\x-rkk\Documents\FitSDKRelease_21.47.00
```

あとは変換したいファイルをFitSDKRelease_21.47.00>Activityに配置するだけ．
以下をコマンドプロンプトで実行して変換できる．

```
java -jar .\java\使用するツール名.jar .\examples\変換したいファイル名.fit
```
```
今回はこう
java -jar .\java\FitCSVTool.jar .\examples\TEST_Activity.fit
```
これで.FITファイルをcsvに変換できる(さっきのフォルダにcsvができている)

<a id="#reference"></a>
# ANTを使ったオフラインデータ取得

ANTのドングルをPCに挿してガーミンと直接リアルタイムで通信する．
こいつがレシーバ側になる．
![IMG_1924.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268861/2b298b0f-0320-dd6e-6a3a-962deabbe81b.jpeg)


## ANTのUSBドライバを更新

ドングルをPCに挿したらデバイスマネージャから確認してみる．
ANTのUSBのところにはおそらく「！」マークが出ているので，ドライバを個別にDLしてから「ドライバの更新」を選択する．
ドライバのDLは[THIS IS ANT](https://www.thisisant.com/)から，以下のものを選択．
![スクリーンショット (14).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268861/24a6fe4a-1304-9fdb-5bb7-eea42d233a81.png)

##　ガーミン本体の設定

このあと実際にデータを計測するので腕に装着しておく．
データを送信する際はガーミン本体のメニュー>設定>光学式心拍計>で心拍が自動モードになっていることを確認．
![IMG_1925.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268861/05dfd0b8-a356-266c-080f-cf1c6a81dd6b.jpeg)



## ANT-SDKのビルドとプログラムの起動まで

先ほどと同様THIS IS ANTに接続してANT-SDKPC3.5をダウンロードする．
場所わかりにくいので注意(DEVELOPER>RESOURCES>Downloads)．

DLしたら適当に展開
![スクリーンショット (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268861/a1686a8b-fb6a-d15d-9930-8d26dee62d63.png)
ANT_Libraries.slをクリックしてVisual Studioで開く．
`Visual Studioのバージョンは2019推奨，ちなみに2012ではだめでした`

![スクリーンショット (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268861/b5eceeaa-c6f1-670d-8005-b07c4a2b017a.png)

一番上のソリューションANT_Librariesを右クリックしてビルド．
ここまでで特に何もしなくてもビルドは正常に終了
![スクリーンショット (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268861/a39cc68f-2ec2-15f4-6b5d-b21223473b4e.png)


お次はANTでガーミンから計測結果を受信するプログラム(demo_hr_receiver.cpp)を動かす．
まずはVisual Studioを起動し直す．
`ただしVSはソリューションファイルからではなく，単体で起動すること`
ソリューションファイルから開かないこと(これで起動しないとパッケージの依存関係がめんどくさい)!

![スクリーンショット (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268861/2ab51503-d1be-b628-29e0-87cd6e61e768.png)

VSを起動したらソリューションファイルではなくANT-SDKのフォルダごと開く
![スクリーンショット (16).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268861/0cdb3335-2d49-c610-e71f-94313e26e8b5.png)


VSを開いたら受信用のアプリ(DEMO_HR_RECEIVER>Release>demo_hr_receiver.cpp)をデバックなしで開始．
ここで上手くいかなかったらもう一度パッケージをビルドしてあげるといいかも

![スクリーンショット (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268861/90b9a1ba-b1d0-5019-74ae-be6b79c4bf63.png)

起動するとこんな感じのウインドウが出てくる．
USB Device numberはワイルドカード(0)を指定，その他の項目はデフォルトのままEnterでok．
Network Numberは0を指定する．
![スクリーンショット (13).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268861/2da5041e-68d2-8fe7-6a91-0b387b07e89c.png)


成功するとこんな感じで心拍数の計測結果がリアルタイムに表示される．
コネクションがうまく確立できない時はドライバを再インストールしたり，ANTwareⅡというアプリでデバイスを認識できるか確認してみる．
![スクリーンショット (17).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268861/63434b90-e527-abd9-e6e6-3110ceef213e.png)


これでやりたいことは一通り完成．
正常に動作しないときはANTのドングルを挿し直す，ガーミンを起動し直してみる，ソリューションとプログラムのリビルドを試してみる．