i2c通信とは

i2c通信とは、フィリップス社が提唱したシリアル通信のインターフェースで、SDAとSCLの2つのピンだけで、複数のモジュールとの通信が可能になっています。

i2cを使うメリットとしては下記が挙げられます。

  • 2つの汎用ピンだけを用いて、アドレスが余っている限り、デバイスやセンサを無数に接続することが可能
  • マイコンに繋がっているデバイスやセンサのうち1つがクラッシュしても他のデバイスやセンサと通信を継続することが可能

センサから値を取得したり、マイコン間での通信をしたり、デバイスへの命令を送ったりすることが2つのピンだけで完結するという非常に素晴らしい通信方式です。

Raspberry Piでi2c通信を有効化する

Raspberry Piでi2c通信を有効化するには下記コマンドで設定をします。

sudo raspi-config

Raspberry Piの設定画面が開くので5. Interfacing Options(古いrapbianの場合は9. Advanced Options)を選択すると、いくつか項目が表示されます。

raspi config

I2Cを選択し、「YES」を押します。カーネルモジュールを自動ロードするか聞かれた場合は「YES」、Finishボタンが出たら押下しましょう。リブートするかを聞かれたら「YES」でリブートしましょう。

リブート後、下記コマンドを実行してみましょう。

ls /dev/*i2c*

実行後に下記が表示されればi2cが有効になっています。

/dev/i2c-1

追加ツールのインストール

sudo apt-get install -y i2c-tools

上記コマンドで、i2cの追加ツールをインストールしましょう。よく使うものとしては、i2cdetectになると思います。i2cで通信を行うデバイスのSCL/SDAのピンと、Raspberry PiのSCL/SDAのピンを繋いだ上で、下記コマンドを実行すると、アドレスを見ることができます。

i2cdetect -y 1

i2c通信の応用例

サーボモーターの制御 サーボモーター はPWM制御を用いて、任意の角度まで回転させることができるモーターで、ロボットアームなど精密な動作が必要な時に使われます。ロボットアームは複数のサーボモーターを組み合わせることにより、自由度が増え、複雑な動きをすることが可能となります。   ロボットの動きが複雑になるほど、必要なサーボモーターの数が5個、10個と増えてきますが、1つのサーボモーターに対し1つのPWMピンで制御するのは限界があります。そこで、i2c通信とPCA9685というサーボモーターコントローラーを用いて、2つのピンを用いるだけで数十個のサーボモータ を制御する方法を解説します。 Raspberry Piのi2c通信有効化につ

Related Posts

DIYや電子工作の際に役立つ便利なモジュール集
DIYや電子工作の際に役立つ便利なモジュール集
電子工作の際、基礎的な機能から自分で一から組み立てるとそれなりに時間と労力がかかってしまうので、一連の機能を持った便利モジュールを導入してしまいましょう。 本ページでは電子工作の際に役立つモジュールを紹介します。随時更新予定です...
Read More
複数の電源をプログラマブルにON/OFF制御したいときはリレーモジュールを使うのがおすすめ!
複数の電源をプログラマブルにON/OFF制御したいときはリレーモジュールを使うのがおすすめ!
ロボットの回路を組んでいると、例えばロボットアーム用のサーボモータ と移動用のDCモータを同時に駆動しなければならない時があります。その際、電源を共有していると、一方の駆動での電流消費によってもう一方が影響を受けてしまうこともあります...
Read More
サーボモータがプルプル振動したり動かなくなったりした場合のチェックリスト
サーボモータがプルプル振動したり動かなくなったりした場合のチェックリスト
サーボモータを動かそうとした時にプルプルと振動したり動かなくなってしまった場合にチェックすべき項目を書き出しました。 回路の状態を検証するためにテスターは不可欠ですので、無い人は買っておきましょう。 線が切れ...
Read More

サイトについて

RoboStationは誰でも手軽にロボットを製作できるようにすることを目的としたEC・ハウツーサイトです。