今回はArduinoとI2Cに関する内容です。I2C通信に対応したモジュールというのは、温湿度計をはじめとした測定系から、LCDを簡単に使えるようにするためのモジュールであったり、出力IOを増やすためのIOエクスパンダーであったり、さまざまなものが存在します。
そんななか、いざ使ってみようとして、そのモジュールがArduinoから操作できないことってありますよね?おそらくこの記事を見ているあなたもその一人だと思います。原因はもちろん様々あるわけですが、その中でも初歩的な「そもそもArduinoからそのI2Cモジュールは認識されているか?」という課題を解決してみましょう。
そんなわけで今回は、Arduinoを使ってI2C通信するモジュールを正しく認識させるところからご紹介します。
Arduinoに接続したI2C通信モジュールが、
Arduinoから認識されているか確認することができるようになる。
Youtubeチャンネルにさまざまな動画を上げています。
↓↓↓こちらからYoutubeチャンネルにアクセス!! ↓↓↓
本ブログはアフィリエイトを用いた広告を掲載しています。
念のため:正しく配線されているか確認しておく
例えば、こちらのようなI2C通信で文字を表示させるLCD(液晶ディスプレイ)を例にしましょう。
このLCDはI2Cによる通信ができますが、配線するためのピンは、GND,5V,SDA,SCLの4本です。I2C通信というと、このSDA,SCLが通信用の信号線になります。
ArduinoはI2C通信用の制御ピン(SDA,SCL)がありますから、そちらにLCDのピンを接続することになります。具体的にはこのようになります。
ここまで確認出来たら配線は完了です。
動画では2個のLCDをつなげていますが、今回は1つだけ接続することをイメージして解説します。もし2つ以上のI2C通信用のモジュールをつなげたい場合は注意点も有りますので、別記事でご紹介します。お楽しみに。
Arduino側でI2C通信用のモジュールが認識できているか確認
それでは配線が終わったところで、ArduinoがI2C通信用のモジュール(今回の例ではCD)を認識しているか確認してみましょう。
確認してみる方法は、以下の手順の通りです。1つずつ詳しく確認していきましょう。
Arduino IDEを開く
Arduinoをすでに触ってるならばこの説明は不要ですね。ご自身のパソコンに入っているこのアイコンをクリックしてArduinoIDEを立ち上げてください。
もしアイコンの形状が違うなあ…という場合は、最新のArduinoIDEにしてみるのもいいかもしれませんね。※今回使用するのは2024年5月25日時点で最新のVer.2.3.2です。
↓↓↓ここから最新版のArduino IDEがダウンロードできます。↓↓↓
I2cScanner(ライブラリ)を導入する
それでは次にArduino IDEを使って、I2cScannerを導入してみましょう。このI2cScannerは、ライブラリと呼ばれるものです。ライブラリとは、簡単なコードの記述でやりたいことを実現できるようにしてくれるアイテムだとお考え下さい。
導入手順は、まず、Arduino IDEの左側の本のようなマークをクリックします。すると、ライブラリマネージャーというウインドウが表示されます。
そのウインドウの一番上のテキストボックスに、i2cscannerと打ち込んで検索しましょう。1つしか出ないはずなので、こちらをインストールボタンでインストールします。
インストールが完了したら、ArduinoIDEのファイルタブからスケッチ例を選択します。スケッチ例はArduinoIDEに標準で入っているものから、先ほどインストールしたライブラリのような外部データもここに表示されます。
スケッチ例の下のほうに、i2CScannerという項目が見つかるはずなので、そのなかのScannerという項目をクリックしましょう。
(※この時点でI2CScannerが見つからない場合は、ライブラリのインストールからやり直してください。)
選択すると、新たにスケッチが開かれます。Scanner.inoというスケッチですね。このスケッチを使うことで、いまArduinoに接続されているI2C通信用のモジュールのアドレスがわかります。
I2Cのアドレスについては今回は詳しく解説しませんが、1つお伝えすると、アドレスが表示されている=Arduinoから認識されている。と思っていただいて間違いありません。
I2cScannerをArduinoに書き込む
それでは仕上げに先ほど新規で開かれたScanner.inoというスケッチをArduino本体に書き込みましょう。書き込み方法は通常のスケッチと同様に、右矢印ボタンでOKです。
もし書き込みが失敗する場合は、右矢印ボタンと同じ列にあるボードとCOMポートの設定をクリックしてご自身の環境と一致しているか確認してみてください。たいていCOMポート番号が間違っているだけだったりします。
シリアルモニタで確認する
Scanner.inoをArduinoに書き込んだら、シリアルウインドウを開いてみてください。シリアルモニタは、Arduino IDEの右上のこのボタンを押すことで画面が切り替わります。虫眼鏡ですかね。
シリアルモニタは、ArduinoIDEの下に出てきます。通常は出力タブになっていますが、シリアルモニタのボタンを押すことでこのように表示させることができます。
今回つなげていたLCDのアドレスは、0x26と0x27であることがわかりました。
--- Scan started ---
I2C device found at address 0x26 !
I2C device found at address 0x27 !
--- Scan finished ---
さきほどもお伝えしましたが、このようにArduino側でI2Cのアドレスが取得できているということは、ただしくI2C用モジュールと通信できていることになります。
反対に、もしI2C用モジュールと通信できていない場合はどうなるでしょうか?結果はこちらのようになります。
Scan startedのままです。さきほどはこの後にアドレスが並んでいましたが、正しく認識されていない場合はここで止まってしまいます。
ですから、Scan startedで止まってしまった場合は、正しくI2C通信用モジュールがArduino側から認識できていませんから、接続などを見直す必要があります。
今回のまとめ:アドレス取得をして正しく認識されているかチェック
今回はI2C通信用モジュールが、Arduinoで認識できているかのチェック方法についてご紹介しました。I2C通信というと、配線が5V,GMD,SCL,SDAと4本だけで手軽なのですが、うまく通信できなかった場合にどこが原因かわかりにくいですよね。
そんなときこの方法を使えば、Arduinoには認識されているかどうかで対処法が変えることができます。つまり要因の切り分けが可能ということですね。
うまくこの方法を使ってI2C通信を使いこなしてみてくださいね。
コメント