CH32V307VCT6をArduinoで使う

アリエクでEthernet端子が載っているCH32Vを見かけたので買ってみました。
今回はArduino IDEでLチカできることの確認まで試します。

CH32V307VCT6開発ボード

概要

  • 性能は悪くなさそう、簡単な用途なら使えるよ
  • 今のところ、使えない機能があるよ
  • 本格活用するならMounRiverを使おう

購入の話

購入したのはこちら。
https://ja.aliexpress.com/item/1005004350410929.html
2024/1時点では$4.5(→700円程度)+送料と、有線LAN付きボードとしては格安となっています。
なお、このチップを搭載した開発ボードは観測した範囲で4種類ありました。コネクタの出し方が少しずつ違うようなので、用途に応じて選定しましょう。

ちなみに、現時点では秋月でCH32V003~CH32V305まで売っています。
いずれCH32V307も販売されるかもしれません。

端子関連の補足として、

  • Ethernetは10Mbpsのようです。 結線が2対のため、電源供給の併用は難しそうです。
  • Type-Cコネクタは2つありますが、初期状態ではプログラムの書き込みに使えません。(USB2.0バイスとして扱うコネクタのようです。)
  • SWD端子横の謎コネクタはTFカード用のようです、microSDカードが刺さることを確認しています。(読み書きは未検証)
  • このタイプのボードはSWD経由でのSerialが動かないようです。使い方の調査中。

事前設定

WCH-LinkEの設定

前述のとおり、USB端子で書き込むことはできないので、WCH-LinkEのSWDで接続します。
最近はLinkEのコネクタを統一するのにポケットヘッダを使っています。

以前秋月で買ったWCH-LinkEだとバージョンアップが必要なようです、アップデートされるまで数分待ちます。

アップデート

アップデート完了後、CH32Vの情報を読み取ります。
赤枠のQueryボタンを実行すると、右側に情報が出てきます。

Read protection

Read Protectがかかっていると、この後の書き込みがうまくいかないので解除しておきます。
解除は鍵解除マークでできます。(何に対するロックなんだろう…)
解除すると、Read ProtectがDisabledになります。

ロック機能はCH32V003を使った際は見かけなかった気がするので、上位機種の機能でしょうか。

Arduino IDEで一部ピンを使う

CH32Vを使う場合はBoards Managerから「CH32 MCU EVT Boards」を入れておきます。
作業時は1.0.4が最新のようです。

このピン指定はPAxxやPBxxは定義されているようで、そのまま動きます。

void setup() {
  pinMode(PA5, OUTPUT);
}

void loop() {
  digitalWrite(PA5, HIGH);
  delay(500);
  digitalWrite(PA5, LOW);
  delay(500);
}

ボードはCH32V30x

setting

書き込みはエラーに見える表示ですが、これが正常です。

正常ケース

A5ポートにLEDを刺せば点滅するはずです。 (抵抗付きLEDって便利ですね)

PAxx~PBxx以外について

現在のArduino CoreでCH32V307の定義がこちらのようです。
arduino_core_ch32/variants/CH32V30x/CH32V307VCT6/variant_CH32V307VCT6.h at main · openwch/arduino_core_ch32 · GitHub

PC~PEは定義がされていないため、コンパイルエラーとなります。
今後のアップデートで使える可能性はありますが、現時点では使えません。PBまでのポートで頑張りましょう。

最後に

どこまでが正常動作か分からず苦労しました…
EthernetはMounRiverの方が情報があるようなので、次はMounRiverを試します。

簡易PoE改造して使う予定でしたが、コネクタの構造上難しそう……

QIDI Tech X-Smart3のカメラ購入記録

久々に記事を書く気になったので

最近はQIDI Tech X-Smart3を導入してフル活用しています。

Klipper標準搭載、オートレベリングあり、ハウジングあり、InputShaperありで造形の乱れが少ない、500mm/sクラスの競合より廉価。
特に、2023/11に入ってからは5万円を切っていてお買い得です!!

Amazon | QIDI TECH X-Smart3 3Dプリンター 500mm/s高速デスクトップfdm 3Dプリンター 初心者向け、CoreXY&クリッパー、オートレベリング、インプットシェイパー、ビルドサイズ6.89x7.09x6.69インチ | 3Dプリンタ本体 | 産業・研究開発用品 通販

…そんなX-Smart3ですが、標準ではカメラが付属しておりません。

今回は、X-Smart3に後付けする純正カメラの購入メモです。

購入

今回は、QIDI Tech公式サイトで購入しました。
定価6200円で送料無料、2023/11時点では10%オフの5580円です。


X-Max 3/X-Plus 3/X-Smart 3 カメラ (先行販売) – Qidi Tech Online Store

到着までの日数としては1週間程度。(2023/11/03注文→11/9発送→11/10着)
国を「日本」にするとヤマトで届きました。国内発送のようです。

開封

パッケージはこんな感じ。Amazonみを感じます。

QIDI Techカメラ外箱

中身はカメラと取り付け説明書。

QIDI Techカメラ同梱品

取り付け

早速取り付けます。

裏面のパネルを外して、メインボードのUSBポートに刺します。
既に接続されているケーブルは外側のUSBポートなので、必要でなければ抜いてもよいかも。

メインボード

反対側のコネクタは、他のケーブルを通している穴からハウジング内側に通してカメラと接続します。

カメラの取り付け位置はZ軸フレームの右手前にある出っ張りが正解のようです。

フレーム右手前

取り付けるとこんな感じ。

カメラ取付後

あとは裏面パネルを取り付けて、ケーブルをケーブルタイで止めれば設置完了です。

起動

接続後は普段通りX-Smart3の電源を入れれば、fluiddのUIにカメラが表示されます。
お手軽でいいですね

結論

X-Smart3、ひとまず造形したい人や予備機が欲しい人にかなりオススメです。1台どうですか?

おまけ

公式で買った後にAmazonで売っているのに気づきました。
お急ぎの方はAmazonの方が速いです。

https://www.amazon.co.jp/dp/B0CKR4G6Y6

ProxmoxでtrunkとVLANを併用する

小ネタすぎて見つからなかったのでメモを放流。

Proxmox VEで、1つのNICでトランクポートとアクセスポートを併用する方法についてです。
※いくつか試して一番扱いやすかった方法です。他の方法もあるかも

要約

VLAN Awareを使えばいけます。

環境

OS : Proxmox VE 7.3
CPU: i5-6500T
RAM: 24GB
NIC: Intel PRO/1000 PT 4ポート(Intel 82576)

設定

VLANのおさらい

設定の前に、VLANについて。

VLANのトランクポートの挙動

トランクポートでは、普段と変わらないL2パケットを流します。
そのポートに別のLANのパケットを流す場合、そのまま送信すると混信してしまいます。
そこで、「VLANタグ」を付けてトランクポートに流し、混線しないように通信します。

スイッチングハブや通常のPCの場合

スイッチングハブなどはVLANタグを無視してただのパケットとして処理します。
※ 解く必要がなければただのハブでもVLANパケットを流すことはできます。
通常のクライアントPCであれば、VLANタグ付きのパケットは破棄することが多いようです。

VLAN対応機器の場合

VLAN対応機器(L2/L3スイッチやハイパーバイザ)では、タグのないパケットと「VLANタグ」を外したパケットを別々に処理できます。
タグを外したパケットを、タグを付けずに出力したポートがアクセスポートです。

設定手順

Proxmoxは、通常のbridge設定ではVLANパケットを破棄する仕様のようです。
そこで、VLANを許可する「VLAN Aware」を有効にして設定します。

※ 同時に利用しない場合は不要です。

1. トランクポート用vmbr作成

まずはトランクポート用のvmbrを作ります。

Linux Bridgeを選択

トランクポート設定時は、「VLAN Aware」にチェックを入れておきます。
ここでは物理NICを指定します。

トランクポート側の設定

2. VLAN NIC作成

次に、VLANに対応する仮想アクセスポートを作成します。

Linux VLANを選択

ここでも、物理NICを指定します。
※ デフォルトの命名規則では「vlanXXX」のXXX部分が自動的にVLANタグ値になります。

アクセスポート側の設定

3. VLAN用vmbr作成

作成したVLANに対してvmbrを作ります。 ここでは、2.で作成したvlanを選択してください。

VLANを指定したLinux Bridgeの作成

4. VMでの接続

ここまで設定すれば、通常のポート設定と同様にメニューからvmbrを指定できます。
VM側のVLAN Tagは指定しません。

VM設定画面

この設定のメリットは、VLAN回線とトランク回線を意識せずに切り替えられる点です。

e.g. 設定例

※ 加工してあります。


分かってしまえば簡単でも、適当に使ってると分からない…

NeosのPlusな世界線(NeosPlus プラグイン)

こんにちは。NeosVR(その2) Advent Calendar 2022 の11日目担当のcer12uです。
カレンダー10日目 のホーカムさんを引きずり込んだ人です。ぜひそちらの記事も見てね
その1の方ではorangeさんがNeosARの記事を出す予定です、こちらもどうぞ

はじめに

ネタにされる くらいアップデートの来ないNeosVRですが、その間にも有志によりModやPluginの更新が行われています。
Modについては1日目のよっしーさんが記事を書いているので、私はPluginの方に触れてみます。

PluginはMod以上に情報がなく難しいです。こういう世界もあるんだ、くらいで読んでみてください。できそうなら行ってみても良いかもしれません。

!!!注意!!!

  • mod同様、公式ではないので自己責任です。
  • 通常版のワールドには原則参加できません。(だからタイトルが「世界線」)
  • プラグイン環境で作ったものを通常版のNeosで出さないこと。迷惑はかけちゃダメ

導入方法

導入方法はModとほぼ同じです。

パッケージはこちら。
GitHub - Xlinka/NeosPlus: NeosVR Plugin Extra Logix nodes and features

このページの「Releases」を開いて、「NEOSPlus.dll」をダウンロードしてください。
ダウンロードしたDLLを通常版であれば「C:\Neos\app\Libraries」にコピーしておきます。

あとはMod同様、Neos.exeのショートカットに引数を設定して起動しましょう。

こんな感じ。

C:\Neos\app\Neos.exe -LoadAssembly "Libraries\NEOSPlus.dll"

ほら、(導入は)簡単。

設定後に起動すれば、フレンド全員ピンク(互換性なし)表示のNeosPlusの世界に辿り着きます。

Pluginで増えた機能を使ってみる

NeosPlusの世界に辿り着いたところで、Plusの機能を使っていきます。

LogiX

こちらの世界では、LogiXに色々な機能追加が行われています。
見比べてみるとこんな感じ。

今回はこのうちいくつかに触れてみます。

JSON配列

この世界のLogiXではJSONが扱えます。
主にRESTAPI操作を想定していそうな機能が多く追加されています。

AppendやDelete、ToString/Parseなどが使えます。

Jsonオブジェクト

JSONは配列以外にオブジェクトもありますよね?そちらも一応使えます。

ただ検証段階ではstringのParseは動くものの、Addがうまく動かせていない…
現状、外部からデータを取ってくる際に使うことになりそうです。

文字処理関連

BASE64ハッシュ関数、ハミング距離などが追加されています。

認証などに使うことを想定しているのでしょう、多分。

Material

プラグインではToonを増やすこともできるようです。
NeosPlusでは、MToonとTestMaterialが追加されています。

MToonはVRM向けのトゥーンシェーダのため、XiexeToonの代わりになりそうです。VRoid Studioで作ったアバターと相性がよさそう。
TestMaterialは…何だろう…?

Clothコンポーネント

NeosPlusには布を再現するClothコンポーネントが追加されています。
このコンポーネントは例えば、球体にClothを設定して重力をかけると右画像のように変形します。

アバター向けに有効な機能ですが、少し分かりづらい機能なので手順を解説

1. テスト用のオブジェクト準備

球体を2個用意し、片方にCloth、片方にClothSphereColliderコンポーネントを追加します。
Cloth側はメッシュが多いもの、Collider側はSphereCapsuleを設定するのがよいでしょう。

2. コライダーの登録

ClothSphereColliderをClothの「ClothColliders」のListに追加します。

これはDynamicBoneと同じと思えばよいかと思います。

3. Clothのメッシュを設定

Clothは独自のメッシュを保持し、それを変形させる仕組みのようです。
そこで、メッシュとマテリアルの設定をMeshRendererからClothに移します。

  • MeshRendererのMeshとMaterialsをClothのMeshとMaterialsに転記する
  • MeshRendererのEnabledをオフにする

4.Clothの動作を試す

ClothSphereColliderを設定した球体を、Cloth側に衝突させてみましょう。
すると変形するはずです。

後は適宜Dampingの値を変えて変形度合いを調整します。

変形しすぎた場合

ClothEnabledのチェックを一度OFFにすると戻ります。

重力を表現

Collider側を中に入れた状態でUseGravityを有効にすれば、布のように被さります。

Rigidコンポーネント

patreonの先行ビルドにはRigid(剛体)コンポーネントが含まれています。
…が、使い方が分からなかったので今回は省略

おわりに

以上、NEOSPlusプラグインの紹介でした。

通常Neosの機能不足に飽きたら一度行ってみても良いかもしれません。

本家のリリース来てくれないかな

明日と明後日(12/12,13)は銀鮭さんがライテルさんへの友情を語ってくれるようです。ご期待ください。

VIVE Focus3のアイトラッカーを購入した記録

Focus3用のアイトラッカーを購入して1カ月経ちました。
購入にあたって色々調べたものの、VIVE Focus3のアイトラッカーは「発売されました」ばかりで実記がヒットしなかったので書きます。

2022/11時点では(ソフトウェア側を準備する)手順が分かりづらい構造となっています。
いずれ改善されると思いたい…

対応状況

Focus3のアイトラッカーはSRAnipal/OpenXRいずれも対応しています。
SRAnipalは試しましたが、OpenXRについては不明です。

ハードウェア

相変わらずハードウェアはしっかりしているため、セットアップは簡単です。

付属のTypeC - TypeCケーブルでFocus3の横にあるポートに接続します。

あとは普段通りHMDを起動すれば認識されているはずです。

※ 単体でPCに接続するとデバイスが認識されることは確認しましたが、実際に動作するかは未確認です。

センサー

赤外LEDはこのような配置になっているようです。恐らく下の出っ張りがカメラ

目の横部分にはLEDがないからか、VRsatileが問題なく使える…らしい(VIVE Japan公式より)。
今後購入してみる予定です。

ソフトウェア

最新版のSRAnipal が必要です。(動作確認したのは1.3.6.8以降)

今のところ、Eye/FacialのバージョンはN/Aで問題なく動きます。

※ Focus3対応後、1.3.6.6→1.3.6.8→1.3.6.9→1.3.6.10とリリースされています。
SRAnipal 1.3.6.6は正しく動作しないそうなので、当面は現状の最新版を使うのが無難です。

ただし、VIVE公式からダウンロードすることができません。

VIVEのサイトからダウンロードできるのは1.3.2.0です。(NeosVRで必要な場合はこちらから…)

VIVE アイ・アンド・フェイストラッキングのランタイムを更新するには?

インストール手順

最新版のSRAnipalはSteamVRのみに公開されています。

store.steampowered.com

こちらのVIVEコンソールをインストールし、設定からBetaを有効にしてアップデートします。

インストール後、アプリが起動してきますがFocus3では使えないので終了します。

その後、VIVE Consoleインストールに含まれている「sr_runtime.exe」を起動すれば使えます。

デフォルトならこのパスにあるはず。

C:\Program Files (x86)\Steam\steamapps\common\VIVEDriver\App\SRanipal

アイコンが黒または青表示であれば認識しているようです。

※ VIVE公式に青ステータスの表記がないため詳細不明、青と緑のケースもあって謎…
また、緑表示やオレンジ表示になるケースもあり、わけがわからない…

SDK

SRAnipalは1.3.6.8以降を使いますが、SDKについては引き続き1.3.6.6を使えば動きます。

developer.vive.com

記載の手順に従ってSRAnipal SDKを使えば動作確認できるはずです。

当環境では、SRAnipal 1.3.6.8 / SRAnipal SDK 1.3.6.6で動作することを確認しています。

おわりに

公式やアンバサダーから情報発信してよ……

HTC VIVE Focus3関連の雑記

VIVE Focus3を購入してそろそろ1カ月なので、使っている中での雑記を載せます。
「借りて試しました」とか似た内容のサイトばかり乱立しやがって、書くなら買うか長期利用しろ

VIVE Pro2の解像度を持ち、Pro Eyeのようにアイトラフェイシャルに対応できる、インサイドアウトでセットアップが楽!!
(カタログスペックは)高性能なVIVE Focus3のお話です。

概要

PCとの接続方法

Focus3は他のVIVE製品と異なり、VBS (VIVE Business Streaming)を使います。

インストール手順はここに記載があります。 www.vive.com

SteamVR→VBSの順にインストールし、同じネットワーク上でVBSを起動すれば接続が可能です。 他の接続方法を知りませんが、セットアップさえ終われば楽に使えます。

また、有線接続は可能ですが、あまりメリットがないため無線専用と考えてよいかと思います。

充電方法

HMD本体

専用の30W(12V2.5A)充電器限定です。USB Type-Cでは充電できません。

専用の12V電源を使うだけあって、充電速度は非常に高速です。(公称30分で50%)
トラッカーをフル装備した状態でも使用中にバッテリー残量が増加します。

4.0mm/1.7mmのDCコネクタのようなので、Type-C トリガーケーブル(12V)での充電検証を計画中

コントローラ

コントローラはFocus3のHMDから充電する記載になっていたりします。または10WのACアダプタ購入

https://www.matts-digital.com/Files/132319/VIVE_FOCUS_3_UK.pdf

バッテリー

HMDとしては非常に珍しく、交換可能な構造になっています。

このように単体で充電できるため、予備のバッテリーを買っておいて交換しながら連続運用することもできます。
名前通りビジネスを想定されているのでしょうね。

HMDとバッテリーはこのような構造で単体充電とHMD充電が両立されています。

バッテリー持ちは体感では3時間程度、アイトラ・フェイシャルをフルで動かすと2時間程度の持ちです。

コントローラ

現状クソ 悪くはないものの、改善の余地があるコントローラです。

(カタログ上は)サムレストのタッチセンサーもあり、Quest2のTouchコントローラと同等の機能を持っています。
グリップ部が長いため、Touchコントローラよりホールド感があります。

入手性についても、2万円で安定して購入でき、VIVE Flow 2 (仮)で対応しそうな気配もあります。

また、ハンドジェスチャーも対応しています がQuest2のALVRの方が高性能かもしれない
ハンドジェスチャーを使う場合、コントローラを机に置くなどして静止して2~3秒で切り替わります。

現状の問題として、2022/11時点ではSteamVR側でCosmosコントローラとして配置されるようで手が微妙にねじれます。
※ 設定ミスの可能性あり

(現状だと選ぶ理由がない…Focus3コントローラ後継でハンドジェスチャに対応するとかしてもらえないか)

リストトラッカー

リストトラッカーが発売されていますが、コントローラ同様にインサイドアウト方式です。

コントローラを持たずにコントローラのトラッキング精度を出す補助デバイス枠と聞いています。
VIVEトラッカーと違い、置物に使うような使い方ができそうにないため、現状では用途が限られます。

その他

録画

VRでの画面録画が非常に楽です。

メニューからスクリーンショットが撮影できます。

録画も可能です。メニューから録画できます。

microSD

なぜかmicroSDカードが刺さります。
スタンドアロンアプリで何か作るのであれば使い道もありそうですが、PCVRとして使うには効果がない…

ファンノイズ

PCVR用ならファンがフル稼働します。
すぐ近くでノートPCのファンが鳴っているようなものなので、静かな環境だと気になるはず

おわりに

  • ハードウェアは良いのにどうして……

  • ユーザ数こそ正義

秋葉原の安物USBメモリ検証 (2022/11版)

リハビリ程度に小ネタ投稿です

秋葉原の安物USBメモリ検証」

内容

最近は秋葉原やネットショップなど、非常に廉価なUSBメモリが大量に出回っています。しかし!!大抵は調べても性能が分かりません。
そこで今回は、安物USBはどれだけ戦えるか?を調べてみます。
…え?値段はいいから高性能なのが欲しい? SSDタイプの高いやつを買ってください。

今回検証するのはこちら。

① Gigastone U307S (32GB)
② KIOXIA TransMemory U366 (16GB)
③ LAZOS USB3.0 (32GB)

サンプル数1なので参考程度でお願いします。

外観

① Gigastone U307S

まず最初はGigastoneのUSB3.0メモリです。
そこそこ有名なメーカでデザインも無難なモデルですね。

今回は32GBを499円で購入しました。普段は550~600円の価格帯のようです。

② KIOXIA TransMemory U366 (LU366S016GG4)

お次は元東芝、現KIOXIAのUSB3.2 Gen1メモリです。
外装が金属製なので放熱や強度は信用できそう。

価格は16GBで550円。OS起動用ならこれで充分。
日本メーカだけれど台湾製なんですね (性能が出るならどこでもいいけど)

③ LAZOS USB3.0 フラッシュメモリ (L-US32-3.0)

最近秋葉原でよく見かけるようになった?安物廉価な製品を出しているLAZOSのUSB3.0メモリです。
安いので買ってみました。

価格は32GBで550円。2022年時点で最安の価格帯です。

パフォーマンス検証

本題はこちら。
USBメモリとしての性能を検証することで、用途を決めていきます。
パフォーマンスは作業時間に直結しますから重要ですね。

ベンチマークはお手軽で再現性の高いCrystalDiskMark 8.0.4を使っていきます。
測定は1GBと8GBで実施。

また、Powershellで10バイト程度の極小ファイルを1000個書き込んだ際の時間も測定してみます。

① Gigastone U307S (32GB)

シーケンシャルのR/Wは高速ですが、ランダム書き込みが非常に遅い結果となりました。
ISOや動画など、大きいファイルのやり取りであれば便利かもしれません。

10バイトファイルの1000個書き込みを10回繰り返した結果はこちら。

Min     = 15648 ms  
Max     = 19788 ms  
Average = 17594.80 ms  

これは頻度の低いインストールメディアを書き込んでおく用かなあ…

② KIOXIA TransMemory U366 (16GB)

シーケンシャルリードは高速ですが、他の性能はGigastoneより低い結果となりました。

ファイル書き込み結果はこちら。

Min     = 16320 ms
Max     = 20500 ms
Average = 18335.50 ms

これだとシーケンシャルリードくらいしか取り柄が……memtestとかの軽量なチェックツール用ですかね……

③ LAZOS USB3.0 (32GB)

ランダムライト以外は予想以上に高い結果となりました。
RW性能で見ればHDDクラスのためRaspberry Pi等のOS用ストレージとして良さそうですね。

Min     = 14677 ms
Max     = 16051 ms
Average = 15480.50 ms

あまり差が出てないので測定方法がよくなかった…?

それにしても…CrystalDiskMarkの値はSandisk Ultraより高速かもしれない、何個かストックしておこうかな…

以上、参考になれば幸いです。
気分が乗ったら別のモデルも買って試すかも

オマケ

性能面ではLAZOSを褒めていますが、ビルドクオリティはイマイチ(スライドが壊れてた)だったため分解します。

基板とケースが雑にグルー接着されています、そりゃ外れるわ…

せっかくなのでチップも見ていきます。

コントローラは「IS918-FN08R」、Innostor Technology社のIS918シリーズのようです。
チップの方は「179M5 ACELW2216B47R-H」、調べても出てこないので正体不明…