あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

AliExpressの独身の日セールでラズピッピパチモンカメラを買ってみた

Raspberry Pi Advent Calendar 4日目です。

adventar.org

AliExpressの独身の日セール

11月は独身の日とブラックフライデーとで安売りをブッこまれまくってて良くないですね。つい変な買い物をしてしまう〜。

ちょうどこのころ、仕事でラズピッピカメラを擦りまくって若干不足ぎみになったので、ちょっと買い足そうかなと思ってAliExpressみてみたら、まあ色々あったわけですが、なかでもV1カメラがバカみたいな安さで売られていてビビりました。価格はなんと260円くらい。なんでやねん。通常価格の300円でも安すぎる。こんなに安いなら2コ買ってもええやろと思ってポチポチしました。

ja.aliexpress.com

その後、V1カメラ系でフォーカス調整に対応したモデルというものも発見して、使えるのかわからないけどポチってみました。こちらは1000円くらい。

ja.aliexpress.com

着弾。

f:id:Akkiesoft:20211204122649j:plain

V1カメラは丁寧にリボンケーブルまで付属。リボンケーブルだけで200円しても本来おかしくはないのでは。ただし、このカメラモジュールが正規のものとはもちろん思っていないので、大昔に買った正規のやつと比較してみます。左が今回来たもの、右が正規品。基板のパターンがわりと違うっぽいですね。左にはR6、R7のパターンがあります。

f:id:Akkiesoft:20211204123130j:plain

裏側。こちらはほとんど同じ配置に見えますが、左上がちょっと違うみたいです。

f:id:Akkiesoft:20211204123306j:plain

つかえるのか?

Buster環境のraspistillコマンドで撮影してみました。まずは今回来たほうを2つ分。

f:id:Akkiesoft:20211204124438j:plain

f:id:Akkiesoft:20211204125042j:plain

こっちは正規品の方。

f:id:Akkiesoft:20211204124720j:plain

比べてみると、AliExpressからきた方はちょっと青みがかってるっぽいですね。正規品の方のほうが色はあってそうです。ただ、全く使えないということはないので、これで200円ちょっとで遊べるなら全然アリです……やばい。

フォーカス調整対応カメラ

続けてフォーカス調整対応らしいカメラのほう。こちらはPiZeroのCSIポート用に設計されているため、普通のRaspberry Piにつけるなら変換が必要です。持ってないな…と思ったけれど、前に買い間違えたと思っていたケーブル延長アダプターと、変換になるケーブルを組み合わせたら使えました。もしかして購入した当時の自分はこれを想定していたのか??

f:id:Akkiesoft:20211204125845j:plain

普通に撮影するのは問題なくできました。色味も正規品のそれに近いのでクオリティよしですね。

f:id:Akkiesoft:20211204130155j:plain

で、フォーカス調整の方はというと……動きませんでした。CSIにはI2Cが含まれているらしく、/boot/config.txtで有効化してやるとbus0で見えるようになるのですが、コマンドを送り込んでも動く気配がないので、中のモーターが壊れているか、コマンドが違う可能性がありそうでした。

設定の方はi2c_vcの有効化が必要なようですが、i2c_armの有効化も必要そうでした。設定後は要再起動。

$ sudo vi /boot/config.txt

dtparam=i2c_arm=on
dtparam=i2c_vc=on

raspivid -t 0 &などしてバックグラウンドでカメラを動かしっぱなしにしながらi2cdetectコマンドでI2Cバスの0を見ると、以下の通り0x0cが見えます。カメラを止めると見えなくなるので注意。0x36はマスタースレーブの変換らしいのでカメラ用のものではなさそうです。

pi@yamanooku:~/RaspberryPi/Motorized_Focus_Camera $ i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- 0c -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- 36 -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- -- 

フォーカス調整機能きカメラモジュールの同じと思われるものはArduCamというところで売られているようですが、ここの手順を参考にさせてもらっても動かないようでした

www.arducam.com

あるいはI2Cのコマンド表みたいなのも出てきましたが、setしても値は変わらず、getした値もなんかよくわからないけど怪しげ、という感じでした。

www.arducam.com

フーム🤔?

# ズーム?のはず
pi@yamanooku:~ $ sudo i2cset -y 0 0x0c 0x00 0x0898 w
pi@yamanooku:~ $ sudo i2cget -y 0 0x0c 0x00 w
0x0000

# フォーカス?のはず
pi@yamanooku:~ $ sudo i2cset -y 0 0x0c 0x01 0x0898 w
pi@yamanooku:~ $ sudo i2cget -y 0 0x0c 0x01 w
0xff00

# モーターがビジー?
pi@yamanooku:~ $ sudo i2cget -y 0 0x0c 0x04
0xff

PiZeroに直接接続しても変わりないようなので、こちらのカメラモジュールはただの単焦点カメラとして使う感じになりそうです。画質はヨサゲなので良いけど、うーん惜しい……。

まとめ

AliExpressの激安カメラは、色味こそ怪しいっぽいですが、普通にRaspberry Piで使うことができました。画質にこだわるならそもそもHQcamを使ったほうが良いので、写ってOpenCVかなんかで使えればそれで良い人にはアリなソリューションかもしれません。

余談(長い): 最近のRaspberry Pi OSのカメラ事情

カメラと言えば、Raspberry Pi OS Bullseyeからカメラを制御するためのドライバーがlibcameraベースに変更され、今までのものはレガシーとなりました。今までのカメラモジュールはクローズドソースだったのに対して、libcameraはオープンな実装のため、自由度がましていると説明されています。

www.raspberrypi.com

libcameraへの対応自体はだいぶ前から発信されており、ドキュメントでもBullseyeリリース前から予告されていました。

ベーシックなコマンド類が変わるのは別にそれほど大きな変化ではなさそうに見えるので、影響もそれほど大きくはないと思われますが、一方で今まで多くの人が使ってきた(でもRaspberry Pi公式提供のライブラリじゃなかったらしい?)Pythonライブラリであるpicameraが使えなくなってかつ代替のPythonライブラリが開発中で間に合っていないことがカメラユーザーの中で致命的な問題になっており、picameraのIssueでは、Bullseyeで動かないという悲鳴や、Raspberry Pi OSの開発姿勢に疑問を呈されるなどの場外乱闘も勃発しています。私もメダカメラで使ってるので、こいつはBullseyeに移行できなさそうです。

github.com

Bullseyeではカメラの他にもKMS採用など新しいものがいくつか入っており、スムーズに移行できないであろう要素が存在するため、そのあたりを考慮してか、Raspberry Pi OS史上初となる一個前のバージョン(Buster)の最新ビルドが並行してリリースされることとなりました。

www.raspberrypi.com

Pythonでカメラを扱う人たちに関しては、libcamera対応のPythonライブラリが出て移行できる状況が整うまでは、無理にBullseyeを採用せずにBusterにとどまったほうが良さそうです。ただし、上記ブログにもあるとおり、Busterのメンテナンスリリースでは今後の新しいモデル(例えばRaspberry Pi 5とか)には対応しないとのことなので、移行せずに延々Busterを使い続けることも難しそうではあります。Raspberry Pi 5なんてものがいつ出るのかって話ですけど。