ラズパイカメラ

カメラで撮影してみる

ラズパイ用カメラモジュールをご用意ください。

ケーブルには表裏があります。金属端子が露出している面をレンズ側に向けてください。

スイッチサイエンス

カメラモジュールをベゼリーのメガネパーツに差し込みます。

メガネパーツをベゼリーの頭パーツに差し込みます。

カメラケーブルをPitchサーボホルダーの細長い穴に通し、ベゼボックスのフタの穴に通します。

ラズパイゼロの場合はケーブルはバックパネルから出します。ただし、ラズパイゼロ用のカメラケーブルは短いので、長いものに変えることをお勧めします。

ケーブルの表裏に注意しつつ、ラズパイに接続してください。

ラズパイの電源を入れてください。「Raspberry Pi の設定」でカメラが「有効」になっていることを確認してください。

サンプルプログラムを実行してみましょう。カメラの画像がディスプレイに表示されたら成功です。

python3 test_camera1.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Test Code : カメラ動作テスト
# カメラの画像をディスプレイに表示する

# モジュールのインポート
import subprocess                     # 外部プロセスを実行 $
import sys

# メインループ
def main():
  try:
    print ("開始します")
    subprocess.call("raspivid -t 0 -rot 180 -f -w 320 -h 240", shell=True)
    # -rot 180 :180度回転
    # -w 320 :横サイズ
    # -h 240 :縦サイズ
  except KeyboardInterrupt:
    print ("  終了しました")
    sys.exit(0)

if __name__ == "__main__":
    main()

写真を撮ってみましょう。数秒経ったらファイルマネージャーを開き、test.jpgを探してクリックしてみてください。

python3 test_still1.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Test Code : カメラ静止画撮影テスト
# カメラで静止画を撮影する。

# モジュールのインポート
from time import sleep
import subprocess                     # 外部プロセスを実行 $
import sys

# メインループ
def main():
    subprocess.call("sudo raspistill -rot 180 -o test.jpg", shell=True)
    # -rot 180 :180度回転
    print ("写真を撮りました")
    sleep(1)
    print ("ファイルマネージャーでtest.jpgを開いてみてください")
    sys.exit(0)

if __name__ == "__main__":
    main()

監視カメラのように撮影しながらベゼリーを動かしてみましょう。終了させたいときは、Ctrl+Cを押してください。

python3 sample_camera1.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*- 
# Sample Code : Camera Moving Test
#

# モジュールのインポート
from  time import sleep                # ウェイト処理
import picamera                        # カメラモジュール
import bezelie                         # べゼリー専用モジュール
import sys

# サーボの準備
bez = bezelie.Control()                # べゼリー操作インスタンスの生成
bez.moveCenter()                       # サーボをセンタリング

# メインループ
def main():
  try:
    with picamera.PiCamera() as camera:
      camera.resolution = (640, 480)   # お使いのディスプレイに合わせて調整してください
      camera.rotation = 180            # 画面が上下逆さまだったらこの行は削除してください。
      camera.start_preview()
      sleep(2)
      head = 0
      while (True):
        bez.moveRoll (1, 10)
        bez.moveYaw (1, 25, 2)
        sleep (0.5)
        bez.moveRoll (1, -10)
        bez.moveYaw (1, -25, 2)
        sleep (0.5)
        head += 10
        if head > 20:
          head = -10
        bez.movePitch (1, head)
  except KeyboardInterrupt:
    print (" 終了します")
    sys.exit(0)

if __name__ == "__main__":
    main()