皆さん、こんにちは。
今回はnucleof401reとov7670で動体カメラに挑戦(高FPS化を目指す)してみました。
前々回ほど前にov7670を使って画像取得をしましたが(こちら)

0.5FPS以下であり
これではあまりにも一枚の画像取得に時間をかけ過ぎてしまい、クアッドコプターに積んでもタダのゴミと化してまいます。
そこで、今回はDMA転送で高FPS化を目指し速い動きもしっかり撮らえられるようにしたいと思います。


TIM/DMA転送

今回はov7670から8bitパラレルインタフェースで画像データをPCLKのタイミングで取得するのでTIM/DMAを使ってみました。
 

そもそもTIMとはタイマーの事なのですが イ  ンプットキャプチャ(Input Capture)機能を使う事により設定したトリガが発生すると、その時点でのカウント値をキャプチャレジスタへ格納する事が可能でピリオドを1に設定すれば立ち下がりエッジ毎に設定した入力ポートから指定した配列等に転送可能です。
ですがov7670はHREFがhighの時のみデータが有効でそれ以外は無効データが出力されます。
もっと言うとVSYNCのタイミングでDMA要求をしなければフレームがずれてしまいます。
なので、NANDを使ってHREFがhighでかつPCLKがlowの時だけに0が出力されるように論理回路を組みVSYNCの割り込みでDMA要求をさせるようにしました。
VSYNCの割り込みは最初のタイミングさえ合えばいいので、DMA要求後は割り込みを禁止させます。
また、今回はSPI LCDを使います。
image

こちらもDMA転送でSPI通信をさせました。
タッチパネルの機能等は今回は使いませんが、余裕が出来たら弄ってみたいと思います。

途中、フレームの大きさが合わず画像が壊れてしまったりしてしまいました…

image


しばらくして……………






image

ついにDMAで画像取得に成功しました!
https://youtu.be/_py5fvrtjL0
これなら余裕で動体カメラとして使えそうです

今後はハフ変換等の画像解析のプログラムを組んでいこうと思います。ではまた、

〈追記〉
ov7670のDMA転送プログラムを公開しました。良かったら参考までに…

https://developer.mbed.org/users/tmnt/code/ov7670_dma_nucleo_f4/

お久しぶりです。今回はクアッドコプターの機体の進捗について書いていきたいと思います。



aliexpressで購入したものが届きました!
image



ESCにXT60を無理やりつけて…
image



そうこうしている間にフレームが届いてました
image



早速届いた部品を組み立ててみました
(結束バンド乱用注意)
image


せっかく組み立てたのでブラシレスモータ回そうと思ったのですが、ブラシレスモータとESCの接続に使うゴールドブレットピンがなかなか届かない!!



1ヶ月後………



ついに届きました!
image




どうやら、ブレットという意味が弾丸を表す意味であったみたいで税関で止められていたようです(勘違い甚だしい…)





ESCにゴールドブレットピンを付けて、、
image


接続完了!!
image


最後に仮で足(割り箸)をつけました
image


これでやっと動かせる!!…ということでnucleof401reで早速20ms周期のPWMを出力させ…


動いたー!!!https://youtu.be/-Pf2kdDB4mU
励起音が堪らなくいいですね。

次はジャイロセンサや三軸加速度センサを使って姿勢制御してみたいと思います!

ではまた

5
こんにちは、TMNTです。
クアッドコプターが作りたくなったため、今回はその準備について書いていきます。
僕が目指すクアッドコプターは自立制御されたクアッドコプターを作る事です。そのために、今回は触ったことの無いカメラモジュールとLCDを使ってみます。
image

image

マイコンはATMEGA1284p
カメラモジュールはヤフオクで安く売ってたov7670
LCDはaitendoで売っていたZY-FGD1442701V1を使いました。

まずカラーLCDですが扱ったことが無いのでてこずりました。最初は砂嵐ばかりでした。
image


なんとか原因がわかって無事任意の色を表示できるようになりました。
image


次はカメラモジュールですがsccb通信がうまく成功せず、これもなかなかてこずりました。
そして2週間かかりようやく表示できた画像がこちら
image


見た通りめちゃくちゃ画質がわるく白飛びしまくりで色合いも最悪だったので初期設定を色々弄りました。
露出時間を短くしたり、AGCの最大値変えたり、ナイトモード有効にしたり…

色々模索した結果、露出時間40~20でAGC最大値2倍、ナイトモード有効の設定が一番画質と色合いが良かったです。
image


nucleof401reでの動作確認

これらを利用して特定の位置の色識別ができました。今後、これを応用して球体だけの色を識別する機能や球体等の移動方向を検出できる機能を付けられるようにしていこうと思います。


↑このページのトップヘ