ラズパイをVNC Viewerやsshを開くことなく、ボタン1つで遠隔操作してみようという、ものぐさな発想です。
RemoteShutter(リモートシャッター)とはなにかというと……
これ(まぁ、よくできたガジェットです)
iOSやAndroidのカメラをBluetooth経由で操作して撮影しようというもの。
送られる信号はAndroidならスマホ本体のキー(音量ダウン)のクリックに対応するもので、別にカメラじゃなくても、アプリでこのキーに準じた機能を持っていれば操作できます。
例えば、青空文庫のページめくりなど。
なんでこんなものをというと。
ラズパイではこのリモートシャッターの4つのキーイベントを拾うことができます。
UP・DOWN・LONG DOWN・LONG UP
これを使ってラズパイのアプリを操作してみよう…..と。
VNC ViewerやSSHだと都度スマホを開かいないといけないが、その手間を省きます。
BluetoothのドライバーとGitHubにあったBluebuttonをインストール。
1 2 |
$ sudo apt-get install bluetooth $ sudo gem install bluebutton |
Bluetooth の接続
1 |
$ bluetoothctl |
[bluetooth]$ power on
[bluetooth]$ scan on
[NEW] Device XX:XX:XX:XX:XX:XX AB Shutter3
[bluetooth]$ pair XX:XX:XX:XX:XX:XX
[CHG] Device XX:XX:XX:XX:XX:XX Paired: yes
Pairing successful
[AB Shutter3 ]$ trust XX:XX:XX:XX:XX:XX
[CHG] Device FF:FF:1D:14:79:80 Trusted: yes
[AB Shutter3 ]$ quit
trustを実行しておけば、次回からは電源ON(場合によっては、もう1回キークリック)でペアリングされます。
ボタンが押されたときの処理を記述
設定ファイルを作成
1 |
$sudo leafpad ~/.config/bluebutton |
#以下を記述
keyup=echo UP
keydown=echo DOWN
longup=echo LONG UP
longdown=echo LONG DOWN
動作確認
以下を実行するとShutter3からのキーイベントの待ち受け状態になります。
これは、ペアリングしていなくてもOK
1 |
$ sudo bluebutton -d="Shutter3" -c ~/.config/bluebutton |
Try to find device Shutter3…
Device Shutter3 find at /dev/input/event0
Unable to connect to X server
Reading events from /dev/input/event0…
DOWN #押した
UP
DOWN #長押しした
LONG DOWN
UP
LONG UP
以下でもOK
1 |
$ sudo bluebutton -c ~/.config/bluebutton |
で、ペアリングされるとキーイベントを拾ってくれます。
#普通にキーアップ・ダウン
DWON
UP
#長押しのキーアップ・ダウン
DOWN
LONG DOWN
UP
LONG UP
普通のキーアップ・ダウンと長押しのキーアップ・ダウンで2つのシェルスクリプトを操作する場合
DOWNでshell-1起動
LONG DOWNの前にDOWNが発行されるが、shell-1に二重起動禁止を入れておけば、shell-1は2度目のDOWNに反応しない。
次のLONG DOWNでshell-2を起動するようにすればOK
———————————————————————————-
リモートシャッターのキーダウンでアプリ起動(/home/pi/appli.sh)
ボタンイベントとアプリ起動を紐づけます。
bluebuttonの設定
1 |
$sudo leafpad ~/.config/bluebutton |
#以下を記述
keyup=echo UP
keydown=/home/pi/appli.sh
longup=echo LONG UP
longdown=echo LONG DOWN
キーイベントの待ち受け状態にしておく
1 |
$sudo bluebutton -c ~/.config/bluebutton |
リモートシャッターの電源ON(or キーダウン)でペアリング。
リモートシャッターのキーダウンでアプリが起動します。
WisteriaHillが遭遇したエラーと対処
〇
[bluetooth]# scan on
Failed to start discovery: org.bluez.Error.InProgress
sudo apt remove blueman
sudo apt update
sudo apt upgrade
sudo apt-get install blueman
〇
起動するPython内でメッセージボックスにeasyguiライブラリーは使えない
代わりにtkinterのmessageboxを使用
〇
起動するshell内で壁紙書き換え用に
pcmanfm –set-wallpaper /home/pi/wallpaper/nya-ing.png
は使えない(原因調査中)
Error -> デスクトップマネージャーはアクティブではありません(Desktop manager is not active)
pcmanfmの再インストールが必要らしい(まだ試していない)
reinstall pcmanfm through synaptic
運用
Cronに自動起動記述
1 2 3 |
$crontab -e @reboot /home/pi/julius/julius-4.4.2.1/dictation-kit-v4.4/nya/start_bluebutton.sh |
シェルスクリプトに10秒後起動を記述(おまじない、即時実行だとbluebuttonがペアリング対象のShutter3を見失うことがある)
#!/bin/bash
sleep 10
sudo bluebutton -d=”Shutter3″ -c ~/.config/bluebutton
bluebuttonでキー待ち受け状態になっている
リモートシャッターをキークリック
最初のクリックでペアリングされます。
リモートシャッターのキーはどちらでも使えるようですが、機能は一緒です。
で、キーに別の信号を送るように改造された方がいらっしゃいます。
不具合例
QuimatのタッチスクリーンディスプレイをHDMIケーブルで接続時
リモートシャッターを検出できない事例がありました。
bluetoothctlでTouch screenを検出していたが、影響があるのか不明。
もしかしてイレギュラーな現象かもしれないが…….。
こういうこともあるってことか?
Leave a Reply