Python
電子工作
RaspberryPi
I2C
lcd

Raspberry Pi 3とLCDディスプレイを接続し文字を表示させてみる

はじめに

  • IoTが注目され始め、最近何かと話題のラズベリーパイをはじめてみようとRaspberryPi3とRaspberry Piで学ぶ電子工作 専用 実験キット 基本部品セット スターターパック (電子部品関連)を購入しました。
  • ラズパイの初期設定からLチカまでは簡単にできたのですが、LCDディスプレイの接続には結構苦労しました。購入したセットには説明書も付いておらず、ネットで色々調べ試すはめになりました。
  • 私と同じ苦労をしなくて済むよう、現在ラズパイ-LCDディスプレイ接続で苦戦している人向けに本ページを書きました。少しでもお役に立てれば幸いです。

LCDディスプレイ接続結果のイメージ

  • 本ページでは以下画像のように文字を表示できるところまでを目標としています。

[ラズパイとLCDディスプレイを接続し文字を表示させた時の写真]

前提

ラズパイとLCDディスプレイの配線の仕方

  • ラズパイの2ピン・3ピン・5ピン・6ピンの4つを利用し以下写真のように配線します。配線する際は必ずラズパイの電源をオフ(USBケーブルを外した状態)にしておきます。
    • 2ピンはLCDディスプレイ裏側のVCCと書かれたピンをジャンパー線で接続
      ※写真では緑のジャンパー線
    • 3ピンはLCDディスプレイ裏側のSDAと書かれたピンをジャンパー線で接続
      ※写真では黄色のジャンパー線
    • 5ピンはLCDディスプレイ裏側のSCLと書かれたピンをジャンパー線で接続
      ※写真では橙色のジャンパー線
    • 6ピンはLCDディスプレイ裏側のGNDと書かれたピンをジャンパー線で接続
      ※写真では青色のジャンパー線

[ラズパイのピン配置拡大図]
IMG_6185.jpg

[ラズパイとLCDディスプレイ配線写真]
IMG_6188.JPG

ラズパイ側の設定

  • ラズパイとLCDディスプレイの接続にはI2C通信という技術を使います。そのためにはラズパイ側にI2C通信を有効化したり、必要なライブラリをインストールするなど諸々の設定が必要になります。

I2C通信の有効化

  • ラズパイのターミナルを起動し、以下コマンドを実行します。
sudo raspi-config
  • 以下のような画面が立ち上がるので「5 Interfacing Options > P5 I2C」を選択します。その後ラズパイを再起動し、I2C通信を有効化します。※ラズパイのバージョンによってやり方が異なるようです。その場合はこちらのサイトが参考になると思います。

[Raspbianの設定ツール起動画面]
image.png

[5 Interfacing Options選択後の画面]
image.png

[P5 I2C選択後の画面]
image.png

モジュールファイルの設定

  • ラズパイのターミナルにて以下コマンドを実行し、モジュールファイルに「i2c-bcm2708」、「i2c-dev」を追記します。
sudo vim /etc/modules

[モジュールファイルの編集結果]
image.png

I2Cに必要なライブラリをインストール

  • ラズパイのターミナルにて以下のコマンドを実行し、smbusとi2c python libraryのインストールします。
sudo apt-get install -y python-smbus i2c-tools

ラズパイとLCDディスプレイの接続確認とI2C通信のアドレスを確認

  • ラズパイのターミナルにて以下のコマンドのいずれかを実行します。
sudo i2cdetect -y 1
sudo i2cdetect -y 0
  • 以下のような表示がされれば成功です。以下の結果の場合、LCDディスプレイのI2C通信アドレスは「0x3f」と読み取れます。 ※ハードウェアによっては、「0x27」の場合もあるようです。
  • すべて「--」と表示される場合はLCDディスプレイとの接続に失敗しています。配線やこれまでのラズパイの設定に誤りが無いか再度確認してみてください。

[コマンド実行結果]
image.png

pythonコードをインストール

  • アドレスが「0x27」の場合は以下のコマンドを実行します。
wget http://osoyoo.com/driver/i2clcda.py
  • アドレスが「0x3f」の場合は以下のコマンドを実行します。
wget http://osoyoo.com/driver/i2clcdb.py

※「i2clcda.py」と「i2clcdb.py」の差はI2C通信のアドレス(0x27か0x3f)しかなく、それ以外は同じコードのようです。

LCDディスプレイに文字を表示させてみる

  • ダウンロードしたpythonコードを以下のコマンドで実行すれば、LCDディスプレイに文字が表示されるはずです。※冒頭の「I2C LCDディスプレイ接続結果のイメージ」の写真の様になります。
sudo i2clcdb.py

トラブルシューティング

  • 設定や配線も間違えてない、pythonのエラーも出ていない、なのにディスプレイに文字が出てこない!!っという現象に遭遇した時はディスプレイの濃度を確認してみて下さい。ディスプレイの濃度が薄過ぎて既に表示されている文字が見えていないだけかもしれませんよ!

  • LCDディスプレイの裏側に濃度を調整できる青いモジュールがあります。中心をドライバー等で回すとことで濃度の調整を行えます。※右に回すと濃く、左に回すと薄くなります。
    私はこれに気づかず3日間を無駄にしてしまいました:sweat_smile:

[LCDディスプレイの濃淡調節のやり方]
image.png

参考サイト

あとがき

  • 今回噂のラズパイに初挑戦し、電子工学、Linux、pythonの知識等、幅広いが必要であることがわかりました。
  • 結構時間がかかってしまったため、pythonコードの中身を解読する気力が湧かず、さらっとスルーしています。ごめんなさい。:sob: 
  • こちらのサイトでは、本ページのコードとは全く別ですがpythonコードについて解説されていました。気が向いたら、pythonコードを解読した上で、このページを更新できればと思っています。