【Raspberry Pi】chibi:bit(micro:bit)をカメラのシャッターにする

【Raspberry Pi】chibi:bit(micro:bit)をカメラのシャッターにする

公式サイトの作例のchibi:bit(micor:bit)をPiカメラモジュールのシャッターとして利用する電子工作を作成してみました

https://www.raspberrypi.org/learning/microbit-selfies/worksheet/

必要なもの

  • Piカメラモジュール
  • ジャンパーワイヤー(ワニ口-ワニ口)3本(1本でもOK)
  • ジャンパーワイヤー(オス-メス)1本
  • chibi:bit(micro:bit)
  • USBケーブル(USB-A と マイクロUSB-B) データ転送できるタイプ

必要なソフトウェア

chibi:bitをプログラミングする環境が必要です
Pythonで組みたい場合は「mu」、ビジュアルプログラミングなら「JavaScript Blocks Editor」

muのインストール方法

sudo apt-get update
sudo apt-get install mu -y

JavaScript Blocks Editorはブラウザ上で実行できます
JavaScript Blocks Editor

接続方法

公式サイトの図です

【Raspberry Pi】chibi:bit(micro:bit)をカメラのシャッターにする

この図だと、赤と黒のワニ口クリップの先はどこに繋がってるの??と思いますが、これはどこにも接続しません。それぞれを右手、左手で持てば、シャッターが切れる仕組みです。ちなみにchibi:bitの0ピン(赤)とGND(黒)のワニ口クリップはなくてもいいです。その場合は指で直接つまめばOKです

chibi:bitのプログラム

muで以下のプログラムを作成します

from microbit import *

while True:
    if pin0.is_touched():
        display.scroll("say cheese!")
        sleep(500)
        pin1.write_digital(1)
        sleep(5000)
        pin1.write_digital(0)

JavaScript Blocks Editorで作成した同じプログラムです

【Raspberry Pi】chibi:bit(micro:bit)をカメラのシャッターにする

完成したら、chibi:bitにプログラムを書き込みます

Raspberry Piで動かすプログラム

Python 3(IDLE)にこのプログラムを入力します

from picamera import PiCamera
from gpiozero import Button
from time import sleep

button = Button(4, pull_up = False)

with PiCamera() as camera:
    camera.start_preview()
    sleep(5)
    button.wait_for_press()
    camera.capture('selfie.jpg`)
    camera.stop_preview()

実行

動作の流れ

  • Pythonのプログラムを実行します
  • chibi:bitの0ピンにつないでいるワニ口クリックの端を持ちます
  • 写真を撮るタイミングで、chibi:bitのGNDについないでいるワニ口クリップの端を持ちます
  • chibi:bitに「say cheese!」の文字列がスクロール表示されます
  • シャッターが切れて、Pythonプログラムが終了します

では実際に実行です。Pythonプログラムを実行するとカメラが起動して、モニター全体がプレビュー画面になります。ワニ口クリップを両手でつまむと、chibi:bitに「say cheese!」の文字がスクロール表示されました

・・・が、シャッターが切れません。シャッターが切れないと全画面でのプレビューが終わらないため操作ができず、やむなくRaspberry Piの電源を落としました

原因は??

どうやら、chibi:bitをモバイルバッテリーで起動していたのが原因だったようです。Raspberry Piから電源を取るようにしたら、無事シャッターが切れました。

シャッターが切れない場合は全画面プレビューにしていると操作不能になってしまうので、Pythonのプログラムを修正して、プレビュー画面を小さくするようにしました

from picamera import PiCamera
from gpiozero import Button
from time import sleep

button = Button(4, pull_up = False)

with PiCamera() as camera:
    camera.resolution = (640, 480)
    camera.start_preview(fullscreen=False, window = (600, 300, 640, 480))
    sleep(5)
    button.wait_for_press()
    camera.capture('selfie.jpg')
    camera.stop_preview()

このプログラムなら万が一シャッターが切れなくても、操作不能にはなりません。ちなみに撮影された写真はPythonのプログラムと同じディレクトリに保存されます

クリエイティブ・コモンズ・ライセンス
この 作品 は クリエイティブ・コモンズ 表示 – 継承 4.0 国際 ライセンスの下に提供されています。

タイトルとURLをコピーしました