猛暑の屋外で Raspberry Pi を運用する
年も明けて冬真っただ中ですが、夏ごろの話を今さら書きます。
Raspberry Pi を業務で使おうとしたときに、必ず信頼性や耐久性ってどうなの?という話になります。もちろん、用途や目的によりけりですし、価格や入手性(半導体不足以降、優位性を感じなくなってきましたが)とのトレードオフとなりますが、例えば、真夏の炎天下で運用したらどうなるかを実験してみました。
ちなみに、Raspberry Pi は2018年6月時点で約60%が産業用途向けで出荷されているらしく、身近なところだと某回転ずしチェーンで使用されているようなので、壊れたら交換と割り切れば実運用に耐えうると思っています。
Upton氏によれば、2018年6月の時点で、月産される50万~60万台のうち、35万~40万台、つまり約60%が産業用途向けとなっているという。産業用途が、当初の教育用途を上回っているのだ。2016年のインタビューで同氏は、「2016年は約400万台出荷されていて、そのうち半数となる約200万台が産業用途で使われているのは分かっている」と述べていたので、この2年間で産業用途の割合が増えたことになる。
引用:https://eetimes.itmedia.co.jp/ee/articles/1807/11/news042.html
実験内容
屋外での運用を想定して、Raspberry Pi を防水ケースに格納し、炎天下でケース内部、外部、そして CPU の温度がどの程度になるのかを計測します。
ケーブル類はケーブルグランドを使って雨風をしのげる程度の防水対策は行います。通常は結露対策として水抜き用の穴をあけたりするのですが、今回は実験なので、あえて開けずに密封しました。
部材
主な部材としては以下のものを使用しました。
部材 | メーカー・型番 | 備考 |
---|---|---|
シングルボードコンピュータ | Raspberry Pi 3 model B | |
ケース | タカチ社製 BCAS101807G | 外寸 100 x 185 x 70 mm |
熱電対(防水) | DS18B20 | ケース外部の温度測定用 |
温湿度計 | DHT22 | ケース内部の温度測定用 |
ケーブルグランド | AVC 社製 FGA21L-06B-SD | USB ケーブル用 |
ACアダプタ | その辺にあったやつ | 電源供給用 |
USB ケーブル | その辺にあったやつ | 電源供給用 |
Raspberry Pi
Raspberry Pi は複数のモデルがありますが、手元にある Raspberry Pi 3 model B を使いました。動作範囲温度は、CPU (BCM2837B0) は -40℃ ~ 85℃、有線LANのチップセット (LAN9512) が 0℃ ~ 70℃となっています。
密閉ケースに入れるので、ヒートシンクやファンは装着しませんでした。
防水ケース
ケースはタカチ製の樹脂ケース BCAS101807G を使いました。
サイズは外寸で 100 x 185 x 70 mm で、Raspberry Pi を入れるには十分な大きさですが、ケーブルの取り回しなど考えると結構スペースをとったりするので、意外とギリギリでした。
防水性能は IP65 なので多少の雨には耐えられますが、台風などの激しい雨の場合には浸水の恐れがあります。実際の運用では IPX8 のケースを採用した方がよさそうですが、ケーブルグランドを加工を行うので、高信頼性を求めるのであれば、その辺の考慮も必要になります。
温度上昇への影響を考慮すると、黒系より薄い色の方がよさそうなので、色はホワイトグレーを選びました。
ケーブルグランド
DS18B20(熱電対)と給電用の USB ケーブルを外に出すために2種類のケーブルグランドを使いました。
DS18B20 は細いので通常のもので問題ないのですが、USB ケーブルの方は Type A 側の端子が通るサイズでないといけないので、AVC 社製の FGA21L-06B-SD を使用しました。
USBケーブル・ACアダプタ
Raspberry Pi に給電するための AC アダプタと USB ケーブルはその辺に転がっていたやつを使用しました。本来であれば USB ケーブルも防水のものを使用すべきでしょう。あと、通常のものだと紫外線で早期に劣化する恐れもあります。ACアダプタはコンセントの場所によるでしょう。
組み立て
ユニバーサル基盤を使って DS18B20 と DHT22 を Raspberry Pi に接続します。ユニバーサル基盤の裏側はブレスレットボードと同じ配線になっています。Raspberry Pi とユニバーサル基盤はアクリル板に固定しています。
ケースに穴をあけ DS18B20 と USB ケーブルを通し、ケーブルグランドで防水加工します。ステップドリルを使うと1つのドリルで様々な大きさの穴をあけられるので便利です。
ケースに詰め込むとこんな感じです。DS18B20 は先っぽだけ外に出して、ケーブルは全て土台のアクリル板の下に収めました。ケース内でのケーブルの取り回しとかをすると、余裕があるようで結構ギリギリでした。
システム構成
ケース内部の温度を湿度も計測できる DHT22、ケースの外側は防水加工された DS18B20 で計測します。
温度は1分間隔で計測し CVS ファイルに保存することにしました。ファイルは日次でローテーションします。
クラウドにアップロードすることもできたのですが、今回はリアルタイムで監視や分析をする必要はないので、rsyc で適当なタイミングでローカルにコピーすることにしました。
クラウドにデータをアップロードする場合でも、いきなりシステム化するのではなく、要件が固まるまでは、S3 に rsync するのはありな気がしています。
各センサーからのデータは3秒間隔で計測し、いったん Redis に保存し、1分間隔で CSV ファイルに保存するようにしています。
それぞれのセンサーからデータを読み出し、それに対する処理を行う(今回はCSVファイルへの保存)という一連の流れに対して、間に Redis をはさむことにより各処理を疎結合にして、センサーを追加したり、データをクラウドにアップロードする処理を追加するときも、既存の処理に変更がないようにしています。
Raspberry Pi で DS18B20 と DHT22 を使う方法については、過去にこちらの記事としてまとめました。
Raspberry Pi の CPU の温度は次のコマンドで取得できます。
$ vcgencmd measure_temp
temp=45.1'C
作成したプログラムは github にあげてあります。
計測結果
冷房の効いた室内で稼働させるとおおよそ以下のような温度ととなりました。
- ケース内: 32 ℃
- ケース内: 25 ℃
- CPU:60 ℃
2023/8/27 ~ 2023/9/14 まで屋外に設置しました。一番暑かったであろうお盆の時期に間に合わなかったのが悔やまれます。
柱の陰になるので午前中は日が当たりませんが、午後は西日があたります。
結果は以下の様になりました。参考のため、気象庁の天気と最高・最低気温も載せておきます。
日付 | ケース内最高温度 | ケース内最低温度 | ケース内最高湿度 | ケース内最低湿度 | ケース外最高温度 | ケース外最低温度 | CPU最高温度 | CPU最低温度 | 天気 | 最高気温 | 最低気温 |
---|---|---|---|---|---|---|---|---|---|---|---|
2023/8/27 | 46.4 | 31.5 | 54.1 | 47.6 | 42.562 | 26.687 | 73.6 | 58 | 晴のち曇 | 32.8 | 26.0 |
2023/8/28 | 48.3 | 31.5 | 53.7 | 46.9 | 41.937 | 26.562 | 75.2 | 57.5 | 曇のち晴 | 34.2 | 26.3 |
2023/8/29 | 53.8 | 31.9 | 53.5 | 44.3 | 46.375 | 26.937 | 82.2 | 58 | 晴 | 34.5 | 26.9 |
2023/8/30 | 48.9 | 31.6 | 52.8 | 45.2 | 43 | 26.375 | 76.3 | 58 | 晴のち曇 | 34.1 | 26.4 |
2023/8/31 | 50.5 | 31.1 | 53.2 | 44.8 | 42.687 | 26.375 | 77.9 | 58 | 曇 | 34.0 | 26.4 |
2023/9/1 | 51.8 | 30.7 | 52.9 | 44.2 | 42.812 | 26 | 79 | 56.9 | 晴 | 33.7 | 26.1 |
2023/9/2 | 52.8 | 31.6 | 54.2 | 43.3 | 45.5 | 26.625 | 80.6 | 58.5 | 晴のち曇 | 34.7 | 26.1 |
2023/9/3 | 49.3 | 32.2 | 53.6 | 45.1 | 42 | 27.25 | 77.4 | 59.1 | 曇のち雨 | 34.1 | 26.6 |
2023/9/4 | 37.3 | 28.4 | 65.2 | 52.6 | 37.5 | 24.375 | 66.1 | 54.8 | 雨のち曇 | 28.7 | 25.2 |
2023/9/5 | 48.3 | 29.4 | 65.2 | 57 | 40.687 | 25.25 | 75.2 | 56.4 | 晴 | 33.0 | 25.4 |
2023/9/6 | 43.3 | 28.2 | 80.2 | 55.6 | 37.75 | 23.625 | 70.4 | 54.8 | 曇のち雨 | 31.6 | 26.7 |
2023/9/7 | 36.3 | 28.8 | 85.4 | 77.1 | 32.375 | 24.562 | 63.9 | 55.3 | 曇のち雨 | 29.9 | 24.9 |
2023/9/8 | 29.1 | 22.7 | 86.7 | 82.1 | 25.062 | 18.875 | 56.9 | 49.4 | 雨 | 25.0 | 19.9 |
2023/9/9 | 39.2 | 25.1 | 86 | 69.3 | 34.125 | 20.937 | 66.6 | 51.5 | 雨のち晴 | 29.1 | 21.7 |
2023/9/10 | 45.4 | 29.1 | 88.4 | 66.9 | 39.5 | 23.75 | 72.5 | 55.8 | 晴のち曇 | 32.3 | 24.7 |
2023/9/11 | 47.6 | 30.4 | 89.4 | 65.9 | 42.062 | 25.562 | 74.1 | 56.9 | 曇のち晴 | 31.9 | 25.6 |
2023/9/12 | 47.6 | 29.1 | 90.4 | 67.9 | 40.875 | 23.937 | 75.2 | 55.8 | 曇のち晴 | 31.6 | 25.0 |
2023/9/13 | 51.1 | 29.5 | 90.6 | 64.6 | 43.812 | 23.937 | 78.4 | 55.8 | 晴 | 33.2 | 23.7 |
2023/9/14 | 49.5 | 31 | 90.9 | 69.2 | 42.687 | 25.875 | 76.3 | 56.9 | 晴 | 32.8 | 25.7 |
ケース内は 50 ℃前後、 CPU は 80 ℃近くまで上がり、最高は 8/29 の 82.2 ℃ でした。その日の温度の推移です。
CPU の動作範囲が 85 ℃までなのでギリギリです。ケース内の温度との差は 30 ℃近くあるので、ヒートシンクやファンをつければ多少は効果があるかもしれませんが、ケース内温度に連動して CPU 温度も上がっているので、どの程度効果があるかは試してみないと何とも言えないです。
メモリや SD カードなども心配なので、実際の運用では発熱の少ないマイコンを使うか、排熱対策は検討した方がよさそうです。
また、湿度が 90% を超えることもがあるのも気になります。完全に密閉できているわけではなく、雨の影響を受けている可能性がありそうです。できれば除湿剤などを詰め込んだ方がよさそうです。
データは欠損なく取れていて、外れ値もなかったので、システムがハングしたり、センサーが誤作動することはなかったようです。諸事情で一時的に撤去し、その後、つい最近まで稼働させていたのですが特に目立った障害はありませんでした。
まとめ
1台のみの短期間での稼働だったので、故障率は分かりませんが、簡易的な防水加工であっても、すぐに壊れるということはなさそうです。ただし、実際の運用では熱対策と湿気対策は施した方がよさそうです。
Discussion