Rasberry Pi 4を購入しました
最近ふと何か作ってみようかなと思いラズパイを勢いで購入しました。 購入したのはこちら。 初めてラズパイを触るのでスターターキットが無難かな思って選びました。
Pi4 B 8GB スターター キット V2 オンライン教材付 [RASST48STA0321]
実際に買ったものがこちら。 ヒートシンクとかケースは本キットに付属しています。
セットアップしていたら熱を持っているのが気になった
OS入れて諸々セットアップしていたら気になることがありました。 ラズパイを触ってみると思いのほか熱を持ってるなぁと。 ぐぐってみると、同じことを気にしている人が結構いるようです。 というわけで実際どれくらい熱を持つのか調べてみました。
計測方法
- 電源投入後20分間の温度上昇の推移を計測する
vcgencmd measure_temp
コマンドを利用した検証用コードで計測する- 詳しくは後述
- CPUに負荷をかけない場合/かける場合それぞれの温度変化を計測する
- CPUに負荷をかけるときは
stress-ng --cpu 4 -q
をバックグラウンドで実行してCPU使用率を100%にする
- CPUに負荷をかけるときは
vcgencmdコマンドについて
ラズパイでは、vcgencmdコマンドを使うことでCPUの温度や動作クロックを見ることができます。
実行例) pi@raspberrypi:~ $ vcgencmd measure_temp temp=38.0'C
vcgencmdコマンドを使うことで、他にも出来ることがありますがここでは割愛します。 詳しく知りたい人は以下のドキュメントを読んでみてください。
検証用コード
なんとなくpythonで書いてみました。
60秒毎に vcgencmd measure_temp
を実行してcpu温度を出力します。
import subprocess import time def main(): while True: date = time.ctime() cpu_temp = run_vcgencmd(['vcgencmd', 'measure_temp']) cpu_temp = run_vcgencmd(['vcgencmd', 'measure_temp']) print( "{}, temp:{}'C".format(date, cpu_temp) ) time.sleep(60) def run_vcgencmd(command): proc = subprocess.run(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) result = proc.stdout.split("=")[1].replace("'C\n","") return result if __name__ == '__main__': main()
コードを実行すると以下のような結果が出力されます。
$ python3 raspi_cpu.py Sat Oct 17 15:03:59 2020, temp:36.0'C Sat Oct 17 15:04:59 2020, temp:37.0'C Sat Oct 17 15:05:59 2020, temp:39.0'C ...
測定結果
負荷をかけない場合は、計測開始直後は 36.0℃で20分経過すると48℃まで上昇しました。 計測開始から15分程度で47℃〜48℃あたりで落ち着きます。
負荷をかける場合は、20分後に74℃とかなりの温度まで上昇しました。 20分経過時点でも温度上昇し続けていたので、長時間動かすと80℃まで上がるのではないでしょうか。 サーマルスロットリング機能が80℃で動くらしいので、これ以上負荷をかけるのはやめておきます(ちょっと怖い💦)。
さいごに
長時間CPUが忙しくなるようなプログラムはラズパイ4では避けたほうが良いでしょう。 また、そうでない場合でもケースに触れると熱を持ってることがわかるレベルなので、気になる人は冷却性に優れたケースに変えたりcpuファンを導入するなりしましょう。 いずれにせよ、熱対策はしっかりしたほうが良さそうです。