2015年2月12日木曜日

ebayで購入したI2C接続キャラクタLCDをRaspberry Piで使ってみる



こちらの記事に書いたように、ebayでI2C接続、5V動作、20x4のキャラクタLCDを購入し、arduinoで使ってみました。


それをRaspberry Piで使ってみようと思います。


購入したLCDの動作電圧は5VでI2C信号も5V、Raspberry PiのGPIOは3.3Vなので直結できません。
秋月で購入したI2Cバス用双方向電圧レベル変換モジュール(150円)を使いました。

arduinoやRaspberry PiはI2Cのプルアップ抵抗が有効になっているので、モジュールに乗っているプルアップ抵抗を無効にするために、J2、J3をカッターでカット。
ですので、arduinoやRaspberry Piを接続するのはモジュール右側になります。


※追記 電圧が低いデバイスはVREF1側、高いデバイスはVREF2側のはずですが、なぜか動いていたので、このままにしておきます。



次にRaspberry Piの準備。
r271-635 Raspberry piにi2c LCD接続するを参考にI2Cドライバの有効化とツールのインストール。

I2CのLCDを使うためのライブラリはThink Bowl I2C Libraries for Pythonを使います。
python3用です。

mkdir ~/myproject
(/home/pi/にmyprojectディレクトリを作る)

cd ~/myproject
(そのディレクトリに移動)

git clone https://github.com/quick2wire/quick2wire-python-api.git
(そのディレクトリに必要なファイルをダウンロード)

export QUICK2WIRE_API_HOME=~/myproject/quick2wire-python-api
export PYTHONPATH=$PYTHONPATH:$QUICK2WIRE_API_HOME
(パスを通す)

. ./quick2wire.env
(起動時自動でパスを通す???)

git clone https://bitbucket.org/thinkbowl/i2clibraries.git
(自分で書くスクリプトの場所にこれを置かないといけない)

quick2wire.envをどうすればいいのか謎です。

pythonスクリプトを実行しても
ImportError: No module named quick2wire.i2c
が表示されるばかり。
ググっても、パスが通っていないから「exportをしろ」ばかり。

export -p
で環境変数を表示させると登録されているのですが・・・

結局
import sys
sys.path.append('/home/pi/myproject/quick2wire-python-api')
をスクリプトの最初に入れてパスを通しました。
このスクリプトを自分の環境に合わせたのがこれ。

import sys
sys.path.append('/home/pi/myproject/quick2wire-python-api')
from i2clibraries import i2c_lcd
from time import *

# I2C Address, Port, Enable pin, RW pin, RS pin, Data 4 pin, Data 5 pin, Data 6$
lcd = i2c_lcd.i2c_lcd(0x27,1, 2, 1, 0, 4, 5, 6, 7, 3)  #I2C_address 0x27, I2C_bus_number 1

lcd.backLightOn()

lcd.writeString("Python I2C LCD")
lcd.setPosition(2, 3)
lcd.writeString("For the Pi")
lcd.setPosition(4, 3)
lcd.writeString("HELLO WORLD!")

sudo python3 filename.py
で実行。



setPosition(2,3)は、上から2(1から数える)、左から3(0から数える)です。
 0, 1, 2, ~ 18, 19
1 .......................
2 .......................
3 .......................
4 .......................


環境:Raspberry Pi B+、RASPBIAN、python3


0 件のコメント:

コメントを投稿