プログラミング入門

Raspberry PiとPythonで作るIoT温湿度モニター【電子工作初心者向け完全ガイド】

「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\": \

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です