Pi-fieldとUSBカメラを使った屋外電源レス定点観測

[4GPi]:https://mechatrax.com/products/4gpi/
[slee-Pi 3]:https://mechatrax.com/products/slee-pi/
[Pi-protect]:https://mechatrax.com/products/pi-protect/
[Pi-field]:https://mechatrax.com/products/pi-field/
[Pi-field Mini]:https://mechatrax.com/products/pi-field/#relation-mini
[ADPi]:https://mechatrax.com/products/adpi/
[機能拡張モジュール]:https://mechatrax.com/products/
[イプシム]:https://ipsim.net/
[USB-シリアル変換ケーブル]:https://store.mechatrax.com/product.php?id=38
[弊社]:https://mechatrax.com/
[メカトラックス株式会社]:https://mechatrax.com/
[SORACOM]:https://soracom.jp/
[SORACOM Napter]:https://soracom.jp/services/napter/
[SORACOM Harvest]:https://soracom.jp/services/harvest/
[Remote.It]:https://ja.remote.it/
[@hayat00]:https://qiita.com/hayat00
[Raspberry Pi Imager]:https://www.raspberrypi.com/software/
[弊社オンラインストア]:https://store.mechatrax.com/
[Tera Term]:https://ja.osdn.net/projects/ttssh2/
[OSイメージ]:https://mechatrax.com/data/4gpi/
[2段用]:https://store.mechatrax.com/product.php?id=62
[3段用]:https://store.mechatrax.com/product.php?id=63
[メタルケースセット]:https://store.mechatrax.com/list.php?c_id=22
[メタルケースセット（4GPi + slee-Pi 3）]:https://store.mechatrax.com/product.php?id=70


# はじめに
太陽光パネルと蓄電池を搭載した「ラズパイ屋外稼動キット[Pi-field]」とUSBカメラを使用し、定時撮影&クラウドへのアップロードを行うシステムをご紹介します。

今回は、弊社の屋上の単管パイプに「[Pi-field Mini]」とUSBカメラを設置し、[SORACOM Harvest]のサービスを使用し、毎時00分に定点での撮影・クラウドへのアップロードを行いました。

![IMG_0427.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113974/b9053f1c-95ed-919d-5054-e91ec16ae693.jpeg)

ラズパイ屋外稼動キット[Pi-field]シリーズ3兄弟（左から、Pi-field、Pi-field Lite、Pi-field Mini）

# 使用するもの
- [Pi-field]
    - 今回はCube型電源ユニット（5面がミニ太陽光パネル、リチウムイオン電池を内蔵）を搭載し、1時間に1回の起動（無日照3日間）が可能な[Pi-field Mini]を使用しました。
-  [SORACOM] IoT SIM
    -  [SORACOM Harvest]が有効化されたものを使用してください。
- USBカメラ
    - 今回は屋外で使用可能な「ELP-USBFHD05MT-DL36」を使用しました。
- [Pi-field Mini 単管パイプ取付セット](https://store.mechatrax.com/product.php?id=66)
- カメラ取付用ブラケット
    - 今回は防犯カメラ取付用ブラケット「GH-00152a」を流用しました。
    - 「ELP-USBFHD05MT-DL36」と組み合わせて使用する場合、M4x12mm程度のねじ、ワッシャー、ナットが4組必要です。
- USB Type-A 延長ケーブル
    - USBカメラのUSB Type-A端子が画像上段のような大きなコネクタの場合、ラズパイに接続した状態でPi-field Mini本体のケースに収まりません。画像下段のような小さなコネクタを使用した延長ケーブルをご使用ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113974/cfa4b118-3083-9f35-29fc-06bdbed22bf4.png)



# 機器準備
まず、[Pi-field Mini]本体のふたを開け、ラズパイのユニットを取り外します。2か所のハーネスを外し、板金を固定している4か所のねじを外します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113974/f1359da8-f20c-ef39-d559-fbcb71444fcb.png)

[Pi-field Mini 単管パイプ取付セット](https://store.mechatrax.com/product.php?id=66)に付属のねじを使い、「Pi-field Mini 用 取付板金」に「単管パイプ用パイプキャッチ」を取り付け、[Pi-field Mini]本体を取り付けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113974/ec4ebf57-485d-3d63-a3a3-580a0b5a24e5.png)

続いて、USBカメラに取り付け用ブラケットを取り付けます。

# ラズパイのセットアップ
## ラズパイの起動と4G（LTE）回線への接続
取り外したラズパイのユニットの[4GPi]のSIMソケットにSIMを差し込みます。

一番上段の基板のCN1に、付属の「DC ジャック変換ハーネス」を取り付け、付属の「開発用 AC アダプタ（6V/2.8A）」から給電し、ラズパイを起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113974/d96da848-53a8-c4bf-bc5b-79b129fb4315.png)

ラズパイが起動したらログインします。ログインの情報は同梱資料をご参照ください。また、ログインの方法は[こちら](https://mechatrax.com/blog/advantages-and-processes-using-uart-for-login-to-raspberrypi/)などをご参照ください。

ラズパイにログインができたら下記のコマンドを実行し、USBカメラでの撮影に使用するパッケージをインストールします。

```
$ sudo apt install fswebcam
```

続いて、[SORACOM] IoT SIMのAPN情報を設定します。

```
$ sudo nmcli con add type gsm apn soracom.io user sora password sora
```
※plan-DUの場合は`$ sudo nmcli con add type gsm apn du.soracom.io user sora password sora`になります。

4GPiの青色LED（DS1）が点灯から点滅に変わると、4G（LTE）回線への接続が完了しています。

## 動作用シェルスクリプトの作成
続いて、動作用のシェルスクリプトとサービスファイルを作成します。

任意のディレクトリに下記の動作用シェルスクリプトを作成してください。今回は` /opt/pifield/`のディレクトリを作成し、直下に配置しました。


```bash:/opt/pifield/capture_upload.sh
#!/bin/bash

delay_seconds="10"
skip_frames="100"

if fswebcam -D "$delay_seconds" -S "$skip_frames" -d /dev/video0 "tmp.png"; then
  echo "Image captured successfully."

  datetime=$(date +"%Y%m%d%H%M")
  output_filename="${datetime}.png"

  mv "tmp.png" "$output_filename"

  if curl -v -X PUT "http://harvest-files.soracom.io/pifield_demo/${output_filename}" \
      -H "Content-type: image/png" \
      --data-binary @"${output_filename}"; then
    echo "Image uploaded to SORACOM Harvest Files successfully."
    rm "$output_filename"
  else
    echo "Failed to upload image to SORACOM Harvest Files."
  fi
else
  echo "Failed to capture image."
  rm -f "tmp.png"
fi

sleepi3alarm set "$(date +'%F %H:00:00' --date '+65 minutes')"
shutdown -h now
```

※注意
カメラの設置環境によっては、起動直後に撮影を行うと画像が白飛びすることがあります。`delay_seconds`および`skip_frames`を調整してください。

動作用シェルスクリプトを作成したら実行権限を付与します。
```
$ sudo chmod +x /opt/pifield/capture_upload.sh
```

## サービスファイルの作成
次に、サービスファイルを作成します。

```service:/etc/systemd//system/capture_upload.service
[Service]
ExecStartPre=/bin/sleep 30
ExecStart=/opt/pifield/capture_upload.sh
Restart=always

[Install]
WantedBy=multi-user.target
```

サービスファイルを作成したらサービスファイルを有効化します。
```
$ sudo systemctl daemon-reload
$ sudo systemctl enable capture_upload.service
$ sudo systemctl status capture_upload.service
```

以上でラズパイのセットアップは完了です。`/opt/pifield/capture_upload.sh`が実行されると、USBカメラでの撮影・SORACOM Harvest Filesへのアップロードが行われ、次の起動時間を設定したのち、シャットダウンが行われます。

※注意
SORACOM Harvest Filesへのアップロード時に4G（LTE）回線以外が接続されているとアップロードができません。Wi-FiやLANケーブルでの回線への接続がされていないかご確認ください。

# 屋外への設置準備
動作を確認出来たらラズパイのユニットを[Pi-field Mini]本体のケースに戻します。
また、右端のケーブルグランドからUSBカメラを取り付けます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113974/a7d4778c-0be7-4845-b5d0-b5e553446a10.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113974/36139aae-15be-7470-ee57-2a5e63c258e8.png)

[Pi-field Mini]本体のケースのふたを閉め、ソーラーバッテリユニットを接続します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113974/d038e9be-90e3-0910-f81f-2e7182bb0942.png)

以上で設置準備は完了です。

屋外への設置が完了したら、ソーラーバッテリユニットを起動し、電源供給を開始します。底面のスイッチ（赤枠）を長押し（約3秒）します。
※ SW のねじを外すと、スイッチにアクセスできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113974/1a91b7e5-2dbc-2638-c025-e4c91b6577c2.png)

詳細な起動方法は[こちら](https://mechatrax.com/blog/pifieldmini-how-to-setup/#toc___7)をご参照ください。

# SORACOM Harvest Filesでの確認

SORACOM Harvest Filesにアクセスし、ファイルがアップロードされていることを確認します。
下記のように、起動時とその後毎時00分の画像がアップロードされていれば成功です。

![ucsfqoHwWOoPLEl1731393551_1731393587.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113974/374870e4-ea98-b020-d014-aca3d3c2cfee.jpeg)

ダウンロードして撮影した画像を確認します。弊社の目の前にある福岡タワーを撮影しています。
![202410181001 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113974/5a25ff28-5778-fdb3-b92a-53e52f568a44.png)

1日の画像をGifファイルにしてみました。
![0CypihtViJylDyah1Ukm1731395167-1731395283.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113974/04335013-42f6-8e5c-7942-1d8043eb6855.gif)

# 最後に
「ラズパイ屋外稼動キット[Pi-field]」を使用することで、手軽に屋外でのモニタリングシステムを作成できます。
ご参考になれば幸いです。