温湿度センサ AM2320を使う

Pocket

raspberry pi zeroで温湿度センサAM2320を使い、取得した温度をScroll pHatに表示したいと思います。

4本のピンはデータシートで確認します。
1. VDD Power Supply (3.1-5.5V)
2. SDA Serial Data, bidirectional port
3. GND Ground
4. SCL Serial clock input port (single bus ground)

秋月電子通商 温湿度センサ モジュール AM2320

AM2320のアドレス確認

AM2320はi2cで接続しますので、アドレスを確認します。それぞれのアドレスは、AM2320が0x5c、pHatが0x60になっていることを確認しました。

$ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- 5c -- -- --
60: 60 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

温湿度を取得する

正しく接続、設定が出来ているか、温湿度を取得して標準出力で確認します。温度、湿度共に少数点1桁で取得されるので10で割るなどしますが、Scroll pHatでは表示しきれないのでそのままにしています。

$ vi am2320.py
import smbus

i2c = smbus.SMBus(1)
address = 0x5c

try:
  i2c.write_i2c_block_data(address,0x00,[])
except:
  pass
i2c.write_i2c_block_data(address,0x03,[0x00,0x04])

block = i2c.read_i2c_block_data(address,0,6)
humidity = block[2] << 8 | block[3]
temperature = block[4] << 8 | block[5]

print('humidity: ' + str(humidity))
print('tmperature: ' + str(temperature))
$ python am2320.py
humidity: 230
tmperature: 204

Scroll pHatに表示する

取得した温度を小数点を省略する為に10倍して、後はpHatのライブラリで用意されている数字表示を利用して表示させました。

$ vi am2320-phat.py
import sys
import time
import smbus
import scrollphat

i2c = smbus.SMBus(1)
address = 0x5c

scrollphat.set_brightness(5)

try:
  i2c.write_i2c_block_data(address,0x00,[])
except:
  pass

while True:
  try:
    i2c.write_i2c_block_data(address,0x03,[0x00,0x04])

    block = i2c.read_i2c_block_data(address,0,6)
    humidity = block[2] << 8 | block[3]
    temperature = block[4] << 8 | block[5]

    print('humidity: ' + str(humidity))
    print('tmperature: ' + str(temperature))

    scrollphat.write_string(str(temperature))
    time.sleep(10)
  except KeyboardInterrupt:
    scrollphat.clear()
    sys.exit(-1)
  except:
    pass
$ python am2320-phat.py
humidity: 224
tmperature: 208

温度計の完成

Scroll pHatはLEDが5×11なので3文字表示が限界になります。なので、今回は小数点は省略して表示させました。せっかく湿度も取れているので表示させたいのですが、温度と湿度を交互に表示するにしても、パッと見で温度が湿度か分からないので諦めました。

参考

Scroll pHat HD at Raspberry Pi GPIO Pinout

Pocket

You may also like...

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.