52
Raspberry Piボディカメラの作り方

リアルな一人称視点の動画の力に勝るものはありません。自宅で子供やペットと遊んでいる時、ボディカメラを装着すれば、スマートフォンに顔を映すことなく、特別な思い出を残すことができます。また、抗議活動に参加して、誰かの不正行為を記録したい場合にも、ボディカメラは最適です。

わざわざ専用のボディカメラを購入することもできますが、Raspberry Pi Zero Wと安価な部品をいくつか組み合わせれば、簡単に作ることができます。ただし、抗議活動に参加する場合は、できるだけ目立たず、威圧感を与えないような設置を心がけてください。ジャケットからコードやダクトテープがはみ出ていると、周囲の人に誤解を与える可能性があります。この記事の写真は、ボディカメラらしく見せるための最良の方法ですが、もっとコンパクトで威圧感の少ないものにすることもできます。

Raspberry Piボディカメラを作るために必要なもの

  • ラズベリーパイゼロW 
  • Raspberry Pi OSを搭載したmicroSDカード
  • Raspberry Pi Zero 公式ケース
  • Raspberry Pi カメラモジュール。Pi Zero は他の Pi よりも細いカメラケーブルを使用していることに注意してください。
  • メス-メスのジャンパー線
  • USBパワーバンク
  • Pi Zero WにGPIOピンを取り付けるためのはんだごてまたはPimoroni Hammerhead
  • 瞬間押しボタン1つ
  • モバイルホットスポットまたはホットスポットモードになる携帯電話
  • 両面テープと粘着テープ

Raspberry Pi ボディカメラのハードウェア設定 

Raspberry Pi Zeroで駆動するボディカメラ

(画像提供:Tom's Hardware)

1. Raspberry Pi Zero WのGPIO 16とGNDに2本のワイヤを接続します。ワイヤをはんだ付けするか、Pimoroniのハンマーヘッダーを使用してGPIOピンをPi Zero Wに接続することができます。Zero WHとして知られる、はんだ付け済みのRaspberry Pi Zero Wも販売されています。 

Raspberry Pi Zeroで駆動するボディカメラ

GPIO 接続(画像提供: Tom's Hardware)

 2 本のメス - メスのジャンパー ワイヤと 2 ピン プッシュ ボタンを使用して、GPIO16 と GND をボタンに接続します。 

Raspberry Pi Zeroで駆動するボディカメラ

(画像提供:Tom's Hardware)

2.テープか熱収縮チューブを使って接続部分を整理します。ボタンとワイヤーがしっかりと固定されるようにテープを巻きます。

Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。

3.アダプタを使用して、カメラモジュールをRaspberry Pi Zero Wのカメラスロットに挿入します。ケーブルが正しく挿入され、固定されていることを確認してください。Raspberry Pi Zero Wの純正ケースを使用する場合は、リボンケーブルをケース底面のスロットに通してください。
 

Raspberry Pi Zeroで駆動するボディカメラ

(画像提供:Tom's Hardware)

Raspberry Pi ボディカメラのソフトウェア設定 

 4.周辺機器を接続した状態でRaspberry Pi Zero Wを起動します。microSDカードをお持ちでない場合は、Raspberry Piの初回セットアップ方法に関する記事をご覧ください。

5.モバイルホットスポットをオンにするか、携帯電話をアクセスポイントとして設定します。アクセスポイント名とパスワードをメモしておいてください。

6. Raspberry Pi をWi-Fi 経由でホットスポットに接続します。

7. Raspberry Pi OSでカメラモジュールを有効にします。「Preferences」>>「Raspberry Pi Configuration」に移動し、「Interfaces」タブをクリックしてカメラインターフェースが有効になっていることを確認してください。設定を有効にするには、Raspberry Piを再起動してください。

Raspberry Pi Zeroで駆動するボディカメラ

(画像提供:Tom's Hardware)

8.コマンドプロンプトで次のコマンドを入力して、Python 3 用の Dropbox ライブラリをインストールします。

sudo pip3 install dropbox

Raspberry Pi Zeroで駆動するボディカメラ

(画像提供:Tom's Hardware)

9.ブラウザでDropbox Developers (www.dropbox.com/developers)に移動し、 「アプリの作成」をクリックしてサインインします。Dropbox アカウントをまだお持ちでない場合は、アカウントを登録 (2GB の基本プランは無料) してから、このページに戻ります。

10. Dropbox APIとアプリフォルダへのアクセスを選択します。アプリに名前を付けて、動画ファイルを保存するためのフォルダを作成し、「アプリを作成」をクリックします。 

Raspberry Pi Zeroで駆動するボディカメラ

(画像提供:Tom's Hardware)

新しい画面が表示されます。

11. [生成されたアクセス トークン] の下の[生成] をクリックし、このトークンを後で参照できるように予備のテキスト ドキュメントにコピーします。

Raspberry Pi Zeroで駆動するボディカメラ

(画像提供:Tom's Hardware)

Raspberry Pi ボディカメラ用 Python スクリプトのコーディング 

12. Raspberry Pi プログラミング メニューにあるGeany IDE を開きます。

13.以下のコードを入力します。Pythonの最初の行はPython3インタープリターの場所です。これは、ターミナルからコードを実行するために必要です。 

#!/usr/bin/python3

14.基本 IO、プッシュ ボタン、カメラ、日付/時刻、Dropbox のサポートを追加するには、 次のライブラリをインポートします。

import io
from gpiozero import Button
import picamera
from datetime import datetime
import dropbox

15. Dropboxトークンをコードに貼り付け、「token」という変数に代入します。すると、このトークンを使ってDropboxへの接続が認証に使用されます。 

token = "DROPBOX TOKEN HERE"
dbx = dropbox.Dropbox(token)

16. GPIO 16に接続されたボタンをコードにリンクするために使用する オブジェクト「trigger」を作成します。

trigger = Button(16)

17. Raspberry Pi カメラへの接続を作成し解像度を 720p に設定します

camera = picamera.PiCamera()
camera.resolution = (1280, 720)

18.録画ストリームを作成します。ストリームは、ボタンが押される前のイベントを記録する循環バッファを作成するために使用されます。ここでは、カメラに起動の2分前に録画するように指示します。ストリームはh264ファイルに記録されます。 

stream = picamera.PiCameraCircularIO(camera, seconds=120)
camera.start_recording(stream, format='h264')

19.インデントされたコードを実行しようとするtry ステートメントを追加します。この場合、ループで開始され、その中のコードを継続的に実行します。 

try: while True:

20.遅延を作成し、ループが繰り返されるたびにカメラを 1 秒間待機させます。 

camera.wait_recording(1)

21.トリガーのif条件を作成し現在の日時を設定します。これは後でタイムスタンプとして使用されます。ユーザーがボタンを押すと、このif条件によってビデオキャプチャのプロセスが開始されます。 

 if trigger.is_pressed: now = datetime.now()

22.レコーダーがトリガーされたことを示すメッセージを端末に出力し、記録時間を120 秒に設定します。

 print("ACTION") camera.wait_recording(120)

23.ビデオストリームをファイルに保存するためのコードを追加します。タイムスタンプをファイル名として使用し、ファイル形式を追加して有効なファイルを作成します。ユーザーに通知する別のメッセージが表示されます。 

 stream.copy_to(str(now)+'.h264') print("Stream saved to disk...will upload to Dropbox")

24.以下のコードを追加すると、スクリプトが新しく作成されたビデオファイルを読み取り専用モードで開き、Dropbox にアップロードして、同じ名前のファイルを上書きできるようになります。完了すると、ターミナルにメッセージが表示されます。 

with open(str(now)+'.h264',"rb") as data: dbx.files_upload(data.read(),'/'+str(now)+'.h264',mute=True, mode=dropbox.files.WriteMode.overwrite) print("File uploaded to Dropbox")

25.ユーザーがコードの実行を停止したときにカメラの録画を停止するため の最後の 2 行のコードを作成します。

finally:
camera.stop_recording()

26.スクリプトをvideo-recorder.py として保存し、Geany を閉じます。