てきとうなさいと べぇたばん

AM2320をRaspberry Pi 3 Model Bに接続する

とある日の気温を一日中撮っておいて、データベースに保存してグラフにしたもの。Graph.jsで表示 概略図。Raspberry PiとAM2320とはこうつなげた。 AM2320とRaspberry Pi。これをユニバーサル基板にしたいですね

気温を記録したい

季節の変わり目で、Raspberry Piでセンサーの値を読み取っておきたいなと考えたのでAM2320センサーをつかう。

http://akizukidenshi.com/catalog/g/gM-08663/

I2Cで動く、温湿度センサー。超便利。

I2Cを有効にする

まずは、Raspberry PiでI2C使えるようにする

/etc/modulesにはっつけとく

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

i2c-dev
i2c-bcm2708

I2CのRepeated Start Conditionの有効

これがないと値が一度しか読めないらしい。

$ cat /etc/modprobe.d/i2c.conf
options i2c_bcm2708 combined=1

接続して確認する

AM2320はアドレスが0x5cなので、50のcに5cと表示されてればだいじょぶ

pi@raspberrypi:~/Documents/am2320 $ sudo 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: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
     70: -- -- -- -- -- -- -- --

Pythonコード

実行結果は以下のような感じになる。なんでInput/output errorになるのかしら?

$ python am2320.py
[Errno 5] Input/output error
['3', '4', '2', 'b3', '0', 'ec']
temp: 23.6 humidity: 69.1

https://github.com/youkidearitai/rpi-am2320

かんそう

おもったより楽だった。

今後の展望

  • ブレッドボード上で構築してるのでユニバーサル基板にしたい。
  • 今現在の時間がわからないため、基板上にLCDでもつけようかな