DS18B20について
概要
DS18B20 はデジタル温度センサで、Maxim (旧 Dallas Semiconductor) 製の 1-Wire 通信対応センサです。通信には 1 本のデータ線(+共通グランド)で済むため配線が簡単です。各センサには 64 ビットのユニークな ROM コードがあり、複数センサを同じバスに接続しても区別できます。
主な仕様(典型値):
| 項目 | 値 |
|---|---|
| 電源電圧 | 3.0 V ~ 5.5 V |
| 測定温度範囲 | −55 °C ~ +125 °C |
| 精度 | ±0.5 °C(−10 °C 〜 +85 °C 範囲) |
| 分解能 | 9 ~ 12 ビット(0.5 °C ~ 0.0625 °C 刻み) |
| 変換時間 | 最大 750 ms(12 ビット設定時) |
モジュールとしては防水プローブ型やモジュール基板付きタイプもあり、水回りや屋外用途に使われることがあります。この記事では、防水プローブ型モジュールについて説明しています。
Amazon で入手できるモジュール例
ESP32との接続方法
DS18B20のケーブル
DS18B20(防水プローブ型)は3本のケーブルが1つにまとめられています。
黒:GND (グランド)
赤:VDD (電源)
黄:データ線
接続の基本
- データ線 (DQ) を ESP32 の任意 GPIO に接続
- プルアップ抵抗 (4.7 kΩ 程度) を DQ − VDD 間に設置
- 電源(VDD)を 3.3 V に接続
- GND を共通グランドに接続
複数センサを使う場合は、すべてのセンサ DQ を同じデータバス(共通線)に並列接続できます。
接続表(例:1 センサ、通常モード)
| DS18B20 ピン | 接続先 ESP32 | 備考 |
|---|---|---|
| GND | GND | 共通グランド |
| DQ (Data) | GPIO 4(例) | 任意の GPIO 可。4.7 kΩ 抵抗を接続 |
| VDD | 3.3 V | 電源供給 |
必要なライブラリ
| ライブラリ名 | 作者 / 提供元 | URL / 備考 |
|---|---|---|
| OneWire | Paul Stoffregen 他 | GitHub OneWire |
| DallasTemperature | Miles Burton | GitHub DallasTemperature |
通常は Arduino 環境で OneWire + DallasTemperature を使うのが簡便です。
サンプルコード
#include <OneWire.h>
#include <DallasTemperature.h>
// DS18B20 のデータ線を接続する GPIO 番号(例:GPIO 4)
#define ONE_WIRE_BUS 4
// OneWire インスタンスを作成(OneWire 通信を扱う)
OneWire oneWire(ONE_WIRE_BUS);
// DallasTemperature ライブラリに OneWire を渡してセンサ制御オブジェクトを作成
DallasTemperature sensors(&oneWire);
void setup() {
Serial.begin(115200);
// 少し待ってから開始
delay(1000);
Serial.println("DS18B20 温度測定開始");
// センサ初期化
sensors.begin();
}
void loop() {
// 全センサに温度変換を要求
sensors.requestTemperatures();
// インデックス 0 のセンサを読み取る(1センサの場合)
float tempC = sensors.getTempCByIndex(0);
// エラー値チェック(接続異常などの場合 DEVICE_DISCONNECTED_C が返る)
if (tempC == DEVICE_DISCONNECTED_C) {
Serial.println("エラー:センサからの応答なし");
} else {
Serial.print("温度: ");
Serial.print(tempC, 3);
Serial.println(" °C");
}
// 次回読み取りまで待機
delay(2000);
}
動作方法と出力サンプル
実行手順
- ESP32 用ボード設定を Arduino IDE に導入
- 上記サンプルコードを貼り付け
- OneWire および DallasTemperature ライブラリをインストール
- DS18B20 を配線(プルアップ抵抗付き、VDD / GND 接続)
- コードを書き込み
- シリアルモニタ 115200 baud で開き、温度出力を確認
出力サンプル(シリアルモニタ)
DS18B20 温度測定開始
温度: 23.125 °C
温度: 23.188 °C
温度: 23.063 °C
…
もしセンサ接続が正しくない場合は:
DS18B20 温度測定開始
エラー:センサからの応答なし
…
という出力が出ることもあります。

