Raspberry Pi で温度センサ(STTS751)を読んでみた
Raspberry Pi で温度センサーを読んでみた。温度センサーは色々あるけど、「高精度 12ビット I2C 接続デジタル温度センサ STTS751」を以下から通信販売で購入した。
高精度12ビットI2C接続デジタル温度センサ STTS751: センサ一般 秋月電子通商 電子部品 ネット通販
この時点で、かなり小さいICだという事は認識していた。通常のユニバーサル基板には付かないようだったので、「SOT23変換基板 金フラッシュ (10枚入)」も併せて以下から購入した。
SOT23変換基板 金フラッシュ (10枚入): パーツ一般 秋月電子通商 電子部品 ネット通販
しかし、実物は予想以上に小さかった。勿論、ホームページとかでスケールと写真は確認していたのだが、実際に見ると予想以上だった。
米粒よりも小さいのだ。しかも、一番ピンの位置の印も見えない…
良く見たら、確かに一番ピンのところに丸い印が書いてある事が確認できた。
しかし、これを半田付けできるのだろうか。ただでさえ、25~26年ぐらいのブランクがあるのに…
とりあえず、半田付けして結線してみたが…Raspberry Piから認識できない。勿論、予め、Raspberry Pi で I2Cデバイスを有効にしている。
I2Cデバイスを有効にする具体的な手順は、以下を参考にした。
raspberrypi/Raspberry PiでIO制御 - PukiWiki
で、話しを元に戻して、半田付けした基板を良くみたら…
やってしまった。ICを反対に付けてしまった…
判田を剥して付け直すのは無理と判断して、1番と2番(本当は4番と5番)を判田で短絡している部分を剥して、あとは、結線を変える事にした。Vddのつもりで赤にしたのに、赤がSDAになるわけだ。
結線を変更してからRaspberry Piでデバイスの認識を確認。
pi@raspberrypi ~ $ sudo i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- 39 -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
アドレス0x39が確認できた。続いて以下のデータシートを確認。
http://akizukidenshi.com/download/ds/st/STTS751_CD00252523.pdf
アドレス 0 に温度の整数部分、アドレス 2 の上位4bitに小数点以下が格納されている事が確認できる。
pi@raspberrypi ~ $ sudo i2cget -y 1 0x39 0 b 0x0f pi@raspberrypi ~ $ sudo i2cget -y 1 0x39 2 b 0x40
上記の値はデータシートを参考に計算すると 15.25℃という事になる。
シェルで一秒単位で温度を表示させてみた。
# !/bin/sh I2CBUS=1 ADDR="0x39" i2cdetect -y $I2CBUS calcTemperature() { # Temperature value high byte HI=$(i2cget -y $I2CBUS $ADDR 0 b) # Temperature value low byte LOW=$(i2cget -y $I2CBUS $ADDR 2 b) echo -n "| $HI | $LOW | --> " perl -e "print(${HI} + ${LOW} / 16 *0.0625)" echo "" } while true do calcTemperature sleep 1 done
上記の perl 部分はマイナスを考慮していいので awk で、以下のような感じの方が良いかも。
awk '{if ((a = $1 + $2 / 16 * 0.0625) >= 128) a -= 256; print a;}'
そして、実行。
pi@raspberrypi ~ $ sudo sh ./calc_stts751.sh 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- 39 -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- | 0x0c | 0xc0 | --> 12.75 | 0x0c | 0xc0 | --> 12.75 | 0x0c | 0xc0 | --> 12.75 | 0x0c | 0xc0 | --> 12.75 | 0x0c | 0xc0 | --> 12.75 | 0x0d | 0x00 | --> 13 | 0x0d | 0xc0 | --> 13.75 | 0x0e | 0xc0 | --> 14.75 | 0x0f | 0x00 | --> 15 | 0x0f | 0x00 | --> 15 | 0x0f | 0x40 | --> 15.25 | 0x0f | 0x40 | --> 15.25 | 0x0f | 0x80 | --> 15.5 | 0x0f | 0x80 | --> 15.5 | 0x0f | 0x80 | --> 15.5 | 0x0f | 0x80 | --> 15.5
指で温度センサーを触ると、温度が上昇するので、それなりに反応しているようだ。