はじめに
Jetson Nano で物体検出など負荷がかかる処理を行うと、Jetson Nano は結構熱くなります。そのため、Jetson Nano モジュールを使った機器を開発する場合は NVIDIA 社から公開されている熱設計のガイドライン 1 に沿って設計する必要があります。また、Jetson Nano モジュールの内部には複数の温度センサが配置され、熱暴走や、発熱によるダメージを回避する仕組みが実装されています。本記事ではこの温度センサの値を読み出す方法を紹介します。
Jetson Nano の温度を知る方法
Jetson Nano 上の温度センサ測定値は Linux sysfs ノードから読み出せます。各温度センサが測定する領域は温度ゾーンと呼ばれています。
まず、type ノードから温度ゾーンの名称を読み出してみます。
$ cat /sys/devices/virtual/thermal/thermal_zone[0-9]/type
AO-therm
CPU-therm
GPU-therm
PLL-therm
PMIC-Die
thermal-fan-est
次に、temp ノードから各温度ゾーンに配置された温度センサ測定値を読み出してみましょう。単位は m °C です。
$ cat /sys/devices/virtual/thermal/thermal_zone[0-9]/temp
45500
35500
36000
33500
100000
35750
PMIC-Die 温度ゾーンの測定値が 100℃ になっています。最初からこの高温はありえませんので、このゾーンには温度センサが存在しないと推測します。
リアルタイムに温度をグラフ表示
上記の方法で読み出した温度センサの値をリアルタイムにグラフ表示するプログラムを作ってみました。GitHub tsutof/jetson-thermal-monitor で公開中です。
このプログラムを実行するには以下のようにライブラリとプログラムをインストールする必要があります。
$ sudo apt-get update
$ sudo apt-get install python3-pip
$ sudo pip3 install -U numpy
$ sudo apt-get install libfreetype6-dev
$ sudo pip3 install matplotlib
$ git clone https://github.com/tsutof/jetson-thermal-monitor
$ cd jetson-thermal-monitor
プログラムの実行方法は以下のとおりです。
$ python3 jetson_temp_monitor.py
このプログラムは matplotlib.animation を利用しています。
まとめ
Jetson Nano モジュールの内部に配置された温度センサの測定値を読み出す方法を紹介させていただきました。Linux sysfs ノードから簡単に読み出せるのでとても便利だと思います。
以上です。
-
"Jetson Nano Thermal Design Guide" 参照。Jetson Download Center からダウンロードできます。 ↩