Raspberry PiでLCDモジュールを制御

結構前に買ったっきり放置してたRaspberry Piを使って、キャラクタLCDに文字を表示したいと思う。要するに、暇なのだ。

LCDモジュール自体は、仕事上嫌になるほど見ているわけだが、こうやって趣味でも対面するというのは、本当に馬鹿なやつだと思う。

さて、気を取り直して本編に入ろう。

使用するLCDモジュール

使用するLCDモジュールは、Raspberry Pi 3 Starter Learning Kitに入ってるLCD。

これですね。実際のモノは

これのようです。

LCDモジュールC面。一般的なLCDモジュールにある端子がある
LCDモジュールS面。LCDモジュールの上に、I2Cモジュールが乗っかってる。

通信方法

通信方法は、I2Cモジュールが乗っかってるので、素直にI2Cでいきましょう。Raspberry PiでI2C通信を行うには、最新のOSなら設定からOnにするだけのようです。

少し古いやつだと、カーネルモジュールをロードしたりして、ゴニョゴニョしないとだめらしい。新しいは正義。

配線

Raspberry PiのGPIOから3.3[V]を拝借するのと、I2C通信をするためのSDA(Serial Data?), SDL(Serial Data cLock?わからん)を、ラズパイとLCDモジュールの間で結線するだけ。

本来、I2Cにはプルアップ抵抗が必要らしいのですが、Raspberry Piはそれも内蔵しているとのこと。

Raspberry Pi、とても便利ですね。ただ、これに慣れると、なんちゃって組込エンジニアが増える気がする

プログラム

接続の確認

プログラムを走らせる前に、まずI2Cデバイスとして認識されているか確認します。

ターミナルを開いて

i2cdetect -y 1

と入力すると、ズラズラっと

コマンドの実行結果

出てくるので、上の例だと「27」とか表示されてたらOKです。SDAとSDLを間違えると、僕みたいに慌てます

接続が確認できたら、次はプログラムです。

ソースコード

オソヨーのサイトに載ってる通り(というか、上で書いたのは全部このページに載ってます)

いざ実行!

ダウンロードしたPythonプログラムを実行したけれども、うんともすんとも言わない。バックライトのオンオフは動くので、I2Cでの通信は出来てるっぽいのだけど。

その後いろいろ調べていると、どうやらこのLCDモジュール、5Vが定格電圧とのこと。I2Cは双方向通信なので、分圧みたいな原始的なレベル変換では対応できない。詰んだ。

セットに入ってたレベル変換基板らしきものを使ってもだめだった。これは片方向なのか、そもそも使い方が悪いのかよくわからない。回路図もないのにわかるわけがない。

ということで、おとなしく秋月電子でレベル変換ICを買うことにした。あと、ついでにハンドテスターも買おう。電圧が全然わからない。

以下は買うものリスト。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です