スキップしてメイン コンテンツに移動

カメラモジュールと画角

OV7670で遊んでいるけど、手に入るモジュールはどれも望遠気味。
 これは、OV7670の素子面積が小さいためだ。 なので12mm径のレンズマウントに対応した焦点距離1.8mmの超広角レンズ(自動車のリアカメラ用)をつけても、画像が歪みまくる割には広角にならない。

手元のレンズ付きモジュール(トラ技頒布カメラA)と、aitendoで入手したレンズ一体型を比べてみた。 

OV7670と手配線FIFO基板、ATmega644P




画角テスト

 画像1 頒布カメラA(付属レンズ)

 画像2 レンズ一体型

VGA RAW解像度で撮ってPCで表示したもの。
比べると、レンズ一体型のほうが広め。 手持ちの画角がわかるGX200で検証したところ、

レンズ一体型 約50mm
頒布カメラA 約72mm

頒布カメラはかなり望遠気味なようだ。 ここでは載せていないけど、FIFO付きのモジュールはさらに望遠だという噂。

参考 GX200 画角50mm VGAで撮影。


参考2 OV7725 (レンズ一体型) レジスタ設定がまだ途中なので露出がうまくいってない。
画角は35mm程だった。

モジュールいろいろ
 
12mmレンズマウント 頒布カメラA (左は頑張ってフード削った)

 レンズ一体型タイプ

レンズ一体型の準備

レンズ一体型はFFCをコネクタに取り付けて、線を引き出す。 24ピンの変換基板を使う。

ピンアサインは、販売元の表どおりだったが、端子部を観察してみると、今回買ったモジュールは、10bit出力用の端子が削られている。

ちなみに、同じHDFという刻印のあるOV7725もピンアサ共通だった。

物によっては、来てるモジュールもある。今回のは変換基板でみたらAGNDとDGNDが導通しているタイプだったけど、ものによってはヒントがなく、泣く泣くチップを剥がしてピンアサを確認することになったり…。

はじめはFFCの端子配列の規則性がよくわからなかったが、2列にしてみると結構わかりやすくまとまっている。

FIFO/マイコン基板用に配線をする。 電源ラインの処理とリセット端子やプルアップ抵抗もつけて、トラ技カメラAにだいたい準拠させる。 

これでコンパチに。


OV7670で経験を積んだら、素子面積が大きいOV7725に移行しようとおもっている。

OV7670だと、aliexpressでもたくさん販売されていて、場合によっては日本で輸入してる店より安いけれど、よく見ると古いリビジョンだったり、ピンアサと掲載画像が適当なことが多いので、日本の店で買ったほうが間違いが少ない。 
 以下は、レンズ一体型モジュール用の変換基板を設計して実装したもの。 ピンアサが共通だったOV7670とOV7725に対応した。 頒布カメラA相当の回路と、オシレータを搭載して、FFCケーブルで延長できる。
 

Popular posts

Arduino Nano Everyを試す

 秋月で売っていたAtmega8と、感光基板でエッチングしたArduino互換ボードを製作してみて、次に本家ボードも買って…  と気が付いたら10年が経過していた。  ハードウェア的な観点では、今は32bitMCUの低価格化、高性能化、低消費電力化が著しい。動作周波数も100MHz超えが当たり前で、30mA程度しか消費しない。  動作電圧範囲が広く、単純な8ビットMCUが不要になることはまだないだろうけど、クラシックなAVRマイコンは値上がりしており、価格競争力は無くなりつつある。 そしてコモディティ化により、公式ボードでは不可能な値付けの安価な互換ボードがたいていの需要を満たすようになってしまった。     Arduino Nano Every https://store.arduino.cc/usa/nano-every https://www.arduino.cc/en/Guide/NANOEvery  そんな中、Arduino本家がリリースした新しいNanoボードの一つ。  他のボード2種はATSAMD21(Cortex-M0+)と無線モジュールを搭載したArduino zero(生産終了済み)ベースのIoT向けボードだが、 Nano EveryはWifi Rev2と同じくAtmega4809を採用していて、安価で5V単電源な8ビットAVRボードだ。  Atmega4809はATmegaと名がついているが、アーキテクチャはXMEGAベースとなり、クラシックAVRとの間にレジスタレベルの互換性は無い。   https://blog.kemushicomputer.com/2018/08/megaavr0.html  もちろん、ArduinoとしてはArduinoAPIのみで記述されたスケッチやライブラリは普通に動作するし、Nano Every用のボードオプションとして、I/Oレジスタ操作についてはAPIでエミュレーションするコンパイルオプション(328Pモード)がある。 公式のMegaAVR0ボードはどれもブートローダーを使わず、オンボードデバッガで直接書き込みを行っている。  ボードを観察...

GPSアンテナをつくる

GPSアンテナを作ってみた。 1575MHzの波長は約19cmなので、半波長で9.5cmとなる。 GHz帯とはいえ、結構長いものだなぁ。 セラミック等の誘電体がなければ、平面アンテナで真面目に半波長アンテナを作ろうとすると手のひらサイズの面積が必要になってしまう。 普通のダイポールだと指向性があるので、交差させてクロスダイポールにする。 屋外地上局のアマチュア衛星用アンテナの設計をそのまま縮小したもの。 水平パターンはややいびつ 92.2mmの真鍮の針金(Φ=0.5mmくらい)を2本用意して、42.3mmで90°に曲げる。 長さの同じ素子同士を並べて配置する。 (全長が半波長より長い素子と短い素子が交差した状態) 片方をアンテナ信号線、もう片方をGNDにつなげば完成。 実際5分くらいでつくったけれど、果たしてどうだろうか。 今回は、道具箱に眠っていた表面実装タイプのMT3339系モジュールに取り付けた。 アンテナはもともと3x1.2mm程度のとても小さいチップアンテナで、 LNAが入っているけど感度が悪かったのでお蔵入りしていた代物。 最近の携帯機器はみなアンテナに厳しい。 さて・・・ クロスダイポール版モジュールをPCでモニタしたウインドウ(左)と、QZ-Rader画面 東側に建物遮蔽があるので、そちら側の衛星はSNが悪い。 とりあえず補足できた衛星数はシミュレーションされたものとほぼおなじだった。 アンテナの角度をいろいろ振って、逆さまにしてもロストすることはなかった。 セラミックのパッチアンテナレベルにはなったかな・・・。 簡単にできてそれなりに測位するけれど、携帯性は皆無になった。 あと、近接周波数の干渉を受けやすいかもしれない。 GPSアンテナのDIY例としては、QFHアンテナもある。 ラジオゾンデなどで使われている例がある。 いつもお世話になっているQFHアンテナ計算シートのサイト https://www.jcoppens.com/ant/qfh/fotos_gps.en.php ヘリカルアンテナは加工精度の難易度が上がるので、今回はクロスダイポールにした。 GNSSとなると、複数の周波数のために調整されているセラミックパッチアンテナが有利だと思う。 セラミックパッチア...

CANトランシーバーを使わずにCAN通信をする

 CANバスの物理層は差動通信で、RS485の様にマルチドロップ接続が可能。  自動車におけるノイズ環境でも通信が成立するように、トランシーバICには様々な対策が施されている。  一方で、基板にマイコンを複数載せて、例えばブロードキャストメッセージを含んだ通信をさせたいとなったとき、ハードウェアとしてデータリンク層にあたるコントローラが実装されていて、メッセージフィルタ等が可能なCANバスは魅力的だ。しかし、長くても1m未満の配線長で差動ドライバのバスを駆動するのは電力的なペナルティが大きい。 CANバスの構成  トランシーバーには5Vレベルと3.3Vレベルの製品があり、車載以外だと省電力化のために3.3Vバスを採用する例があるらしい。(電圧が低いほうがドミナント時の電流は下がるので)製品によってはフォールトトレラントのための様々な機能が付加されている。    トランシーバーをつかわず、UARTの様に単純に接続することもできる。過去にはこのようなアプリケーションノートがあった。 On-Board Communication via CAN without Transceiver https://www.mikrocontroller.net/attachment/28831/siemens_AP2921.pdf CANコントローラの入出力を1線式マルチドロップバスとしてつなぐことで、トランシーバーが無くても通信が可能になる。規格外の使い方ではあるけれど、大幅に単純、かつ省電力になる。 コントローラのみでの接続 R4 MinimaにはCANコントローラーが内蔵されているため、上記アプリケーションノートの様に接続してみた。ダイオード2個と数kΩのプルアップ抵抗だけでサンプルコードの通信ができた。 https://docs.arduino.cc/tutorials/uno-r4-minima/can  とりあえず1Mbpsでも通信できていたけれど、Lowレベルの電位が下がり切っていないので、OD出力のバッファをTXに挟むとよいかもしれない。  R4 Minimaのコントローラのみで通信させている様子(250kbps) https://github.com/sandeepmistry/arduino-CAN/blob/master/API.md ライブラリの実装は以下で確認...

UNO R4 Minimaの仕様を眺める

CANバス内蔵Classicボードたち。 しかし割高になってしまった… Uno R4 Minimaを入手したので遊びつつ、どのような実装になっているのか、仕様を眺めてみた。 UNOは現在のArduino製品の中ではClassic Familyというカテゴリに入っており、歴史的なフォームファクタを継承している。ルネサス製MCUの採用で話題だけれど、5V単電源動作可能なARMマイコンとしては高機能だ。 要点としては、初学者向けのClassicファミリにCortex-M4が降りてきて、内蔵RTC、DAC出力、CANバスといった機能にもAPIレベルで対応しているという点になる。  スペックだけ見ると、反射的に3.3Vで動いてほしいとかいろいろ要望が湧いてくるが、ターゲットはあくまで初心者なのを忘れないようにする。 (いい感じの互換ボードに期待) ボードとピンマップを眺める 公式サイトのボード紹介ページでは、回路図と基板図をAltium365ビューワーで見ることができるようになっていた。回路図で抵抗を選択すると詳細が表示されるし、基板図上の実装と連携して位置をハイライトできたりする。 Minimaの実際の基板には16MHzの水晶は空きパターンとなっている。内蔵オシレーターで動いているようだ。 Minima 回路図 https://docs.arduino.cc/resources/schematics/ABX00080-schematics.pdf Wifi R4回路図 https://docs.arduino.cc/resources/schematics/ABX00087-schematics.pdf MinimaとWifi R4ではソケットに引き出されたSPIバスのマッピングが異なっている。これに伴いCANで使うピンも位置が変わっている。APIが用意されてるのにピンマップ表で表記していないのはボード依存のためかもしれない。 CANを使いたければシールド設計で対処するしかなさそう。  他にも、Minimaのソケットの3.3V出力は、Minimaのデータシートに書いてある通りMCUの内部電圧を生成しているLDOの出力を引き出している。そこまでやるのかというくらい割り切っている。  内部レギュレータから引き出せる電流量はArduinoとしては表向き載っていないけれど、ルネサス...