ArduinoでCMOSカメラと通信してみる [Arduino]
前回,ArduinoとCMOSカメラを接続しようと思ったのだが,電圧があわなくて接続できず動作させるとことができなかった.
というわけで,レベル変換ICだが,今回は,秋月電子通商の「I2Cバス用双方向電圧レベル変換モジュール(PCA9306)」を購入してみた.
で,こいつの電源だが,Aruduino側は5VなのでArduino側からもらってくればいいんだけど,OV7670側のI2C(厳密にはSCCB)は2.8Vだ.2.8VなんてArduino側にはない.
どうしようか迷ったが,CMOSカメラモジュール内で2.8Vを作ってるので,そこから引き出すことにした.回路図と,CMOSカメラモジュールを見比べながら,2.8Vが引き出せそうなところを探した.
で,下の写真はレンズを外したCMOSカメラモジュールで,赤矢印のところから2.8Vが引き出せる.ここに線材を半田づけして引き出した.
ここまでくれば,あとはCMOSカメラとArduinoを接続するだけだ.とりあえず通信できるかどうか確認するために,I2C(SCCB)に必要なところだけつないでみる.
回路図をfritzingで書いてみた.使いこなせてない&回路図書くことなんて滅多にないので,図が微妙かもしれないが.
で,つないでみた.
あとは,実際に通信してみるのだが,スケッチは,トランジスタ技術SPECIALの「カメラ・モジュールの動かし方と応用製作」にのってるのを使わせてもらった.詳細は本を参照してくださいな.
で,とりあえず,OV7670のレジスタマップを見ながらアドレス0AのProduct IDを読み出してみたら,ちゃんと76が返ってきた.ほかにもレジスタを読み出してみたが,どうやら通信はうまくできているようだ.
よし,次は,画像の取得だ.
ちなみに,画像データはFIFOモジュールと通信することになるのだが,こっちはFIFOの電源電圧が3.3Vだ.ここでもまたレベル変換ICが必要になる.
これについてはまた次回.
というわけで,レベル変換ICだが,今回は,秋月電子通商の「I2Cバス用双方向電圧レベル変換モジュール(PCA9306)」を購入してみた.
で,こいつの電源だが,Aruduino側は5VなのでArduino側からもらってくればいいんだけど,OV7670側のI2C(厳密にはSCCB)は2.8Vだ.2.8VなんてArduino側にはない.
どうしようか迷ったが,CMOSカメラモジュール内で2.8Vを作ってるので,そこから引き出すことにした.回路図と,CMOSカメラモジュールを見比べながら,2.8Vが引き出せそうなところを探した.
で,下の写真はレンズを外したCMOSカメラモジュールで,赤矢印のところから2.8Vが引き出せる.ここに線材を半田づけして引き出した.
ここまでくれば,あとはCMOSカメラとArduinoを接続するだけだ.とりあえず通信できるかどうか確認するために,I2C(SCCB)に必要なところだけつないでみる.
回路図をfritzingで書いてみた.使いこなせてない&回路図書くことなんて滅多にないので,図が微妙かもしれないが.
で,つないでみた.
あとは,実際に通信してみるのだが,スケッチは,トランジスタ技術SPECIALの「カメラ・モジュールの動かし方と応用製作」にのってるのを使わせてもらった.詳細は本を参照してくださいな.
で,とりあえず,OV7670のレジスタマップを見ながらアドレス0AのProduct IDを読み出してみたら,ちゃんと76が返ってきた.ほかにもレジスタを読み出してみたが,どうやら通信はうまくできているようだ.
よし,次は,画像の取得だ.
ちなみに,画像データはFIFOモジュールと通信することになるのだが,こっちはFIFOの電源電圧が3.3Vだ.ここでもまたレベル変換ICが必要になる.
これについてはまた次回.