Adafruit の i2C接続の 16×2 LCDパネルを Pi zero に取り付けてみました。このLCDプレートにはボタンが5つほどついていいますが今回紹介する pyLCI を利用すると簡単に LCD で操作が出来るメニューを動かすことが出来ます。
i2cの設定確認
まずは、raspi-config を利用して i2c を有効にして再起動します。次に必要なソフトウェアを導入します。
sudo apt-get install python-smbus
sudo apt-get install i2c-tools
配線が正しくされていて問題なければ次のようになります。
pi@pizero1:~ $ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
20番目で動作している事がわかります。
次に pyLCI を導入してみます。
こちらの http://pylci.readthedocs.io/en/latest/setup.html を参考に実施します。
git clone https://github.com/CRImier/pyLCI
cd pyLCI/
./setup.sh #Install main dependencies and create a install directory
./config.sh #Install dependencies for your input&output devices
nano config.json #Describe your input&outputdevices
python main.py #Start the system to test your configuration
今回構成された config.json は以下のようになります
{
"input":[{"driver":"adafruit_plate"}],
"output": [{ "driver":"adafruit_plate", "kwargs": { "chinese":false }}]
}
起動するには python main.py
で動かすことが出来ます。
これで簡単なメニューを利用した操作を行うことが出来るようになりました。
今回 Adafruit 社のLCDパネルを利用したのですがバックライトがついてくれなかったので以下の修正をしています。本来はもう少し別の方法があると思うのですが時間がなかったのでとりあえずワークアラウンド的にしています。正しくアドレスなど調べてバックライトがつくように修正すべきでしょう。また点灯しっぱなしになってしまうため時間がきたら消灯するようにしないと実際には使いづらいです。
Adafruit社のライブラリを入れます。これ自体は便利なので入れておくと良いです。
sudo apt-get update
sudo apt-get install build-essential python-dev python-smbus python-pip git
sudo pip install RPi.GPIO
git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git
cd Adafruit_Python_CharLCD
sudo python setup.py install
次に pyLCI の output/driver/adafruit_plate.py を以下のように修正しています。これでバックライトが点灯します。
@@ -1,5 +1,7 @@
import smbus
from time import sleep
+import Adafruit_CharLCD as LCD
+lcd = LCD.Adafruit_CharLCDPlate()
def delay(time):
sleep(time/1000.0)
@@ -39,7 +41,8 @@ class Screen(HD44780):
self.i2c_init()
HD44780.__init__(self, debug=self.debug, **kwargs)
self.enable_backlight()
-
+ lcd.set_color(1.0,0.0,0.0)
+
def i2c_init(self):
"""Inits the MCP23017 expander."""
self.setMCPreg(0x00, 0x00)
systemctl にもスクリプトが登録されますがディレクトリの場所を修正します。/etc/systemd/system/pylci.service の中のパスを実際のパスに合わせます。変更した後に systemctl daemon-reload
を実行しておきます。
sudo systemctl start pylci.service
sudo systemctl stop pylci.service
あとは独自のスクリプトなどをメニューに加えていくことで簡単な操作パネルを作ることが出来きます。GPIO経由での操作なども可能ですのでプロトタイプを作る上で便利に利用できそうです。