こんにちは、だーほんです。
Raspberry Piって、パーツの組み合わせ次第で色んな事ができるので面白いですね。
今回は、bluetoothボタンを押すと写真が撮れるように組んでみました。
準備物
- Raspberry Pi 3 Model B+ 1台
- Raspberry Pi 用カメラモジュール
- ABShutter3 (bluetoothボタン)
- 他、電源など
Raspberry Pi OSインストール
久しぶりに新しいSDカードを使おうと思ったら、Raspberry Piの公式ページレイアウトが変わりすぎて迷子になったので、
少しだけセットアップ手順を紹介します。(2021年3月11日時点)
参考: https://www.itmedia.co.jp/news/articles/2006/05/news031.html
- Raspberry Pi 公式ページにアクセス
https://www.raspberrypi.org/ - 上部タブ > Software > Our Software をクリック
- 一番上にある「Install Raspberry Pi OS using Raspberry Pi Imager」から、自分の環境に合うものをダウンロードする
- ダウンロードできた実行ファイルを開き、Raspberry Pi Imagerのインストールを開始する。
- Raspberry Pi Imagerから、FAT32形式にフォーマットした状態のmicroSDカードに直接OSをインストールすれば完了!
その他、初期セットアップ方法については省略します。
やったこと
Raspberry Piとbluetoothボタン
参考:https://miya15.hatenablog.com/entry/2018/11/04/145905
ほとんどは参考サイト通りの手順で行けます。
しかし私はイベント周りで躓いたので、その事例について共有します。
イベントが拾えているか確認する
1.evtestをインストールする。
sudo apt-get install evtest
2.evtestコマンドを実行する。
1 2 3 4 5 6 |
pi@raspberrypi:~ $ sudo evtest No device specified, trying to scan all of /dev/input/event* Available devices: /dev/input/event0: AB Shutter3 Consumer Control ★ /dev/input/event1: AB Shutter3 Keyboard Select the device event number [0-1]: |
「Consumer Control」のほうを選択します。
この場合は0番ですね。
「0」入力後、Enterを押すと「Testing…」と出てきます。
この状態で、bluetoothボタンを押して離すと以下のようなログ?が出てきます。
1 2 3 4 5 6 |
Testing ... (interrupt to exit) Event: time 1615889199.973960, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e9 Event: time 1615889199.973960, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 1 Event: time 1615889199.973960, -------------- SYN_REPORT ------------ Event: time 1615889200.140907, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e9 Event: time 1615889200.140907, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 0 |
「value 1」がボタン押下時。「value 0」がボタンを離したときに出てきます。
bluetoothボタンを押してみる
1.bluebuttonをインストールし、設定ファイルを準備する
前述、参考サイトの通りです。
インストール
1 2 |
$ sudo apt-get install ruby $ sudo gem install bluebutton |
設定ファイルの準備
Raspberry piでファイルを触るなら、個人的にはleafpadコマンドがおすすめです。
メモ帳を触る感覚で編集できます。
Raspbianインストール時にデフォルトで入るらしいのですが、前述のOS導入方法ではコマンドが認識されない…
というわけで、必要な方は sudo apt install leafpad
を実行してインストールしておきましょう。
テキストエディタは好みがわかれると思うので、ぶっちゃけ編集方法はお任せします。
1 2 3 4 5 |
$ leafpad ~/.config/bluebutton keyup=echo UP keydown=echo DOWN longup=echo LONG UP longdown=echo LONG DOWN |
2.bluebuttonコマンドを実行し、ボタン押下時に「DOWN」、離したときに「UP」が出るか確認しましょう!
「-d」オプションで、デバイス名も指定してみました。
1 2 3 4 5 6 |
pi@raspberrypi:~ $ bluebutton -d="Shutter3" -c ~/.config/bluebutton Try to find device Shutter3... Device Shutter3 find at /dev/input/event1 find:↳ AB Shutter3 Keyboard id=7 [slave keyboard (3)] xinput device finded with id=7... Try disable for current X... Reading events from /dev/input/event1... |
・・・あれ?
私はここで、ボタンを押しても反応して貰えなかったのです。
さて、evtestコマンドで動作確認をしたこと、覚えてますか?
あの時、反応してほしかったのは「Consumer Control」であり、「event0」でした。
おわかりいただけただろうか。
なんかこれ、「event1」を拾ってませんか…?
イベントを確認しよう
参考: https://qiita.com/propella/items/a73fc333c95d14d06835
1.参考サイト通り、デバイスファイル名を確認してみる
下記、一部抜粋
1 2 3 4 5 6 7 8 |
pi@raspberrypi:~ $ cat /proc/bus/input/devices I: Bus=0005 Vendor=248a Product=8266 Version=0001 N: Name="AB Shutter3 Consumer Control" ★ H: Handlers=kbd event0 I: Bus=0005 Vendor=248a Product=8266 Version=0001 N: Name="AB Shutter3 Keyboard" ★ H: Handlers=sysrq kbd event1 |
なるほど。
先ほどは「Shutter3」でデバイス名を指定してました。
どうやら、「AB Shutter3 Keyboard」のほうを拾っていたらしく、「event1」にもなっていたんですね。
では、「Consumer Control」をデバイス名に指定しましょう。
1 2 3 4 5 6 7 8 |
pi@raspberrypi:~ $ bluebutton -d="Consumer Control" -c ~/.config/bluebutton Try to find device Consumer Control... Device Consumer Control find at /dev/input/event0 ★ find:↳ AB Shutter3 Consumer Control id=6 [slave keyboard (3)] xinput device finded with id=6... Try disable for current X... Reading events from /dev/input/event0... DOWN ★ UP ★ |
できました!!
「event0」を拾っているし、ボタンを押して離すと「DOWN」「UP」が表示されました。
ついにbluetoothボタンと仲良くなれましたね。めでたし。
Raspberry Piとカメラモジュール
参考: https://www.pc-koubou.jp/magazine/17276
1.電源接続前に、カメラモジュールを接続する。
これ、向きどっちだよ!って、USB刺すときみたいにめっちゃやり直しました。
私が持っていたカメラモジュールとラズパイでは、以下の画像の向きで使えました。
接続出来たら電源を入れてください。
2.カメラモジュールが正常に接続できているか確認
1 2 |
pi@raspberrypi:~ $ vcgencmd get_camera supported=1 detected=1 |
どっちも「1」であれば正常に接続できています。
うまくできなかったら諸々設定などを確認してみてください。
3.コマンドを実行して写真撮影する
sudo raspistill -o image.jpg
を実行します。
すると、ファイルマネージャ(エクスプローラーみたいなやつ)にimage.jpgが保存されています!
これで撮影できるようになったので、あとはボタンを押したときに撮影コマンドが実行されれば目的達成です!やったー!
bluetoothボタンを押して写真撮影
1.bluebuttonの設定ファイルを編集する。
せっかくなので、ボタンを離したときのメッセージも変えてみました。
1 2 3 4 5 |
$ leafpad ~/.config/bluebutton keyup=echo Camera OK! keydown=sudo raspistill -o image.jpg longup=echo LONG UP longdown=echo LONG DOWN |
2.bluebuttonコマンドを実行→ボタンを押して写真撮影する
1 2 3 4 5 6 7 |
pi@raspberrypi:~ $ bluebutton -d="Consumer Control" -c ~/.config/bluebutton Try to find device Consumer Control... Device Consumer Control find at /dev/input/event0 find:↳ AB Shutter3 Consumer Control id=6 [slave keyboard (3)] xinput device finded with id=6... Try disable for current X... Reading events from /dev/input/event0... Camera OK! ★ |
OK!
ちなみに、raspistillコマンドにオプションをつけなければ、コマンド実行から写真を撮りきるまでに5秒程要します。
遅いわ!って思う方はオプション付けて試してみてくださいねー
以上。長くなりましたが、Raspberry Piとbluetoothボタンで写真撮影、でした!
お疲れさまでした。