2015.09.07
Raspberry PiにI2C温度センサーADT7410を2台、SHT-21を1台、合計3台接続して同時測定
先日、接続したSHT-21は温度と湿度を同時に測定可能なメリットはあるものの、I2Cアドレスが固定されていて1台のRaspberry Piに2台接続することが出来ないので他らしくADT7410というI2C温度センサーを購入しました。
このセンサーは1台500円と安く、基板上のジャンパーパターンをショートさせることでアドレスを4種類に変更可能、すなわち1台のRaspberry Piに4台まで接続可能です。今回は先日接続したSHT-21と合わせて2台のADT7410を接続してみました。接続はこの記事の一番上のように4つの端子を並列に接続するだけです。
i2cdetectで確認。SHT-21のアドレスが0x40(固定)、ADT7410が0x48と0x49で認識されています。
ADT7410はSHT-21に比べずいぶん簡単に温度取得出来るみたいです。
によると
で読みだした値を加工するだけみたい。i2cget -y 1 0x48 0x00 w
今回は
を参考にPython用の汎用I2Cライブラリsmbusというのをインストールsudo apt-get install python-smbus
スクリプトは下記のようにしました。
------------------------------------------------------------
import smbus
import urllib
i2c=smbus.SMBus(1)
address=0x48
block=i2c.read_i2c_block_data(address,0x00,2)
# calcurate to degree C
temp=(block[0]<<8 | block[1]) >>3
#if the temperature is minus
if(temp>=4096):
temp=temp-8192
temp=str(temp/16.0)
print("Temp:"+temp)
r=urllib.urlopen('http://xxxxx.xxx/xxx/xxxx.cgi?'+temp)
print r.read()
--------------------------------------------
3つのセンサーの結果をEXCELでグラフにしたのが下記
SHT-21が14ビットなのに対しADT7410がデフォルトでは13ビットのためちょっと荒いですが、接続した2つのADT7410はかなり似た温度を示しています。SHT-21はADT7410に比べ途中から0.2℃ほど高い値を示しています。最初は同じだったので自身の発する熱の影響とかでしょうか?
これで1台のRaspberry Piで最大5か所の温度を測定可能になりました。
Category:#電子工作 Raspberry Pi、Arduinoなど
■ ■ ■ コメント ■ ■ ■
この記事のアクセス数:本カテゴリーで直近コメントが書かれた記事
→カテゴリー:#電子工作 Raspberry Pi、Arduinoなど(記事数:232)
本カテゴリーの最近の記事(コメント数)