« | »

2014.09.29

Raspberry Pi : display IP address on I2C LCD

Raspberry Piにcharacter baseのLCDをI2Cで接続して、OS起動時にIPアドレスを表示する。

RpiをあちこちのDHCPに接続してリモートログインするような使い方をしていると、起動時に現在のIPアドレスを表示してくれると便利かも知れない。
このガジェット制作では、LCDにピンヘッダと抵抗器のハンダ付けが必要となる。

LCD on Rpi
材料
Raspberry Pi

LCD : SB1602B
pin1=RST / pin2=SCL / pin3=SDA / pin4=VSS(GND) / pin5=VDD(2.7-3.6V)

ピンヘッダ(細いもの): 細ピンヘッダ 1×4
無ければ単芯線などでも良い

ジャンプワイヤ(メス-メス): ブレッドボード・ジャンパー延長ワイヤ(メス-メス) 15cm
回路図
Rpi-LCD
>>Raspberry Piのピン配列
こちらの方が分かりやすいかも知れない。
このLCDは3Vで動作する低電圧のモジュールなので、Rpiの3.3V出力を供給する。
注意として、SCLとSDAの間のプルアップ抵抗はRpiに内蔵されているので不要だが、LCDのResetとVDDを直結しないとLCDが不安定になり、ちょっと触れただけで表示が消えたりするので、ここにはプルアップを接続しておく。

circuit photo
Rpiの設定

/etc/modules にi2c-devを追加

/etc/modprobe.d/raspi-blacklist.conf でblacklist i2c-bcm2708をコメントアウト

ライブラリをインストール

# apt-get install i2c-tools

LCD(SB1602B)に文字列を表示するためのスクリプト。こちらを参考にした。

例えば、下記のように引数を与えると、LCDに2行表示される。

# bash lcd.sh -i "0123456789abcdef"
# bash lcd.sh -p 40 "Raspberry pi"

起動時にIPアドレスを調べてLCDに表示するように、起動スクリプトを書く。

ここでは、/root にlcd.sh を保存している。
LCDの1行目に現在の日時、2行目にグローバルIPアドレスを表示している。
IPアドレスは内部コマンドで取得しても良いが、インターネットに接続できていることも確認するために、
http://checkip.dyndns.org/
にアクセスし、IPアドレスが表示されたindex.htmlを取得して、awkで整形している(HTMLタグの < とスペースを区切り文字にしてIPアドレスを抜き出す)。

もしくは以下の様なコマンドでIPアドレスを取得してもよい。

# ip route | awk 'END{print}' | awk -F " " '{print $NF}'

スタートアップの設定

# chmod +x /root/lcd.sh
# cd /etc/init.d
# chmod +x getip.sh
# update-rc.d getip.sh defaults