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 なので次のモデルを買う際には、この辺りも再度注意して情報を探す必要がありそうだ