カメラで撮影してみる

ラズパイ用カメラモジュールをご用意ください。
ケーブルには表裏があります。金属端子が露出している面をレンズ側に向けてください。

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

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

カメラケーブルを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()