71
Raspberry Pi Pico搭載カメラボタンの作り方

大切な瞬間を捉えるのは難しいものです。特に重要なショットの場合はなおさらです。Raspberry Pi Picoを使ってカメラトリガーを自作できたらどうでしょうか?このチュートリアルでは、Raspberry Pi Picoといくつかの部品を使って、シンプルなトリガーを作ります。このプロジェクトのコードは、AdafruitのMicroPythonバージョンであるCircuitPythonで記述されています。CircuitPythonを使うと、Raspberry Pi PicoをUSBデバイス(この場合はマウス)として使うことができます。そして、実際にボタンを押してカメラをトリガーし、写真を撮影することができます。

このプロジェクトは、自然を撮影するのに最適です。Androidデバイスを動物の餌場や水場の近くに設置し、長いUSBケーブルを使えば、動物を驚かせることなく人目につかない場所に隠れることができます。また、カメラから少し離れて撮影する必要がある自撮りやグループポートレートにも役立ちます。

このプロジェクトに必要なもの

  • RP2040ボードならどれでも、PimoroniのTiny 2040を選びました
  • Androidスマートフォン
  • プッシュボタン×1
  • ブレッドボード×1
  • オス-オスのジャンパー線2本
  • AndroidデバイスをRaspberry Pi Picoに接続するためのUSBケーブルとアダプタ

ピコパワーカメラボタン用ハードウェアの構築 

このプロジェクトのハードウェア構成は非常にシンプルで、押しボタン(モーメンタリースイッチとも呼ばれます)を搭載しています。このボタンを押すと2つのGPIOピンが接続されます。この構成では、Picoまたはその他のRP2040ボードにGPIOピンをはんだ付けする必要があります。

1. Raspberry Pi Pico (または RP2040 ボード) を、USB ポートがブレッドボードと反対を向くようにブレッドボードに挿入します。

2.プッシュ ボタンをブレッドボードの中央に来るように挿入します。

3.ブレッドボードを使用して、Pico のGPIO 7 をプッシュボタンの脚に接続します。 

Raspberry Pi Pico搭載カメラボタン

(画像提供:Tom's Hardware)

4.任意の GND ピンをプッシュボタンの同じ側の脚に接続します。

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

Raspberry Pi Pico搭載カメラボタン

(画像提供:Tom's Hardware)

Pico(RP2040ボード)にCircuitPythonをフラッシュする

コードを書く前に、最新バージョンの CircuitPython をボードにフラッシュする必要があります。

1. https://circuitpython.org/downloadsにアクセスし、RP2040ボードを検索します。今回の場合はTiny 2040でした。 

Raspberry Pi Pico搭載カメラボタン

(画像提供:Tom's Hardware)

2.お使いのボード用のCircuitPythonの最新の安定バージョンをダウンロードします。執筆時点では6.3です。

3. PicoのBOOTSEL / BOOTボタンを押しながら、Raspberry Pi PicoをコンピューターのUSBポートに接続します。新しいドライブ「RPI-RP2」が表示されます。

4.ダウンロードしたUF2ファイルをこのドライブにコピーします。しばらくすると、ドライブにCIRCUITPYと表示され、インストールが成功したことが確認できます。

5. CircuitPython ライブラリページにアクセスし、お使いのバージョンの CircuitPython 用のバンドルをダウンロードします。この記事の執筆時点ではバージョン 6.3 だったので、6.x 用のバンドルをダウンロードしました。 

Raspberry Pi Pico搭載カメラボタン

(画像提供:Tom's Hardware)

6.ダウンロードした内容をフォルダーに抽出し、そのフォルダーを開きます。

7. フォルダ内にはlibというサブフォルダがあります。libフォルダを開くと、CircuitPython のすべてのライブラリが表示されます。

8.ここからadafruit_hidフォルダをCIRCUITPYドライブのlibフォルダにコピーします。CIRCUITPYドライブに/libフォルダがない場合は作成してください。

ハードウェアのセットアップが完了し、ボードのプログラミング準備が整いました。このプロジェクトのコードは、Mu、Thonny、またはVisual Studio Codeで記述できます。 

Pico 搭載カメラのボタンをプログラミングする 

1. CIRCUITPYドライブにあるcode.pyを開きます。これはボードの電源投入時に毎回実行されるコードです。現在はPythonシェルに「Hello World」と表示されるだけのシンプルなコードです。このコードを削除してください。

2.事前に記述されたコードのライブラリを3つインポートします。1つ目はtimeで、コードに遅延を追加するために使用します。2つ目はusb_hidで、 Raspberry Pi PicoをUSBデバイスのように動作させるように設定します。3つ目はadafruit_hid.mouseで、AndroidデバイスにUSBマウスが接続されていることを認識させるために使用します。 

import time
import usb_hid
from adafruit_hid.mouse import Mouse

3.さらに2つのライブラリをインポートします。BoardGPIOの制御と通信に使用します。最後のライブラリはdigitalioで、 GPIOピンのステータスを設定するために使用されます。 

import board
from digitalio import DigitalInOut, Direction, Pull

4.マウスの動きとボタンのクリックをシミュレートするために使用する オブジェクトmouseを作成します。

mouse = Mouse(usb_hid.devices)

5. GPIO 7に接続されたプッシュボタンを入力に設定し、ピンの状態をアップに設定します。これにより、ピンは「オン」(True)に設定され、ボタンを押すとピンがGNDに接続され、実質的にピンがロー(オフ/False)になり、写真撮影のトリガーとなります。 

button = DigitalInOut(board.GP7)
button.direction = Direction.INPUT
button.pull = Pull.UP

6.コードに2秒間の一時停止を追加し、マウスポインタを水平軸(x)に沿って380ピクセル移動するように指示します。垂直軸(y)は0のままです。これにより、マウスカーソルが画面上を移動し、カメラアプリのトリガーボタンの位置に移動します。この値はAndroidデバイスに合わせて調整する必要があります。 

time.sleep(2)
mouse.move(x=380, y=0)

7.コードを継続的に実行するループを作成します。ループ内では、プッシュボタンに接続されたGPIOピンの値をチェックする条件付きテストを使用します。 

while True: if button.value == False:

8.ボタンが押された場合、トリガー/シャッターボタン上でマウスの左ボタンを押して写真を撮影するコードをトリガーするように条件を記述します。0.1秒の短い一時停止により、ボタンの誤クリックを防止します。 

 mouse.click(Mouse.LEFT_BUTTON) time.sleep(0.1)

9.ボタンが押されていないときにトリガーされるelse 条件を記述し、単純にpassを使用して中断せずにループを回します。 

else: pass

10.コードを保存すると、ボードが自動的にコードを起動します。数秒後、マウスカーソルが右に移動します。プッシュボタンを押すと、マウスの左ボタンが押されたことになります。 

ピコパワーカメラボタンの完全なコードリスト 

import time
import usb_hid
from adafruit_hid.mouse import Mouse
import board
from digitalio import DigitalInOut, Direction, Pull mouse = Mouse(usb_hid.devices) button = DigitalInOut(board.GP7)
button.direction = Direction.INPUT
button.pull = Pull.UP
time.sleep(2)
mouse.move(x=380, y=0)
while True: if button.value == False: mouse.click(Mouse.LEFT_BUTTON) time.sleep(0.1) else: pass

ピコパワーカメラボタンの使用

これはAndroidデバイスによって異なります。私たちの場合、AndroidはUSB-C対応で、Tiny 2040もUSB-C接続を使用しています。USB-C-USB-Cケーブルを使用し、携帯電話からTiny 2040に電源を供給しました。

1.携帯電話を横向きにしてカメラ アプリを開きます。

2. Raspberry Pi Pico または RP2040 ボードを接続します。 

マウスカーソルは画面の右側に移動し、カメラアプリのシャッターボタンまたはトリガーボタンの上かその近くに表示されるはずです。そうでない場合は、Raspberry Pi Picoを取り外し、コードを編集してmouse.move (x=380, y=0)のx軸にピクセルを追加または削除し、保存してからPicoをスマートフォンに接続してください。満足のいく結果が得られるまでこのプロセスを繰り返してください。

3.カメラアプリで撮影位置を調整します

4. 準備ができたら、プッシュボタンを押して写真を撮ります。