センサー精度の評価:外気温と体温測定の比較検証
必要な部品と材料
| Maxim DS18B20 プログラマブル分解能 1-Wire デジタル温度計 | ×1 |
| DHT11 温湿度センサー(3ピン) | ×1 |
| 抵抗 10kΩ | ×3 |
| ジャンパーワイヤー | ×10 |
| Adafruit 防水 DS18B20 デジタル温度センサー | ×1 |
| テストプローブコネクタ、ワニ口クリップ | ×3 |
| USB-A - Mini-USBケーブル | ×1 |
| Arduino UNO | ×1 |
| BBC micro:bit ボード | ×1 |
使用するアプリとオンラインサービス
- Arduino IDE
- Vittascience platform for micro:bit
プロジェクト概要
温度データ取得には様々なセンサーが使われますが、それぞれ限界と精度が異なります。健康関連プロジェクトでは、外気温と体温の両方を最も精密に測定し、健康状態を現実的に把握して適切な推奨を行うことが極めて重要です。そこで、最も一般的な温度センサーとmicro:bit内蔵温度センサーの精度を比較検証しました。
使用したセンサー:DS18B20、防水DS18B20、AM2302、Arduinoボード、micro:bitボード、標準温度計。

まずセンサーをArduinoボードに接続(回路図参照)し、以下のように配線しました:

Arduino用コードをアップロード(コード欄参照)し、micro:bit用コードはVittascienceプラットフォーム(https://en.vittascience.com/microbit/)で生成しました:

室温測定の結果(10回実験、最も代表的なデータを分析)



基準の室温計は21°Cを示しました(最も正確と判断)。micro:bitは27°Cと大きく外れました。Arduino接続の3センサーは室温では概ね正確でしたが、AM2302が最高精度でした。
体温測定の結果(10回実験、最も代表的なデータを分析)
手にセンサーを保持できるよう延長ワイヤーを使用して測定:
- 基準温度計:32.2°C
- micro:bit:34°C
- 防水DS18B20(第3列):32.40°C
- DS18B20(第1列):31.50°C
- AM2302(第2列):33°C




結論: 体温測定では防水DS18B20が最も精度が高く、室温測定ではAM2302が最適です。
コード
- Arduinoと温度センサー用コード
- micro:bit用コード
Arduinoと温度センサー用コード C/C++
#include <SoftwareSerial.h>
#include <cactus_io_AM2302.h>
#define AM2302_PIN 3
#include "cactus_io_DS18B20.h"
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
AM2302 dht(AM2302_PIN);
int DS18B20_Pin = 4;
DS18B20 ds(DS18B20_Pin);
void setup() {
Serial.begin(9600);
ds.readSensor();
dht.begin();
sensors.begin();
Serial.println("18B20 | AM2302 | DS18B20");
Serial.println("Temp (C) | Temp (C) | Temp (C)");
}
void loop() {
ds.readSensor();
sensors.requestTemperatures();
dht.readTemperature();
if (isnan(dht.humidity) || isnan(dht.temperature_C)) {
return;
}
Serial.print(sensors.getTempCByIndex(0));
Serial.print(" ");
Serial.print(dht.temperature_C);
Serial.print(" ");
Serial.println(ds.getTemperature_C());
delay(1500);
}
micro:bit用コード Python
from microbit import *
uart.init(baudrate=9600, bits=8, parity=None, stop=1, tx=pin8, rx=pin14)
while True:
if button_a.is_pressed():
uart.write(str(temperature()))
回路図

製造プロセス
- 複数DS18B20 1-WireセンサーをRaspberry Pi接続で精密温度監視
- Raspberry PiとPythonでリモート温度センサーを構築 – ステップバイステップガイド
- BMP180 I2C気圧センサー - Raspberry Pi統合ガイド
- DS18B20ワンワイヤーデジタル温度計をRaspberry Piに接続 - ステップバイステップガイド
- Raspberry Piでリニアホールセンサーを読み取り: JavaガイドとADC0832の知見
- Raspberry PiとDS18B20でマルチセンサー温度・光監視システムを構築
- Raspberry PiでDS18B20温度センサーをテスト
- Raspberry Piでセンサーとアクチュエータを制御:加速度計、サーボ、データストリーミング
- Raspberry Piと湿度センサーで作る自動エアロポニックスシステム
- 湿度センサーの検証とキャリブレーションで精密測定を実現
- デジタル光センサー:Windows 10 IoT Coreで周囲光に応じてLEDを制御