Take’s diary

Macとマイコンに関すること--ワクワクの製作日記

W&T Thermal Cam3 for FLIR LEPTON3

LEPTON3の画像をテザリングでiPhoneに送る際、今まで問題になっていた画像のノイズ、スピード、距離、動作不安定の問題がほとんど解決できたので、いよいよ公開です!!

The problems of noise, speed, distance, and motion instability of images which had been a problem until now were almost solved, so it is finally open! !

システム概要

 FLIR LEPTON3とiPhoneの動作環境です。

f:id:TAKEsan:20170923164616p:plain

iPhoneアプリ操作方法

Apple アプリストアからW&Tで検索。アプリ名称はTheamal Cam3です。

                    ※2017年10月19日有料ですがダウンロード可能になりました。

W&TとはWiwao(ハード担当)とTAKEsan(ソフト担当)の合作という意味です。

f:id:TAKEsan:20170922212805p:plain

f:id:TAKEsan:20170922180732p:plain  

 そもそもLEPTONサーモセンサーってなに?

 このセンサーだけで熱を感知して、画像を再現します。真っ暗闇で何の照明を使わずに画像が再現できます。詳しくはメーカーサイトを御覧ください。

FLIR Lepton® | FLIR Systems

LEPTON1とLEPTON3はどう違うのか?

 以前発表したLEPTON1アプリは解像度が80x60。 アプリ上は8倍に画像を補間して約320x240の画像を再現していました。今回のLEPTON3アプリケーションは、もともと持っている解像度160x120を4倍に補間して320x240の動画を再現できます。同じじゃないかって?以下の違いを見てください。ジャギーの出方や背景の詳細感の差が分かるでしょうか?。実際に使うとベールが1枚剥がれた感覚です。今までLEPTON1では見逃していた小さな部分の発見につながります。

f:id:TAKEsan:20170922191654p:plainf:id:TAKEsan:20170922183836p:plain

LEPTON1でも良さそうな気がしますが、遠景がボケる(詳細ではない)ことと。この補間方法は斜めの線にジャギーが目立ちます。

f:id:TAKEsan:20170922191919p:plain

f:id:TAKEsan:20170922183918p:plain

LEPTON3の画像。背景の細かなところまではっきり写っていることがわかります。斜めの線も問題なし。全体がシャープになります。

           背景の丸い物体はこんな形の照明です→f:id:TAKEsan:20170923162315p:plain

なぜ WROOM02 (ESP8266) を使うのか?

 その消費電力の少なさと価格の安さに尽きます。消費電力はESP32やPi Zero の約半分。基盤を選べば280mAhの極小リポバッテリーで1時間以上LEPTON3の赤外線動画を発信し続けます。

f:id:TAKEsan:20170922213505p:plain

                     f:id:TAKEsan:20170920222645j:plain

      新しく開発したドローン向けの比較的大型の基板でも、電池を含めて僅か18gです

 このことは、トイドローン搭載を始め色々な用途で使えることを意味します。ただし以前の記事でも紹介したように問題も山積み。普通であればより性能の高いESP32に走りがちですが、ESP8266にこだわり続けました。ESP8266でLEPTON3の画像を しかも、100m前後離れたところからiPhoneで受信できるなんて誰が信じるでしょう!!。

  上記写真は、Dobby特化したボードで、Wiwaoさんが自力で開発したものです。ESP8266には何も改良を加えていないので当然技適も問題ありません。このボードと今回のソフトの組み合わせで双方100m程度離れている条件で、iPhoneからLEPTON3のほぼノイズがない画像が継続して再現できました。しかも測定した場所はWIFI中継点が20箇所程度と非常に劣悪な環境でした。(下記で実際の動画が確認できます)*1

 残念ながら一般のボードでは最大の動画受信距離は50m程度です。今回のアプリはボードを選びませんが、性能と安定性を望むならWiwaoさんの作ったカスタム基盤が必要になります。ESP8266で正常に動画が配信できれば、他のプロセッサやESP32を使うメリットは何もありません

今回のシステムをDobbyに取り付けて撮影すると.......。

 次の動画は、Wiwaoさんが小型ドローンDobbyに今回のシステムを取り付けて、実際に太陽電池メンテナンス用にTestフライトを実施したものです。

 f:id:TAKEsan:20170924153833p:plain

       

 画像には定期的にノイズが入りますが、Dobbyに入っているGPSが悪さをしているようです。現在はiPhoneアプリ側で修正を行い、ほとんどノイズが入らなくなっています。右上の実写画像は、Dobbyの画像データを合成しています。十分実用に耐える解像度なのが、確認できると思います。

今回のシステムはUDP OSC通信をiPhoneデザリングで実現していますが、周りの妨害電波からほとんど影響を受けません。

 次の動画はWiFi中継点が20ヶ所程度でパケットに影響の出やすい駅構内で録画していますが、多少フレームレートが落ちる程度で、画像ノイズは全くないことが確認できます。

f:id:TAKEsan:20170922214624p:plain

    

 夜なのにこんな画像が録画できます。

 人も車も風景も、そして電線も.....。このクオリティー。結構いいかもしれません。

   f:id:TAKEsan:20170926195400p:plain

    youtu.be

100m離れた場所での画像です。

 WROOM02(ESP8266)側のWIFI中継点は20箇所。iPhone側は7箇所でした。少しパケット紛失(インジケーター黄色点滅)しているようですが、動画のスピードは問題ありませんでした。この画像の撮影ではWiwaoさんの最新ボードを使っています。

 f:id:TAKEsan:20170927212241p:plain

     

LEPTON3が風に揺れています。ほとんど遅れがないことと、画像のノイズが全くないことが確認できました。この場所はすぐ左側が崖になっている住宅地で、パケットのエラー修正がまともにできていないと、満足に画像が再現できない「魔」の場所です。

 アプリ実行前に...。

 このアプリは以下の別部品およびソースのインストールが必要です。順番に沿って部品の調達およびソフトのインストールを行ってください。WROOM02のソースコンパイル時はLEPTON1の時とは違い、メモリーとCPUスピード設定をそれぞれ80MHz,160MHzに再設定が必要ですのでご注意ください。(5.ボード設定は以下の通りとしてください 参照)

 まずESP8266開発ボード、LEPTON3LEPTONブレイクアウトボードを手に入れてください。

 以下必要部品の入手先とLEPTON3画像再現までの手順です。

             f:id:TAKEsan:20170922215134p:plain     f:id:TAKEsan:20170922213121p:plain

1. ESP8266開発ボードを用意してください。 

   f:id:TAKEsan:20170922215847p:plainf:id:TAKEsan:20170921093729j:plain   

   f:id:TAKEsan:20170922220438p:plainf:id:TAKEsan:20170921093744j:plain

LEPTON3はSPIとi2C及び3.3V出力端子が必要です。これらの端子が使用できないボードもありますので、購入時は注意してください。

2. LEPTON3を用意してください。

       f:id:TAKEsan:20170922221854p:plain      f:id:TAKEsan:20170924112640p:plain

       日本ではコーンズテクノロジーかDigi-Keyで手に入ります。

 もし電子機器を多少かじったことがある人であればFLIR ONE(2世代目)を持っていれば、簡単に取り外すことができます。特殊ドライバ(ヘキサドライバーT5H(センター穴付))が必要で、ビスさえ外せば簡単にLEPTON3を取り外せました。と言うことは、簡単に元に戻せます。(2017年10月6日現在Apple ストアで販売されているFLIR ONEに使われているセンサーはLEPTON1(解像度80X60)なのでご注意ください。LEPTON3が使われている機種はFLIR ONE Proです。)

     f:id:TAKEsan:20170924110121p:plain f:id:TAKEsan:20170719121154j:plain    

  LEPTON3のセンサー自体は完全防水で、衝撃にもかなり強いため悪条件にびくともしませんが、取り外し可能なシャッター部品は壊れやすい欠点があります。取り扱いには十分に注意してください。LEPTON3は定期的にシャッターを閉じて画像のキャリブレーションを行っていますが、シャッターが壊れると残像が残るなど、画像に障害が出て来ます。今の所シャッターの交換部品は販売していない様なので、取り扱いには十分注意が必要です。

3. BREAKOUT BOARDが必要です。                              

     f:id:TAKEsan:20170922222619p:plain  f:id:TAKEsan:20170924112934j:plain

      日本ではコーンズテクノロジーかDigi-Keyで手に入ります。

4. Arduino IDEをインストールします(Macの場合)

Arduino IDE https://www.arduino.cc/en/main/software  をインストール

IDEを起動させたら、

    Arduino-->Preferences..

出てきた環境設定ダイアログの下の方「追加ボードマネージャーのURL:」の中に

  http://arduino.esp8266.com/stable/package_esp8266com_index.json

を書き込む。

f:id:TAKEsan:20171008224533p:plain

 

    ツール-->開発ボード-->ボードマネージャー を選択

最後の方にesp8266 by esp8266 Community という項目があります。

       f:id:TAKEsan:20170922223921p:plain

f:id:TAKEsan:20170920210049p:plain

 バージョンは必ず2.2.0 を選択してください。(上図はすでに2.2.0を選択してるので選択画面には出て来ていない)すでに 2.3.0を選択している方は 2.2.0にバージョンを落としてください。2.3.0で今回のソースをインストールするとうまく動作しません

5. ボード設定は以下の通りとしてください。

 シリアルポートはESP8266を接続すれば表示されますが、Bluetoothでない方を選択します。注意点は、Macの場合ESP8266を何回も抜き差しすると、USBを認識しなくなることです。認識しない場合はMac側のUSBコネクタを変更すると、認識するようになります。MacBookのようにUSBコネクタが2つしかなくて両方認識しなくなったら、再起動……。です。       Flash Frequency=80MHzCPU Frequency=160MHzであることに注意してください。                     

  f:id:TAKEsan:20170922224216p:plainf:id:TAKEsan:20170920210155p:plain

   f:id:TAKEsan:20170924110748p:plain

6. OSCライブラリをインストールします。

  Arduino IDEの Arduino—>Preferences..  を選択して一番上の スケッチブックの保存場所を確認します。

                 f:id:TAKEsan:20170920210844p:plain

この中に libraries  フォルダがあるかどうか確認します

                f:id:TAKEsan:20170920211146p:plain

無かったらlibrariesフォルダを作成します。以下のURLを開いて

https://github.com/sandeepmistry/esp8266-OSC

ESP8266のOSCライブラリをダウンロード解凍してlibrariesフォルダに移動させます。

一度Arduino IDEを終了させ、再起動後 スケッチ-->ライブラリをインクルードを選択して 「OSCが入っているかどうか確認。

7. iPhoneを設定します。

 iPhone を普通に初期設定するとssidは日本語になります。エラーが起きる可能性がありますので半角英字に修正してください。

 設定-->一般-->情報-->名前-->現在のiPhone名称>を選択 で名称を変更します。名称を変更してもiPhone自体の挙動に影響はありません。

8.  今回製作したESP8266Arduino ソースをダウンロードします。

https://drive.google.com/drive/folders/0BzqxnYlVMv6uRUtMb2pRXzdsNlU?usp=sharing

 ※複数のファイルがある場合は末尾の数字が大きい方です:現在EN2

    f:id:TAKEsan:20170922224440p:plainf:id:TAKEsan:20170920214731p:plain

 LEPTON3-TestFlight_EN.inoをダウンロードしてください。Arduino IDEを開いて、今ダウンロードしたファイルをダブルクリック。フォルダの中に入れますか?と聞かれるので、YESを選択。OSCやSPIの安定化、UDPパケット紛失問題の解消、ESP特有のWDTリセットの解決方法をコメントしておきました。ボードを選べば100m以上離れた場所でLEPTON3の画像が再現できます。

9. 今回のiPhoneアプリをダウンロードします。

※2017年10月19日ダウンロード可能になりました。

  f:id:TAKEsan:20171019103455p:plain f:id:TAKEsan:20171019102434p:plain

 W&Tで検索Themal Cam3を探します。申し訳有りませんが、資金が底をついてきました。数もあまり出ないと思いますので、高いとは思いますが、2,000円くらい徴収したいと思います。様々なテストをクリアしているのでアプリはとても安定して動作します。ソースは公開を予定していますが、どうしてもGUIの調整が必要なことや、もともと実機テストは期限付きなので注意してください。

10. 今回のソースを開いて一部を修正します。

 修正が必要な部分は、以下の3箇所です。

          34,35行目

          #define SSID_X    your iPhone   //iPhone

          #define PASS_X    "your iPhone password"   //iPhone

 your iPhone iPhoneの名称、your iPhone password に 設定-->モバイルデータ通信-->Wi-Fiのパスワード を調べて パスワードを入力します。

          53行目

          #define LEDpin 16

に自分のボードに合ったLEDのピン番号を入力してください。LEDは特に必要ありませんが、ESP8266の状態がわかるので、点灯すると便利です。サインは以下の通りです。

  • LED 長点滅 初期のWiFi接続中の場合点滅。中間でWDTリセットが入った時やWiFi再接続中の場合点滅。
  • LED 短点滅 iPhone側のアプリが中断した場合点滅。
  • 無点滅   正常にデータを送っている場合。
  • 無点滅中一瞬LEDが光る場合 パケットが紛失して、再度同じパケットを送っている時。ピカッピカッが多いときは、周囲の電波状態が悪く連続してパケット修正をしている状態なので、画像のフレームレートが下がります。
  GPSをONにすると、周期的に一瞬ピカッと光ります。確実にパケットを紛失してるのですが画像にはさほど影響がないことがわかると思います。BlueToothをONにするとさすがにいっぱい光ってフレームレートが落ちます

11. ESP8266とLEPTON3を接続します。

 スイッチサイエンスESPrの場合、LEPTONブレイクアウトボードとESP8266の結線は以下の通りです

                               f:id:TAKEsan:20170923112802p:plain

12. WROOM02(ESP8266)ボードにプログラムを転送します。 

 以上設定が終わったらコンパイル、転送します。たまにエラーが出る場合がありますが、その場合は再度転送してください。(USBを認識していない場合が多い)

13. いよいよサーモグラフィー開始。

 iPhone7、7plus、 SE、 iPad mini4 での動作確認をしています。一般のiPadでも動くと思いますが、両者ともCPUA9以上が必要です。iPhone8,8Plus X に関してはシュミレーターで動作を確認・調整しています。

 インストール作業から1回目の動作確認までは、簡単とは言えませんが、Arduinoに慣れている皆さんにとっては全く問題のない過程です。セキュリティーを保ったまま、2回目以降は3ステップ(LEPTON側スイッチオン-->インターネット共有-->iPhoneアプリ起動)で動いてしまいます。煩わしいWiFi選択やIP、パスワード入力などは全く必要ありません。また、テザリングを使っていても外部とは通信しないので、Thermal Cam3動作に関する通信料金は発生しません。

 皆さんのアイディアで、用途に合わせた素敵なThermal Camケースを作って見てはいかがでしょうか。私は今回Wiwaoさんが試作したボードを利用してレザーケースを3種類作って見ました。

f:id:TAKEsan:20171019224820j:plain

 

*1:距離、周囲の条件により、ノイズはほとんどありませんがフレームレートは落ちます。