eBayで電子部品を検索していたら、下記のようなRaspberry Piに直接差せる温度センサーモジュールが1ドル程度で売られているのを発見しました1。
激安が大好きな私は大喜びで買ったのですが、世間的な知名度はあまり高くないような気がします。本稿ではこのセンサーモジュールの使い方について紹介します。
これは何
上記のモジュールは、温度センサーNXP LM75AとI2Cアドレス設定用のプルアップ抵抗を実装したもので、Raspberry Piに直接差せるピン配置になっているのが特徴的です。
1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|
VDD | SDA | SCL | 未接続 | GND |
Raspberry Piのピン配置に合わせるために4番目のピンが結線されていないのがアツいですね。
実際に差すと下記の写真のようになります。
もちろんセンサーを単体で買ってきてブレッドボードで接続しても温度は取れますが、このように本体に直接差せると取り回しが断然楽なのでお勧めです。
ただし、外気温を測りたいという場合にはお勧めしません。というのも、上の写真を見ればわかるように温度センサーとSoC(≒CPU)の距離が近すぎて、SoCの発熱の影響をもろに受けてしまうのです。Raspberry Piが熱くなりすぎていないか検出する目的で使うのが良さそうです。
LM75Aの仕様は下記の通りです(データシートから抜粋)。
- 電源電圧: 2.8Vから 5.5V
- 動作温度範囲:-55°C から +125°C
- 通信方式: I2C
- 温度分解能:0.125℃
準備
$ sudo raspi-config
(I2Cを有効化)
$ sudo apt install i2c-tools
使い方
このモジュールはRaspberry Piの1,3,5,7,9番ピンに接続して使うようです2。
本モジュールのI2Cアドレスは0x48です。これは i2c-detect
でも確認できます。
$ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
また、 i2cget
コマンドで生の測定値を取り出すこともできます。
$ i2cget -y 1 0x48 0x00 w
0xe029
ただ、今回は自力で頑張りたいわけではないので、hwmonドライバの管理下に置いて利用しましょう。 /boot/config.txt
の末尾に下記のように書いてリブートします。
dtoverlay=i2c-sensor,lm75,addr=0x48
再起動後、dmesg
で温度センサーが認識されているかどうか確認します。
$ dmesg | grep hwmon
[ 3.961488] lm75 1-0048: hwmon0: sensor 'lm75'
lm-sensorsで確認
センサーがhwmon管理になるとlm-sensorsから利用できます。
$ sudo apt-get update
$ sudo apt-get install lm-sensors
$ sensors
lm75-i2c-1-48
Adapter: bcm2835 I2C adapter
temp1: +41.8°C (high = +80.0°C, hyst = +75.0°C)
バッチリ温度が取れました。あとはCPU負荷をかけて温度変化を確認したり、値をグラフ化するなどして楽しみましょう。
参考URL
- https://www.raspberrypi.org/forums/viewtopic.php?t=177236
- https://github.com/raspberrypi/linux/tree/rpi-4.14.y/arch/arm/boot/dts/overlays