※この記事は、Hackaday Prize 2022 のエントリー記事の和訳版です。
開発中のプロジェクトのため、随時更新します。
この記事がTom"s HARDWAREという海外のテック系サイトで紹介されました ----> リンク
DESCRIPTION
動画撮影はとても楽しくて便利です。今でこそスマートフォンで手軽に楽しめますが、私たちが生まれる前はもっと難しいテクニックが必要だった様です。
動画が手軽に撮れるというのはとても貴重なことですが、その楽しさが少し失われているような気もします。
今回のプロジェクトでは、70年前に製造された8ミリビデオカメラを改造して、デジタル撮影を行う予定です。
少し不便ではありますが、撮影の楽しさを味わえる装置として復活させる予定です。
DETAILS
このプロジェクトで改造したカメラは、Bell & Howell の Magazine-loading 8mm camera model 172です。1950年代に制作されたカメラで、ダブル8という規格のフィルムを使用しています。フィルム送りやシャッターの動力はゼンマイ式で、一度ゼンマイを巻き上げると16fpsで約35秒の撮影ができます。また、一本のフィルムは往復撮影ができ、片面100秒程度の録画ができます。
もちろん自動制御できる項目は一つもなくて、絞りとフォーカスはレンズで操作、露出時間はフレームレートと連動して固定されています。
プレビューは見えず、ファインダーもとても小さいため、思い通りの動画を撮影するにはテクニックが必要です。
もちろん私は8mmフィルムでの撮影などしたことはありませんが、現像するまで結果が判らないびっくり箱の様な楽しさを再現するのがこのプロジェクトの目的です。
FILES
※ここだけ書きかけ
COMPONENTS
1 x Bell & Howell Magazine-loading 8mm camera model172
1 x raspberry Pi Zero 2 W
1 x Arducam for Raspberry Pi Zero Camera Module (OB5647)
1 x USB rechargeable 6P Battry
部品リスト、3Dデータ、プログラムはGitHubで近日公開予定です。
PROJECTLOGS
カメラ到着
購入したカメラが到着しましたので確認します。
カメラには二本のレンズがついていて、標準レンズとワイドレンズの様です。レンズはターレット式で、ノブを引っ張って回転させるとレンズを交換できます。
ズームレンズが無い当時、素早くレンズ交換するための良い工夫です。
メインのレンズの横にはファインダー用の小さなレンズも装備されているため、メインレンズと同じ様な視野を確認できます。
ゼンマイを巻いて、前面のラッチを引き下げるとシャッターが動きました。70年前のカメラですがとても好調に動きます。
@youtube
フレームレートはダイヤルを回す16~64FPSまで変更できます。測定はできませんが、ダイヤルを回すと音が変わるためフレームレートが変わっているのが判ります。
側面にあるロックをはずすとドアが開きます。フィルムは金属製のマガジンにあらかじめセットしておき、マガジンごと変更する様です。当時主流だったオープンリール式と比べるととても便利で当時としても革新的だったのではないでしょうか。
このフィルムマガジンと同じ形状のデジタル撮影ユニットを制作すれば、カメラの機能を保持したままデジタル化できそうです。
システム検討
カメラの確認ができたので、システムの概要を考えてみました。
・大きさはフィルムマガジンと同じ。
・カメラ、制御用のマイコンもしくはSBC、記録メディア、バッテリーを含むこと。
・バッテリーは小容量で構わないが、交換可能とする。
・シャッタータイミングを検出する方法を備えること。
・撮影条件は8mmカメラ側で制御するため、システム側の撮影条件は固定とする。
・システムの撮影条件はフィルムの性能をエミュレートしたい。
・フレームレートはカメラの最大値である64を目指す。
・動画はシャッターと連動して撮影する。
・動画データはフィルム一本分に相当する100secごとに一つのファイルを出力する。
・プレビュー用のディスプレイは搭載しない。
今思いつくのはこれらの項目ですが、開発中に随時追加、変更します。
Raspberry Pi ZeroかZero2なら仕様を満足できそうです。
クリーニング
カメラの性能には影響ありませんが、表皮材が劣化して剥がれ始めていました。どのように仕上げるかは保留しておいて、まずはクリーニングします。
表皮材は、合成皮革のようです。糊で接着されていましたが、糊も合成皮革も周囲から硬化劣化して剥がれてきています。すべて剥がしてクリーニングしました。
新しい材料で表皮材を制作して貼り直す可能性もありますので、はがした表皮材は保管して後で寸法を測ります。
ボディには劣化した糊が残っていますが、頑張って磨きます。一度に全体をクリーニングするのは難しいので、毎日少しずつ進めることにします。
分解修理
購入直後は調子が良かったのですが、急にシャッターが動かなくなりました。古い機械ですのでこのようなトラブルも併せて楽しみます。
ボディの四隅にあるマイナスネジを外すと、ケースのフタが外れます。
機構部はさらに6個のネジで固定されています。
ファインダーのレンズが機構部にも接合されているため、対物、対眼の両方のレンズも外すと、機構部が取り出せました。
部品の割れや欠けは見当たらないので、ギアを手で動かしていると少しずつ動き始めました。おそらく劣化したグリスやほこりが歯車に挟まったのだと思います。
古いカメラや時計の故障の多くはグリスの劣化によるものだそうです。
@youtube
イメージセンサの選定
次に、デジタルカメラ化するためのイメージセンサを選定します。イメージセンサは、シャッターのすぐ後ろに配置する必要がありますが、フィルム室の大きさに制限があるため小さなセンサボードでなければなりません。
センサの入るスペースは最大幅が20mm、光軸を合わせることを考えると15mm以下が望ましいです。
当初はRaspberry Pi Camera V2を使用する予定でしたが、ボード幅が25mmあるため入りませんでした。
そこでArducamのOV5647というイメージセンサを搭載したカメラボードを入手してみました。
センサ部分の幅が8.5mmしかないため、フィルム室内に自由に配置できそうです。
センサーサイズは3.68mm x 2.76mmです。ダブル8のフィルムに記録される画像サイズが4.37mm×3.28mmですので画角が約84%まで減少しますが許容範囲とします。
実際にテストしてみるとRaspberry Pi CameraのIMX219よりも画質は劣るものの、800x600サイズで90fpsでのデータ転送が可能でした。今回のプロジェクトではシャッターのタイミングにシンクロさせて最大64fpsでの撮影を計画しているため、十分対応可能な性能を持っていることが確認できました。
イメージセンサの殻割り
イメージセンサを設置するにあたり、レンズは8mmカメラのレンズを使用する為OV5647に付属のレンズは不要なため取り外しました。しかし、イメージセンサーの筐体が邪魔で、焦点位置に設置できないため殻割りをおこないました。
イメージセンサのシェルはボトムパーツに溶着(おそらく振動溶着)されているため、溶着部分を破壊する必要があります。シェルの接合部の四隅にニッパーの刃を入れて切断すると溶着を部を破壊できました。
心配したセンサーの損傷もありません。
せっかくセンサーを観察する機会を得たため、顕微鏡で撮影してみました。
残念ながら倍率が不足しておりセンサーのパターンなどは見えませんでした。
ソフト開発に着手
8mm フィルムカメラは、フィルムのコマ送りとシャッタータイミングが連動しています。イメージセンサを制御する際も、何らかの方法でシャッタータイミングを検出し、画像を撮影しないといけません。撮影した画像データはあとでつなげて動画に変換します。
まずはテストopencvを使って指定したタイミングで写真を撮影し、動画に変換してから出力するコマ撮りツールを作成しました。
いい感じです。
ファーストライト
テスト用のプログラムも動いたので、殻割したセンサを8mmカメラに仕込んで撮影してみました。本来フィルムが通る位置にイメージセンサの面をあわせなければならないためなかなか難しいです。また、リアルタイムで画像を確認する方法を作っていなかったので、位置合わせ、ピント合わせに大変苦労しました。
記念すべきファーストライト画像がこちらです。
ピントも露出も合っていないので判別不能ですが、レンズの前で手を振っています。光が揺れているので撮影できていることが確認できました。
そのあとも苦心して条件を調整するとそれなりに映りはじめましたがまだ画質が悪いので原因をしらべないといけません。
ケース作成
イメージセンサなどを仕込むためのケースを作成します。
ケースの中には次のものを格納します。
・イメージセンサ
・Raspberry Pi 2
・メイン基板
・シャッター動作取得用センサ
・バッテリー
・電源スイッチ
・パイロットランプ用LEDx2
・ディップスイッチ
中に入れる装置自体の仕様もはっきり決まっていませんが、モックアップを作って確認しながら設計を詰めていきます。
とりあえず3パターン程検討したのですが、写真の形状をベースに開発を進めます。
シャッター動作検出用センサーの検討
この8mmフィルムカメラは、FPSが変えられます。イメージセンサーで動画を撮影するためには、カメラのシャッタータイミングとセンサーの動作を同期させなければなりません。
シャッタータイミングの動作を検出するのは非常に難しく、メカ的な機構を追加すると、それが負荷になってシャッタータイミング自体を変えてしまう可能性もあります。
今回はシャッター回り機構に反射材を取付け、フォトリフレクタを使用して動作の検出を試みます。
まずは、ブレッドボードを使ってセンサー感度や回路の確認をしてみました。
センサーの前にアルミテープを貼った部分が来るとLEDが光ります。
感度調整は必要ですがこの方式で実機テストしてみます。
イメージセンサーの変更
これまでイメージセンサーにOV5647を使用してきました。最大90FPSまで対応できる点が大きなメリットだったのですが、画質に満足できなかったため、IMX219搭載の小さなセンサーユニットを入手しました。
Raspberry Pi camera V2のボードを流用し、センサーユニットのみ交換できます。
一つ問題があり、Raspberry Pi cameraV2のMIPIコネクタが1mmピッチx15PINであるのに対し、Raspberry Pi zeroは0.5mmピッチx22PINであるため変換ケーブルが必要です。
入手した変換ケーブルが長すぎてケースに収まらないため、ケーブルをカットオフする改造も同時に行いました。
Raspbery Pi camera V2のボードも邪魔ではありますが、メインボードの配置を改良すればなんとか入りそうです。
IDLE TALK
8mmフィルムカメラというものを触ったのは今回が初めてなのですが、触ってみるとその重量感や、高速で動くシャッターなど、存在感や質感が想像以上に心地よいものでした。ゼンマイ駆動というアナクロ満開の機構ですが、であるからこそ製造から70年以上経過した今でも動く堅牢さも兼ね備えています。
いろいろ調べていると、当時の広告が販売されていたためつい購入してしまいました。
"フィルモを選ぶということは、41年間ハリウッドのプロ用機材を作り続けてきたベル&ハウエルの職人の高い技術で作られたムービーカメラを選ぶということです。"
技術者の高いプライドと自信にしびれます。
シャッター動作検出のテスト
フォトリフレクターを使ったシャッター動作検出回路のテストができたため、実際のシャッター開閉動作を検出できるかをテストします。
カメラ内部からシャッター動作を検出できそうな部分を検討したところ、フィルム送りのツメの動きを検出できそうです。ただし、ツメ自体はレンズのすぐ横を動くため、イメージセンサーに衝突してしいます。
カメラ本体に手を入れることは可能な限り避けたかったのですが、この部分だけは手を入れざるを得ないと判断し、ツメを切り落としました。
フィルム送りの部品のツメを切り落としたうえで、ツメのあった場所にリフレクターを取り付けたのが次の動画です。
反射材として、フォトリフレクタのIR光を良く反射するアルミテープを採用しました。この動画では、FPS16設定でカメラを動かしています。
フォトリフレクタを反射材の前に仮止めして動作確認すると、インジケーター用のLEDが素早く明滅しました。取りこぼしがあるかどうかは現状では判断できませんが、この方法でシャッター動作を検出することができそうです。
@youtube
メイン基板の作成
懸案であったシャッター動作の検出ができそうな運びとなりましたので、メイン基板を作り始めました。
今年こそはオリジナル基板作成をしたいと考えているのですが、基板設計の勉強する暇があったらプロジェクトを進めたいという気持ちが強すぎて今回もユニバーサル基板で制作を開始しました。
今回はスペースが限られているため、基板上に隙間なく部品が載ります。専用基板を作って表面実装すればだいぶ楽になりそうです。。。
部品配置優先で制作したため配線が入り組み一目では接続状況が判らない基板ができました。うまく動作しなかったので調査しても原因が判らなかったため最小限の機能に絞って作り直したところ、電源供給とシャッター検知が動作しました。
しかし、連続撮影を行うと電力不足によりRaspberry Piがリセットされてしまったため、DC-DCコンバーターをLM1117 3.3版を搭載したボード(写真上)からMP1584搭載のボード(写真下)へ変更しました。
テスト撮影と視野角
メイン基板ができたため、撮影用のプログラムを完成させました。
メイン基板上のフォトリフレクタでシャッターの動作を検出したタイミングでopencvで画像を一枚保存、シャッターの動作が0.1秒以上検出されない場合は撮影が終了したと判断して保存した画像データを連結してMP4ファイルとして出力させます。
プログラム開発中気付いた点が数点あり、次のポイントに留意してプログラムを作成しました。
バッファデータの処理
opencvで画像を取得する場合、imreadコマンドで取得できる画像データはバッファに溜まったデータです。デフォルトでは4枚の画像がバッファされているため、4コマ前のデータを取得することになります。このバッファ機能のおかげで、撮影のタイミングを明確に指定することができず、撮影タイミングのシンクロに非常に、とても、めちゃくちゃ、たいそう、苦労しました。
今回はバッファを画像1枚分に変更し、次項で説明する撮影モードを指定することでシャッタータイミングとシンクロさせて撮影できました。
撮影モードとFPSとFoV
IMX219 は最大90FPSでの撮影ができますが、その場合は画像のFoVが小さくなってしまうという問題があります。今回は最低16FPS、最大64FPSでの撮影を狙っていたのですがopencvを使ったスチール撮影ではFoVを小さくしたモードでなければシャッタータイミングに合わせた撮影が困難でした。
今回は、Mode6の1280x720で撮影していますが、センサーサイズに対してクロップされているため、望遠寄りの画像になっています。
IMX219の撮影モード、FPS、FoVに関してはこちらのページを参考にさせていただきました。
撮影時間
撮影した画像はメモリ上に保存し、撮影終了とともに動画ファイルとして出力しています。画像枚数が増えると処理に時間がかかりすぎるため、画像枚数80枚、5秒相当のリミッターを設定しています。シャッターボタンをリリースするか、画像枚数が80枚に達すると撮影を終了してファイル出力します。5秒の動画を出力するのに20~30秒程度必要です。
撮影できた動画はこちらです。
時々ブラックアウトしているのは、おそらくフォトリフレクタの誤作動です。フォトリフレクタは赤外線LEDの反射光を検出しますが、設置位置がレンズ近傍にあります。シャッターが開いた際、外界の赤外光を検出して撮影タイミングがずれてしまっているものと思われます。
レンズにIRフィルタを付ければ改善の余地があるかもしれません。
追加機能
メイン基板を作成した際、インジケーター用のLEDや撮影条件設定用のDIPスイッチなどを設計に盛り込んでいました。撮影機能の動作確認ができたため、それらの機能も一部追加します。
今後修正していく予定ですがまずはこんな感じです。
DIP | ON | OFF |
---|---|---|
#1 | マニュアルモード | オートモード |
#2 | - | - |
#3 | オートWB | 固定 WB |
#4 | color | gray scale |
#5 | ISO40※ | ISO100※ |
#6 | - | - |
※opencvの感度調整機能が働かないため、相当ぐらいの雰囲気になるように露出時間で調整。
まとめ
最後まで読んでくださった方、ありがとうございます。
まだ当初想定していた機能は満足していないのですが、ベースとなる機能実装ができたため、当プロジェクトはVer.1としてクローズしたいと思います。
機能アップを図るアイデアもありますので、少し間をおいてからバージョンアップを狙いたいと思います。
コードや3Dデータ等は近日中にGitHubへアップ予定です。
ゼンマイ駆動のフィルムカメラは、実際に触っていただかないと伝わらない存在感があります。ヤフオクなどで数千円で購入できますので興味を持たれた方は是非手に取っていただければと思います。
また、直近ではNT金沢2022のprotpediaさんのブースに展示させていただけることになりましたので、お近くの方は是非いらしてください。
このプロジェクトは、以下のイベントへもエントリー予定です
- Hackaday Prize 2022
- エンジニアの自由研究発表会<春休み編> 2022/5/19
- NT金沢2022 2022/6/18~19
投稿者の人気記事
-
airpocket
さんが
2022/04/11
に
編集
をしました。
(メッセージ: 初版)
-
airpocket
さんが
2022/04/11
に
編集
をしました。
-
airpocket
さんが
2022/04/11
に
編集
をしました。
-
airpocket
さんが
2022/04/11
に
編集
をしました。
-
airpocket
さんが
2022/04/13
に
編集
をしました。
-
airpocket
さんが
2022/04/14
に
編集
をしました。
-
airpocket
さんが
2022/04/14
に
編集
をしました。
-
airpocket
さんが
2022/04/15
に
編集
をしました。
-
airpocket
さんが
2022/04/15
に
編集
をしました。
-
airpocket
さんが
2022/04/22
に
編集
をしました。
-
airpocket
さんが
2022/04/22
に
編集
をしました。
-
airpocket
さんが
2022/04/22
に
編集
をしました。
-
airpocket
さんが
2022/04/22
に
編集
をしました。
-
airpocket
さんが
2022/04/22
に
編集
をしました。
-
airpocket
さんが
2022/04/22
に
編集
をしました。
-
airpocket
さんが
2022/04/22
に
編集
をしました。
-
airpocket
さんが
2022/04/25
に
編集
をしました。
-
airpocket
さんが
2022/04/27
に
編集
をしました。
-
airpocket
さんが
2022/04/28
に
編集
をしました。
-
airpocket
さんが
2022/05/07
に
編集
をしました。
-
airpocket
さんが
2022/05/07
に
編集
をしました。
-
airpocket
さんが
2022/05/10
に
編集
をしました。
-
airpocket
さんが
2022/05/10
に
編集
をしました。
-
airpocket
さんが
2022/06/21
に
編集
をしました。
Opening
jaythefirework
2022/12/04
airpocket
2022/12/06
jaythefirework
2022/12/26 Opening
sohonomura2020
2024/09/24
airpocket
2024/09/24
ログインしてコメントを投稿するこんにちは。私はアメリカからです。お金を払ってこれらを作ってもらうことはできますか?
Hi!
Thanks for taking a look at my work.
I can sell this device but it is very difficult to handle.
I know you are a camera enthusiast, but you will need knowledge of Linux and OpenCV as well as knowledge of handling cameras.
Also, there are a lot of limitations on the functionality and it most likely won't work the way you think it should. For example, you can only shoot for 6 seconds per cut.
I also have an English explanation site here, so if you still wish to use it, please contact us again.
https://hackaday.io/project/184748-a-spring-drive-digital-movie-camera
If you have knowledge of electronics, you can do it DIY. If you have any questions, I can give you advice.
I understand. How much would you be willing to sell a potentially slightly upgraded version for?
Maker Faire Tokyo 2024でお話を伺った双峰エンタープライズ(株)の野村と申します。IMX219の外部同期運転についてご連絡差し上げようと思っております。まずは弊社ホームページをご覧ください。
https://soho-enterprise.com/2021/01/19/fpd-link-iii-se-cxb01-board-for-dual-camera-solution/
2つのカメラを同期させないとFPD Linkで送れなかったので実績あります。
ご連絡ありがとうございます。
MFTokyoは、お話をお伺いに行く時間が取れずもうしわけありません。
わざわざご連絡いただきありがとうございました。
HPを確認させていただきました。SE219FF-00-CB01という製品がIMX219搭載のものでしょうか。
FPD Linkという規格も初耳なレベルの素人ですが、シャッターシンクロできれば非常にうれしいので詳細について教えていただけると幸いです。
XのDMもしくはメールにご連絡いただけますでしょうか。
Xアカウント
メール:yamashita.3154@gmail.com