GoPro+RPI
2019年11月9日 - 未分類
GoPro Hero7をRaspberry Piに接続して利用する方法です。GoProは、屋外で利用することを前提としたアクションカメラです。解像度は高く、4000X3000Pixelもの写真が撮れます。GoProをRaspberry Piに接続して、リモートで画像取得を行うには、ちょっとした工夫が必要です。GoProをUSB接続すると、バッテリーが充電されるので、電池切れの心配がありませんが、USB接続すると、MTPクライアントになってしまい、写真を撮影したりする制御ができません。
そこで、
1.USB Hubの電源供給を止める。すると、MTPクライアントが解除される。
2.WiFiで、GoProに接続する。
3.gopro-py-api で写真を撮影する。
4.WiFiを元のアクセスポイントに戻す。
といった一連の作業が必要です。
先ず、Raspberry PiのUSB電源供給を止めるには、hub-ctl をインストールします。
$ wget http://www.gniibe.org/oitoite/ac-power-control-by-USB-hub/hub-ctrl.c
$ gcc -O2 -o hub-ctrl hub-ctrl.c -lusb
$ sudo chown root:$USER hub-ctrl
$ sudo chmod +s hub-ctrl
$ mv hub-ctrl /usr/local/bin
Raspberry Pi3 B+では、ポートごとの制御ができないようです。ポート2をOFFにすれば、すべてのUSBポートで電源供給が止まります。
$ sudo hub-ctrl -h 0 -P 2 -p 0
これで、GoProは、USB接続されていない状態になります。ただし、これを実行すると、Raspberry PiのUSBポートに接続されているマウスやキーボードも使えなくなるので、ご注意ください。必ず、他のPCからsshでログインしてから行ってください。
次に、WiFiのアクセスポイントを切り替えるには、
$ sudo vi /etc/network/interface.d/wifi
auto lo
iface lo inet loopback
#allow-hotplug eth0
iface eth0 inet manual
allow-hotplug wlan0
mapping wlan0
script /usr/local/bin/apscan.sh
map SSID,home
map GPXXXXXXX,gopro
iface home inet manual
post-up service dhcpcd restart
post-down service dhcpcd restart
iface gopro inet manual
post-up service dhcpcd restart
post-down service dhcpcd restart
として、WiFiでGoProに接続します。
$ sudo ifdown wlan0
$ sudo ifup wlan0=gopro
で切り替わります。しかし、切り替えに少し時間がかかるので、sleep 10を入れます。
$ takephoto.sh
#!/bin/sh
sudo hub-ctrl -h 0 -P 2 -p 0
sudo ifdown wlan0
sudo ifup wlan0=gopro
sleep 10
python3 take_photo_1sec.py > message.txt
sudo hub-ctrl -h 0 -P 2 -p 1
sudo ifdown wlan0
sudo ifup wlan0=home
$ cat message.txt
HERO7 Black
HD7.01.01.70.00
Camera successfully connected!
http://10.5.5.9/videos/DCIM/100GOPRO/GOPR0015.JPG