
何かの実験とか料理とかの温度管理には、2005年頃に買ったThermoEyeというものを使っている。フィルム絶縁の極薄センサーで、本来はPC内に設置してクロックアップを頑張るときの製品だった。極薄なので低温調理時の肉塊の中心温度を測ったり、いろいろ使ってきた。

しかし、この製品は温度を表示するだけ。実験中はずっと張り付いて温度を記録していかないといけない。そこで、このセンサーをESP32に繋げて温度を自動で記録することは出来ないのかChatGPTさんに聞いたところ、10kΩの抵抗があれば出来るよとのこと。なのでアリエクでセンサーと抵抗を購入してみました。


NTCサーミスタとは
購入した温度センサーは、NTCサーミスタというもの。サーミスタとは温度変化に対して電気抵抗の変化の大きい抵抗体のことで、温度が上昇すると抵抗値が減少するものをNTC(Negative Temperature Coefficient)サーミスタ、逆に温度の上昇に対して抵抗値が上がるものをPTC(Positive Temperature Coefficient)といいます。
温度測定できる原理
ESP32のADCピンを使って、NTCサーミスタと固定抵抗の分圧回路から電圧を読み取り、サーミスタのB定数を用いて温度を計算・表示します。
配線方法
回路図
3.3V
|
[R] 固定抵抗 (10kΩ)
|
GPIO32 (ADC)
|
[NTC] サーミスタ
|
GND

プログラム(HomeAssistant)
Home AssistantのESPHomeで、「+NEW DEVICE」からESP32の追加を行います。「EDIT」で、以下を追加します。
sensor:
- platform: resistance
id: resistance_reading
sensor: adc_sensor
configuration: DOWNSTREAM
resistor: 10kOhm
name: "NTC Resistance"
- platform: adc
pin: GPIO32
id: adc_sensor
update_interval: 10s
attenuation: 11db
accuracy_decimals: 2
- platform: ntc
sensor: resistance_reading
name: "NTC Temperature"
calibration:
b_constant: 3435
reference_temperature: 25°C
reference_resistance: 10kOhm

10秒毎で2℃以上のブレ幅がありますが、まあ高精度のものではないのでこんなものでしょう。
実験後記
こういったものはArduinoの方が情報が多そうなのですが、この温度になったらあれを起動するとかの連携を考えて、ここ最近はHomeAssistantばかりいじっています。
今回はChatGPTさんに頼り切ってしまったために無駄に時間がかかってしまった。
まず、ESP32はラズパイのUSBに接続してプログラムを書き込むのですが、接続を切って別の場所で計測をしようとすると、プログラムが動かない。これをChatGPTさんに聞きながら解決しようとしたが駄目だった。そもそも使ったESP32は、電源復活時にENボタンを押す必要のあるものだった。
そしてChatGPTが提示したプログラムのNTCサーミスタが、自分が購入したものと違っていた。そこに気づかず、全然違う測定温度をキャリブレーションでどうにかしようと頑張るChatGPTさんのせいで何時間も無駄にした。(ChatGPTさんのせいにするな!)
次の段階はセンサーを4つに増やしペルチェ素子の温度管理に使っていこうと思う。