2021年9月21日火曜日

M5 Stick Cと心拍センサで血中酸素濃度計を動かしてみる(VS Code)

 前回の記事でVS Code 上でM5 Stick Cを使えるようにしたので、一緒に購入した【 心拍センサー 】を使って血中酸素濃度計を動かして見る


参考にしたのは以下のサイト

というか公開されているソースをそのまま利用させていただいた


・雑技工房:パルスオキシメータ

https://www.zatsugi.com/index.php/2020/05/02/m5stickc-spo2/

・Qiita:M5StickCを用いた血中酸素飽和度の測定

https://qiita.com/mktshhr/items/8aa029cc19278d9f9d12



まずは前回作成したプロジェクトにMAX30100libライブラリを入れる


後は/src配下にソースコードを配置するだけ

Arduino IDE用なので拡張子を【.cpp】に書き換えてビルドすればそのまま動いた



病院のパルスオキシメーターで測るよりも1%程低い数値な気がするが、目安程度には使えるかな

何度か測って極端に低いようであれば異常と判断する程度には利用できると思う


このM5 Stickのシリーズは簡単に繋げられるモジュールもたくさんあるので、他の物も気が向いたら動かして試してみたい


その前にソースをちゃんと理解する方が重要な気もする

2021年9月15日水曜日

ChromebookでM5StickCを使ってみる(VSCode / Pratform IO利用)

【 スイッチサイエンス 】でM5StickCを手に入れたのでChromebookで使ってみることにした


ざっと調べたところArduinoIDEのLinux版が利用できるが、コマンド打ってのインストールだったり、Linuxフォルダ直下に不要なフォルダを作る事を推奨してたりでイマイチ


MS社のVS Codeを使ってるのだから、Arduino系のボードもまとめて使える環境を整えてみた



まずはVS Code上でC言語が使えるように【拡張機能】から【C/C++】をインストール


次に【拡張機能】から【Pratform IO IDE】をインストール


すると左メニューの一番下にPIOのアイコンが表示され、タブに【PIO Home】が表示される

画面右辺りにある【New Project】から新しいプロジェクトを作成し以下入力

【Name】:任意のプロジェクト名

【Board】:M5Stick-C

【Framework】:Arduino(初期値)

Locationは保存先なので、変える必要がなければそのままで



次に同じ【PIO Home】タブの左メニューから【Libraries】を開いて【M5StickC】検索して見つけ、【Add to Project】を押してプロジェクト内にライブラリをインストールする



 後はM5StickCを繋いで、/src内にある【main.cpp】にコードを書けばいい

初期だと#include <Arduino.h>となっているので、<M5stickC.h>に書き換える必要がある

また、拡張子が【.ino】ではなく【.cpp】になっているので、ネット上で見つけたソースを流用する際は注意が必要


コードが完成したらVS Codeの左メニューの一番下にできたPIOのアイコンを開いて【Build】、【upload】を押すか、VS Codeの画面左下にある【→】で処理してもいい



これならVS Codeだけであれこれできるので便利でいいかな

一緒に注文した心拍センサを繋いでのテストもまたやろう

2021年9月8日水曜日

Ryzen搭載ChromebookでWindows10を動かす(QEMU-KVM) ※追記2021/09/15

 折角ハイスペックなChromebookを購入したので、色々と試してみたくてLinux環境にKVMを構築してWindows10を動かしてみる


参考にしたのは以下ブログ

【 Chromebook上でWindowsを動かしてみた(QEMU/KVM) 】 


利用するマシンはLenovo C13 Yoga Chromebook

CPUはRyzen 7 3700C 4コア8スレッド、メモリ16GBの最上位モデル

すでに直販サイトでは販売が終わっている模様


WIndows10のライセンスに関しては検証用に余らせているパッケージ版のWindows10 Proを利用した

動作検証のみで短期利用ならライセンスなしでも使えるが、長期利用の場合はライセンスは必須

当然海賊版は論外として、KVM上への構築となるとDSP版もライセンス違反となるため利用できない点は注意が必要


インストール用のWindows 10 ISOファイルは以下公式サイトから

【 Windows 10 のディスク イメージ (ISO ファイル) のダウンロード

また、virtioのドライバを利用するのでそちらのISOファイルもダウンロードしておく

Lastest版は認識しなかったのでStable版を利用した。(virtio-win-0.1.196.iso)

【 https://github.com/virtio-win/virtio-win-pkg-scripts/blob/master/README.md

どちらもダウンロードしたらLinuxフォルダへ移動もしくはコピーしておく


また、LinuxコンテナのCrostiniはディスク100GBで構築し、日本語化まで終わらせている状態



まずはいつものコマンド

$ sudo apt -y update && sudo apt -y upgrade


KVMに必要な諸々をインストール

$ sudo apt -y install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virtinst libvirt-daemon virt-manager



インストールされた【仮想マシンマネージャー】を起動してWindows10をインストールしていく

画面左上のアイコン【新しい仮想マシンの作成】を選択



【ローカルのインストールメディア(ISOイメージまたはCD-ROMドライブ)(L)】を選択して次へ


【参照】からダウンロードしたWindwos10の ISOファイルを選択して次へ



【Memory】は8192(8GB)、CPUは【8】を選択して次へ



ディスク容量を64GBに変更して次へ
必要であればもっと増やしてもいいかもしれないが、基本的にクラウドストレージを使うのと、このWindows環境上でファイルを扱わないので最低限で設定




【インストールの前に設定をカスタマイズする(U)】にチェックを入れて次へ


【仮想ネットワークが有効ではありません】とダイアログが出てくるので【はい】で次へ


詳細設定画面が開くので【CPU数】を選んで以下を設定して【適用】
【ホストCPUの設定をコピーする】 チェック有り
【CPUトポロジの手動設定(Y)】チェック有り
 ソケット数:1
 コア数:4
 スレッド数:2



【SATAディスク1】を選んで以下を設定して【適用】
ディスクパス:VirtIO



【NIC】を選んで以下を設定して【適用】
デバイスのモデル(L):virtio


【ハードウェアの追加】から以下デバイスを追加する
【カスタムストレージの選択または作成(S)】チェック有り
【管理】からダウンロードしたvirtioのISOファイルを選択
デバイスの種類:CD-ROMデバイス


問題なければ【インストールの開始】からWindowsのインストールをスタートする
デバイスの選択ではWin10用の物を選んで次へ



virtioのNIC用ドライバがインストールされていない状態なので、一旦ローカルアカウントでインストールを進める


問題なく起動したらCDドライブ(E) から【virtio-win-gt-x64】を実行してNIC用ドライバをインストールする
また、標準のグラフィックドライバでは動作が重たいので同じパス内にある【virtio-win-guest-tools】を実行してグラフィックドライバも適用する



これでひとまず問題なく動くようにはなったので、改めてMicrosoftアカウントでログインして、OSライセンスを実行した上で、 Windows Updateを実行

また、Chromebookを再起動した際にKVMの仮想ネットワークが自動起動しなかったので、以下をターミナルから以下を実行
$ sudo virsh net-autostart default



一応ベンチマークを動かした結果は以下の通り

・CrystalDiskMark

・GeekBench

・Chinebench R23


どれの値もかなり低め
CPU自体は定格クロック2.3GHz、ブーストクロック最大4.0GHzではあるがそれにしては値が低い
定格クロックの値は認識しているが、ブーストしていない模様

Minecraftを動かした時にも感じたが、RyzenだとLinuxコンテナのCrostini環境だとブーストしていないのか?
設定できるところが見つかればまた追記しようと思う


※追記
Lenovo社に問い合わせたところブーストクロックに関してはサポート外との回答
ChromeOS側の仕様と思われる

Chromebook自体を開発者モードにしてしまえば実現可能な気はするが、そこまで高負荷な処理はKVM上のWindowsでもCrositini上でもやるつもりはないので、一旦諦めることに

折角のRyzen 7 なので次のモデルを買う際には、この辺りも再度注意して情報を探す必要がありそうだ

2021年8月30日月曜日

ChromebookのLinux(Crostini)環境の日本語化

 以前アップしていた記事の内容だと齟齬があったので、再度内容を確認して投稿し直し


使用機種はLenovo C13 Yoga Chromebook us配列

Crostini は有効化済みの状態


・まずはいつもの

$ sudo apt -y update && sudo apt -y upgrade


・日本語フォントと日本語化パッケージのインストール

$ sudo apt install -y task-japanese fonts-noto-cjk


・ロケールの変更

$ sudo dpkg-reconfigure locales

【ja_JP.UTF-8 UTF-8を選択する】


・日本語IME Mozcのインストール

$ sudo apt -y install fcitx-mozc


・fcitxの環境変数設定
$ sudo vim /etc/systemd/user/cros-garcon.service.d/cros-garcon-override.conf

※以下追記

Environment="GTK_IM_MODULE=fcitx"
Environment="QT_IM_MODULE=fcitx"
Environment="XMODIFIERS=@im=fcitx"
Environment="GDK_BACKEND=x11"



fcitx自動起動の設定

$ sudo vim ~/.sommelierrc

※以下追記

/usr/bin/fcitx-autostart



ここで一旦Chromebookを再起動


・fcitxの設定

$ fcitx-configtool

すでにMozc が追加されていることを確認 


リアルタイム入力用に以下設定

【アドオン】タブの【Advanced】にチェック

一覧から【Fxitx XIM Fronted】を選択して【設定】ボタンを押してダイアログを開く

【XIMで On The Spot スタイルを使う(起動中は変更できません)】にチェックを入れて【OK(0)】を押して閉じる



Crostini側はこれで完了


次にChromebook側で【 Ctrl + Alt + t 】でcroshを起動

【 Ctrl + Shift + p 】でターミナルの設定画面を開く

真ん中辺りの【キーボードバインディング/ショートカット】に以下追加

{

"Ctrl-space":"PASS"

}




これで問題無くCrostini側でも日本語入力できる

2021年8月16日月曜日

ChomebookでのMinecraft Java Edition実行とマウスカーソル対策

 Lenovo製 Chromebook C13 Yogaでマイクラを実行した際、マウスカーソルがウィンドウ外に移動して視線移動がまともにできない事象があったので、情報を探して対策を実施した


参考にしたのは以下のブログ

【 How to Play Minecraft on a Chromebook 】


まずはTerminalを起動していつものアップデートを適用

$ sudo apt -y update && sudo apt -y upgrade



次にJavaのインストール

$ sudo apt -y install default-jdk


マイクラの.debファイルを公式サイトからダウンロード

【 https://www.minecraft.net/ja-jp/download 】


ダウンロードしたファイルを右クリックして【アプリケーションで開く】>【Linuxでのインストール】を実行すればマイクラのインストールは完了


だたし、このままではマウスカーソルの問題が残るのでchrome://flagsで以下の設定を有効化する

chrome://flags/#crostini-gpu-support

 →Linux環境のでGPU有効化

chrome://flags#scheduler-configuration

 →CPUのハイパースレッディング有効化

chrome://flags/#exo-pointer-lock

 →ポインタロックの有効化

chrome://flags/#enable-pointer-lock-options

 →Linuxアプリでのポインタロック要求の許可




この設定で問題なくマウスでの操作が可能になった

マシンスペックも相まって、動作自体に問題はない

一応、FPSを60、チャンク表示を10チャンクくらいに下げるとより快適に操作できるようになったかな

2021年8月8日日曜日

NanoPi R4SでOpenWrtを構築

 今まで使っていたXG Firewall Home EditionはAndroidのv6通信で相性が悪いようなので、改めて別途ルータを用意することに


無線APは別途あるし市販品を買っても仕方ないので今回はOpenWrtを構築することに


選んだ筐体はNanoPi R4S

microSDカードはトランセンドの高耐久350Vシリーズの128GB

電源コードは適当にスイッチ付きでACアダプタ分離型をそれぞれAmazonで購入




OSイメージは以下サイトにスナップショット版がアップされていた

friendlyarmの公式サイトだとFriendlyWrtだったので、OpenWrtのサイト上を漁って見つけた

https://openwrt.org/toh/hwdata/friendlyarm/friendlyarm_nanopi_r4s


画面下部の【Firmware OpenWrt snapshot Install URL:】に記載のURL【http://downloads.openwrt.org/snapshots/targets/rockchip/armv8/openwrt-rockchip-armv8-friendlyarm_nanopi-r4s-ext4-sysupgrade.img.gz】をダウンロードして、適当なソフトウェアでmicroSDカードへイメージファイルを書き込み


初期起動ではWANがDHCP、LANが192.168.1.1/24で起動する

自宅環境だとLANアドレスが競合するため、一旦WANを接続せずにPCを繋いでSSH接続

初期設定はユーザ名:root、PW:無し(空白)でログインできた




まずはLANインターフェースのIPアドレス変更
# vim /etc/config/network

config interface 'lan'の中にあるoption ipaddr の値を書き換える
ika concccc


再起動して、新しいアドレスにアクセスして変更されていることを確認

問題なければWANを接続してインターネットへの疎通を確認してから、以下のコマンドを実行してGUI設定ツールをインストールする


# opkg update

# opkg install luci

# opkg update

# opkg install luci-ssl

/etc/init.d/uhttpd restart


再起動を確認したらブラウザからlan側アドレスへアクセスする

ログイン情報はsshの際と一緒、PWを設定する様に促すメッセージが出てるので、後で変更しておく




【System】>【Software】を開いて【Update lists】をクリックしてインストール可能ツールの一覧を更新して、検索窓から基本の日本語ツール【luci-i18n-base-ja】を検索する





次にIPoE接続用にDS-Lite用のソフトウェアを同じようにインストールする




インストールが完了したら、一旦WAN側を抜いてIPoE接続用の設定を入れていく


【ネットワーク】>【インターフェース】から【WAN】を選んで、プロトコルをDHCPから【Dual-Stack Lite(RFC6333)】に変更して、【DS-Lite AFTRアドレス】に【2404:8e01::feed:100】を入力して保存、2404:8e01::feed:101でも可

東日本だとAFTRアドレスの値は2404:8e00::feed:100か2404:8e00::feed:101になる



次に【wan6】を選んで【DHCPサーバ】>【IPv6設定】を開き、以下の通り設定する

【Designated master】:チェックあり

【RA-Service】:リレーモード

【DHCPv6-サービス】:リレーモード

【NDP-Proxy】:リレーモード


次は【LAN】を選んで、【DHCPサーバ】>【IPv6設定】を開き、以下の通り設定する

【Designated master】:チェックなし

【RA-Service】:リレーモード

【DHCPv6-サービス】:リレーモード

【NDP-Proxy】:リレーモード



また、LAN側のIPアドレスをGUIで帰る場合、情報を変更してから【保存&適用】を実行して90秒以内に新しいIPアドレスでアクセスし直さないと、設定がロールバックされてしまう


ここまで設定すれば、あとはONUからNanoPi R4Sに直結して疎通確認をするだけ

設定が問題なかったのですんなり繋がった


ただ、NanoPi R4Sだとメモリ使用量も1%程度しかなかった



わかってはいたけどオーバースペックだったかな

これなら下位モデルのR2Sでも十分だったかもしれない

2021年8月5日木曜日

新しいChromebook購入

 6月頃にLenovoの公式サイトにてセールがあり、ThinkPad C13 Yoga Chromebookが安くなっていたので購入


せっかくなので最上位のRyzen7 3700C

改めて調べたら深夜帯だと12万代まで落ちたのか・・・・まぁいいか


当初は日本語キーで注文して月末に届いたものの、タッチ液晶の不具合でまともに操作できなかったので初期不良返品して、USキーボードタイプを再注文




メタリックの深い青が格好良くて外観は気に入った

ただ、耐衝撃性などの関係で最近の13インチクラスにしては少し重たいかな


画面は光沢のIPS液晶でsRGB100%対応

でも映り込みが煩わしいので非光沢のフィルムを貼って対応

色味はあまり変わらず見やすくなったが、付属のタッチペンの滑りは少し悪くなったかな?

タッチペンを使う操作はあまりしないので問題なし



早速いくつかソフトウェアを入れて動作確認


・Linuxと日本語環境

 問題なし


・VS Code

 問題なし


・GIMP Linux版

 問題なし


・Rawtherapee Linux版

 エクスプローラ表示はできるものの、編集画面に移行できない

 →別途Darktableをインストールしした

  RAW現像はDarktableなら動く


・Minecraft Java Linux版

 インストールできて一応起動したものの、マウスカーソルが画面外にそのまま出てしまうため、後ろを振り返るためにはマウスカーソルをぐるっと回さないと駄目

 解像度かマウス設定弄ればうまく行くかも?

flagsの設定変更で問題なく操作できるようになった

【 ChomebookでのMinecraft Java Edition実行とマウスカーソル対策  】


・Zoom

 →Androidアプリ及びChrome拡張機能版も一応動く

  また、6月末にPlay StoreへZoom for Chrome -PWA版が登場していおり、こちらであればバーチャル背景も利用できた


  ただ、画面中央を切り抜き周囲をバーチャル背景に置き換えるだけで、人物を認識して切り取ってるわけではなく、背景画像も初期の3種類から変更ができないっぽい

  この辺りは今後のアップデートに期待か


・Amazon Kindle Androidアプリ版

 一応インストールして起動はできた

 ただ、電子書籍を開いた際に画面が真っ白 or  真っ黒となっており、前ページや次ページに移動してから戻さないとまともに表示されない

 これはRyzenとの相性の問題か?

 読めないことはないがかなりストレスを感じるので今の所使うことはないかな



Chromebookならではの起動や終了の速さ、通常の動作の快適性はやはり目を見張るものがある

Windowsや純粋なLinuxに比べてできないことも多いが、サブ機として考えればある程度は妥協可能か

スペックに余裕があるので、KVMにWIndowsをインストールして使うのも手かもしれない