防犯カメラシステムの自作②~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)を用いています.
目次
- 本投稿で使用するもの
- ヒートシンクとアイドリング時のCPU温度
- 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℃).
第3章で説明するPoE HATのセットアップを行うと,PoE HATのOLRDにCPU温度が表示される.PoE HATのセットアップをする前にCPU温度を測定したい場合は,ターミナルを起動し下記コマンドを実行することでも可能である.
vcgencmd measure_temp
3. PoE HATのセットアップ
3.1 初回の通電時の様子
新規で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:プログラムによる制御
3.2 ファンの制御
この第3.2節では,デモコードを用いたファンの制御を行う.そのため,図2に示したファンの物理スイッチを, “P0” にされたし.
PoE HATファンの制御やOLEDの表示には,I2Cが用いられている.そのため,まずはRaspberry Piの「設定>Control Center>インターフェイス」から,I2Cの機能を有効にする(図3).
デモコードの実行は,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).
3.3 Raspberry Piの起動と共にファン制御の自動実行
第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
参考文献
- PoE HAT (B) – Waveshare Wiki, Waveshare, https://www.waveshare.com/wiki/PoE_HAT_(B), (参照2026-8-1).



