ラズパイで小型LCD(AQM0802)に温度を表示しよう

こんばんは。國松です。出張も無事に終わり通常業務に戻りました。
今回は前回と前々回使用した2つのモジュールを組み合わせて使っていきたいと思います。
ADT7410で取得した温度をAQM0802に表示していきたいと思います。
決して出張の疲れによる手抜きではありません。発展編です。
参考サイト
Raspberry PiではじめてのI”C通信~温度計測編~
DIY環境(I2C接続AQMシリーズのキャラクタ表示LCDをラズパイで使う (1) AQM0802)
参考書籍
用意するもの
1.Raspberry Pi3 Model B+ (OsはRaspbian)
2.ブレッドボード
3.ADT7410温度センサーモジュール
4.AQM0802(i2c接続の小型lcd)
5.ジャンパワイヤ
(ラズパイとの接続)
少し配線がややこしいので一つずつ確認しながら配線して下さい。AQM0802の『RST』と『LED』は今回は使用しません。また、接続図の画像はAQM0802ではありませんが(AQM0802のパーツがなかったため)AQM0802の「電源、SDL,SCA,GND」の接続をすればきちんと動作します。
| ラズパイ | ADT7410 | AQM0802 | 
| 3.3v | VDD(ブレッドのボードの長い列を利用してラズパイの3.3vへ) | 3V3(ブレッドボードの長い列を利用してラズパイの3.3vへ) | 
| SDA(GPIO2) | SDA(ラズパイのSDAへ) | SDA(ブレッドボードの縦列を利用してADT7410のSDAへ) | 
| SCL(GPIO3) | SCL(ラズパイのSCLへ) | SCL(ブレッドボードの縦列を利用してADT7410のSCLへ) | 
| GND | GND(ブレッドボードの長い列を利用してラズパイのGNDへ) | GND(ブレッドボードの長い列を利用してラズパイのGNDへ) | 
ADT7410で取得した温度をAQM0802に表示するコード
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | #-*-coding: utf-8 -*- import smbus import time i2c = smbus.SMBus(1) addr_adt7410 = 0x48 resister_adt7410 = 0x00 addr_aqm0802 = 0x3e resister_aqm0802 = 0x00 data = 0x40 clear = 0x01 home = 0x02 display_On = 0x0f LCD_2ndline=0x40+0x80 #ADT7410から温度を取得 def read_adt7410():     word_data = i2c.read_word_data(addr_adt7410,resister_adt7410)     data = (word_data & 0xff00)>> 8 | (word_data & 0xff) << 8     data = data >> 3 #13ビットデータ     if data & 0x1000 == 0:         temperature =data*0.0624     else:         temperature = ((~data & 0x1fff) + 1)*-0.0625     return temperature #dataをセット def command(code):     i2c.write_byte_data(addr_aqm0802, resister_aqm0802, code)     time.sleep(0.1) #LCDに書き込む def writeLCD(message):     mojilist = []     for moji in message:         mojilist.append(ord(moji))     i2c.write_i2c_block_data(addr_aqm0802, data, mojilist)     time.sleep(0.1) #lcdの初期化関数 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("Ondo:") try:     while True:         command(LCD_2ndline)         temperature ="{0:.2f}".format(read_adt7410())         print(temperature)         writeLCD(str(temperature))         time.sleep(0.5) except KeyboardInterrupt:     pass | 
おまけ CPUの温度取得する3つの方法(ターミナルに表示)
それぞれのコマンドをターミナルに入力してみて下さい。どんな風に表示されるかはお楽しみです。
1.cat /sys/class/therminal/therminal_zone0/temp
2.vcgencmd measure_temp
3.echo “scale=3; cat /sys/class/thermal/thermal_zone0/temp / 1000″ | bc


