[ESP32]デジタル温度センサー(KY-001/DS18B20) with Arduino IDE
はじめに
DS18B20は、1wireインターフェースのデジタル温度センサーです。
すべてのデバイスに、64ビットのユニークなシリアルコードが付与されています。
KY-001 は、DS18B20 の温度センサーと抵抗・LEDが基板上に接続されています。
項目 | 数値 |
---|---|
電源電圧 | 3V~5.5V |
測定温度 | -55℃~125℃ |
インターフェース | 1-wire |

KY-001 は、こちらのスターターキットの一部です。
開発環境
OS : Windows 11 Pro
ESP32:ESP-WROOM-32
統合開発環境 : Arduino IDE 2.3.2
Arduino core for the ESP32:2.0.17
使用ライブラリ:OneWire(2.3.8)/DallasTemperature(3.9.0)
使用パーツ
ESP32開発ボード(38Pin)

デジタル温度センサー (DS18B20/KY-001)

ジャンパーワイヤー(メスーメス)
センサーについている場合は、必要ありません。

作業内容
配線図
KY-001 とは GPIO 23 を使用して接続します。
基板上に抵抗が既に接続されているため、抵抗を接続する必要はありません。
VCC は、3.3V/5V のどちらでも使用できます。5Vの方が安定するという情報があります。

KY-001 | ESP32開発ボード(38Pin) |
– | GND |
3.3V or 5.0V | |
S | GPIO 23 |
ライブラリインストール
OneWire
1-wire インタフェースを使用するための、「OneWire」をインストールします。

DallasTemperature
DS18B20 との通信をするための、「DallasTemperature」をインストールします。

スケッチ作成
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 23
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void)
{
Serial.begin(115200);
Serial.println("Dallas Temperature IC Control Library Demo");
sensors.begin();
}
void loop(void)
{
Serial.print("Requesting temperatures...");
sensors.requestTemperatures();
Serial.println("DONE");
float tempC = sensors.getTempCByIndex(0);
if(tempC != DEVICE_DISCONNECTED_C)
{
Serial.print("Temperature for the device 1 (index 0) is: ");
Serial.println(tempC);
}
else
{
Serial.println("Error: Could not read temperature data");
}
delay(1000);
}
コード説明
使用するGPIOピンを設定します。
#define ONE_WIRE_BUS 23
使用するGPIOピンでライブラリを設定します。
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
ライブラリを初期化します。
sensors.begin();
接続している全センサーから温度を取得しています。
sensors.requestTemperatures();
装置番号0の温度を取得しています。
(今回はセンサー1つのため0を指定します。)
float tempC = sensors.getTempCByIndex(0);
動作確認
動作させてみると、シリアルモニタに取得した値が表示されます。

摂氏(°C)で取得できています。
おわりに
DS18B20を使用した防水型温度センサーであれば、水温や地温を計測できます。
コメント