Raspberry Piに接続したLCD(ACM1602NI)をPythonで動かす
Raspberry PiにI2Cで接続したLCD(ACM1602NI-FLW-FBW-M01)を、Pythonから動かします。
ソースコード、セットアップ手順はGitHubにて公開しています。
必要なもの
- Raspberry Pi2 Model B (Raspberry Pi A/B+も可)
- LCDモジュール(ACM1602NI-FLW-FBW-M01)
- 10kΩの半固定抵抗
- ハンダゴテ、ハンダ、吸い取り線(必要に応じて)
- ブレッドボード
- ジャンパーワイヤ(長いオス-メス: 4本、短いオス-オス:10本くらい)
Raspberry PiとLCDを接続
LCDにハンダ付け
LCDの基板に7ピンのピンフレームをハンダ付けします。
ブレッドボードにピンを刺した状態でハンダ付けすると、ピンを垂直に固定するのが容易になるのでオススメです。
LCDとRaspberry Piを接続
ブレッドボード上はこんな感じで接続します。
ちなみに本体側のピンはこちら。
ここまでできたら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
がロードされていること、baudrate
が50000
に変更されていることを確認します。
$ dmesg | grep i2c
[ 3.787020] bcm2708_i2c 3f804000.i2c: BSC1 Controller at 0x3f804000 (irq 79) (baudrate 50000) [ 3.820524] i2c /dev entries driver
LCDの動作テスト
以下のコマンドを実行し、LCDにA
と表示されることを確認します。
$ 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バスの番号、0x50
はLCDのアドレスです。
通常これらは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行目の表示内容に対応しています。
入力可能な文字は、半角英数記号、半角・全角のカタカナ、一部の特殊文字(千、万、円、Σ、α、βなど)です。