カメラで撮影してみる
ラズパイ用カメラモジュールをご用意ください。
ケーブルには表裏があります。金属端子が露出している面をレンズ側に向けてください。
カメラモジュールをベゼリーのメガネパーツに差し込みます。
メガネパーツをベゼリーの頭パーツに差し込みます。
カメラケーブルを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()