株式会社ジーテック

制御機器を小ロット多品種で設計製作

ラズパイに接続したLCDにIPアドレス表示

ラズパイはIPアドレスだけでもわかれば他はリモートで触れるというのもあり、LCDを接続して常時表示することはマストアイテムとも言えます。その方法をメモとして残します。

I2C接続LCDを使用する前準備

ラズパイのI2CはデフォルトでOFFとなっている為、RaspberryPiの設定で有効にしてください。

また、接続ハーネスを用意する必要があります。石鹸に関しては下記の手書き図面を参考にしてください。

ソフトウェア等の準備

ipアドレス取得に必要なライブラリを取得します。管理者権限にてipgetを取得します。

pi@raspberrypi:~ $ sudo pip3 install ipget
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting ipget
  Downloading https://www.piwheels.org/simple/ipget/ipget-0.0.3-py3-none-any.whl
Installing collected packages: ipget
Successfully installed ipget-0.0.3

接続したLCDにIPアドレスを表示するプログラムを作ります。ここではファイル名をip_check.pyとしました。ファイルの中身は下記のとおりです。

#!/usr/bin/env python3

import subprocess
import socket
import ipget

#LCD初期化
subprocess.run([‘i2cset’,’-y’,’1′,’0x3c’,’0x00′,’0x02′])
subprocess.run([‘i2cset’,’-y’,’1′,’0x3c’,’0x00′,’0x0c’])
subprocess.run([‘i2cset’,’-y’,’1′,’0x3c’,’0x00′,’0x01′])
subprocess.run([‘i2cset’,’-y’,’1′,’0x3c’,’0x00′,’0xff’])

subprocess.run([‘i2cset’,’-y’,’1′,’0x3c’,’0x00′,’0x80′])

ip = ipget.ipget()
wifi_ip = ip.ipaddr(“wlan0”)
eth_ip = ip.ipaddr(“eth0”)
print(wifi_ip)
print(eth_ip)

for tmp1 in range(len(wifi_ip)):
wifi_ip_part = str(hex(ord(wifi_ip[tmp1])))
#print(myip_part)
subprocess.run([‘i2cset’,’-y’,’1′,’0x3c’,’0x40′,wifi_ip_part])
subprocess.run([‘i2cset’,’-y’,’1′,’0x3c’,’0x40′,’0x20′])

subprocess.run([‘i2cset’,’-y’,’1′,’0x3c’,’0x00′,’0xa0′])

for tmp1 in range(len(eth_ip)):
eth_ip_part = str(hex(ord(eth_ip[tmp1])))
#print(myip_part)
subprocess.run([‘i2cset’,’-y’,’1′,’0x3c’,’0x40′,eth_ip_part])

#テキスト出力
subprocess.run([‘i2cset’,’-y’,’1′,’0x3c’,’0x40′,’0x20′])

#print(myip)

※文字化けにより文書形式として記載。

動作確認

下記コマンドで動作確認します。

python3 ip_check.py

cron を使って定期更新します。sudo crontab -eでエディタモードを開き、下記を追記。


*/1 * * * * sudo /usr/bin/python3 /home/pi/ip_check.py

管理者権限でエディタモードに入らないとダメなようです。

以上で完了となります。

©ZEATEC co.,ltd.