レゴフィルムカメラ



どうして?



レゴのコンストラクター、カメラ、プログラミングが大好きです。 これら3つの趣味を組み合わせて、レゴの自動フィルムカメラを組み立てることにしました。 カメラがすべてを自分でできるようにしたかったのです。ユーザーはフィルムを挿入し、ターゲットに向けてボタンを押すだけでした。



この投稿では、レゴから自動カメラをどのように作成したのか、どのようにプログラムされたのか、そしてその結果についてお話したいと思います。







ピンホールカメラ



私は最初からピンホールカメラで始めました。 これがカメラの基本です。穴からフィルム(またはセンサー)に光が入り、そこに画像が残ります。 箔に穴を開けることにしました。 ミニドリルの1つを使用して、直径約0.3 mmの穴を開けました。











ここで、フィルムを配置する遮光チャンバーを組み立てる必要がありました。 Mr.ウェブサイトの計算機は私を大いに助けてくれました ピンホール 。 カメラの最適なサイズを計算することができました。 すべてが非常に簡単です。穴のサイズが0.3 mmの場合、穴からフィルムまでの距離は約60 mmになるはずです。











操作の原理は非常に簡単です。ユーザーはフィルムが入った新しいカセットを挿入し、フィルムはすぐに無料のリールに巻き戻されます。 それぞれの新しいショットで、フィルムはカセットに巻き戻されます。 すべてのフレームがスナップされたら、使用済みのカセットを入手するだけです。 以下に、ビルドプロセスのスナップショットをいくつか示します。



















ピンホールカメラには、メインコイル(ユーザーが設定)の制御、フリーコイル(フィルムの巻き戻し)の制御、バルブの制御の3つのインターフェイスを提供する必要がありました。 次のようになります。











将来的には、自動化モジュールのモーターがこれら3つのギアをねじるでしょう。 その間、カメラが光を透過していないことを確認する必要がありました。 デザインを暗室にドラッグしました。 軽い穴を探すのに写真用紙を使うことにしました。 フォト用紙は光に敏感です。光が当たると、黒い斑点が現れます。 ピンホールカメラに写真用紙を詰めて、光に当て、数分待ってから現像しました。 表面全体が黒い傷で覆われていました。 すべての穴を見つけて電気テープで包むのに数時間かかりました。 起こったことは次のとおりです。



















ピンホールカメラは終わりました。 正直なところ、多くのアマチュア自身がそのようなデバイスを組み立てました。 だから、私は比較的よく踏まれた道にいた。 しかし、さらに進んでカメラを自動化することにしたアマチュアプロジェクトは1つも見つかりませんでした。



自動化



レゴのレンガも私の子供時代でした。 しかし、私が最近買ったレゴマインドストームキット 。 このキットには、3つのモーター、1組のボタン、光センサー、およびプログラム可能なモジュールが含まれています。 最新のカメラに必要なものはすべて揃っています。



自動化モジュールには、巻き戻しを制御するための2つとシャッターを制御するための3つのモーター、シャッターボタン、周囲光センサー、およびピンホールカメラが挿入されているかどうかを判定するセンサーが含まれている必要があります。 最後のセンサーは非常に重要です。カメラが挿入された瞬間にフィルムを巻き戻す必要がある瞬間を決定します。 次のような結果になるはずです。











特定の詳細が常に不足していました。 BrickLink助けになりました。 私はそれに関するすべての詳細を絶対に見つけ、PayPalを通してそれらを購入することができました。 私は価格が非常に合理的だったと言わなければなりません。 すぐに、自動化モジュールが組み立てられました。 ピンホールカメラがオートメーションモジュールにきちんと挿入されました。



















鉄、またはむしろ、プラスチックは準備ができていました。 この問題をプログラムするだけです。



コード





プログラマブルモジュール(コントローラー)は、レゴオペレーティングシステムによって制御されます。 モジュールは、視覚的な開発環境でプログラムできます。演算子ブリックをドラッグしたり、ブロックループを作成したりするためです。私はこのギニアが本当に好きではありませんでした。 それで、私が最初にしたことは、 Lejosシステムでモジュールを再フラッシュすることでした。 そのためのプログラムは、多少トリミングされたJavaで作成できます。 私たちの冒険に必要なもの。



カメラコードをhttp://code.google.com/p/legocamera/に投稿しました。



プログラムには、いくつかの興味深い機能が含まれています。



フィルム巻き戻し角度を計算するためのロジック


映画を巻き戻すことは、最初は思っていたよりもはるかに難しいことがわかりました。 フィルムのあるコイルは、らせんに非常に似ています。 つまり、40mmフィルムを巻き戻すためにリールを回転させる必要がある角度は、すでに巻き上げられているフィルムの量に依存します。 計算を行うには、2次の方程式を使用する必要がありました。 これを毎日コーディングする必要はありません。 FilmTransportUtilsファイルのロジックは誰がにするものです。



バルブ速度の計算


そして、ここでトラップが待っていました。レゴセンサーは、0〜1023の数値で照度のレベルを返します。この数値が物理量にどのように関係するかはわかりませんでした。 そのため、科学的な突破の方法を順守する必要がありました。 私は光度計を借りて散歩に行きました。 彼はレゴセンサーで測定を行い、証言を記録してから、デバイスで測定を行いました。 結果はかなりまともなマッチテーブルです。 明確にできるように思えますが、ベータ版の場合はそうなります。 見たい人-ExposureUtilsへようこそ。



ユーザーインターフェース


カメラに関する情報を動的に更新したかったのです。ピンホールカメラ、露出メーターの値、フレーム数、現在のタスクなどがあります。追加のスレッド、ちょっとした魔法、そして私には、それはほとんど大人のように見えました:

























結果



すべて準備が整いました。 カメラのデモ動画は次のとおりです。







そして、ここに結果の写真があります。 消火栓:







隣人が移動します。







さらにカメラで撮影します。とても簡単なので、ボタンをクリックするだけで完了です。



All Articles