この記事が気に入ったら
いいね!しよう
最新情報をお届けします。

iːo紹介 第7回「拡張ピンの活用2  I2C通信」

プログラミング

Inter-Integrated Circuit(IIC)通信という名を聞くのは、初めてという人も多いと思います。これは、表記上「I2C」と表記されることが多く「アイ・ツー・シー」とも呼ばれている通信形式です。

難しいことは他のページに任せるとして、このI2Cを使用することで、周辺に様々なセンサーやディスプレイなどを接続できるようになります。

端子を見ると、GND,5V、クロック信号SCL、データ信号SDAの4ピンが並んでいます。ただし、このピンの並びは特に規定がないので、製品によってまちまちです。

micro:bitでは、P19,P20がSCL,SDAに相当します。

iːoでは、下写真のように装置の右側にこの4ピンがあります。

I2Cピン

ここから、I2Cを接続することができる製品を何点か紹介します。


LCDディスプレー

直接つないだ例
ロジックの電圧を考慮して、途中にレベル変換を入れた例

有名な16文字×2行のLCDディスプレー「LCD1602」を使って、文字や数字を表示できます。

iːoとLCDの間は、メスーメスのジャンバ線でつなげます。(※補足も参照のこと)

LCDディスプレーを使う際は、①iːoに乾電池をセットしてスイッチをONにする、②拡張機能から「LCD」を検索させて、ブロックを読み込むと使用できます。

どちらを選んでも可

初めてつなげた際は、裏の可変抵抗を回して見やすいように調整します。

バックライトもあって文字も大きいので、とても読みやすいです。

Amazon.co.jp
Amazon.co.jp

OLEDディスプレー

まずは、小型のOLEDディスプレーです。ちょうどピンの配列も同じなので、OLEDディスプレー側がメス型のソケットならば、次のようにそのまま気軽にさすことができます。(メスソケットは、部品として販売しています)(I2Cレベル変換を行う回路は不要 ※補足参照のこと)

micro:bitにも5×5のLEDで文字や数字を表せますが、OLEDディスプレーだとより多くの情報を表示できます。

ちなみに、このOLEDディスプレーを使う際は、①拡張ピンを使用する際は、iːoに乾電池をセットしてスイッチをONにする、②拡張機能から「OLED」を検索させてブロックを読み込むと使用できます。

Amazon.co.jp

気象センサーBME280

続いて、気象センサーBME280を紹介します。このセンサーは、気圧・湿度・気温を読むことができる優れものです。より安価なBMP280(気圧・気温)もあります。残念ながら、I2Cのピン配置が異なるので、コードを使って接続します。

こちらも、拡張機能から「BME280」と検索して読み込みます。

特に気圧センサーですが、Pa(パスカル 気象で一般に使っている単位は1/100のhPa(ヘクトパスカル))まで読み込むことが可能です。

下のグラフは、micro:bitのデーターをもとに、Excelでデーターを処理したものです。1Fから3Fまでの気圧変化を捉えたものです。地面から3Fまでに、約80Pa変化しています。

気象学的には1mで10Pa変化するそうなので、3Fまでの高さが8mとして80Paの変化になります。このセンサーを使うことで、中学校の気象の学習に利用できそうです。

ここまで精度がいいので、もしかしたらセンサーを持って立ったりしゃがんだりするだけで気圧の変化が分かると思いやってみました。下のビデオが、そのときのビデオです。山になったときがしゃがんだとき、谷になったときが立ち上がったときです。

約15Paの変化です。(1.5mの上下と言うことになります)立つ・しゃがむでも、気圧って変化するんですね!当たり前のようですが、日頃生活で感じられない気圧の変化をmicro:bitが正確に測定できるので、ビックリです!なんか、大気の重さを感じました。

Amazon.co.jp

補足

micro:bitは3.3Vで動作しています。周辺機器が5Vで動作している場合、通信が約3Vと5Vが混在することになり、短期間で問題なく動いていても長時間使用すると故障の原因になったり、通信がうまく行かなくなったりする場合が考えれます。そこで、I2Cレベル変換を行う回路を入れて接続するのが安全です。

また、周辺機器からmicro:bitへの一方通行の通信の場合は、抵抗を2つつないで中間の電圧を取り出すとレベルを合わせることができます。

・(5V)周辺機器→micro:bitへの一方向の通信の場合は、次のように分圧してレベルを合わせる。
  (※micro:bit→(5V)周辺機器への通信は、そのままで普通問題ない。)

分圧・・・抵抗を2つつないで、途中から取り出すことで、5Vを3Vに変換できる

・I2Cのような双方向通信の場合は、次のような部品を使用してレベル変換する

I2Cバス用双方向電圧レベル変換モジュール(FXMA2102): 半導体(モジュール) 秋月電子通商-電子部品・ネット通販
電子部品,通販,販売,半導体,IC,マイコン,電子工作I2Cバス用双方向電圧レベル変換モジュール(FXMA2102)秋月電子通商 電子部品通信販売

考察

直接つないで電圧を合わせないとき、LCD1602やOLEDとの通信時の電圧はどうなっているのか調べてみました。縦軸1メモリは1Vになります。黄色SCL、水色SDAです。

micro:bitとLCD1602の通信   

LCD1602 3.5Vで通信が行われていた

OLEDとの通信時

3.3Vで通信が行われていた

私は、micro:bitの3.3VとLCDの5V(電池から供給なので、約4.5V)が混在しながら通信すると予想していたのですが、LCD1602は3.5V、OLEDは3.3Vで通信が行われていました。特に、OLEDは正確に3.3の通信が行われていたので基板を確認したところ、内部で5V→3.3Vへの変換が行われているようでした。

おそらく、低ESR LDOレギュレータ[ME6206A33XG-662K]

OLEDの方は、内部で電圧変換が行われているので、全く問題ないことが分かりました。

LCD1602は3.5Vで通信が行われていて、約1V分はどこに行ったのか不思議です。micro:bitで使用しているMCP(MKL27Z256VFM4)のカタログ上の最大値が3.5Vということなので、ぎりぎりアウトぎみと言えるのでしょうか?詳しくないので、どなたかご存じの方は教えてください!

iːo(イーオ)V2 (送料無料) | ユーレカ工房 powered by BASE
micro:bitの機能をさらに拡張する製品です。特長① 単4電池3本を入れて、どこにでも持ち歩けます。また、iPadを使ったBluetooth通信での書き込みにも対応しています。②プログラムができるフルカラーLEDが3つあるので、これだけで様々なプログラムが可能です。③人感センサーが内蔵されているので、「人が来たら○...
タイトルとURLをコピーしました