エンジニア「くがとしお」のレベル上げ

エンジニアとして色々なことができるように資格取得、電子工作、アプリ開発を頑張ります。

ラズパイ2 コマンドラインからI2C接続キャラクタLCDを制御してみた

      2016/04/26

概要

ラズベリーパイ2を使用して、LCDに好きな文字を出力します。

ラズパイ2をインターネットラジオとして使用する場合には
曲名を表示できれば便利ですよねー。(σ・∀・)σゲッツ!!

今回は、I2Cをコマンドラインから制御できるI2C Toolsを使用していきます。

電子工作時間目安

30分ぐらい

難易度

★☆☆☆☆

 

スポンサードリンク

その前に・・・

今回の電子工作で知っておきたい知識を紹介しておきます

I2Cとは?

I2C(Inter-Integrated Circuit)の略で
アイ・スクエアー・シー、または アイ・ツー・シーと読みます。

フィリップス社が開発したシリアルバス。
SDA(シリアルデータ)信号とSCK(シリアルクロック)信号の
2線でICを制御します。

USBやPCI Express等の高価なインターフェースが実装できない場合に用いられます。

I2Cでは、「マスター」と「スレーブ」という役割分担があります。
複数のスレーブを接続することができます。

SCLのクロックを制御するのがマスターです。
今回の例で言うと、ラズパイがマスターでLCDがスレーブとなります。

I2Cの制御は以下のようなフローで実行されます。
1バイトが1パケットで通信が行われます。

スタートコンディション
I2Cアドレス(7bit) + R/W(1bit) ※ R/W: 書き込みは1を指定 マスター → スレーブ
ACK スレーブ → マスター
Co(1bit) + RS (1bit) ※ Co: 継続ビット 継続データは1を指定する。 RS: コマンドとデータの指定ビット コマンドは0、データは1を指定 マスター → スレーブ
ACK スレーブ → マスター
マスター → スレーブ
ACK スレーブ → マスター
ストップコンディション

 

準備するもの

準備するものはこんな感じです!

ラズベリーパイ2

ラズベリーパイ2を使用します。
ラズベリーパイでもできると思いますが、未評価です。

キャラクターLCDモジュール

I2Cで制御する16文字x2行表示のキャラクタLCD「MI2CLCD-01」を使用します。

ラズベリーパイ 電子工作セット

今回、ブレッドボードと接続ケーブルがあればOKです。
あると簡単に電子工作の実験ができますよ。

 

組み立て

LCDモジュールの「MI2CLCD-01」は半完成品ですので、組み立てが必要です。
mi2clcd

 

配線

以下のように配線してください。
ブレッドボードを使うと便利ですよ。

MI2CLCD-01 CN1 1pin (VDD) Raspberry Pi 1pin (+3.3V)
MI2CLCD-01 CN1 2pin (GND) Raspberry Pi 6pin (GND)
MI2CLCD-01 CN1 3pin (SDA) Raspberry Pi 3pin (SDA)
MI2CLCD-01 CN1 4pin (SCL) Raspberry Pi 5pin (SCL)
MI2CLCD-01 CN1 5pin (RST) MI2CLCD-01 CN1 (VDD)

※ RSTピンは電源投入直後にVDD信号から少し遅れてLowにアサートされる必要がありますが
VDD信号と直結してもパワーオンリセットされるため問題ないみたいです。

※ SDAとSCKは、プルアップ抵抗を接続する必要がありますが
ラズパイは内部に1.8kΩのプルアップ抵抗があるため接続する必要はありません。

 

I2C Tools

それでは、I2C Toolsを使っていきます。

I2C有効化

ラズベリーパイでI2Cを使用するためには事前に有効にしておく必要があります。

raspi-configを実行します。

以下の手順に従って、I2Cを有効に設定してください。
・メニューの「Advanced Options」を選択。
・「I2C」を選択。
・「Would you like the ARM I2C interface to be enabled?」と聞かれます。
→ 「Yes」を選択。
・「Would you like the I2C kernel module to be loaded by default?」と聞かれます。
→ 「Yes」を選択。
・「Finish」を選択し、終了。

インストール

下記コマンドでインストールできます。

使い方

I2C Toolsは、コマンドが4つあります。

I2cdetect

I2Cバスを走査してデバイスが使用しているアドレスを特定します。

I2cset

指定したアドレスのデバイスに値を書き込みます。

I2cget

指定したアドレスのデバイスから値を読み込みます。

I2cdump

I2Cデバイスのレジスタをまとめて読みだします。

アドレスの特定

まずは、I2Cバスを下記コマンドで確認します。
I2Cバス1に接続されていることが分かりました。

i2cdetectコマンドでアドレスを特定します。
-y:確認メッセージをパス
1:I2Cバスを指定
アドレスが0x3eだということが分かりました。

制御プログラム

制御するプログラムをエディタで作成します。

※LCDは一定のコマンドで初期化しないと機能しません。
制御コマンドで初期化する必要があります。
制御コマンドは互換性を保つためか、伝統的に同じ制御コマンドです

プログラムを実行します。

 

キャラクタLCDモジュール 取扱説明書

今回制御するキャラクタLCDモジュール「MI2CLCD」の取扱説明書をアップします。

image

 

image

 

image

 

image

 

image

 

image

 

 

動作チェック

LCDに文字が表示されました。わーい!
DSC01848

 

「くがとしお」的まとめ

今回は、I2C Toolsを使用してコマンドラインからI2CデバイスのLCDを制御しました。
次回は、Wiring Piを用いてC言語での制御、デバイスドライバー化までやりたいと思います。

では! (^^)/

 - 電子工作

PAGE TOP