大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

ラズパイでAQM0802(i2c接続小型LCDモジュール)を使おう

著者:國松亜紗子
公開日:2019/06/12
最終更新日:2019/06/12
カテゴリー:技術情報

こんばんは。國松です。

今回はi2c接続の小型LCDのAQM0802に文字を表示していきたいと思います。i2c接続のLCDといえば散々苦しめられたACM1602Nを思い出しますが、ここは気持ちを切り替えていきたいと思います。

今回使うAQM0802i2c接続小型キャラクタLCD(AQM0802)をRaspBerryPiで使用する為にバスリピーターIC(PCA9515)を実装したRaspberryPI用変換モジュールの組み立て済完成品です。

参考サイト

DIY環境(I2C接続AQMシリーズのキャラクタ表示LCDをラズパイで使う (1) AQM0802)

参考書籍

カラー図解 最新 Raspberry Piで学ぶ電子工作

用意するもの

1.Raspberry Pi3 Model B+ (OsはRaspbian)

2.AQM0802

今回はちょっとお行儀が悪い? ですがラズパイのGPIOピンに直接さしていきます。

ジャンパワイヤで接続する場合はオスーメスのジャンパワイヤを使用してラズパイのGPIOピンに直接接続してください。T型接続キットを使うをi2cErrorが出る可能性があります。

AQM0802ラズパイ
3v3 3.3v
SDASDA(GPIO2)
SCLSCL(GPIO3)
GNDGND

以上の4線をつなげば動作します。

i2cdetect -y 1で接続を確認します。3eと表示されればきちんと接続できています。

『3e』がAQM0802のアドレスです。 

・ターミナルからコマンドを入力してLCDに文字を表示

i2cset -y 1 0x00 0x38	#lcdの初期化
i2cset -y 1 0x00 0x39
i2cset -y 1 0x00 0x14
i2cset -y 1 0x00 0x73
i2cset -y 1 0x00 0x56
i2cset -y 1 0x00 0x6c
i2cset -y 1 0x00 0x38
i2cset -y 1 0x00 0x01
i2cset -y 1 0x00 0x0c	#ここまでlcdの初期化
i2cset -y 1 0x40 0x61	#a
i2cset -y 1 0x40 0x62	#b
i2cset -y 1 0x40 0x63	#c
i2cset -y 1 0x40 0x64	#d
i2cset -y 1 0x40 0x65	#e
i2cset -y 1 0x40 0x41	#A
i2cset -y 1 0x40 0x42	#B
i2cset -y 1 0x40 0x43	#C

次にプログラムでLCDに文字を表示したいと思います。

import smbus
import time

i2c = smbus.SMBus(1) # 1 is bus number
i2c_addr=0x3e #lcd
resister_aqm0802=0x00
data=0x40
clear=0x01
home=0x02
display_On=0x0f
LCD_2ndline=0x40+0x80

def command( code ):
        i2c.write_byte_data(i2c_addr, resister_aqm0802, code)
        time.sleep(0.1)

def writeLCD( message ):
        mojilist=[]
        for moji in message:
                mojilist.append(ord(moji)) 
        i2c.write_i2c_block_data(i2c_addr, data, mojilist)
        time.sleep(0.1)

def init_lcd ():
        command(0x38)
        command(0x39)
        command(0x14)
        command(0x73)
        command(0x56)
        command(0x6c)
        command(0x38)
        command(clear)
        command(display_On)

#main
init_lcd()
command(clear)
writeLCD("Hello!!")
command(LCD_2ndline)
writeLCD("World!!")

データシートを読み解いてプログラムにするのはなかなか難易度が高く、参考サイトや書籍に頼りっぱなしでした。もう少し自在に文字を表示できるように頑張りたいと思います。

    上に戻る