TIPS 2025年4月24日

ラズパイを使って7セグ表示器にCPU温度を表示する

東京デバイセズのTDFA1104は、USB 接続で簡単に扱える 4 桁 7 セグメント LED ディスプレイです。
Raspberry Pi と組み合わせれば、システムモニタや IoT デバイスの状態表示などに最適。この記事ではCPU温度を1秒ごとにリアルタイム表示するまでの手順をわかりやすく解説します。

製品の簡単な紹介

  • 型番 : TDFA1104
  • 表示 : 赤色 LED、0.8 inch、4 桁
  • 電源 : USB バスパワー (5 V / 300 mA max)
  • 通信 : USB 2.0 で PC/Raspberry Pi から制御OK
  • コマンド : td-usb tdfa1104 set <文字列> で最長 4 文字を表示可能 (ピリオド「.」は桁数に含まず)

数字はもちろん、.-_~ACEFGHIJLPUYbcdhnortu などの英字も表示できるので、温度・時刻・エラーコードなど多彩な用途に活躍します。

準備するもの確認

必要なもの 備考
Raspberry Pi (4 B / 5 B / Zero 2 W など) Raspberry Pi OS がインストール済み で、SSH かモニタ付きで操作できる状態
TDFA1104 本体 USB-A⇔mini-B ケーブル付属
インターネット接続 パッケージ更新・リポジトリ clone 用

ビルドに必要なツールのインストール

 sudo apt update
 sudo apt install -y git build-essential libusb-dev

USB 権限の設定

TDFA1104 はベンダ ID 0x32ee、プロダクト ID 0x1783 で認識されます。
udev ルールを追加し、非 root でもアクセス可能にします (再起動不要)。

 sudo tee /etc/udev/rules.d/99-usb-tokyodevices.rules <<'EOF'
 SUBSYSTEM=="usb", ATTR{idVendor}=="32ee", ATTR{idProduct}=="1783", MODE="0666"
 EOF

 sudo udevadm control --reload-rules
 sudo udevadm trigger

制御用コマンド TD-USB の構築

TDFA1104 への送信は CLI ツール TD-USB を利用します。READMEに沿って Linux 向けにビルドしましょう。

 git clone https://github.com/tokyodevices/td-usb.git
 cd td-usb
 make            # ./td-usb が生成される

動作確認:

 ./td-usb         # バージョン情報が表示されれば OK

コーディング – Python で CPU 温度を 1 秒ごとに表示

Raspberry Pi では /sys/class/thermal/thermal_zone0/temp に CPU 温度 (ミリ℃) が出力されています。
この値を読み取り、少数 1 桁に整形して TDFA1104 に流し込みます。 --loop オプション付きで td-usb を起動し、標準入力に温度を送ると高速 & 低負荷です。

 #!/usr/bin/env python3
 import subprocess
 import time
 import os

 # td-usb を --loop モードで起動
 proc = subprocess.Popen(
     ['./td-usb', 'tdfa1104', 'set', '--loop'],
     stdin=subprocess.PIPE,
     text=True
 )

 try:
     while True:
         # 1) CPU 温度を取得 (ミリ℃ → ℃)
         with open('/sys/class/thermal/thermal_zone0/temp') as f:
             millic = int(f.read().strip())
         temp_c = millic / 1000.0

         # 2) 文字列を整形 (例: 45.2)
         disp = f'{temp_c:4.1f}'[:4]  # 4 桁に丸める

         # 3) TDFA1104 に送信
         proc.stdin.write(disp + '\n')
         proc.stdin.flush()

         time.sleep(1)
 except KeyboardInterrupt:
     pass
 finally:
     proc.terminate()

ファイルに保存後、実行権限を付与して起動します。

 chmod +x show_cpu_temp.py
 ./show_cpu_temp.py
 # TDFA1104 が「48.6」「48.7」…と 1 秒ごとに更新される

負荷をかけたりアイドル状態にしたりすると、値が即座に変化することを確認できます。

まとめ

  • TDFA1104 は USB だけで動作する手軽な 7 セグ LED。
  • TD-USB ツールをコンパイルすれば Linux からワンコマンド制御。
  • モニタリング表示やIoT ダッシュボードとしておすすめ。

この記事に関連する商品

この記事をシェア

最近のTIPS