はじめてのRaspberry Pi – その3

開発 hironemuhironemu

これまでの記事はこちら。

はじめてのRaspberry Pi – その1

はじめてのRaspberry Pi – その2

勉強会もやりました。

社内勉強会 Chef & Raspberry Pi

前回は、LEDを点滅させるところまでやりました。今回はもう少しレベルアップして、LCDモジュールを接続し文字を表示させてみたいと思います。(※ まだ勉強中のため今回の方法であっているか保証できません。同じように作業する場合は、自己責任でお願いします。)

用意するもの

今回、新たに使用するのは次のものたちです。

LCDのはんだ付け

LCD本体とピンソケットという部品(7本足の出たピン)をはんだ付けする必要があります。こんな風にくっつけます。

初めてのはんだ付け作業なのでどうやってやるものなのかをネットで色々調べてみました。以下のサイトにわかりやすく説明されていましたので、これを読んで必要な工具も購入しました。

はんだ付け | うまくいく電子工作のコツ | 村田製作所

しかし実際、どんな感じで行うのか読んだだけではイメージすることができません。そこで動画のチュートリアルっぽいのを探していたら、以下の素晴らしい動画を見つけましたので、これを見てさらに勉強します。

面倒くさい事は抜きです。ハンダ付けの方法

さて、そろそろ心の準備が整ったので、はんだ付けの練習をします。が、適当な練習台がなかったので空き缶(ビールの空き缶なのは飲みながらやってたわけではないですよ・・)の上ではんだを溶かしてみます。

空き缶とはんだはくっつきにくいです。空き缶を練習台にしてはいけません・・・。しかし、とりあえず、はんだがどいう風に溶けていくのか感覚はつかめましたので、もう本番です。

私はいつも手がプルプルしているので(ビールを飲みながらやってません)、この作業は無理なんじゃないかと思いながらやってましたが、はんだとLCDの金色の金具部分はくっつこうとする力が働いているため、なんとくっつけることが出来ました。

今回は買ってませんでしたが、はんだ吸取線 CP-3015というのもあるので、失敗してもなんとかなるそうです。

配線

次に、ブレッドボードにLCDモジュールの配線を行います。購入したLCDの仕様書による回路図を見たのですが、実際どういう風に配線すべきなのかいまいちイメージできません。

色々な記事を参考にさせて頂きましたが、次のサイトの配線が今回のものに近そうでしたので、こちらを見ながら行いました。

I2C ACM1602NI LCD表示制御 | Dear プログラマー

以下のように配線を行い、LCDモジュールとRaspberry Piを接続します。青い四角いのは10kΩの半固定抵抗です。LCDモジュールのVo(LCD contrast adjust)へつながります。

接続したあとはこんな感じになります。

Raspberry PiからLCDモジュールを制御して文字を表示する

Raspberry Piで今回購入したLCDを使う場合、ちょっと注意が必要だそうです。次の記事と同じようにやってみたいと思います。

Raspberry Pi でI2C: キャラクタLCD

まず、モジュール(i2c-bcm2708, i2c-dev)を読み込み込みます。(恒久的に設定もあるそうです。上記記事を参照してください)

pi@raspberrypi ~ $ sudo modprobe i2c-bcm2708 baudrate=50000
pi@raspberrypi ~ $ sudo modprobe i2c-dev

次に、I2Cへアクセスするツールをインストールします。

pi@raspberrypi ~ $ sudo apt-get install i2c-tools
Reading package lists... Done 

それでは、LCDモジュールに信号を送ってみます。これも上記の記事を参考に行います。まず、LCDモジュールの画面のクリアやどういう風に文字を表示するのかなどの設定を行います。

pi@raspberrypi ~ $ sudo /usr/sbin/i2cset -y 1 0x50 0x00 0x01 # Clear Display
pi@raspberrypi ~ $ sudo /usr/sbin/i2cset -y 1 0x50 0x00 0x38 # Function Set: DL: 8bit, N: 2-line, F: 5x8 dots
pi@raspberrypi ~ $ sudo /usr/sbin/i2cset -y 1 0x50 0x00 0x0c
pi@raspberrypi ~ $ sudo /usr/sbin/i2cset -y 1 0x50 0x00 0x06

この制御信号は購入したLCDモジュールと一緒についてくる仕様書の「11.0 DISPLAY INSTRUCTION TABLE AND DDRAM ADDRESS」に書かれているもののようです。ここまで行うと以下のように画面全体がクリアされた感じになります。

それでは「A」を出力してみます。

pi@raspberrypi ~ $ sudo /usr/sbin/i2cset -y 1 0x50 0x80 0x41

おお。でた。

次に、”B”、改行、”ア”、”イ”の順に表示させてみます。

pi@raspberrypi ~ $ sudo /usr/sbin/i2cset -y 1 0x50 0x80 0x42 # "B"
pi@raspberrypi ~ $ sudo /usr/sbin/i2cset -y 1 0x50 0x00 0xc0 # 改行
pi@raspberrypi ~ $ sudo /usr/sbin/i2cset -y 1 0x50 0x80 0xB1 # "ア"
pi@raspberrypi ~ $ sudo /usr/sbin/i2cset -y 1 0x50 0x80 0xB2 # "イ"

でました。しかし、文字が微妙に見難い感じがします(背景のドットがうっすら見えています)。接続した半固定抵抗はLCD contrast adjustに接続されているので、これを調整するといいのかもしれません。正直、どう調整していいの分からないので恐る恐る右に回していくと・・・。

こんな風に綺麗に表示されました!なにこれ面白い。

まとめ

今回もみなさんの知恵をお借りして、LCDに文字を表示するところまで出来ました。

しかし、まだまだ理解せずにやっている内容があるので(配線やI2CやLCDモジュールの制御など)、この辺りを引き続き勉強していこうかと思います。

参考にさせて頂いたサイト

ハンダ付けのやり方
はんだ付け | うまくいく電子工作のコツ | 村田製作所

ハンダ付けのやり方 Youtube
面倒くさい事は抜きです。ハンダ付けの方法

ACM1602N1 LCDの配線
I2C ACM1602NI LCD表示制御 | Dear プログラマー

Raspberry PiでACM16N1の制御
Raspberry Pi でI2C: キャラクタLCD