PineTimeをいじってみる

#1、初めに
pinetimeはこんな時計です
https://daily-gadget.net/2020/10/06/post-21924/

25＄くらいだけど、送料もあるので全部で５千円くらいです（到着まで２週間くらい）

#2、OSをwasp-osに変更してみる。

wasp-osはmicroPython製のOSのようです

https://github.com/daniel-thompson/wasp-os



####1,nRF connect for mobileをgoogle playからインストール
デスクトップ版もありますが、別途ボードが必要なようです。

####2,androidデバイスにwaspのbinaryをダウンロードして、解凍しておく
https://github.com/daniel-thompson/wasp-os/releasesから最新版のzipファイルをダウンロードして
解凍しておく

####3,ブートローダー書き込み

androidデバイスでnRF connect for mobileを起動してpinetimeと接続する。
右上に(DFU)と出てくるのでタップ

先ほど解凍したフォルダ内のbuild-pinetimeにあるreloader-mcuboot.zipを選択する


###4,OS本体を送る

再度nRF connect for mobileを起動する。scanするとpinetimeの名称が
PineDFUに変わっているのでもう一度接続。
(DFU)をタップして今度はmicropython.zipを送る


##自分でビルドすることもできます

PCで下記のコマンド実行（当方の環境はxubuntu18.04）

####必要なライブラリ等のインストール
```
sudo apt install \
  wget git build-essential libsdl2-2.0-0 python3-click python3-gi \
  python3-numpy python3-pexpect python3-pil python3-pip python3-pydbus \
  python3-serial unzip
```

```
pip3 install --user cbor pysdl2
```

```
sudo apt install sphinx graphviz python3-recommonmark
```

```
pip3 install --user -r wasp/requirements.txt
```


###ビルド

```
git clone https://github.com/daniel-thompson/wasp-os
cd wasp-os
make submodules
make softdevice
make -j `nproc` BOARD=pinetime all
sudo apt install gcc-arm-none-eabi　#arm-none-eabi-gcc: コマンドが見つからなかったら
```
wasp-osだと、歩数計センサーをうまく取得することができませんでした。。(無効なセンサーですというアラームが出てしまう)



#3,InfiniTimeに戻す。

wasp-osの時は、本体の横のボタンを長押ししてタイミングよく離すとDFUモードになりますので
またnRF connect for mobileを起動する。PineDFUに接続して(DFU)をタップ。今度はreloader-factory.zipを送る
これでデフォルトのInfiniTimeに戻します







#INFINITIMEビルド

https://github.com/JF002/InfiniTime/blob/develop/doc/buildAndProgram.md


必要なアプリの準備

NRFJPROGのインストール
https://www.nordicsemi.com/Products/Development-tools/nRF-Command-Line-Tools/Download#infotabs

gcc-arm-none-eabiのインストール
aptで入るバージョンだとビルドがうまく通りませんでした
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads/9-2020-q2-update

nRF52 SDKインストール
公式に書いてあるやつより新しいのでも大丈夫です
https://www.nordicsemi.com/Products/Development-software/nRF5-SDK/Download#infotabs

```
git clone https://github.com/JF002/InfiniTime.git
cd InfiniTime
git submodule update --init
mkdir build
cd build
```


```
cmake .. -DARM_NONE_EABI_TOOLCHAIN_PATH=/home/***/InfiniTime/gcc-arm-none-eabi-9-2020-q2-update/ -NRF5_SDK_PATH=/home/***/InfiniTime/nRF5_SDK_17.0.2 -DUSE_JLINK=1 -DNRFJPROG=/usr/ -DBUILD_DFU=1

```

```
make -j pinetime-app

make pinetime-mcuboot-app

```
buildから出てtoolsに移動してから

```
python3 imgtool.py create --align 4 --version 1.3.1 --header-size 32 --slot-size 475136 --pad-header /home/kota/InfiniTime/build/src/pinetime-mcuboot-app.bin image.bin
```

```
※このエラーがでたら・・
 from cryptography.hazmat.primitives.asymmetric.ed25519 import (
ModuleNotFoundError: No module named 'cryptography.hazmat.primitives.asymmetric.ed25519'

pip install cryptography
```

```
pip3 install --user adafruit-nrfutil

adafruit-nrfutil dfu genpkg --dev-type 0x0052 --application image.bin dfu.zip
Zip created at dfu.zip

```
このdfu.zipをnRF connect for mobileで送ればOKです


#日本語化
といっても行うのは通知の部分のみ

M+ FONTSフォント　・・とてもきれいなフォントだと思います

https://mplus-fonts.osdn.jp/



pinetimeで使える形にコンバートしてくれるサイトです

https://lvgl.io/tools/fontconverter

下記のように設定してみてください

name:my_font_20
size:20
bbp:1bit-per-pixel

symbols:一右雨円王音下火花貝学気九休玉金空月犬見五口校左三山子四糸字耳七車手十出女小上森人水正生青夕石赤千川先早草足村大男竹中虫町天田土二日入年白八百文木本名目立力林六引羽雲園遠何科夏家歌画回会海絵外角楽活間丸岩顔汽記帰弓牛魚京強教近兄形計元言原戸古午後語工公広交光考行高黄合谷国黒今才細作算止市矢姉思紙寺自時室社弱首秋週春書少場色食心新親図数西声星晴切雪船線前組走多太体台地池知茶昼長鳥朝直通弟店点電刀冬当東答頭同道読内南肉馬売買麦半番父風分聞米歩母方北毎妹万明鳴毛門夜野友用曜来里理話悪安暗医委意育員院飲運泳駅央横屋温化荷界開階寒感漢館岸起期客究急級宮球去橋業曲局銀区苦具君係軽血決研県庫湖向幸港号根祭皿仕死使始指歯詩次事持式実写者主守取酒受州拾終習集住重宿所暑助昭消商章勝乗植申身神真深進世整昔全相送想息速族他打対待代第題炭短談着注柱丁帳調追定庭笛鉄転都度投豆島湯登等動童農波配倍箱畑発反坂板皮悲美鼻筆氷表秒病品負部服福物平返勉放味命面問役薬由油有遊予羊洋葉陽様落流旅両緑礼列練路和愛案以衣位囲胃印英栄塩億加果貨課芽改械害街各覚完官管関観願希季紀喜旗器機議求泣救給挙漁共協鏡競極訓軍郡径型景芸欠結建健験固功好候航康告差菜最材昨札刷殺察参産散残士氏史司試児治辞失借種周祝順初松笑唱焼象照賞臣信成省清静席積折節説浅戦選然争倉巣束側続卒孫帯隊達単置仲貯兆腸低底停的典伝徒努灯堂働特得毒熱念敗梅博飯飛費必票標不夫付府副粉兵別辺変便包法望牧末満未脈民無約勇要養浴利陸良料量輪類令冷例歴連老労録ー圧移因永営衛易益液演応往桜恩可仮価河過賀快解格確額刊幹慣眼基寄規技義逆久旧居許境均禁句群経潔件券険検限現減故個護効厚耕鉱構興講混査再災妻採際在財罪雑酸賛支志枝師資飼示似識質舎謝授修述術準序招承証条状常情織職制性政勢精製税責績接設舌絶銭祖素総造像増則測属率損退貸態団断築張提程適敵統銅導徳独任燃能破犯判版比肥非備俵評貧布婦富武復複仏編弁保墓報豊防貿暴務夢迷綿輸余預容略留領異遺域宇映延沿我灰拡革閣割株干巻看簡危机揮貴疑吸供胸郷勤筋系敬警劇激穴絹権憲源厳己呼誤后孝皇紅降鋼刻穀骨困砂座済裁策冊蚕至私姿視詞誌磁射捨尺若樹収宗就衆従縦縮熟純処署諸除将傷障城蒸針仁垂推寸盛聖誠宣専泉洗染善奏窓創装層操蔵臓存尊宅担探誕段暖値宙忠著庁頂潮賃痛展討党糖届難乳認納脳派拝背肺俳班晩否批秘腹奮並陛閉片補暮宝訪亡忘棒枚幕密盟模訳郵優幼欲翌乱卵覧裏律臨朗論（）亜哀挨曖握扱宛嵐依威為畏尉萎偉椅彙違維慰緯壱逸芋咽姻淫陰隠韻唄鬱畝浦詠影鋭疫悦越謁閲炎怨宴援煙猿鉛縁艶汚凹押旺欧殴翁奥憶臆虞乙俺卸穏佳苛架華菓渦嫁暇禍靴寡箇稼蚊牙瓦雅餓介戒怪拐悔皆塊楷潰壊懐諧劾崖涯慨蓋該概骸垣柿核殻郭較隔獲嚇穫岳顎掛括喝渇葛滑褐轄且釜鎌あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをんがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽぁぃぅぇぉっゃゅょアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲンガギグゲゴザジズゼゾダヂズデドバビブベボパピプペポァィゥェォッャュョヴ、。ー～「」【】『』゛゜♪♭■□◆◇△▲▽▼◎○●◯‥…・∴∵※×〒!”#$%&'()=~|`{+*}<>?_-^\@[;:],./\！”＃＄％＆’（）＝~｜｀｛＋＊｝＜＞？＿－＾\＠［；：］，．／\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ０１２３４５６７８９

メモリサイズ的に全部は無理なので、小学校までの漢字とひらがな・カタカナ、記号をsymbolに張り付けてconvertボタンを押します
上記の文字だとまだ余裕はあるので自分の使いたい文字などを適宜追加してみるとよいと思います


１，出来たファイルをInfiniTime/src/displayapp/fontsにおく

２，src/CMakeLists.txt の487行目くらいにdisplayapp/fonts/my_font_20.c追加

３，src/libs/lv_conf.hの422行目くらいにLV_FONT_DECLARE(my_font_20)追加

４、src/displayapp/screens/Notifications.cppを編集する
　・10行目くらいにextern lv_font_t my_font_20;　を追加
　・184行目のlv_label_set_text(alert_type,title);の下に
　　lv_obj_set_style_local_text_font(alert_type,LV_LABEL_PART_MAIN,LV_STATE_DEFAULT,&my_font_20);を追加
　・195行目のlv_obj_set_width(alert_subject,LV_HOR_RES - 20);の下に
　　lv_obj_set_style_local_text_font(alert_type,LV_LABEL_PART_MAIN,LV_STATE_DEFAULT,&my_font_20);を追加

以上が終わったらビルドしてください

こんな感じになってます

黄色いバンドに変えたのでフェイスの色を変えています
![IMG_20210830_053717.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/90606/6ff0b5be-716c-86cb-0462-462cab668943.jpeg)




　　



日本語表示
![IMG_20210830_053959.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/90606/128127eb-6c81-ae97-842e-c83446cd8e96.jpeg)


#おわりに
InfiniTimeはC++なので、ネットで調べながらやってみました。
OSが変えれるスマートウォッチってとても面白いと思います。
オリジナルのフェイスもつくれたらいいなと思います（日本語のフォントいれたので容量的に難しいかも、、）


スマホとの連携は、ガジェットブリッジというアプリが必要です。https://gadgetbridge.org/
andoroidしかありませんし、googlePlayにはありません。。。