Raspberry Piでサーバークローゼットの温度を正確に監視
問題
自宅オフィスを改装後、すべての電子機器 – サーバー、NAS、AVレシーバーなど – を収納するクローゼットを確保しました。熱気を隣室のオフィスへ排出する排気ファンを設置しましたが、ファン稼働中でもクローゼット内は約90°F(32℃)に留まります。ほとんどのハードウェアの動作範囲内ですが、もう少し涼しくしたいと考え、数日間の温度変化を記録する信頼できる方法が必要でした。
このタスクにRaspberry Piを使うのは理想的です。以前ArduinoでアナログTMP36GZセンサーを使った経験がありますが、PiのGPIOはデジタルのみのため、ADCなしではアナログセンサーが使えません。すぐにコーディングを始められるシンプルなソリューションを求めていました。
DS18B20デジタル温度センサーがその問題を解決します。シングルワイヤーバスで通信し、PiのBCM GPIO4(ピン7)に完璧に適合。センサーはLinuxターミナルから直接アクセスでき、複数のDS18B20を同じデータラインで共有可能です。
構築手順
- 短いCAT5eケーブルを用い、DS18B20の3ピンをはんだ付け:橙 = +3.3V、茶 = GND、緑 = DATA。
- 4.7kΩプルアップ抵抗を3.3Vとデータ線の間に実装。
- 露出配線をビニールテープで巻き、シュリンクチューブで束ねて保護。
- ケーブル端にメスジャンパーコネクタを取り付け、スプリッターへの簡易接続を実現。
- 2つの2オス-1メスY字スプリッターを作成し、2つのセンサーからVDD、GND、DATAをPiの単一ピンに集約。
- スプリッターをPiに接続:3.3Vをピン1、GNDをピン6、DATAをピン7。
- センサーをクローゼット内に配置 – 排気ファンの両脇に1つずつ – で温度分布を取得。
完成品の写真を以下に示します。3つのスプリッターがPiのGPIOピンに整然と挿さっているのがわかります。
ターミナルからセンサーを読み取る
DS18B20配線完了後、ファイルシステムから直接出力を読み取れます。以下のコマンドで必要なカーネルモジュールを読み込み、接続デバイスを一覧表示、選択したセンサーの温度データを表示:
# 1-Wireドライバをロード
sudo modprobe w1-gpio
sudo modprobe w1-therm
# 接続デバイスを一覧(例: 28-0000055f311a)
ls /sys/bus/w1/devices
# 特定センサーから温度を読み取り
cat /sys/bus/w1/devices/28-0000055f311a/w1_slave
w1_slaveファイルは2行を返します。1行目はCRCチェック、2行目はt=XXXXXで終わり、XXXXは千分の1℃単位の温度。必要に応じて華氏に変換可能。
このセットアップで、CSVファイルへのログ記録、リモートサーバーへのデータ送信、閾値超過時のアラート発火などが可能です。DS18B20の精度は±0.5℃で、日常的なハードウェア監視には十分以上です。
詳細な手順とサンプルコードについては、Raspberry Pi GPIOドキュメントおよびAdafruitのDS18B20ガイドを参照してください。
製造プロセス
- 5ドルI2C温度センサーで作るRaspberry Pi温度ロガー
- Python、SQLite、LabVIEWによるRaspberry Pi高精度温度プロファイリング
- 複数DS18B20 1-WireセンサーをRaspberry Pi接続で精密温度監視
- Raspberry PiとNagiosで室温を効率監視
- Raspberry Pi温度・湿度ネットワークモニター – DIYセットアップガイド
- Raspberry Pi 2でDS18B20温度センサー読み取りガイド
- Raspberry PiとDS18B20によるプロフェッショナルな温度監視
- Raspberry PiでMaxim 1-WireセンサーとDS2482 I2Cブリッジを用いた温度測定
- Raspberry PiとPythonでリモート温度センサーを構築 – ステップバイステップガイド
- ホームエナジーセンター:Raspberry PiとMoteinoで太陽光発電、ソーラー熱、室温を監視
- Raspberry PiでBMP085:I2C経由の高精度温度・気圧測定