Yura YuLife

ITエンジニアの覚え書き。

Raspberry Piに接続したLCD(ACM1602NI)をPythonで動かす

Raspberry PiにI2Cで接続したLCD(ACM1602NI-FLW-FBW-M01)を、Pythonから動かします。

f:id:yurayur:20160213215623j:plain

ソースコード、セットアップ手順はGitHubにて公開しています。

github.com

必要なもの

Raspberry PiとLCDを接続

LCDにハンダ付け

LCDの基板に7ピンのピンフレームをハンダ付けします。

ブレッドボードにピンを刺した状態でハンダ付けすると、ピンを垂直に固定するのが容易になるのでオススメです。

LCDとRaspberry Piを接続

ブレッドボード上はこんな感じで接続します。

f:id:yurayur:20160213221550j:plain

ちなみに本体側のピンはこちら。

f:id:yurayur:20160213222044j:plain

ここまでできたらRaspberry Piを起動します。

Raspbianの設定

I2Cを有効にする

$ sudo raspi-config

9 Advanced Options から A7 I2C を選択し、 Yes を2回選択します。raspi-configを抜けたらRaspberry Piを再起動します。

必要なライブラリのインストール

$ sudo apt-get install i2c-tools python-smbus

ドライバーのロード

$ sudo modprobe i2c-bcm2708
$ sudo modprobe i2c-dev

I2C Configの編集

/boot/config.txtを開いて以下の行を追記します。

dtparam=i2c_baudrate=50000

ここで再度Raspberry Piを再起動します。

設定の確認

以下のコマンドを実行し、bcm2708がロードされていること、baudrate50000に変更されていることを確認します。

$ dmesg | grep i2c
[    3.787020] bcm2708_i2c 3f804000.i2c: BSC1 Controller at 0x3f804000 (irq 79) (baudrate 50000)
[    3.820524] i2c /dev entries driver

LCDの動作テスト

以下のコマンドを実行し、LCDAと表示されることを確認します。

$ sudo i2cset -y 1 0x50 0x00 0x01
$ sudo i2cset -y 1 0x50 0x00 0x38
$ sudo i2cset -y 1 0x50 0x00 0x0c
$ sudo i2cset -y 1 0x50 0x00 0x06
$ sudo i2cset -y 1 0x50 0x80 0x41

なお、i2csetコマンドの引数の1はI2Cバスの番号、0x50LCDのアドレスです。

通常これらはi2cdetectコマンドで調べられるのですが、このコマンドを実行するとLCDがハングするため絶対に行ってはいけません

PythonからLCDを操作

$ git clone https://github.com/yuma-m/raspi_lcd_acm1602ni.git
$ cd raspi_lcd_acm1602ni
$ sudo python raspi_lcd.py "Hello world!"
$ sudo python raspi_lcd.py "ラズベリーパイデ、" "ニホンゴヲLCDヒョウジ!"

raspi_lcd.pyは引数を1つ、もしくは2つ取ることができ、それぞれが1行目、2行目の表示内容に対応しています。

入力可能な文字は、半角英数記号、半角・全角のカタカナ、一部の特殊文字(千、万、円、Σ、α、βなど)です。

f:id:yurayur:20160213224244j:plain

参考URL