RaspberryPiZero2WとPi4Bの温度検証とおすすめのケース

RaspberryPi用FLIRC製ケース PC/デジモノ
RaspberryPi5が発表されました。消費電力もかなり上がっているようで、ファンレス運用が可能なのか気になりますね。

長く在庫不足が続いていた、RaspberryPi4BとZero2Wをようやく手に入れました。

既に自宅で稼働しているRapsberryPiでは公式ケースとFLIRCのケースの両方を使用してきたのでこの2つのケースとの相性(温度)を確認してみました。

結論から言うと、RaspberryPiZero2W・Pi4BともにFLIRCのケースをお勧めします!

ケースに求める条件

運用によって必要な条件は異なると思いますが、サーバー機として運用するにあったっての(個人的な)条件は、きちんと覆われていることです。RaspberryPi用のケースはその特性上GPIOの部分がむき出しになっているものが多いです。しかし、24時間稼働させる用途には向きません。

アクリルの板やアルミのヒートシンクでサンドイッチしたものは一時的な実験には良いのですが、24時間365日稼働させるサーバー機としては埃が基盤に付着しやすくなってしまいます。また、同様の理由で可能な限りFANレスで稼働させたいところです。

このような理由からこれまではRaspberryPi公式ケースとFLIRCのケースを使用してきました。今回は性能向上で消費電力・発熱量が増えているPi4,PiZero2Wでもこれらのケースが問題なく使えるのか検証してみました。

本記事はRaspberryPiを小型サーバーとして利用する想定です。
GPIOを頻繁に使う場合にはFLIRCのケースはあまりお勧めしません。

公式ケース

アマゾン、ヨドバシ、スイッチサイエンスなど入手性は良いです。数百円~1000円台と安価で、赤/白のツートンカラーが特徴的なケースです。プラスチック製で構造は2つ割り、という単純なものです。はめ込み式なので組み立て・分解にドライバーは不要です。

RaspberryPi公式ケース

FLIRC製ケース

FLIRC inc.が販売しているケースです。アマゾンやDigikeyなどで入手可能です。ヒートシンクと筐体が一体化されたアルミニウム製で高級感があります。欠点は若干高価(3000円程度)である点と、GPIOへのアクセスが難しい点、分解組み立てにドライバーが必要で手間がかかるという点です。

Raspberry Pi Zero 2 W

公式ケース

基板が収まる部分が特徴的な赤色で、白いカバーをはめ込む構造になっています。

GPIOは底部からアクセスするか、GPIO部がカットされた交換カバーを使います。また、Piカメラ用の穴と固定部が追加された替えカバーも付属しています。

RaspberryPiZero公式ケースRaspberryPiZero公式ケース裏面

FLIRC

上面と側面がアルミ製で、CPUにあたる部分にサーマルパッドを張り付けて使用します。

RaspberryPiZero用FLIRCケース

RaspberryPiZero用FLIRCケース内部

上面に取り付けるプラスチックカバーは2種類付属していて、GPIOを使用することも可能です。また、カメラのフレキを通すためのスリットも設けられています。

RaspberryPiZero用FLIRCケース上面カバー

基板は底部カバーとネジで共締めになっており、microSDの脱着時には4か所のネジを外す必要があります。サーバーなどとして触らずに長期運用する場合は問題ありませんが、実験でつけ外しが多い場合は少し面倒です。

RaspberryPiZero用FLIRCケース底部

温度確認

環境温度25.4℃で次の4パターンでのCPU温度を記録しました。OSについては、1~3はRaspberryPi OS Lite 64bit、4は同32bitです。

  1. PiZero2W + 公式ケース
  2. PiZero2W + 公式ケース + ヒートシンク(14mmx14mm)
  3. PiZero2W + FLIRCケース
  4. PiZeroW(初代) + 公式ケース

この結果が次のグラフです。

縦軸がCPU温度、横軸が経過秒数です。230秒付近から下記コマンドでCPU使用率を100%に張り付かせました。PiZero2Wでは上記コマンドを4回、PiZeroWでは1回使用して全コアフルロードにしました。

$yes >/dev/null&

RaspberryPiZero2W温度

公式ケースでは数分でCPU温度が80℃を超えてしまい、サーマルスロットリングがかかっていることが確認できました。CPUクロックは所定の1000MHzから500~600MHzにまで落ち込んでいました。小さなヒートシンクを使った場合も同様で、若干温度の低下がみられるものの、結局は数分でCPU温度が80℃を超えてサーマルスロットリングが発動していました。ないよりはマシですが、高い負荷がかかり続けるような環境下では効果があるとは言い難いです。

一方、FLIRCのケースを使用した場合には明らかに違いがみられ、10分程度では限界温度(80℃)にはならず、70℃以下を維持していました。仮に環境温度が35℃程度(今回の実験温度+10℃)の過酷な状況でも80℃以下に収まりそうです。

改めてきちんと計って驚いたのが初代ZeroWの発熱の少なさです。性能が全く異なるとはいえ、フルロード時でも発熱は+10℃以下でした。しかもオーバークロックが自動でかかり、CPUクロックは700~1000MHzの間で変動していました(※)。

PiZero2Wは公式ケースや小さなヒートシンクだけで使うのはお勧めできません。
FLIRCのケースであればファンレスでも十分冷やせます。
温度が気になるならZero2Wではなく初代ZeroWがおすすめです。
Flirc ラズベリーパイゼロケース

Flirc ラズベリーパイゼロケース

1,764円(04/16 00:50時点)
Amazonの情報を掲載しています

※使用したOSはクリーンインストール状態で、意図的なオーバークロックなどは設定していません。アイドル時は700MHzで、負荷をかけると700MHz~1000MHzの間で変動していました。

Raspberry Pi 4B/8GB

公式ケース

基板側ケースが赤でカバーが白になっています(黒/灰のカラバリもあるらしい)。

単純な2分割式で、GPIOにアクセスする場合はカバーを開ける必要があります。HATを取り付けるとカバーは閉まらないと思います。

RaspberryPi4B公式ケース

FLIRC

側面と上面がアルミ製で、CPUにあたる部分にサーマルパッドを張り付けて使用します。Zero用ケースと異なり上面には穴がないので、上部からGPIOを取り出すことはできません。

RaspberryPi4B用FLIRCケース

RaspberryPi4B用FLIRCケース内側

下部にフラットケーブルを取り出すための隙間がありますので必要があればここから配線することはできますが、組み立て時に配線をしておく必要があります。配線を変更する場合は下のカバーと基板を固定しているネジを外す必要があります。

RaspberryPi4B用FLIRCケース底面

上面の樹脂製カバーは1つだけ付属します。

RaspberryPi4B用FLIRCケース上面カバー

温度確認

環境温度26.0℃で次の4パターンでのCPU温度を記録しました。OSはすべてRaspberryPi OS Lite 64bitです。

  1. Pi4B/8GB + 公式ケース
  2. Pi4B/8GB + 公式ケース + ヒートシンク(14mmx14mm)
  3. Pi4B/8GB + FLIRCケース

この結果が次のグラフです。縦軸がCPU温度、横軸が経過秒数です。230秒付近から先ほどと同じコマンドを4回叩いてCPU使用率を100%に張り付かせました。

RaspberryPi4B温度

RaspberryPi4でもPiZero2Wと同様の結果となりました。公式ケースだけでは数分でCPU温度が80度を超えてサーマルスロットリングが発生し、クロックが最大で600MHzまで落ちてしまいました。アイドル状態のクロックは1800MHzです。ヒートシンクを使用しても大きな違いはありませんでした。

一方FLIRCのケースでは65℃以下に抑えられていて、サーマルスロットリングも発生しませんでした。

Pi4Bは公式ケースや小さなヒートシンクだけで使うのはお勧めできません。
FLIRCのケースであればファンレスでも十分冷やせます。
Flirc ラズベリーパイ4ケース シルバー

Flirc ラズベリーパイ4ケース シルバー

2,970円(04/16 00:50時点)
Amazonの情報を掲載しています

まとめ

RaspberryPiZero2W、Pi4Bともに発熱がかなり大きいことがわかりました。廃熱が考慮されていないケースではサーマルスロットリングが発生してしまいます。小さなヒートシンクでは根本的な解決にはなりません。FLIRCのように筐体全体で放熱するケースの使用は必須です。このようなケースを使えば、周りの環境がよほど悪いとか、24時間365日フルロードで使う、とかでなければ冷却FANはなくてもよいと思います。

おまけ

負荷計測のスクリプトです。

#!/bin/bash
OUTPUT="rec.txt" #出力ファイル
N_IDLE=40 #負荷前の計測回数
N_LOAD=120 #負荷中の計測回数
N_TERM=40 #負荷後の計測回数
T_INT=5 #計測間隔(秒)

function rec_data() {
  for((i=0; i<$1;i++)) {
    clock=`vcgencmd measure_clock arm | sed "s/frequency(48)=//g"`
    clock_mhz=$(($clock/1000000))
    str_date=`date "+%H:%M:%S"`
    temp=`vcgencmd measure_temp | sed 's/temp=//g' | sed "s/'C//g"`
    str_output=$str_date,$clock_mhz,$temp,$2
    echo $str_output
    echo $str_output >> $OUTPUT
    sleep $T_INT
  }
}

rm $OUTPUT
rec_data $N_IDLE IDLE
for((i=0;i<4;i++)) { yes > /dev/null & }
rec_data $N_LOAD LOAD
pgrep -P $$ | xargs kill
rec_data $N_TERM IDLE

 

コメント

  1. とても参考になりました。
    Pi4Bにてファン付きのアルミ製のケースを使用していますが、埃が詰まってファンが止まるなどの問題を経験したため、ちょうど難儀していたところでした。

    • もうちょっと安いといいんですけどね。