banner
ホームページ / ブログ / コネクタ動物園: I2C エコシステム
ブログ

コネクタ動物園: I2C エコシステム

Sep 14, 2023Sep 14, 2023

I2C は素晴らしいインターフェイスです。 4 本のワイヤと 2 つの GPIO だけで、多数のセンサーやデバイスを並列接続できます。 I2C は、基本的にどこでも、すべての電話、ラップトップ、デスクトップ、および内部に複数の IC を搭載したあらゆるデバイスで使用されているのを目にすることができます。また、ほとんどのマイクロコントローラーには、ハードウェアに I2C サポートが組み込まれています。 その結果、I2C を使用できる興味深く便利なデバイスが無数に存在します。 場合によっては、メーカー対応企業が、標準化されたピン配置とコネクタを使用して、自社が製造する I2C デバイス ブレークアウト用のプラグ アンド プレイ インターフェイスを作成することがあります。

標準のピン配置に従うことは、独自のピン配置を考案するよりもはるかに優れており、中国製の汎用 I2C モジュールの一貫性のないピン ヘッダーのピン配置に関する経験は、確実にそれを反映しています。 モジュールのシルクスクリーンを見てピンヘッダを半田付けするという通常のハードルとは対照的に、数ドルで購入した MPU9050、MLX90614、または HMC5883L ブレークアウトに I2C 搭載コネクタを 1 つ差し込むだけで済むとしたら、素晴らしいと思いませんか?メスヘッダーを正しいピンに慎重に配置しますか?

他の標準と同様に、I2C オン コネクタの規則に関して言えば、複数の規則があり、それぞれに長所と短所があることはご想像のとおりです。 15 個には至りませんが、6 個半は確実にあります。 これらはほとんど相互互換性があり、これらを利用すると、非常に強力な周辺機器に簡単にアクセスできるようになります。 小さな違いしかなく、最も頻繁に遭遇することになる 2 つのエコシステムから始めましょう。

4 ピン JST-SH (1mm ピッチ) コネクタに基づく I2C モジュールの 2 つのエコシステムがあり、非常に互換性があります。 そのうちの 1 つは Sparkfun の QWIIC で、もう 1 つは Adafruit の STEMMA QT (「キューティー」と発音) です。 JST-SH 4 ピン コネクタをいくつか用意していれば、どちらも PCB に簡単に追加できます。 さらに、Adafruit コネクタと Sparkfun コネクタのピン配置は同じです。

使用されているコネクタは JST-SH、表面実装、1 mm ピッチです。 同社の JST ファミリは SR/SH で、元の JST 部品の部品番号は SM04B-SRSS-TB ですが、LCSC で「1x4P SH 1mm」の検索語を使用すると、同じ寸法の安価なサードパーティ製コネクタを見つけることができます。 QWIIC と STEMMA の両方に、独自のデザインを行うときに参照するページがあります。 さて、両者の違いは何でしょうか?

QWIIC は、ホスト (つまり、電力を供給する MCU ボード) 側とデバイス (つまり、電力を消費するセンサー) 側の両方で 3.3 V に制限します。これは合理的な決定であり、物事を大幅に簡素化します。 現在、私たちが使用しているデバイスの圧倒的多数は 3.3 V であり、レベルシフトの問題はほとんど前例がありません。 おそらく、最終的に 1.8 V に移行すると、この状況が大きく変わるでしょうが、まだそこには達しておらず、LED の順方向電圧などの要因により、いずれにせよ、そこに到達したプロジェクトには 1.8 V より高い何らかのリファレンスが必要になります。 つまり、3.3 V 電源と 2 つの 3.3 V ロジック レベル I2C 信号が 1 つのコネクタに接続されており、単純明快です。 おそらく、コネクタ自体以外に追加のコンポーネントは必要なく、センサーまたは MCU ボードに QWIIC をすでに追加できる可能性があります。

対照的に、STEMMA QT は、他の Adafruit 製品と同様に、教育的および利便性の価値を拡張するように構築されています。 そのため、3.3 V ~ 5 V の電力およびロジック レベルの範囲で動作するように設計されたデバイスを備えた 5 V ホストが可能になり、Arduino Uno がゲームから取り残されることがなくなります。 これが可能になるのは、各モジュールに AP2112K や MIC5219 などの低ドロップアウト電圧レギュレータが搭載されており、ボードに 3.3 V を供給するときにほぼ 3.3 V を維持できるからです。Arduino Uno のような 5 V ホストを除けば、理由は簡単です。 、STEMMA デバイスを、I2C 対応のサーボや RGB ストリップなど、電力を大量に消費するデバイスとチェーンすることもできます。 要するに、どんな種類のチェーンであっても、何かを何かに接続しても、魔法の煙が逃げてはなりません。これは、メーカーのプロジェクトの TODO リストにほとんど載っていない出来事です。 STEMMA QT のもう 1 つの利点は、デバイスのボード サイズが標準化されていることです。これにより、新しいセンサーが届く前にプロジェクトに機械的に簡単に統合できるようになり、この STEMMA Qt 3D 印刷可能なホットスワップ ソケットのような気の利いたハックが生まれます。

電圧の互換性状況を要約すると、すべての STEMMA QT デバイスは QWIIC ホストで動作します。 すべての QWIIC デバイスは 3.3 V STEMMA Qt ホストで動作します。 その結果、QWIIC ホストは技術的には STEMMA QT ホストでもあります。 QWIIC デバイスは 5 V STEMMA QT ホストとの互換性がまったくありませんが、そのようなホストはまれであり、QWIIC デバイスと STEMMA ホストを接続する場合は注意が必要です。 これらの両方の標準に関するもう 1 つの小さな問題は、割り込み信号が欠如していることです。これについては、以下の「ブレイクアウト ガーデン」セクションで詳しく説明します。 とりあえずSTEMMA QTのお姉さんを見てみましょう!

ああ、そうだ、連鎖だ! QWIIC と STEMMA QT はどちらもチェーン接続に適しており、多くのモジュールはボードの反対側に 2 番目の JST-SH コネクタを提供し、同じ信号が通過します。 これにより、MCU をすべてのセンサーから遠ざけたり、I2C バスを分割するためにブレッドボードに頼ったりすることなく、プロジェクト内で MCU を配置できる場所を見つける必要がなく、快適な方法でプロジェクトを配線できます。複数のスタブ。 多くのホスト ボードは並列配線された複数のソケットも提供しており、I2C を備えた 1 本の JST-SH ケーブルを、たとえば 3 つの追加のソケットに変換する「スプリッタ」ボードも利用できます。

アドレスが競合しない限り、通常はこのような方法でプロジェクトの I2C バスをうまく配線できます。 ああ、すべてのプルアップを並列に追加して I2C バスに過負荷がかからないように注意してください。プルアップは STEMMA QT では 10 kΩ、QWIIC では 2.2 kΩ になる傾向があり、少なくとも QWIIC の場合は、通常は次のことができるようです。 xacto ナイフで 2 つのトレース ジャンパを切断し、モジュールのプルアップを切断します。 Pico ベース以外のすべての Raspberry Pi ボードには I2C ポートに 1.8 kΩ のオンボード プルアップがあるため、デバイスをチェーンするとき、かなり早い段階でこれを行う必要があることに気づくかもしれません。

STEMMA のピン配置は STEMMA QT および QWIIC と同じですが、コネクタが大きく異なります。 また、ホスト側で出力できる電圧に関しても柔軟であり、デバイス側で受け入れられる必要があります。 STEMMA QT セクションの利点のほとんどは、QWIIC の互換性と物理サイズの削減を除いて、STEMMA に当てはまります。

STEMMA コネクタは、2 mm ピッチの JST PH コネクタで、JST 部品番号は S4B-PH-SM4-TB です。また、「1x4P PH 2mm」の検索語で入手可能な安価なサードパーティ製コネクタもあります。 1 mm ピッチの SH コネクタよりもはんだごてでの作業が少し簡単で、大型の基板に適しています。

JST-PH は、表面実装ソケットがスルーホールソケットよりもはるかに弾力性があることが判明したケースの 1 つです。 より強力な保持機構により、爪ではもう十分ではありません。プラグを外すには、信頼できる青いフラッシュ カッターを使用することになるでしょう。 I2C を搭載した STEMMA には、GPIO およびアナログ STEMMA 対応物もあり、WS2812 ストリップなどに 3 ピン JST PH コネクタを使用します。5 V 互換性が非常に便利です。 ただし、4 ピン コネクタは I2C 用にしっかりと確保されており、そのような一貫性は教育環境やプロトタイピング環境では評価されないわけにはいきません。STEMMA デバイスに関する Adafruit の数十のチュートリアルを確認すると、その「配線」セクションは非常に簡単です。 一部の STEMMA ホストでは、はんだジャンパーを介してポートを 3.3 V または 5 V に再配線することもできます。

その中で最も古い Grove コネクタ規格は、現在では I2C コネクタ エコシステムの中で厄介な存在となっており、ここでは半分は歴史の一部として、半分は警告の物語として取り上げられています。 オープンソース エコシステムの原則に反して、Grove は独自のコネクタを使用しているため、メーカーは SeeedStudio ではないソースを見つけようとして、その適切な識別を争うことになります。 ここにリストされている他のすべての規格とは異なり、4 ピン Grove コネクタを見ると、それが I2C、UART、2 つのデジタル GPIO、またはアナログのものなのかがわかりません。これにより、「プラグ アンド プレイ」というアイデア全体が台無しになります。

Grove とインターフェースしなければならないのが残念な方のために説明すると、Grove は 3.3 V ~ 5 V の範囲の電圧を使用しますが、どちらが使用されるかを明示的に宣伝したり、変更できるようにしたりすることにはあまり関心がありません。どちらも STEMMA が中断することなく実行します。汗。 QWIIC/STEMMA と同じピン配置を I2C に使用します。 STEMMA 互換 (JST-PH) ケーブルをお持ちの場合は、少し研磨して Grove コネクタに収まるようにすることができます。

言い換えれば、Grove コネクタがあまり使用されていないのには十分な理由があります。 私は、Tom's Hardware が独自の I2C コネクタ エコシステムの概要記事の結論セクションを書いているときに、彼らが話していた他のすべてのエコシステムに共通ではない Grove の利点を見つけられなかったことに気付かずにはいられませんでした。 必要なすべてのコネクタとケーブルに対して SeeedStudio にお金を払うのをやめたくない、そして、努力を投資する価値のあるコネクタ エコシステムと互換性がなくても大丈夫でない限り、ボードで Grove を使用しないことを強くお勧めします。 代わりに、次の (過小評価されている) オプションに時間を費やしましょう。

Pimoroni による Breakout Garden エコシステムは、Raspberry Pi の GPIO ヘッダーから 5 つのピンの列を取り出し、ピン 1 ~ 9 (3.3 V、SDA、SCL、GPIO ピン、そしてもちろん GND を含む) をこの順序で使用しています。 。 確かに彼らはこのピン配置に対する特許を持っていません。私を含め、多くのハッカーがこのピン配置を当社の I2C 搭載ボードで長年使用してきました。 このようなピン配置は、まず、Breakout Garden ボードを Raspberry Pi に直接接続できることを意味します。

これに限定されるわけではありません。Pimoroni は、Breakout Garden モジュールをホットスワップできる優れたスライドイン コネクタも提供しています。 また、スライドインソケットを使用したくない場合は、角度の付いたオスピンヘッダーをはんだ付けし、他のモジュールと同様に扱ってください。 通常、Breakout Garden モジュールの入力電圧範囲は 3.3 V ~ 5 V です。 また、すべてのモジュールで逆極性保護も主張しているため、必然的にモジュールを逆に接続してもプロジェクトが遅れることはありません。

Breakout Garden のピン配置を使用すると、追加の GPIO も得られます。GPIO は、最も一般的には NC であるか、割り込みピンとして使用されます。 I2C デバイスを使用する場合、割り込みピンは過小評価されています。割り込みピンを使用すると、CPU と I2C バスの負荷を軽減して、ポーリングを回避し、注意を必要とするときに I2C ペリフェラルから信号を送信できます。これは、I2C バスだけでは不可能です。 この触覚アクチュエーター ドライバーなどのいくつかのモジュールでは、GPIO がアクションの同期のための「トリガー」ピンとして代わりに使用されます。 もちろん、これはチェーンの概念を多少損ないます。ただし、公平を期すために言うと、かさばるホットスワップ ソケットも同様です。 Breakout Garden ボードを並列接続できないわけではありません。結局のところ、INT ピンは通常、I2C デバイスでは無効になっており、すべての INT ピンを 6 ソケットにまとめて配線するという不可解な決定を考慮すると、これは非常に便利です。ラズベリーパイハット。

プロジェクトに「Breakout Garden」のような接続の基本サポートを追加することは、5 ピン 2.54mm (0.1 インチ) ピン ヘッダーを追加するのと同じくらい簡単です。これにより、Raspberry Pi GPIO ヘッダーとの互換性が即座に得られます。 独自のモジュールの作成に関しては、モジュールの寸法や公式の「作成方法」が見つかりませんでした。そのため、おそらくそれを行うべきではありません。これは、リバース エンジニアリングができないという意味ではありません。回路図と寸法を確認してからとにかく試してみますが、確かにかなり落胆します。 Breakout Garden ソケットを追加する場合は、正確に 5.08 mm (0.2 インチ) 離れた 2 列のピンがあり、便利なプラグ アンド プレイ接続を提供します。ただし、ソケットあたり 1 ポンドの費用がかかります (送料は含まれません)。スライドインソケットは、これらすべての中で使用するのに最も高価です。

JST-SH アクセサリをお探しですか? SMD コネクタを使用すれば間違いはありません。 ただし、事前に圧着されたケーブルに関しては、間違いを犯す可能性があります。 1 mm ピッチの JST-SH を圧着するのは決して簡単ではありません。誤配線した場合を除いて、独自のケーブルを購入することが最善の策です。 1 年前、私はプロジェクトの準備をしており、右の写真にある JST-SH ケーブルのバンドルを購入しました。 よく見てみると、何かがおかしいと感じました。

彼らはケーブルの端を逆方向に配線しており、一方のピン配置が他方のピン配置と逆であることが判明しました。相互接続として使用すると悲惨な結果が生じる可能性があります。 私が購入したケーブルは、ピンセットを使って慎重に再配線する必要があります。次回、次のプロジェクトの配線のためにサードパーティの JST-SH ケーブルを購入する場合は、[今すぐ購入] を押す前に写真を確認する必要があることがわかります。ボタン。

DFRobot の部品を扱ったことがある人は、ボード上の JST-PH 4 ピン (または 3 ピン) コネクタも見たことがあるかもしれません。これらは、Gravity と呼ばれる同社のエコシステムからのものです。 不可解なことに、Adafruit は、非 I2C デバイスは別として、STEMMA は Gravity と互換性があると主張しています。Gravity は Grove と同じことを行い、4 ピン コネクタは I2C を保証しないからです。 ただし、Gravity I2C デバイスのピン配置を確認すると、すべてのピンが異なる場所にあり、特にグランドと電源が逆になっているようです。 STEMMA と同様に、デジタルおよびアナログ デバイスに 3 ピン コネクタを使用します。 面白いのは、ある時点でそれらのピン配置を変更し、電源ピンの極性を逆転させることに成功したことです。同じコネクタを使用しながら、コネクタ規格では禁止されていました。 慎重に進んでください。

EasyC は基本的に QWIIC を T にコピーしたもので、同じピン配置、コネクタ、チェーン機能、および 3.3 V の電圧制限を備えていますが、ウェブページやリソースでは QWIIC についてまったく言及されていないのが残念です。 さまざまなエコシステムの相互運用性は、それらのエコシステムを価値あるものにする理由の一部であり、おそらく、「コネクタ上のランダムなピン配置」とは対照的に、そのエコシステムが使用している規格が広く受け入れられている規格であると知っていれば、そのエコシステムから購入する傾向がより高まるはずです。 。 EasyC はクロアチアに本拠を置く e-radionica 会社によって運営されており、多数の中国製モジュールのクローンやリミックスを含む中規模の便利なモジュールの品揃えをヨーロッパ価格で生産しています。 モジュールの設計ファイルは製品ファイルからリンクされていませんが、少なくとも一部は GitHub にあるようです。 興味深いことに、彼らは5cmの「EasyC」ケーブルも在庫しており、よく見ると、前のセクションで説明したケーブルと同じ逆配線になっています。 おそらく、EasyC エコシステムについてもう少し考慮する必要があるでしょう。

時々、JST-SH に挑戦している企業を見かけますが、そこまでは至っていません。 その例としては、Lolin の最近のボードである Lolin D1 Mini Pro があり、「I2C」というラベルが付いた JST-SH 4 ピン コネクタが搭載されています。 これが QWIIC のようなピン配置であると考えるのも無理はありません。 このコネクタに「I2C」というマークが付いていることを考えると、騙され、裏で刺され、おそらく騙されたのではないかと主張する人もいるかもしれません。 このボードは GND-VCC-SDA-SCL ピン配置の代わりに GND-SDA-SCL-VCC を使用しており、このピン配置を念頭に置いて作られたシールドなどのアクセサリもいくつかあるようです。 これは、誰かが Lolin に「JST-SH コネクタに I2C を付けるべきだ」という手紙を送り、それ以上詳しく説明することを拒否したかのようです。 ありがたいことに、GND ピンが一致しているため、物体を破壊する可能性はそれほど高くありません。

独自のボードを設計する場合、どの基準に従う必要がありますか? 私はあなたが自分で決定を下すために必要な情報をすべて提供しましたが、推奨事項やガイドラインをお探しの場合は、喜んでそれも提供します。

私は個人的にフルサイズの STEMMA (JST-PH) コネクタを使用しません。あまりにも頻繁に使用するコネクタは、PCB 自体が小さく見えるほどかさばり、高さのせいで小さなボードは少し扱いに​​くくなる可能性があるためです。プラグを抜くのが難しくなる可能性があります。 しかし、JST-SH コネクタは、5V ホストを避ける限り、一度に 2 つのエコシステムと互換性があるという見通しから、非常に魅力的です。 そして、シンプルで標準的なピン配置の 5 ピン ヘッダーは、迅速に追加できるため、驚くほど多くのメリットをもたらします。

つまり、Breakout Garden のようなピン ヘッダーと QWIIC/STEMMA QT JST-SH コネクタをボード上で組み合わせることをお勧めします。 こうすることで、話題にすべき 4 つのエコシステムのうち 3 つとの互換性が常に確保され、I2C ボードを Raspberry Pi に接続するのは 5 本のジャンパー ケーブルを用意するのと同じくらい簡単になります。 この組み合わせを使用すると、I2C ヘッダーのピン配置について考える必要がなくなり、実際に割り込み信号を使用できるときに便利になります。

レベルシフトを追加する必要がありますか? プロジェクトで 5 V を使用しない場合は別です。特に、I2C EEPROM や RTC など、広範囲の入力電圧を持つ IC 用のブレークアウトを作成する場合は別です。 私は個人的に主に 3.3 V で作業していますが、自分が作成するすべてのボードに散りばめる AP2112 レギュレータのリールを持っていません。ありがたいことに、5 V I2C ホストも持っていません。 デバイスを 5 V 互換にしたい場合は、I2C レベル シフト用のクラシックで信じられないほどエレガントで安価な MOSFET ソリューションを選択すれば間違いありません。

このうち、QWIIC、STEMMA、Breakout Garden はこれまでのところ、趣味のエレクトロニクス企業がずっと支援しており、時の試練に耐えてきました。 彼らが作成した標準から私たちが恩恵を受けるのは当然のことです。 提供された洞察と手順によって、あるハッカーの MCU ボードが他のハッカーのセンサーとシームレスに接続できる、ユニバーサルな相互運用性の時代に近づくことができれば幸いです。 そこから、ある日、私たちのお気に入りの SSD1306 OLED ブレークアウトが、JST-SH コネクタと追加のケーブルを備えたメールボックスに届き始めるかもしれません。 今日はその日ではありませんが、JST-SH のフットプリントを PCB に追加するたびに、すぐに解決できると信じています。