2026年06月06日

TMF8828/TMF8829 ToF Viewer

前回はUSBシリアルI2C変換基板V2[スイッチサイエンス]を使って簡単にサーモカメラ2種類、MLX90640とAMG88XXをグリッドのヒートマップとして可視化するツールを紹介しました。今回はヒートマップを応用して、AMS製ToFセンサ、最大8x8のTMF8828と最大48x32のTMF8829をヒートマップとして可視化するツールを紹介したいと思います。

最近のST製VL53LシリーズやAMS製TMF882Xシリーズ等のToFセンサはマイコンを内蔵しており、電源投入後にファームをRAMに書き込んでから測距するタイプとなっています。特にST製VL53L9CXやAMS製TMF8829は8x8よりもさらに高解像度を実現したグリッドToFセンサです。個人的には最大54x42のVL53L9CXに期待していましたが、マイコンとのインタフェースがI3CやMIPIでI2CやSPIに比べて汎用性が低くいため、使い勝手に難があります。一方、AMS製TMF8829は従来のToFセンサ同様にI2CやSPIからアクセスできるため、様々なマイコンに接続することが可能です。


USBシリアルI2C変換基板V2とAMS製ToFセンサ、最大8x8のTMF8828や最大48x32のTMF8829を使ってヒートマップとして可視化するツールを作成してみました。ツールはTMF8828/TMF8829 ToF Viewerとしてこちらに公開しています。TMF8829に関しては解像度や設定をラジオボタンで変更できるように実装しました。また、ヒートマップのCSS、JSコード自体はHTMLに組み込んでいるため、右クリックの開発者ツール等で簡単に実装を確認することができます。


TMF8828_TMF8829_ToF_Viewer.jpg


実際に使用してみた際のスクリーン動画をアップしてみました。

本ツールはあくまで動作確認用を目的としています。USBシリアルI2C変換基板V2のデフォルトI2C速度が100kbps程度のため、解像度が高くなると非常にフレームレートが遅くなり、十分なパフォーマンスが発揮できません。マイコン等でSPIや400kbpsのI2C等で接続すれば、センサ仕様のパフォーマンスを発揮できます。解像度8x8程度であれば非常にスムーズなフレームレートで挙動を確認することが可能です。

先日、FirefoxもWeb Serial APIに対応したため、本ツールでEdgeやChromeだけでなく、Firefoxでも可視化できるようになりました。今後もWeb Serial APIを活用したツールを作成してみたいと思います。

posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

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年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) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2025年08月02日

ハーネス設計ソフトウェア

今回はOSSや無料で利用可能なハーネス設計ソフトウェアについて紹介したいと思います。基板設計や回路設計の分野ではOSSや市販のソフトウェアが多く開発や販売がされています。一方でハーネス設計ソフトウェアとなるとニッチな市場のため、あまり種類が少ないのが現状です。

ちょっとしたハーネス設計であればエクセルやパワーポイント等のポンチ絵で何とかやりくりできると思いますが、ハーネスの種類が多い場合やピン数が多い場合、後々の設計資産として残す場合にはやはり専用のソフトウェアやツールを活用した方が長い目で見るとよいです。特に設計情報(オス/メス、AWG、難燃性、結線図、コネクタピンアサイン等)の漏れは後々大きな問題になりがちです。

ただ、ハーネス専門としている業者でもない限りは高価な費用を払ってまで専用のソフトウェアを導入するに至らず、導入したとしてもライセンス所有者しかファイルを編集できないとなると使い勝手が悪いです。それらを考慮してOSSやWeb上で設計可能なハーネス設計ソフトウェアについて紹介したいと思います。


QElectroTech
インストール型のOSSでハーネスの他、制御盤等の設計に特化したソフトウェアです。

・Wirely
オンライン型のハーネス設計ソフトウェアです。
比較的に簡単にハーネス設計することが可能です。
見た目からWireViz+設計支援というイメージです。

ハーネス設計ソフトウェアというよりもMicrosoft Visioのオンライン版というイメージです。
きれいにフローチャートといった図形を記述する場合に活用できそうです。

・WireViz
比較的理解しやすいyml形式で記述することで設計可能なハーネス設計ソフトウェアです。
接続図やBOM等を生成することが可能です。


クラウド等を使用せずにハーネス設計支援を実現するのであれば、QElectroTechWireViz
クラウドを活用してハーネス設計支援を実現するのであれば、Wirely。
という感じでしょうか。


トライアル期間がある有償ハーネス設計ソフトウェアを含めればさらに幾つかありますが、ツールを使いこなすノウハウも必要になってくるため、上記のようなツールが比較的導入の敷居が低く、使い勝手もそこまで難しくないため、活用しやすいと思いました。タイミングがあれば、個々のツールの使い方等にも別の機会で触れてみたいと思います。

posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2025年07月05日

シフトレジスタを使用した簡易リモートIO

今回はマイコンやFPGAを使用せずにシフトレジスタとロジックIC、タイマICのみで簡易リモートIOを実現する方法について紹介したいと思います。

少し離れた場所にボタン入力やLED出力等のIO信号を複数、届ける場合、そのまま配線すると信号線に応じて多くの配線が必要となります。そこまで信号の速さが求められない場合は信号線をシリアル化して省配線化できれば理想的です。一般的にはマイコンやFPGA等でシフトレジスタを制御しますが、使用前にマイコンへ書き込みが必要だったり、マイコン周辺の回路も必要になってくるため、より多くの部品が必要になります。

今回はシフトレジスタとロジックICを組み合わせて、マイコンを使用せずにIO信号をシリアル化して、省配線化する方法を紹介したいと思います。この方法で片方向の同期で2線(同期クロック、データ)、双方向の同期で3線(同期クロック、データx2)の信号線で実現することができます。例えば8bitシフトレジスタを使用する場合、片方向で8線から2線で済むことになります。双方向でも16線から3線で済みます。本数が多い場合や伝送距離が長い場合は省配線による効果が非常に大きくなります。


主な使用部品としては、入力ICにSN74HC165、出力ICにSN74HC595、クロック生成にLMC555、ラッチ用カウンタに74HC4017、クロックとラッチの論理変換に2bitのインバータSN74LVC2G04の部品で実現できます。



設計のポイントとしては下記の3点です。
@シフトタイミング
Aラッチ/ロードタイミング
Bリセット後のクロック


@シフトタイミング
 SN74HC165、SN74HC595ともに立ち上がりでシフトするため、同じクロックを使用すると信号変化のタイミングと同時に信号を取り込んでしまうため、タイミングによってデータがずれてしまう問題が生じます。そのため、片方のクロックを反転させることで半周期タイミングをずらすことでシフト後の安定したタイミングで信号の取込みを行うようにしています。具体的にはSN74HC165にメインクロック(MCLK)、SN74HC595にメインクロックの反転クロック(/MCLK)を与えています。

Aラッチ/ロードタイミング
 74HC4017でメインクロック(MCLK)をカウントさせて8つ目にサブクロック(SCLK)として同期信号を生成させてます。9つ目の信号をリセット信号に接続することでカウンタリセットさせています。また、SN74HC165はHighでシフト、ローでパラレル信号の取込みなので同期信号の反転信号(/SCLK)を与えています。さらにそのままでは同期信号立ち上がりとメインクロックの立ち上がりがほぼ同じタイミングのため、タイミングによって先にシフトしてしまいます。その対策としてSN74HC165の反転同期信号(/SCLK)をCRフィルタで遅延させた信号(/SCLK_Delay)を使用することでロード後の最初のクロック(MCLK 0番目)を無視させています。

Bリセット後のクロック
 配線数を減らすためにメイン基板とサブ基板でメインクロック(MCLK)の配線をなくしています。その代わりにサブ基板では同期クロック(SCLK)からメインクロック(MCLK)を生成しています。LMC555やNE555にはリセット入力があるため、そのピンに反転同期クロック(/SCLK)を与えることでリセットさせてメインクロック(MCLK)を同期させています。ただし、LMC555やNE555の注意点としてリセット直後と通常の繰り返しでチャージ電圧が異なる仕様のため、リセット直後のみ周期が遅くなる問題があります。この問題に対して、リセット直後も通常の周期と一致させるためにリセット時にトランジスタを介して予めコンデンサをチャージさせることで回避しています。


TimingChart.jpg





実際に基板を起こして作ってみた基板がこちらです。

img1.jpeg
使い方としては下記のように電源を供給して、メイン基板とサブ基板に通信線と電源線を配線することで各IOが同期します。実際に省配線で入力8bit+出力8bitのIOを同期させることができました。

img3.jpeg


マイコンやFPGAを使用せずにシフトレジスタを活用するのは一般的には想定された使い方ではないと思いますが、シフトレジスタとロジックIC、タイマICのみで簡易リモートIOを実現することができました。今回はユーザ入力を想定しているため、メインクロックは8kHz、同期速度は1kHz程度で安定性や伝送距離(数m程度)を重視した設計にしています。今回の回路図やガーバー等はこちらで公開しています。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする