「Raspberry PiでIoTって、なんか難しそう…センサーの配線とかよくわからないし…」
そんなふうに感じている方、多いんじゃないでしょうか。
でも実は、温湿度センサー+Raspberry Pi+Pythonの組み合わせは、IoT入門として最高の題材なんです。センサーは1個だけ、配線はたった3本、Pythonコードも50行以内で動きます。「むずかしそう」を「できそう」に変えていきましょう! 🎉
この記事では、部品の準備からPythonコードの実装、さらにブラウザでデータを確認するところまで、ゼロから一気に解決できるよう丁寧に解説します。
📋 この記事で作るもの・対象読者
完成イメージ:部屋に置いたRaspberry Piが室温・湿度をリアルタイムで取得し、ターミナルとWebブラウザの両方で確認できるIoT温湿度モニター
対象読者:
- ✅ Raspberry Piを持っているけど、センサーを使ったことがない方
- ✅ Pythonの基本(変数・ループ・関数)はなんとなくわかる方
- ✅ 電子工作は初めてだけど挑戦してみたい方
難易度:⭐⭐☆☆☆(初級〜中級)
🛒 必要な部品・環境
まず揃えるものを確認しておきましょう。
| 部品名 | 用途 | 目安価格 |
|---|---|---|
| Raspberry Pi 4 または 3B+ | メインコンピュータ | (お持ちのもの) |
| DHT11センサー | 温度・湿度の計測 | 約200〜300円 |
| ジャンパーワイヤ(メス-メス) | センサーとPiの接続 | 約200円〜 |
| ブレッドボード(あると便利) | 配線の整理 | 約300円〜 |
DHT11はAmazonや秋月電子で手軽に入手できます。DHT22でも同じコードがほぼそのまま使えるので、精度を重視したい方はDHT22がおすすめですよ。
🔌 STEP 1:配線をしよう
配線はたった3本です。イメージとしては「センサーに電気を送りながらデータを受け取る」だけです。
DHT11には3〜4本のピンがあります。モジュール基板タイプの場合はこの通りに接続してください。
- VCC(電源) → Raspberry PiのGPIO 1番ピン(3.3V)
- GND(グランド) → Raspberry PiのGPIO 6番ピン(GND)
- DATA(信号) → Raspberry PiのGPIO 4番ピン(BCM方式では4番)
⚠️ 配線を間違えるとセンサーが壊れることもあります。Raspberry Piの電源を切った状態で配線作業を行いましょう。
🐍 STEP 2:Pythonライブラリをインストール
Raspberry PiのターミナルでSSH接続またはデスクトップ画面を開いて、以下を実行します。
# システムパッケージを最新にしておく\nsudo apt update && sudo apt upgrade -y\n\n# Pythonパッケージ管理ツールの確認\npip3 --version\n\n# DHT11/22用ライブラリのインストール\npip3 install adafruit-circuitpython-dht\nsudo apt install libgpiod2 -y
インストールが終わったら、エラーが出ていないか確認しておきましょう。Successfully installedと表示されればOKです ✅
🌡️ STEP 3:温湿度を取得するPythonコードを書こう
まずはシンプルに、センサーの値をターミナルに表示するコードから始めます。
# dht_monitor.py\nimport adafruit_dht\nimport board\nimport time\n\n# DHT11センサーをGPIO4ピンに接続\ndht_sensor = adafruit_dht.DHT11(board.D4)\n\nprint(\"温湿度モニター起動中... Ctrl+Cで終了\")\n\nwhile True:\n try:\n # 温度と湿度を取得\n temperature = dht_sensor.temperature # 摂氏(℃)\n humidity = dht_sensor.humidity # 相対湿度(%)\n\n print(f\"🌡️ 温度: {temperature:.1f}℃ 💧 湿度: {humidity:.1f}%\")\n\n except RuntimeError as e:\n # DHT系センサーは読み取り失敗が起きやすいので無視してリトライ\n print(f\"読み取りエラー(リトライします): {e}\")\n\n time.sleep(2) # 2秒ごとに計測
ポイントをまとめるとこんな感じです:
- 📌
adafruit_dht.DHT11(board.D4)でGPIO4番ピンのセンサーを指定 - 📌
RuntimeErrorはDHTセンサー特有の読み取り失敗。catchして無視するのが定石です - 📌
time.sleep(2)で2秒間隔。DHT11は最低2秒間隔が推奨されています
実行はこちら:
python3 dht_monitor.py
ターミナルに温度と湿度が流れ始めたら成功です 🎉
🌐 STEP 4:Webブラウザで確認できるようにしよう
ターミナルだけだと少し味気ないですよね。せっかくIoTを作るなら、スマホやPCのブラウザから確認できると一気に「それっぽく」なります。
PythonのFlaskを使って、シンプルなWebサーバーを立ち上げましょう。
# web_dht_monitor.py
from flask import Flask, jsonify, render_template_string
import adafruit_dht
import board
app = Flask(__name__)
dht_sensor = adafruit_dht.DHT11(board.D4)
# シンプルなHTML(テンプレートを別ファイルにしなくてもOK)
HTML = \"\"\"
IoT温湿度モニター
🌡️ 室内環境モニター
温度
--
℃
湿度
--
%
\"\"\"
@app.route('/')
def index():
return render_template_string(HTML)
@app.route('/api/sensor')
def sensor_api():
\"\"\"JSONでセンサーデータを返すAPI\"\"\"
try:
temp = dht_sensor.temperature
hum = dht_sensor.humidity
return jsonify({\"temperature\": round(temp, 1), \"humidity\": round(hum, 1)})
except RuntimeError:
return jsonify({\"temperature\": None, \"humidity\": None, \"error\": \

