プログラミング入門

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

「Raspberry PiでIoTって、なんか難しそう…センサーの配線とかよくわからないし…」

\n\n

そんなふうに感じている方、多いんじゃないでしょうか。

\n\n

でも実は、温湿度センサー+Raspberry Pi+Pythonの組み合わせは、IoT入門として最高の題材なんです。センサーは1個だけ、配線はたった3本、Pythonコードも50行以内で動きます。「むずかしそう」を「できそう」に変えていきましょう! 🎉

\n\n

この記事では、部品の準備からPythonコードの実装、さらにブラウザでデータを確認するところまで、ゼロから一気に解決できるよう丁寧に解説します。

\n\n

📋 この記事で作るもの・対象読者

\n\n

完成イメージ:部屋に置いたRaspberry Piが室温・湿度をリアルタイムで取得し、ターミナルとWebブラウザの両方で確認できるIoT温湿度モニター

\n\n

対象読者:

\n

    \n

  • ✅ Raspberry Piを持っているけど、センサーを使ったことがない方
  • \n

  • ✅ Pythonの基本(変数・ループ・関数)はなんとなくわかる方
  • \n

  • ✅ 電子工作は初めてだけど挑戦してみたい方
  • \n

\n\n

難易度:⭐⭐☆☆☆(初級〜中級)

\n\n

🛒 必要な部品・環境






\n\n

まず揃えるものを確認しておきましょう。

\n\n

\n

\n

\n

\n

\n

\n

\n

\n

部品名 用途 目安価格
Raspberry Pi 4 または 3B+ メインコンピュータ (お持ちのもの)
DHT11センサー 温度・湿度の計測 約200〜300円
ジャンパーワイヤ(メス-メス) センサーとPiの接続 約200円〜
ブレッドボード(あると便利) 配線の整理 約300円〜

\n\n

DHT11はAmazonや秋月電子で手軽に入手できます。DHT22でも同じコードがほぼそのまま使えるので、精度を重視したい方はDHT22がおすすめですよ。

\n\n

🔌 STEP 1:配線をしよう

\n\n

配線はたった3本です。イメージとしては「センサーに電気を送りながらデータを受け取る」だけです。

\n\n

DHT11には3〜4本のピンがあります。モジュール基板タイプの場合はこの通りに接続してください。

\n\n

    \n

  • VCC(電源) → Raspberry PiのGPIO 1番ピン(3.3V)
  • \n

  • GND(グランド) → Raspberry PiのGPIO 6番ピン(GND)
  • \n

  • DATA(信号) → Raspberry PiのGPIO 4番ピン(BCM方式では4番)
  • \n

\n\n

⚠️ 配線を間違えるとセンサーが壊れることもあります。Raspberry Piの電源を切った状態で配線作業を行いましょう。

\n\n

🐍 STEP 2:Pythonライブラリをインストール

\n\n

Raspberry PiのターミナルでSSH接続またはデスクトップ画面を開いて、以下を実行します。

\n\n

# システムパッケージを最新にしておく\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

\n\n

インストールが終わったら、エラーが出ていないか確認しておきましょう。Successfully installedと表示されればOKです ✅

\n\n

🌡️ STEP 3:温湿度を取得するPythonコードを書こう






\n\n

まずはシンプルに、センサーの値をターミナルに表示するコードから始めます。

\n\n

# 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秒ごとに計測

\n\n

ポイントをまとめるとこんな感じです:

\n

    \n

  • 📌 adafruit_dht.DHT11(board.D4)でGPIO4番ピンのセンサーを指定
  • \n

  • 📌 RuntimeErrorはDHTセンサー特有の読み取り失敗。catchして無視するのが定石です
  • \n

  • 📌 time.sleep(2)で2秒間隔。DHT11は最低2秒間隔が推奨されています
  • \n

\n\n

実行はこちら:

\n\n

python3 dht_monitor.py

\n\n

ターミナルに温度と湿度が流れ始めたら成功です 🎉

\n\n

🌐 STEP 4:Webブラウザで確認できるようにしよう

\n\n

ターミナルだけだと少し味気ないですよね。せっかくIoTを作るなら、スマホやPCのブラウザから確認できると一気に「それっぽく」なります。

\n\n

PythonのFlaskを使って、シンプルなWebサーバーを立ち上げましょう。

\n\n

# web_dht_monitor.py\nfrom flask import Flask, jsonify, render_template_string\nimport adafruit_dht\nimport board\n\napp = Flask(__name__)\ndht_sensor = adafruit_dht.DHT11(board.D4)\n\n# シンプルなHTML(テンプレートを別ファイルにしなくてもOK)\nHTML = \"\"\"\n\n\n\n  \n  \n  IoT温湿度モニター\n  

\n\n\n

\n

🌡️ 室内環境モニター

\n

温度

--

\n

湿度

--

%

\n \n

\n \n\n\n\"\"\"\n\n@app.route('/')\ndef index():\n return render_template_string(HTML)\n\n@app.route('/api/sensor')\ndef sensor_api():\n \"\"\"JSONでセンサーデータを返すAPI\"\"\"\n try:\n temp = dht_sensor.temperature\n hum = dht_sensor.humidity\n return jsonify({\"temperature\": round(temp, 1), \"humidity\": round(hum, 1)})\n except RuntimeError:\n return jsonify({\"temperature\": None, \"humidity\": None, \"error\": \

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

COMMENT

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