I2C温度センサーで室温計測

#1 Arduino nanoでうまくいかなかったので、Raspberry Piでなんとかした顛末

の関連です。CPU温度は安定しています。latestな記録は、

2026年 6月 27日 土曜日 16:00:01 JST, +43.0°
2026年 6月 27日 土曜日 18:00:01 JST, +43.0°
2026年 6月 27日 土曜日 20:00:01 JST, +42.0°
2026年 6月 27日 土曜日 22:00:01 JST, +42.0°
2026年 6月 28日 日曜日 00:00:01 JST, +43.0°
2026年 6月 28日 日曜日 02:00:01 JST, +42.0°
2026年 6月 28日 日曜日 04:00:01 JST, +42.0°
2026年 6月 28日 日曜日 06:00:01 JST, +42.0°
2026年 6月 28日 日曜日 08:00:01 JST, +42.0°
2026年 6月 28日 日曜日 10:00:01 JST, +42.0°

マシンの外の室温もモニターしたいところです。で、

この秋月で売っている半導体センサーの手持ちがあったので、これを使います。I/FはI2Cですね。これがなんであるかというと、

この本を購入し、当時秋月で売っていたキットも購入し、色々と実験したのでした。今は書籍もRaspberry 5ベースになり、キットも対応していると思います。で、別途Aruduino nanoの格安互換品3個セットも所有していたので、まずテストしてみようと思ったのが運の尽き。(笑)

動かない

Arduino & ADT7410 とかで検索するとたくさんの記事がでてきますけど、そういえば純正Arduino nanoの例ですらありませんね。おそらく素子の電気特性によるものもあると思いますが、ちゃんと配線した(つもり)でも、下記のプローブコードでさえ動かない。


#include <Wire.h>

void setup()
{
	Wire.begin();
	Serial.begin(9600);
	while(!Serial);
}

bool slavePresent(byte adr)
{
	Wire.beginTransmission(adr);
	return(Wire.endTransmission() == 0);
}

void loop()
{
	Serial.println("I2C slave device list.");

	for(byte adr = 1; adr < 127; adr++){
		if(slavePresent(adr)){
			if( adr < 16 ) Serial.print("0");
			Serial.print(adr,HEX);
			Serial.print(" ");
		}
	}
	Serial.println("\nDone");
	delay(5000);
}

結果は、

認識してません。認識してないので動くはずも無し。プルアップ抵抗の抵抗値変えたりしても効果無い。nano互換機の端子の入出力特性が”弱い”、配線がノイジー等々理由は色々考えられますが、粘ってもダメそうなので、上記書籍にならってRaspberry PIで動かそうとしました。古いRaspberry PIで動かそうとしましたが、古すぎてapt update & apt upgradeが動かない。従ってI2C関係のツールも入らないという状況だったので、最新のRaspbian Trixieを遊んでいたRaspberry PI 3Bにいれましたとさ。

最新のImagerを使いましたけど、sshdの有効化とかwifiのssidとpasswordとか色々と設定できるので良いですね。イメージの種類も選んでダウンロードできますから、あらかじめダウンロードしておかなくても、結構あたらしいのが自動的にあたります。いつものようにnon desktop選択しました。で、

sudo apt update
sudo apt upgrade
sudo raspi-config
---> reboot
sudo apt install i2c-tools

ここで、

nao@hawk:~ $ 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: -- -- -- -- -- -- -- --

ちゃんとADT7410がアドレス48で認識されていますね。有望。

nao@hawk:~ $ python3 07-01-temp.py
27.25
27.25
27.25
27.25
24.1875
27.125
27.1875
29.1875
29.5
29.4375 <-- 指でセンサーをタッチ
31.25
31.4375
31.375
31.25
31.125
31.0
31.125
31.0625
30.875
30.875
30.8125
30.8125

良さそうですね。まともな値がやっと取れました。07-01-temp.pyはどこかから見つけてください。掲載は控えます。適当なbash scriptから起動して、結果をファイルに書き足す動作を一定時間毎に繰り返せば良いのですが、その際に例によってnasにファイルを書くと、Windows側からいじれるので便利。ということでsambaも動かしておきましょうかね。

   sudo apt -y install smbclient cifs-utils
   sudo mkdir /mnt/nas
   ls -alt /mnt
   sudo chown nao:nao /mnt/nas
   sudo vi /etc/fstab
   history
   sudo mount -t cifs -o vers=2.0,username=nao,password=your_favorite_password,uid=1000,gid=1000 //192.168.0.14/share /mnt/nas
   sudo systemctl daemon-reload

/etc/fstabが適切なら、rebootしてもおけのはず。Aruduino nanoの回り道のこととか書いて長くなったので、今回はここまで。とりあえずセンサーが無事で良かった。

コメント