RaspberryPiの起動時に、液晶ディスプレイにIPアドレスを表示させてみた。
RaspberryPiを電源とLANケーブルだけ接続して起動すると、DHCPなのでIPアドレスが分からない。
モニタ接続してIP確認するのも大げさなので、液晶ディスプレイに表示させてみた。
シェルでIPアドレスを表示させるには、以下の通り
hostname -I
192.168.10.118
液晶に表示するためには、1文字ずつに分解して、ASCIIコードにしないといけない。
ちょっと冗長だけど、分かりやすいコードにはなった(笑)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
#!/bin/sh #まずIPアドレスを取得し、バイト毎に分割して変数に格納(頭0詰め3ケタ固定) HN=`hostname -I` oct1=$(printf "%03d" `echo $HN | cut -d"." -f 1`) oct2=$(printf "%03d" `echo $HN | cut -d"." -f 2`) oct3=$(printf "%03d" `echo $HN | cut -d"." -f 3`) oct4=$(printf "%03d" `echo $HN | cut -d"." -f 4`) #3ケタ固定なので、一文字ずつ取り出して、ASCIIコード16進数に変更 oct11=$(printf "0x3%d" `echo $oct1 | cut -c 1`) oct12=$(printf "0x3%d" `echo $oct1 | cut -c 2`) oct13=$(printf "0x3%d" `echo $oct1 | cut -c 3`) oct21=$(printf "0x3%d" `echo $oct2 | cut -c 1`) oct22=$(printf "0x3%d" `echo $oct2 | cut -c 2`) oct23=$(printf "0x3%d" `echo $oct2 | cut -c 3`) oct31=$(printf "0x3%d" `echo $oct3 | cut -c 1`) oct32=$(printf "0x3%d" `echo $oct3 | cut -c 2`) oct33=$(printf "0x3%d" `echo $oct3 | cut -c 3`) oct41=$(printf "0x3%d" `echo $oct4 | cut -c 1`) oct42=$(printf "0x3%d" `echo $oct4 | cut -c 2`) oct43=$(printf "0x3%d" `echo $oct4 | cut -c 3`) #一応、コマンドラインにも出力 echo $oct11,$oct12,$oct13 echo $oct21,$oct22,$oct23 echo $oct31,$oct32,$oct33 echo $oct41,$oct42,$oct43 # 液晶モジュールを初期化 i2cset -y 1 0x3e 0 0x38 0x39 0x14 0x78 0x5f 0x6a i sleep 0.3 i2cset -y 1 0x3e 0 0x0c 0x01 i sleep 0.3 i2cset -y 1 0x3e 0 0x06 i sleep 0.3 # 液晶の1行目に1・2バイト目を表示 i2cset -y 1 0x3e 0 0x80 b i2cset -y 1 0x3e 0x40 $oct11 $oct12 $oct13 0x2e $oct21 $oct22 $oct23 0x2e i # 液晶の2行目に3・4バイト目を表示 i2cset -y 1 0x3e 0 0xc0 b i2cset -y 1 0x3e 0x40 $oct31 $oct32 $oct33 0x2e $oct41 $oct42 $oct43 0x20 i |
このシェルスクリプトのファイルをRasberryPiの起動時に実行したい時には、以下のフォルダに置く(拡張子のドットがあると実行されない)
最初は気にせずに拡張子のドットが入っていたら、実行されなかった・・・。
/etc/network/if-up.d/
以下のサイトを参考にしました。
Raspberry Pi起動時にI2C接続の小型液晶にIPアドレスを表示させてみる