防犯カメラシステムの自作②~Raspberry PiへのPoE HATのセットアップ~

 本投稿は,「防犯カメラシステム with Raspberry Pi」(←開発がすべて完了したら「開発物」にページを作成する予定)に関する投稿です.Tipsでの投稿は,内容ごとに分け,下記の通り分割して投稿してゆきます.

Reolink社製カメラ「RLC-1212A」の挙動確認
②Raspberry PiへのPoE HATのセットアップ(本投稿)
VPNを用いたリアルタイム映像視聴の環境構築
クラウドストレージへの動画ファイルの自動アップロード
⑤クラウドストレージへの動画ファイルの自動アップロード+α(予定)
⑥ウォルボックス内環境に対する温湿度センサとファン制御の実装(予定)

 本投稿では,「防犯カメラシステム with Raspberry Pi」に向けて,Raspberry PiにPoE給電とデータ転送が可能な環境を構築する方法を説明する.
 使用したRaspberry Piは,Pi 4 Model B 8GBである.OSは,Raspberry Pi OS(64bit)において執筆時点で最新バージョン(Debian 13 Trixieがベース.Release Date: 18 Jun 2026)を用いています.

目次

  1. 本投稿で使用するもの
  2. ヒートシンクとアイドリング時のCPU温度
  3. PoE HATのセットアップ
    • 初回の通電時の様子
    • ファンの制御
    • Raspberry Piの起動と共にファン制御の自動実行

1. 本投稿で使用するもの

 筆者が自作しようとしている防犯カメラシステム全体ではなく,本投稿で扱った機材のみを,以下にあげる.

  • Raspberry Pi 4 Model B 8GB
  • microSDカード 64GB(class10,UHS-1/U3,最大読込100MB/s)
    • Raspberry Piに差して使用.Raspberry Piのイメージファイル等を保存する
  • Waveshare社製 PoE HAT(B)[1]
  • Raspberry Pi 4 Model B用のヒートシンク
  • PoEスイッチングハブ:TPLINK社製 TL-SG1005
  • LANケーブル×1本
    • ハブ―Raspberry Pi間の接続に使用(Raspberry Piへの給電目的,インターネットへの接続はRaspberry Piの無線LAN接続)

2. ヒートシンクの取り付けとアイドリング時のCPU温度

 Pi4の熱対策を何もしていない場合,アイドリング時でもCPU周辺が触れないぐらい高温になり.これまで筆者は,Pi4を扱うときは,CPUの上に10円玉を乗せながら使用していた.
 これに対し,屋外に常設した運用を想定している「防犯カメラシステム with Raspberry Pi」を作成するにあたり,熱対策を施すことにした.
 ヒートシンクの取り付け(図1)と,第3章にて後述するPoE HATに搭載されているファンが稼働した状態とでの,アイドリング時のCPU温度は,およそ35.5℃であった(室温23℃).

図1 CPU・RAM・USBコントローラ・イーサネットコントローラの4箇所にヒートシンクを取り付けた様子

 第3章で説明するPoE HATのセットアップを行うと,PoE HATのOLRDにCPU温度が表示される.PoE HATのセットアップをする前にCPU温度を測定したい場合は,ターミナルを起動し下記コマンドを実行することでも可能である.

vcgencmd measure_temp

3. PoE HATのセットアップ

 新規でRaspberry Pi OSをSDカードに書き込み,HATを装着した状態で,Raspberry PiとPoEスイッチングハブとをLANケーブルで接続するだけで,Raspberry Piは機動した.また,HATのファンも回転した.
 なお,Raspberry Piをシャットダウンしても,Raspberry PiのボードやHATには通電されているため,ファンは回転したままであった.
 PoE HATを装着した状態であっても,通常のUSB Type-Cを用いた給電でRaspberry Piの起動はでき,HATの稼働も可能であった.

 HATにはFANに対する物理スイッチがある(図2).スイッチの意味は下記の通りである.第3.2節で後述する,デモコードを用いたファンの制御を実行するまでは,物理スイッチを “EN” にしておき,発熱を軽減する様にしておくことを勧める.

  • EN:通電と共に自動で回転する
  • P0:プログラムによる制御
図2 PoE HATのファンに対する物理スイッチ

 この第3.2節では,デモコードを用いたファンの制御を行う.そのため,図2に示したファンの物理スイッチを, “P0” にされたし.

 PoE HATファンの制御やOLEDの表示には,I2Cが用いられている.そのため,まずはRaspberry Piの「設定>Control Center>インターフェイス」から,I2Cの機能を有効にする(図3).

図3 I2Cの機能を設定するウィンドウ

 デモコードの実行は,PoE HATの公式サイト[1]にて公開されている,Pythonを用いた手法を使用する.ターミナルにて下記コマンドを実行し,デモコードをダウンロードと,ダウンロードしたZipファイルの解凍を行う.

wget https://files.waveshare.com/wiki/PoE_HAT_B/PoE_HAT_B_code.zip
unzip -o PoE_HAT_B_code.zip -d ./PoE_HAT_B_code

 上記コマンドを実行すると,「home/<your_username>」のディレクトリに,解凍されたフォルダPoE_HAT_B_codeが作成される.<your_username>は,各自のRaspberry Piのユーザ名である.

 解凍したフォルダ内「PoE_HAT_B_code/python/examples」にある,main.pyを実行する.これにより,CPUの温度が何℃以上になったらファンを回転開始するかを,Pythonプログラムで制御できるようになる.main.py内に記述してある関数POE.POE_HAT_Display()の引数に記述された数値が,そのファンを回転開始する温度を表す.デフォルトでは43℃以上になったらファンが回転開始するよう設定されている.
 デモコードを実行すると,ファンの回転だけでなく,OLEDにIPアドレス・CPU温度・ファンのON/OFF状態の情報が,自動で表示される(図4).

図4 デモコードを実行するとOLEDの表示がされる

 第3.2節までの内容では,Raspberry Piを起動するたびに手動でmain.pyを実行する必要がある.そこで,Raspberry Piのサービスファイルを作成し,自動実行の命令を記述する.
 まずはじめに,ターミナルで書きコマンドを実行し,サービスファイルを作成する.

sudo nano /etc/systemd/system/POE_OLED_Python_Service.service

 作成したサービスファイルに,Raspberry Pi起動時の処理内容として下記を記述する.<your_username>の部分は,各自のRaspberry Piのユーザ名に書き換えされたし.

[Unit]
Description=POE OLED Python Service
After=network.target

[Service]
ExecStart=/usr/bin/python3 /home/<your_username>/PoE_HAT_B_code/python/examples/main.py
WorkingDirectory=/home/<your_username>/PoE_HAT_B_code/python/examples
StandardOutput=journal
StandardError=journal
Restart=always

[Install]
WantedBy=multi-user.target

 サービスファイルの作成/編集を行ったら,ターミナルで下記コマンドを実行し,systemdに設定変更を再読込させる.

sudo systemctl daemon-reload

 そして,下記コマンドを実行することで最新のサービス定義が反映され,Raspberry Piを起動するたびに,main.pyが自動で実行され,PoE HATのファン制御とOLED表示が自動化される.

sudo systemctl enable POE_OLED_Python_Service.service
sudo systemctl start POE_OLED_Python_Service.service

参考文献

  1. PoE HAT (B) – Waveshare Wiki, Waveshare, https://www.waveshare.com/wiki/PoE_HAT_(B), (参照2026-8-1).