2026年05月02日

Therrmo Viewer

今回はUSBシリアルI2C変換基板V2[スイッチサイエンスElecrow]を使って簡単にサーモカメラ2種類、MLX90640とAMG88XXをグリッドのおヒートマップとして可視化するツールを紹介したいと思います。

MLX90640はI2C接続の32x24のグリッド赤外線アレイモジュールです。AMG88XXはI2C接続の8x8のグリッド赤外線アレイモジュールです。

ライブラリ等を使用せず、CSSの.cellクラスを活用して比較的容易にグリッドのヒートマップをhtmlで実装できました。EdgeやChrome等のブラウザから簡単にUSBシリアルI2C変換基板V2[スイッチサイエンスElecrow]とMLX90640やAMG88XXで温度を可視化できます。

MLX90640用のTherrmo Viewerはこちらです。AMG88XX用のTherrmo Viewerはこちらです。ヒートマップのCSS、JSコード自体はHTMLに組み込んでいるため、右クリックの開発者ツール等で簡単に実装を確認することができます。

MLX90640.jpg

実際に使用した際のスクリーン動画MLX90640版AMG88XX版アップしてみました。特にMLX90640は内部EEROMパラメータが正しく読み込みできないと正常に温度変換できません。変換に必要な全パラメータを「Download CSV」ボタンからグリッド温度情報と合わせてダウンロードできるようにしています。そのため、パラメータの妥当性の確認等の用途にも活用可能です。

MLX90640は32x24の解像度があるため、手の形も十分可視化することができ、サーモカメラに近い用途として活用できそうです。

Arduino等を活用して可視化しようとすると、Arduinoへのファーム書き込み、Windows等でシリアルを可視化するソフトと複数のソフトを組み合わせて実装する必要があります。一方、本ツールを活用すれば、htmlからシリアルAPIで直接、I2Cを制御、可視化しているため、特殊なソフトやツールなしにOSに依存せず、簡単にブラウザで可視化できます。特にヒートマップによる可視化やファイルダウンロードという機能はブラウザAPIを使っているため、容易に実装できました。今後は時間を見つけてバイリニア補完等を組み合わせてツールを拡張してみたいと思います。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2026年04月04日

MINISFORUM BD795i SE BIOS Update

先日、MINISFORUM BD795i SEのBIOSで1.15がリリースされていたため、気軽な気持ちで1.12から1.15にアップデートしてみました。結論からすると運が悪く、Flash更新途中でWindowsがブルースクリーン(Win11では厳密にはブラックですが...)となってそのまま文鎮化してしまいました。以前、1.09から1.12へのアップデートはエラーなくできたため、気を抜いていました。

しっかり1.15にアップデートできているユーザはいるため、1.15のアップデートやツールに問題があったわけではなく、運が悪かったと考えるのがよいかと思います。MINISFORUM BD795i SEは他のボードと違って色々苦戦する点があったため、復帰までの手順を紹介したいと思います。本作業はメーカの保証外です。RMAが正規手順です。専門的知識を有する方が自己責任で行ってください。ただ、壊れているユーザもいるようでやはりBIOSアップデートは注意が必要です。


■MINISFORUM BD795i SEの注意点
・Dual BIOS等の保護機能なし(書き込み失敗で即文鎮化しやすい)
・ピンヘッダが出ていない、SPI Flash取り外し不可、ピン治具必須
・8x6サイズのWSOP8 でピンを当てづらい 
・放熱フィンとPCIx16スロットの間にSPI Flashがあるため、場所が狭くピン治具が届きにくい
※ピン治具によって届かない場合有
※写真右下が1番ピン

Flash.jpg

上記の注意点を知らず、バックアップ等の準備をせずにアップデートしてしまい、更に運が悪く、アップデート失敗。そのままBSD(ブルースクリーン)となって、電源を切るしかなく、文鎮化してしまいました。ファンが回るものの、CMOSクリアでもBIOSが起動しませんでした(LAN LEDが点滅しない)。単なる書き込み失敗だけであれば、再度、Batを実行し、書き込みすることで文鎮化を避けられます。しかし、今回はWindows自体がBSDで停止したため、再書き込みすることができませんでした。


MINISFORUM BD795i SEに搭載されているSPI FlashはW25Q256JW、1.8V版です。下記の手順でSPI Flashに書き込みを行い、復帰させました。

@SPI Flashツール(CH341A+1.8V変換+ASprogrammer)、ピン治具を準備
手持ちにあったCH341Aのツールを使用しました。W25Q256JWの電源は1.8Vで3.3Vではありません。1.8V変換アダプタが必須です。
今回、ピン治具は手持ちのSOIC8にスプリングピンを差し込み、スペーサを挟ませて8x6のWSON8に対応させました。無理に対応させると最悪、ショートさせて基板を破損させる可能性もあります。 8x6サイズのWSOP8対応のピン治具を事前に用意することを強く推奨します。

CH341A_1.8V.jpg

SOIC8_to_WSON8.jpg


AASprogrammerをダウンロードし、対応フラッシュを追加します。
chiplist.xmlをメモ帳等で開いて、Winbondの項目を探す
下記の赤線下くらいに下記1文を追記して保存する。

<W25Q256JW_1.8V id="EF6019" page="256" size="33554432"/>


spi_flash.jpg


BASprogrammerのRead IDボタンを押して、接続確認します
 対応フラッシュの追記と接続が正常であれば自動的にW25Q256JWが検出されます

C接続確認後、Read ICボタンで現状のSPI Flashデータを念のため読み込み、保存しました。
C1.15のDRFXI.BINファイルを開いて、書き込みします(PCの電源はOFF状態で、治具から1.8V電源を供給)
D電源を入れてPCを起動を確認(初回はメモリキャリブレーションがあるため、少し時間がかかる)

本来、やるべき手順は下記です。

■事前準備
・SPI Flashのバックアップ
・Primary card MAC (Address)、System UUID、Motherboard S/Nをメモ
・SPI Flashツール、ピン治具を準備
・Windows、Office等の再アクティベーションする場合の準備

■作業
・可能な限りWin環境でなく、UEFI環境でアップデート
※書き込み中にOS側のエラーを回避する

■事後
・WindowsやOfficeのアクティベーション状態を確認
・新しいBIOSをバックアップ


壊れたSPI Flashのデータと1.15をバイナリエディタで見比べると、途中からずれたアドレス位置にデータが入っており、アドレス指定コマンドの処理に異常があり、書き込みに失敗したようです。

また、SPI Flashのメモリを全削除して、1.15を書き込みした影響なのか、System UUID?が変わってしまい、Office2021のアクティベーションを再度、行う必要がありました。Windowsは問題なく、再アクティベーション不要でした。1.12でDMI base board manufacturerが "Meigao Innovation Technology (Shen zhen) Co., Ltd"に変わったことも少し影響しているかもしれません。

なお、Primary card MAC (Address)はマザーボード上のLANポートのシールと一致しており、SPI Flashのメモリ全削除の影響はなさそうでした。アップデート前のSystem UUID、Motherboard S/Nをメモしていなかったため、それがどう変わったかについては今となっては分かりません。復帰できたため、一安心ですが、事前準備が重要ということを改めて認識しました。改めてになりますが、本作業はメーカの保証外です。RMAが正規手順です。専門的知識を有する方が自己責任で行ってください。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | ナレッジ | このブログの読者になる | 更新情報をチェックする

2026年03月07日

I2Cカウンタ基板

ボタン押し回数や機器の使用回数、移動距離、ドアの開閉回数等、カウントして値を保持する場合に便利なのがカウンタICです。カウントICの中でもS-35770は24bitのバイナリアップカウンタでI2Cを介してカウント数を読み出すことが可能です。また、IC自体で0.01uAと消費電力も小さいため、電池で運用することも可能です。カウント信号の最大入力周波数は1000kHzで比較的高い周波数にも対応しています。

ただし、S-35770はカウントアップ専用で、カウントダウンすることはできません。また、I2Cを介してカウントデータを読み出すのみで、リセットすることはできません。なお、フリーレジスタ機能があり、カウント値とは別に3バイトの値を書き込み、読み出しすることが可能です。

S-35770のそのままの仕様ではリセットやLOOP(キャリーアウト信号)のIO状態をI2Cから取得や制御できないため、I2Cから制御可能なGPIO、PCA9536と組み合わせてI2Cを介して制御できるカウンタ基板を作成してみました。また、CR1220の電池を搭載することでカウント値を保持できるようにしました。

img1.jpeg

img2.jpeg



本基板はCR1220電池を搭載しているため、電源なしでカウント値の保持だけでなく、カウントも行うことが可能です。例えば、通常は本基板とスイッチ等(本基板のBATピンとCLKピンをスイッチに接続)を組み合わせてカウント数を本基板でカウントし、必要な時にマイコンと接続してカウント数を読み出すといった使い方が可能です。

なお、I2C GPIOを介してカウンタのリセット操作やLOOP信号の読み取りができますが、電池運用する場合は注意点があります。メイン電源を切る前にリセット信号のGPIOをデフォルトの入力に戻す必要があります。この理由として、GPIO出力のままの状態ではメイン電源が切られた際に電池でプルアップしているRST信号がLOWに引っ張られてカウンタがリセットされてしまうためです。この問題を防ぐためにI2C GPIOを入力状態にすることでRST信号がLOWに引っ張られることを防ぐことが可能です。

回路図やサンプルコード等はこちらで公開しています。また、スイッチサイエンスにて販売を開始しました。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2026年02月07日

USB Type-C PD Sniffer基板

nanoDLAsigrokSLogic等の低価格なロジックアナライザはPulseView等のソフトウェアを介して様々な信号の解析に対応しています。

SPIやUART、CAN等の様々な信号がありますが、USB PDの通信ロジックは1.2Vと信号レベルが低いため、上記のような低価格なロジックアナライザではそのまま取り込むことができません。これらのロジックアナライザは3.3Vや5Vの電圧レベルを想定しているため、USB PDの通信を取り込むためには何かしらの信号レベル変換が必要です。手持ちの双方向レベル変換IC、NTB0104GU12があったため、試しにレベル変換してみましたが、うまくレベル変換できませんでした。双方向レベル変換の場合、ロジックアナライザ側のプルアップやプルダウン等が邪魔してしまい、逆にPD信号を阻害してしまったようです。USB PDの通信ロジックの信号レベルを変換する際は片方向のレベル変換やバッファIC等を使用した方がよさそうです。

USB PDの電圧レベルは低く、信号レベル変換に苦労したため、専用のUSB PD Sniffer基板を作成してみました。レベル変換は汎用的なコンパレータを0.5V付近に閾値を設定しました。これにより1.2Vのロジックを3.3Vロジックに変換することが可能です。また、PD通信が完了後に5Vから指定した電圧に変化したタイミングを検出するため、VBUSが5.5Vを超えると信号がHighに変化する出力(ここではPD信号)も追加しました。この信号によって、リクエスト後に電圧が変化するタイミングや電圧変化後のReady信号までのタイミング等をロジックアナライザでCCの通信と同時に確認することが可能です。

VBUS電源を用いてコンパレータを動作させているため、追加で外部電源を供給する必要がありません。

img1.jpeg

img2.jpeg





実際に手持ちの65WクラスのUSB PDアダプタで20Vを出力させる際に本アダプタとnanoDLA+PulseViewで解析してみました。USB PDは300kHzで通信するため、ロジックアナライザのサンプリングレートは少なくとも500kHz以上を設定する必要があります。

PD_Negotiation.jpg



接続後にVBUSに5Vが供給されるとPD通信を開始して、ソース側のUSB PDアダプタが出力可能なプロファイルを送信していることが確認できました。また、その後、シンク側のPDデバイスが20Vのリクエストしていることが確認できました。リクエストに対するアクセプト信号後、出力が20Vに変化し、Ready信号がソースからシンク側に送られていることも確認できました。



高性能なロジックアナライザであれば、信号電圧レベルの閾値を任意に変更できますが、入手が容易で安価なロジックアナライザは信号検出レベルが固定になっていることが多いです。そのような場合に本USB PD Sniffer基板は便利かと思います。

なお、本基板はPD通信の解析を目的としており、下記の注意点があります。
・USB3向けのTX、RXは未接続
・D+/D-、CC1/CC2、VBUS/GNDのみ接続
・CC1/CC2の信号が3.3Vレベルでピンヘッダから出力されます
・ピンヘッダから信号を入力してCC1/CC2にインジェクションすることはできません
・2つのType-Cコネクタの違いはありません(片方にシンク、もう片方にソースを接続してください)
・本基板のVBUSラインの定格は2Aです
・ネゴシエーション後、VBUSラインに大電流を流す場合は本基板外でVBUSラインパイパスさせてください
・挿入向きによって通信できない場合はどちらかのType-Cコネクタを裏返してください 
・VBUS ON直後のPD、CC信号はコンパレータが不安定なため、出力が一瞬、ONする場合があります  
・VBUSピンはPDネゴシエーション後に5Vを超える電圧が印加されます
・VBUSピンを直接、ロジックアナライザに接続した場合、ロジックアナライザが破損する可能性があります
・VBUSピンにロジックアナライザを接続せず、マルチメータやオシロスコープ等の電圧モニタピンとして使用してください


回路図やガーバー等はこちらで公開しています。USB PDデバイスを開発する際にぜひご活用ください。また、USB PD Sniffer基板を販売開始しました。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2026年01月03日

光学式トラッキングセンサ

あけましておめでとうございます。2026年もよろしくお願いします。

今回は先日からElecrowで販売を開始した光学式トラッキングセンサ基板について紹介したいと思います。自動走行車、走行ロボット等を制御する場合に自身の位置や移動距離の検出は非常に重要です。一般的な方法としてはホイールやタイヤにロータリーエンコーダ等を搭載することで位置や速度から自己位置を推定しますが、床面が滑りやすい場合や外力等で移動された場合に正しく推定できない問題があります。そのような場合に位置を推定するセンサとして便利なセンサが光学式トラッキングセンサです。

光学式トラッキングセンサは一言でいえば、パソコンの光学式マウスのセンサです。非接触で平面のX方向、Y方向の移動距離を検出することが可能です。パソコンの光学式マウスのセンサに比べて、専用の光学式トラッキングセンサは下記のような特徴があります。

・インタフェースがUSBでなく、マイコン等と接続しやすいI2CやSPI
・追加レンズや光学ユニットが不要
・検出距離が比較的広く、調整が容易

光学式トラッキングセンサとして有名なPixArt Imaging社製PAT9125EL-TKITを使用して、光学式トラッキングセンサ基板を開発しました。


img1.jpeg
光学式トラッキングセンサ基板の特徴は下記の通りです。

・追加レンズ不要
・検出距離は1mm~30mmで比較的広い範囲で検出可能
・基板上に電圧レベル変換を搭載しており、3.3V系の他、5V系にも直結可能
・使い勝手のよいI2Cモデルを使用、Grove互換コネクタで接続可能
・解像度は最大1,275cpiまで設定可能
・1つのセンサでX方向、Y方向の2軸の移動距離を検出可能
・トラッキングスピードは最大25.4cm/sec (1~3mm)、 76.2cm/sec (3~30mm) です



ElecrowのWebサイトで販売しています。また、動きを検出して位置の差分を表示するArduinoのサンプルコードも用意しています。25mm x25mmの基板のため、小型ロボットにも搭載が容易です。今後、光学式トラッキングセンサの活用事例等も紹介したいと思います。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする