2017年9月25日月曜日

THETA専用リモコンの作成(PQI Air Pen)

最近360°カメラを使うことが多く、何とかしてスマホを使わずに撮影が出来ないものかと思い調べてみたところ、やっぱり考えることは皆同じなのかサクッと情報が見つかりました。
やり方も簡単でPQIが過去に出したAir Penを準備するだけ。
過去に500円程度で投げ売りされたことも有るらしく、探せば安く手に入れることができるように成っています。
元々は、Wi-Fiを利用してファイルのやり取りをするためのガジェットのようですが、そこはPQI
皆普通に使わずにHackする方向に行った様子で、rootを取るためのPWなんかも割れてしまい、プログラムを書ける人たちが色々と公開してくれています。
それを今回活用してTHETA Sのリモコンにしてみました。

まずは、Air Penを軽く充電します。
充電できたら青色に光っているPの部分が電源なので、長押しして光らせておきます。
 次に、Wi-Fiを拾って接続します。
接続されたら、「192.168.200.1」へアクセスします。
すると、Air Pen内部へアクセスすることが出来ます。
乗っ取り対策として、ココでSSIDとかPWを変えた方が良いようですが、町中でこんなものを乗っ取ろうとする人なんて居ないはずなので、ノーガードにしておきました。
次に、THETAを起動してAir Penと接続させます。
ブラウザの下の方の「Concurrent Mode」の中にある「Scan」を一度押してからSSIDを選択します。
色々飛んでるはずなので、THETAを選んで「Password」の部分に接続のためのPWを入れてあげましょう。
この時点では「Disconnected」に成っているはずなので、一度「Conect」を押しましょう。
すると、ステータスが「Connecting」になるはずです。
ココまで出来たらTHETAもAir Penも電源を切ってOK

次に、適当に転がっていた謎のSDを準備します。

後は先駆者たちの力を借りてSDカードにデータを流し込めばOKです。

MobileHackerz -RICOH THETA HACKS! - 物理リモートシャッターをつくる-
http://mobilehackerz.jp/contents/Review/RICOH_THETA/Remote
こちらから元になるファイル群を貰ってきます。
公開されているファイルではTHETA m15でしか使えないので、次にファイルの一部を書き換えてTHETA S用にします。

Alvinの倉庫-Ricoh THETA S のリモコン-
http://alystra.blogspot.jp/2015/12/ricoh-theta-s.html
こちらのページに書かれているように、先程貰ってきたファイル群の中から「theta_remote.sh」を編集します。
プログラムの知識は皆無なので、ただ書かれている通りに編集するだけなので、内容は一切理解できていません。
#!/bin/sh
# --------------------------------
#   THETA Remote for PQI Air Pen
# --------------------------------
# http://mobilehackerz.jp/ mobilehackerz@gmail.com

ssid=$1
pass=$2

theta_ip=192.168.1.1
theta_port=15740
trigger_port=5211
trigger_gpio=/proc/gpio/gpio22_in

echo 1 > /proc/gpio/gpio23_out
/tmp/www/ftp/sda1/theta/sleepms 100
echo 0 > /proc/gpio/gpio23_out
sleep 1
echo 1 > /proc/gpio/gpio23_out
/tmp/www/ftp/sda1/theta/sleepms 100
echo 0 > /proc/gpio/gpio23_out
sleep 1
echo 1 > /proc/gpio/gpio23_out
/tmp/www/ftp/sda1/theta/sleepms 100
echo 0 > /proc/gpio/gpio23_out

wget="/tmp/www/ftp/sda1/theta/busybox-mips wget -O -"
awk="/tmp/www/ftp/sda1/theta/busybox-mips awk"
prefix="http://127.0.0.1/cgi-bin/cmd"
status=""

while [ 1 ]
do
    sleep 1
    echo Scanning..
    iwlist ath0 scan2file > /tmp/www/aplist.xml
    channel=`$awk -v essid="${ssid}" '\
BEGIN { found=0; } \
/<ESSID>(.*?)<\/ESSID>/ { gsub(/<[^>]*>/,""); gsub(/[ \t]/,""); if ($0 == essid) { found=1; } else { found=0; } } \
/<Channel>(.*?)<\/Channel>/ { gsub(/<[^>]*>/,""); gsub(/[ \t]/,""); if (found == 1) { print $0; } } \
' /tmp/www/aplist.xml`
    if test ${channel} -ne 0
    then
        break
    fi
done
echo Channel ${channel}

cfg -a STA_SSID=${ssid}
cfg -a STA_SECMODE=WPA-PSK
cfg -a STA_PASSWD=${pass}
$wget "${prefix}%3fcmd%3dCONNECT"
cfg -a AP_PRIMARY_CH=${channel} && iwconfig ath0 channel ${channel}


while [ 1 ]
do
    sleep 1
    read status < /tmp/staState
    echo Status ${status}
    if test ${status} = "Connected"
    then
        break
    fi
done

killall "rc"
# /tmp/www/ftp/sda1/theta/theta_proc.sh $theta_ip $theta_port $trigger_port&

sed="/tmp/www/ftp/sda1/theta/busybox-mips sed"
execute="http://192.168.1.1/osc/commands/execute"

while [ 1 ]
do
    # Wait for press button
    trig=1
    while [ $trig -eq 1 ]
    do
        /tmp/www/ftp/sda1/theta/sleepms 50
        read trig < $trigger_gpio
    done
    
    # Shutter
    # /tmp/www/ftp/sda1/theta/ThetaShutterTrig $trigger_port 0
    sid=`$wget $execute --post-data='{"name":"camera.startSession"}'| $sed -e "s/^.*\"sessionId\":\"\([^\"]*\)\".*$/\1/"`
    $wget $execute --post-data="{\"name\":\"camera.takePicture\",\"parameters\":{\"sessionId\":\"${sid}\"}}"
    $wget $execute --post-data="{\"name\":\"camera.closeSession\",\"parameters\":{\"sessionId\":\"${sid}\"}}"

#   # long press?
#   /tmp/www/ftp/sda1/theta/sleepms 500
#   read trig < $trigger_gpio
#   if test ${trig} -eq 0
#   then
#       # bracket shutter
#       /tmp/www/ftp/sda1/theta/ThetaShutterTrig $trigger_port 2000
#       /tmp/www/ftp/sda1/theta/ThetaShutterTrig $trigger_port -2000
#   fi

    # Wait for release button
    while [ $trig -eq 0 ]
    do
        /tmp/www/ftp/sda1/theta/sleepms 50
        read trig < $trigger_gpio
    done
done

難しいことはできる人に任せて、使わせてもらいましょう。修正したファイル群を先程のSDカードに移動しAir Penに刺して、Air PenとTHETAを起動します。
少ししてTHETAのWi-Fiランプが点滅から点灯になれば接続完了しているはずです。
使い方は簡単で、Air Penの横にあるWi-Fiのコネクトに使うためのボタンを押せばシャッターが切れます。

お気にい入りのピザ屋さんで試し撮りして、THETAアプリで編集を掛けた動画を置いておきます。

普通に撮影するとTHETA自体に興味は有るけれど、殆どの人の目線が撮影状況が表示されるスマホに行ってしまうんですよね。
そこで、スマホを無くしてしまうと全員の目線をTHETAに向けることができ、面白い写真が撮りやすくなります。

ちなみに、RICOHが純正のワイヤードリモコンを販売していますが、こちらは色々と加工が必要だったり、リモコン自体が高かったりで微妙なんですよね・・・


上記2つを組み合わせれば自撮り棒に取り付けたTHETAのシャッターを切ることはできるようです。



今回使ったAir Penですが、Amazonのマケプレは高いので、ヤフオク等で見つけたほうが良いかと思われます。
やり取りが面倒であればいいと思いますけども・・・。

0 件のコメント:

コメントを投稿