2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

BLE露出計ガジェットをMFT2022に出展しました

Posted at

こんにちはムウラです。
普段はGoogleCloudパートナー企業でバックエンドエンジニアをやっております。

本業とは別に、去年の終わりごろから、趣味のクラシックカメラ関係のガジェットを開発していたため、そのネタでMaker Faire Tokyo 2022に出展させて頂きました。
今回初出展でしたが、色々と学ぶことがあったので投稿します。

  • 当日見に来てくださった方々へ
    開催時点では準備できていなかった、メイキングエピソードも公開しましたので、是非見ていってくださいませー

作品について

純粋な機械式フィルムカメラに取り付けることで、撮った日時や場所、そしてF値・シャッター速度などのメタ情報を記録できるガジェットを開発しました。
デジカメのメタデータ記録機能Exifと二眼レフのReflexの掛け合わせて、ExiFlexと命名しました。

メインコンセプト

  • ベースはスマホアプリ、フィジカル部はBLEマイコンで対応 ※
    • セントラルがiPhoneアプリ、ペリフェラルがESP32からなるシステムを採用
  • ストロボシンクロ端子をトリガーして、シャッター押下を検出する
    • クラシックカメラに搭載されている唯一の電子インタフェースを活用(大袈裟)
  • 光量を測定して適正露出を計算する
    • 市販されている露出計の動作を、ガジェットに組み込む

※ これについては出展を経て、若干考えが変わりつつあるため後述します

システム構成

気付いたらこうなっていた  以下のような構成で設計を行いました。
concept.png

参考にした露出計

通常、露出なんてカメラが勝手に調整してくれるので、こんな器具使う機会はまず無いと思うのですが、クラシックカメラでは必需品のため、簡単に説明します。
露出計は以下のような測定器具で、右上LEDが点灯すると、適正露出を意味します。
IMG_8016.jpg
下部にあるダイアルで目標とするF値またはシャッター速度を設定し、適正露出よりも明るい場合は▶︎が、反対に暗い場合は◀︎が点灯します。
その場合は、目標としない側(目標がF値ならシャッター速度、シャッター速度ならF値)を増減して、適正露出を探っていくという使い方をします。

ガジェットへの組み込み

この露出計と同じ機能をiPhoneアプリに組み込むことで、撮影時のF値、シャッター速度をアプリに記録する設計としました。
鋭い方ならお気付きかもしれませんが、実際のカメラのF値、シャッター速度がどうなっているのかは全くお構いなしです!(笑)
露出計通りにカメラを調整して撮影した、という前提での機能となります。

技術的な課題

BLE (Bluetooth Low Energy)によるIoTガジェットを開発する上で、以下の課題に取り組みました。

  • セントラルをiPhoneアプリで開発
    • Core Bluetoothを用いたSwiftネイティブアプリ
    • UIはSwiftUIで作成
    • フィルムカメラのメタファーをアプリに取り入れる
    • 露出計を作る
    • 環境光測定機能を作る
    • アルバム整理機能を作る
    • GPS情報を取得してGoogleMapにピンを立てる
  • ペリフェラルをESP32マイコンで開発
    • 開発言語はArduino(C/C++)
    • シャッターシンクロ端子の信号を検出する
    • Luxセンサー、三刺激(XYZ)センサーを搭載する
      • これらを搭載した基板を作成
      • センサーの値を読み取ってBLEでiPhoneへ飛ばす

Core Bluetoothは初挑戦でしたが、定番のこのサイトは大変参考になりました。

ESP32側は、こちらのライブラリを使用しました。

完成までの道のり

計画・検証 (2021年)

  • 10月〜
    ハロウィンにて、クラシックカメラで色々写真を撮ったが、現像後に当時撮影時の露出、シャッター速度を知りたくなり、ExiFlexの構想を考える。

  • 12月〜
    ESP32のBLEサンプルプログラムを作成し、ESP32からの通知をBluetoothスキャンアプリで受けられることに感動する。

初期構築

  • 1月〜
    ちゃんとしたiOSアプリを作るために、SwiftUIの学習を始める。こちらの本が大変役立った。

  • 2月〜
    Core Bluetoothの学習を始め、状態遷移の設計を行う。また、iPhoneアプリにBLEペリフェラル選択画面を作成する。

  • 3月〜
    iOSアプリにBLEマイコンと連動した撮影機能を作成する。
    メイン基板にシンクロケーブル及び照度センサーを実装し、現在の撮影機能の原型を作る。

MFT2022応募〜選考結果

MFT2022応募締め切りの4月末当時、バックエンド畑の僕はiOSアプリ開発に苦戦してましたが、何とかESP32とiOSアプリをBLE連動できる状態になったため、意を決して応募することとしました。
当初、ESP32 Dev Moduleをブレッドボードに載せただけのへっぽこな状態でしたが、6月中旬、当選のメールが来ました。
応募当初の完成状態から厳しいと思っていただけに、本当に嬉しかったです!
以下、紹介頂いた記事となります。

当選後の開発状況

  • 環境光測定モード
    DigiKeyを物色していたら、三刺激センサーTCS3430なるものを発見しました。
    これ使えば、現像データ化後にオートホワイトバランスを実現できるのでは?と思い立ち、1ヶ月がかりで部品調達&アプリ実装。
    アプリ上にCIE1931の馬蹄図が表示できて喜んでいたのも束の間、無補正でのセンサ出力値は実際値とのずれが大きく、キャリブレーションが大変でした。

    • 校正機材
      写真左の測色計 (SEKONIC C-700) を新宿のマップレンタルで借りてきました。
      ガジェット左上に貼ってあるシールは、測色計の積分球と同じ役割を果たすための拡散フィルムです。
      IMG_7591 2.jpeg
    • 重回帰分析による校正行列の同定
      測色計で色度座標x, yを測定できると思っていましたが、まさかの非対応(上位機種のみの搭載機能)でしたorz
      辛うじて試験光源の色温度は測定できたため、色温度に対応した色度座標の理論値を教師データとして計算しました。
      スクリーンショット 2022-09-12 10.47.46.png
  • GoogleMapを組み込む
    本業がGCPパートナーということもあり、学習も兼ねてGoogle Mapを組み込んでみました。

  • CoreDataによるデータ保存
    データの保存機能がありませんでしたので作成しました。
    記録されるデータの特性として、フィルムとカット(撮影の1コマ)のリレーション関係があるため、CoreDataを使用したリポジトリを実装しました。
    スクリーンショット 2022-09-10 16.36.34.png

完成した作品

開発はまだ続いているため、MFT2022出展バージョンとなります。

アプリ

以下の3画面からなるアプリを開発しました。
左から順に、撮影画面、環境光測定画面、アルバム整理画面(開発中)となります。
IMG_8025.PNG IMG_8026.PNG IMG_8027.PNG

ハード

試作品ということで、秋月のユニバーサル基板にESP32Dev Moduleおよびセンサー類を実装してあります。
それらを固定アームで接続して、台座を介して三脚ネジでカメラに固定しました。
hardware.jpg

出展当日

開発開始から10ヶ月程度経ちましたが、あっと言う間に当日が来てしまった感じでした。

ブースの様子

全体の様子です。思っていたよりもスペースが広い!!スカスカな展示スペースが少し寂しいですね。。。
メイキングビデオを流すディスプレイを置いたり、リーフレット等も作りたかったですが、開発だけで精一杯で断念しました。
そして周りの先輩方Makerの展示には圧倒されました。Σ(゚Д゚)

IMG_8002.JPG
作品のアップ
IMG_8001.JPG

良かった点とイマイチだった点

シャッターシンクロ端子をトリガーしてiPhoneアプリが反応する仕掛けは、良い反応を頂き嬉しかったです。
シャッターを切った後に、フィルムが巻き取られるアニメーションが良い、という反応もありました。
一方、環境光測定モードのCIE1931馬蹄図については時間をかけた割にはあまり反応がなかったため、改善の余地ありです。
ただ、色温度が分かるのは嬉しいという意見もあったため、表示方法をもう一捻りしたいところです。

説明の仕方について

まず初めに、何の装置なのかを説明するのが大事だと思いました。
1日目の最初の頃は、「これはセンサーです」みたいな感じで正しく説明できておらず、初見殺しな説明をしておりました。。。

そしてこの作品の場合、露出計という市販されている製品の機能があるため、それについて簡単に説明した上で比較することで、正しく作品のコンセプトを伝えられると感じました。

お客さんとの交流

色々な方に見ていただくことで、感想や意見が得られるMakerFaireは素晴らしいと思いました。作った本人なので「完全に理解した」と思っていましたが、自分でも気付かないことも、往々にしてあるものだと思いました。

  • F値やシャッター速度はフィルムに記録しているのか?
    • 撮影情報はiOSアプリに記録しています。
    • フィルムに焼き込みが出来たら、それはそれで凄すぎますね(アフレコ機能?!)
    • その昔、フィルムのコマの間に、撮影情報を書き込んでくれるカメラもあったらしい
  • 現像されたデータにどうやってExif情報を埋め込むのか?
    • 仕様が決まっていませんorz
    • 主題にデカデカとExifと謳っているが、まだまだ「Exifみたいな」というレベルで、Exif規格に準拠している代物では無いです。。。
    • とは言え、今後対応したい機能ではある。
  • カメラのボディからF値とシャッター速度を引き出している?
    • いいえ、カメラではなく露出計の測定値を記録しているだけです。
    • 露出計の値通りにカメラを調整して撮影すれば、結果的にF値とシャッター速度が記録されるというトリックです。
  • 友人が大学の同好会で、似たような露出計自作してましたw
    • マジですか! てか東大きらら同好会、って何すか?!
  • 懐かしいカメラですねー 某メーカーで設計してました
    • 神降臨キタ (゚∀゚) !!

頂いたアイディア

数々のアイディアをいただきました。この場を借りてお礼いたします!

  • 筐体関係
    • 3Dプリンターで筐体製作
  • 小型化
    • より小さなBLEモジュールを使用する
    • バッテリーなどが統合されたESPモジュールを使う
      • M5Stackを使う
    • 脱ユニバーサル基板
      • 導電インクで基板製作
  • F値、シャッター速度の自動取得
    • カメラボディのF値、シャッター速度をOCRで検出
    • ストロボ端子のTTL信号をハックして撮影情報を取得する

出展を終えて

出展を経て、さまざまな意見を頂き、今後取り組むへき課題が見えてきました。

今後の課題

当初は、「ベースはスマホアプリ、フィジカル部はBLEマイコンで対応」というシステムで検討してきましたが、実際の利用シーンを考えると、片方の手でカメラを持ち、もう片方の手でスマホを持つというのは無理ゲーすぎます。
出展を経て、この部分が最大の問題であることに気付かされました。

スマホは常にポケットに入れておき、勝手に撮影情報が記録されていくようなものが、一つの落とし所なのかなと思えてきました。
今後も改良を重ねていきますのでよろしくお願いします(*_ _)ペコリ

おまけ

出展の合間、いくつかブースに遊びに行ったのですが、千葉大学教育学部 MAKERS-EDUさんのブースでなんとExiFlexのオリジナルストラップを作っていただきました。
皆さん素晴らしい先生になれることを期待してます!
IMG_8031 2.jpeg

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?