基板設計初心者がカメラモジュールプロトタイプを作ってみた

この記事は趣味で宇宙開発をしている団体「リーマンサット・プロジェクト」がお送りする新春アドベントカレンダーです。

## Who am I?
 - 普段は某電機メーカーで研究開発のお仕事に従事してます。現在はマネジメント系のお仕事が中心ですが、
 たまにPythonやJava、Rでデータ処理のコードを書いたりしている、どちらかと言えばITとか情報処理系の人間です。
 - 学生時代(20年以上前ですが)の専攻は機械工学でした。  
 でも配属研究室は情報工学寄りで、今でいうところの機械学習(特に強化学習)の研究に関わっていました。
 - リーマンサット活動歴は3年ちょっとです。プロジェクトマネジメント系のチームに所属し、 
 工程作成から各種試験、構造解析、打ち上げ審査のためのドキュメント作成、勉強会の運営まで、いろんな「雑用」をしています。

## 試作のきっかけ
 仕事では、基板設計とかハード開発の経験は全くありません。
ですが、元々工作は好きで、ちょっとやってみたいという思いがあり、挑戦してみることにしました。
 今回試作するのは人工衛星「RSP-02」に搭載する「カメラモジュール」のプロトタイプです。

## RSP-02のミッション
 現在開発中の超小型人工衛星「RSP-02」は、10㎝四方の衛星（親衛星）からさらに小さい「フェムトサット」(子衛星)を放出して、以下の実証を行うことをミッションとしています。
- 宇宙ポスト(皆さんから集めた「願いごと」をデータ化し宇宙に届ける)
- 放出した「フェムトサット」衛星群を発光させて人工星座に見立て、親衛星に搭載したカメラで撮影する
- 衛星間（親衛星と子衛星の間）中継通信の実証
- 国際宇宙ステーション(ISS)を撮影する  
  
  親衛星からフェムトサットが放出されるイメージはこんな感じです
![mission.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333975/f634b8f5-e750-e4e1-11ec-aaa473bd35f5.jpeg)


## 試作の目的
上記のミッションを実現するために、「RSP-02」の親衛星には、カメラモジュールを搭載する必要があります。  
市販されているカメラモジュールには例えば以下のものがあります。
https://www.csun.co.jp/SHOP/2017022801.html
30万画素のカメラを搭載し、バッファメモリICを搭載しています。
これを使用するという選択肢もあるのですが、解像度が低いのが難点です。
そのため、より高解像度の高いカメラ＋バッファメモリICの構成で撮影動作可能かを検証するために、カメラモジュールのプロトタイプを製作することにしました。

## 試作プロトタイプの構成
試作したプロトタイプの構成は以下の図のとおりです。
![カメラモジュールプロト基板(OV2640+FIFO).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333975/ba62eaa5-b409-198e-29b8-eed90b60186b.jpeg)

- OV2640カメラモジュール:
  カメラ(OV2640)とクロック発振器を搭載したモジュール。200万画素、JPG出力可能、バッファメモリなし、5V駆動

- バッファメモリIC(AL422B):
記憶デバイス（SDカード）に記憶する前に一時的に撮影データを記憶し、カメラとメインマイコンの間の処理速度の差を吸収するためのメモリです。

- 論理IC（ANDゲート）:
カメラモジュールから出力される水平同期信号(HREF)と画素読み出しクロック(PCLK)のANDをとって、FIFOメモリの書き込みクロック(WCK)とします。
    低遅延時間(5ns以下)のICを使用します。
- nucleo L476RG：
STM32マイコンの開発を今すぐ始められる開発ボードです。
- SDカードシールド

 今回は、図の中の「制作基板」が自作対象であり、回路設計と実装を以下に進めていきます。

## 回路図
KiCADというプリント基板CADを使って設計図を製作しています。
http://kicad.jp/
KiCADを使うのは初めての体験です。  
KiCADは複数のソフトウェアから構成されており、回路図エディタEeschemaというソフトを使って回路図を設計します。 
作成した回路図は以下です。入出力ピンとバッファメモリのピン、論理ICの入出力との対応付けを行います。
![回路図.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333975/8af066b3-461d-5b6c-5a9e-7b0e41902814.jpeg)

こちらの回路図を参考にしました。
https://www.csun.co.jp/SHOP/2017022801.html  

## 部品の配置と配線
基板エディタPcbnewを用いて、回路図に基づいて部品の配置と配線の設計を行います。本来は基板メーカに製造してもらうためにプリントパターンを作成するのですが、今回はユニバーサル基板を用いて自作するので、基板メーカには発注しません。部品の配置と配線の確認をするのが目的です。
![実装.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333975/a2d9fe63-619d-4839-8419-41e9593916b8.jpeg)

## 完成品
以下です。本当は制作基板は一枚のユニバーサル基板上に載せたかったのですが、後で論理ICを別の部品に置き換えることになったので、泣く泣く別の基板に実装しました。
![制作回路.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333975/54e714c9-62ad-972e-df59-2f03bf390ce3.jpeg)


裏面はこんな感じです。配線ぐちゃぐちゃ。スズめっき線を使えばよかったと後で反省しました。
![裏面.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333975/0f21f691-01e6-53e7-65eb-a8091c6a84c2.jpeg)


## ソフトウェア
フローチャートは以下です。ソフトウェアはおなじリーマンサットのメンバであるUさんに開発してもらいました。感謝です！  
![フローチャート.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333975/f16babce-6181-986c-f64e-d46ff3c84203.jpeg)


## 撮影画像
撮影した画像はこんな感じ。JPG画像がSDカードに保存されることを確認できました。
![00000002.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333975/1a61985a-35dd-c701-72ee-8bbfb1b2070b.jpeg)


## おわりに
 まだいろいろ課題はありますが、まずは一歩前進といったところです。
こんな感じでリーマンサットでは初心者でもいろんなことに挑戦できますので、興味のあるかたの参加をお待ちしております！
  
 次回は@rsp-dgkz さんによる「今年のショートケーキは役に立つはず」です！
お楽しみに！！