見出し画像

Arducam imx519のフォーカス制御を試す

前回記事に引き続き、imx519のマニュアルフォーカス制御について簡単にまとめておきます。

やり方

とりあえず、使えそうなソースが公式にあるので拾ってきます。

cd ~
wget https://github.com/ArduCAM/Arducam-Pivariety-V4L2-Driver/raw/master/focus/Focuser.py
wget https://github.com/ArduCAM/Arducam-Pivariety-V4L2-Driver/raw/master/focus/v4l2_utils.py

前回作ったスクリプトを改良します。(Focuser.py,v4l2_utils.pyと同じディレクトリにスクリプトを作成して下さい。)
focuser.set(Focuser.OPT_FOCUS,xxx)でフォーカス値をセットできます。
xxxの範囲は0~4095です。
反映までラグがあるのでセットしたら適当なsleepが必要。
現在の値がほしい場合はfocuser.get(Focuser.OPT_FOCUS)で取得できます。

#2022315日にpicamera2の大幅な変更があったので一部修正しました
#from picamera2 import *
from picamera2.picamera2 import *
#from null_preview import *
from time import sleep
from Focuser import Focuser

picam2 = Picamera2()
picam2.start_preview()
#preview = NullPreview(picam2)
preview_config = picam2.preview_configuration()
capture_config = picam2.still_configuration()

picam2.configure(preview_config)
picam2.start()
focuser = Focuser('/dev/v4l-subdev1')
sleep(2)

focuser.set(Focuser.OPT_FOCUS,1700) 
sleep(0.5)
picam2.switch_mode_and_capture_file(capture_config, "test1.jpg")
focuser.set(Focuser.OPT_FOCUS,4095)
sleep(0.5)
picam2.switch_mode_and_capture_file(capture_config, "test2.jpg") 

また、実行時にFocuser.pyで「KeyError: 'default'」が発生する場合がありました。以前確認した時は出なかったので、imx519のドライババージョンとかによるものかもしれないです。

とりあえずFOCUSのデフォルト値を定義するキーが見つからないっぽい・・・
v4l2_utils.pyを実行するとキーは'default'ではなく'default_value'で定義されていることがわかります。

なのでFocuser.pyを開いてdefault_valueに修正すると動くようになります。

撮った写真はこんな感じです。
意外と接写できます。

フォーカス値1700
フォーカス値4095
(カメラから5cmくらいの距離)

ArducamカメラのサンプルコードはGitにも上げておきます。

忙しい人向け

忙しい人は下記でお試しください。

git clone https://github.com/ArcanaMfg/Arducam.git
python Arducam/ManualFocusTest/FocusTest.py

以上、Arducam imx519のフォーカス制御の紹介でした。

よろしければこちらの記事も参考にしてください。


この記事が参加している募集

やってみた

企業のnote

with note pro

この記事が気に入ったらサポートをしてみませんか?