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つの端子を並列に接続するだけです。
- ADT7410使用 高精度・高分解能 I2C・16Bit 温度センサモジュール: センサ一般 秋月電子通商 電子部品 ネット通販 1 users1イイネ 30 Tweet ←秋月で500円。
- ADT7420 I2C超精密温度センサモジュール - ADT7420 - ネット販売 6 Tweet ←Strawberry-linuxで後継機種らしきADT7420が1200円で手に入ります。

i2cdetectで確認。SHT-21のアドレスが0x40(固定)、ADT7410が0x48と0x49で認識されています。
ADT7410はSHT-21に比べずいぶん簡単に温度取得出来るみたいです。
- nyaruratoの製作記録 ラズベリーパイで温度センサ(ADT7410)を触った 1 users 1 Tweet
| 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など
Follow @fetuin
■ ■ ■ コメント ■ ■ ■
この記事のアクセス数:本カテゴリーで直近コメントが書かれた記事
→カテゴリー:#電子工作 Raspberry Pi、Arduinoなど(記事数:243)
本カテゴリーの最近の記事(コメント数)




