Hatena::ブログ(Diary)

Okiraku Programming RSSフィード Twitter

2012-09-26 Raspberry PiにI2C液晶をつける

Raspberry PiにI2C液晶をつける

Raspberry Piは、GPIOピンの一部をSPIやI2Cインターフェースとして使用できます。

これを利用して、Strawberry Linuxで販売されているI2Cキャラクタ液晶Raspberry Piに取り付けてみました。

配線

Raspberry PiのGPIOのピン配置は下記で分かります。

RPi Low-level peripherals - eLinux.org


これを見ながら、下記のように接続します。I2C用のプルアップ抵抗も不要です*1液晶のRST端子は開放でOKです Vddに直結しておかないと動作が不安定になることがあります。

RaspberryPi I2C液晶
01 3.3V 5 VDD
03 SDA 3 SDA
05 SCL 2 SCL
06 GND 4 GND

こんな感じのアダプタのようなものを作ってみました。ピンヘッダにそのまま刺せます。

f:id:NeoCat:20120926010721j:image:w280 f:id:NeoCat:20120926001432j:image

ソフトウェア

I2Cの使い方は下記サイトを参考にさせていただきました。

Raspberry Pi I2C How-To ガイド by @azarashi55 | GVC : Global Versatile Controller


1. /etc/modules に以下一行を追加

i2c-dev

2. /etc/modprobe.d/raspi-blacklist.conf の以下一行をコメントアウト

# blacklist i2c-bcm2708

3. モジュールをロードする(もしくは再起動。)

$ sudo modprobe i2c-bcm2708 

4. i2c-toolsをインストール

$ sudo apt-get install i2c-tools

5. 液晶が正しく検出されるかをチェック

$ sudo i2cdetect 0   # => 3e (液晶のアドレス) が表示される

6. 下記の液晶コントロール用シェルスクリプトを i2c-disp.sh として保存。(アプリケーションノートを眺めながら適当に作ったものです。アイコン表示などに対応させても面白いかも。)

#!/bin/bash
function usage {
    echo "Usage: $0 [-ic] [-p pos] message" > /dev/stderr;
    exit 1
}
[ $# = 0 ] && usage

while getopts "icp:" flag; do
    case $flag in
	\?) usage ;;
	i)  i2cset -y 0 0x3e 0 0x38 0x39 0x14 0x78 0x5e 0x6c i
	    sleep 0.25
	    i2cset -y 0 0x3e 0 0x0c 0x01 0x06 i
	    sleep 0.05
	    ;;
	c)  i2cset -y 0 0x3e 0 0x01 ;;
	p)  i2cset -y 0 0x3e 0 $((OPTARG+128)) ;;
    esac
done
shift $((OPTIND-1))
[ $# = 0 ] && exit

LANG=C
MSG=`echo -n "$1" | perl -pe '$_=join" ",map{ord }split//'`
#echo $MSG
i2cset -y 0 0x3e 0x40 $MSG i

7. 実行してみる。初回は -i オプションを指定し、液晶初期化する必要があります。

また、-pオプションを使うと明示的に表示位置を指定することができます。なお1段目は 0x00 から、2段目は 0x40 から始まります。

何も指定しないと前回の続きから引数の文字を表示させます。

$ sudo ./i2c-disp.sh -i 'Hello! I2C LCD'
$ sudo ./i2c-disp.sh -p 0x41 ' & Raspberry Pi'

余談

※ちょっと失敗してせっかく買ったケースのふたが閉まらなくなるという問題があったので、改造して最終的に収まるようにしました。

f:id:NeoCat:20120926024845j:image

*1Raspberry Piが内蔵プルアップ/プルダウン機能を持っているため

fsdjklfsdjkl 2013/09/26 21:41 素人質問で申し訳ないのですが、
Raspberry PiとI2C液晶モジュールの接続は、半田付けが必要なのですか?
それとも、普通に差し込むだけで良いのでしょうか?

NeoCatNeoCat 2013/09/29 00:34 液晶モジュールは基盤のみの状態で売られているので、少なくともピンヘッダの半田付けが必要かと思います。

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/NeoCat/20120926/1348684357