人感センサーとして8x8のサーモグラフィー(AMG8833)をArduinoで試してみて,なかなか良い感触を得ました。
で,居酒屋1回なみの出費を顧みず,もう少し解像度の良いのはどうだろと,32X24のサーマルカメラを試してみました。
1.今回の試行のシステム構成です。
1) Pimoroni - MLX90640 サーマルカメラ ブレークアウト
・Melexis MLX90640 遠赤外線センサーアレイ: 32x24 pixels、64FPS
・標準 55°x35°
・検出温度: -40~300°C、精度 約 1°C
・I2C インタフェース(アドレス 0x33)、3.3V or 5V
広角110°のもあります。
2) ESP32 Development Board
WifiとBluetoothも使えて,メモリも多くとれそうなので使ってみました。何やら複雑な商品構成で,自分が買った廉価品がどれなのか確証がありません(^^;;;;
Pinの配置では次図の型と一致します。
ちなみにLEDを点滅させるテスト(Lチカ)に対応するボー上のLEDがつながっているPinは私の版ではGPO2Pinでした。
Arduino IDEでプログラミングして書き込むので,ボードマネージャーの追加などが必要です。
いろんな方が書いてくれていますので参考にしながらやっていけましたが,一番まとまっている感じがするページをメモしておきます。
→ RANDOM NERD TUTORIAL ESP32 Project
3) PC (Windows 10)
・Arduino IDEとProcessingは導入済み
・ESP32とはマイクロBのUSB接続
以上のものを実際に配置するとUSBからシリアル通信線と電源は得て,ESP32が3.3V駆動なので電圧のレベル変換もなく,I2Cのプルアップだけですむので配線はシンプルです。
とは言うものの,ESP32のボード表面にPin番号が書かれているタイプは,幅が広いので,5穴版のブレッドボードでは片方の1列しか残りません (^^;;;;;;;;;;
2.ソフトを入れて動かしてみる
同じカメラを使ったモジュールのあるsparkfunのサイトからソフトを探しました。
→ Qwiic IR Array (MLX90640) Hookup Guide
ここには以下のサンプルなどがあります。
・Library
・Example 1 - Basic Readings
カメラからデータを少し読んで,ArduinoIDEのシリアルモニタで確認するソフト
・Example 2 - Output To Processing
カメラのデータをシリアル経由でPCに送るソフトと送られたデータをPCの中で視覚化するProcessingのソフトの2本立て
私のシステムがsparkfunの想定するボードと異なるので少々不安を抱きながらやってみました。
1) Example 1 - Basic Readings
ほぼ配線チェックのようなソフトですが,コンパイルでエラーが出ました (^^;;;;;;;
どうも私のライブラリなどの格納の仕方が悪かったのか,シリアル系の関数が一部のループ内で未定義扱いになります。
そこをコメントアウトして無理やり動かすとデータは得られました。配線やシリアル系のデータの動きも問題ない事が分かりほっとしました。
不思議なことに(不思議では無いのかな??)何回かIDEを再起動したり,書き込みをおこなっているとコメントアウト無しでも素知らぬ顔で動いていました 。なんでだろう〜(^^;;;;;;;;;
2) Example 2 - Output To Processing
はい,エラーが出て2時間ほどあれこれ悩みました(^^;;;;;;; 。
ESP32側のソフトはコンパイル・書き込みも問題なくシリアルデータがPCに送られて来るのは確認できました。
それではとProcessingのソフトを動かしてみると,こちらでエラーが出て動きません (^^;;;;;;;;;
ESP32側からはデータをカンマ区切りの長い文字データで送ります。一方,受け取るProcessing側ではそのデータをカンマで分けながら順に配列変数に代入していく流れになっています。どうもここで配列数のオーバーフローが起こっているようでした。
という事は送られた文字列の長さが違う?
そうです。ESP32のコンパイラはどうやら「改行」を「LF」単独ではなく,「CR+LF」にしているように思います。
Processing側のプログラムは「LF」単独を終了マークと認識しているので分ける数が合わなくなってエラーになるのでしょう。なんか大昔からある,機種ごとに異なるCR,LF問題がまだ解決してなくて,また出会ったのでしょうね(検証はしていませんけど,,,)
こういう時の私の常套手段ですが,両方のプログラムのデータの終了マークを"@"にしてみました。
ESP32側の変更箇所
ーーーーーーーーーーーーーーーーー
ーーーーーーーーーーーーーーーーー
Processing側の変更箇所
ーーーーーーーーーーーーーーーーーー
ーーーーーーーーーーーーーーーーーー
はい,これでやっと動きました。
オヤジ,会心のVサインですV(^^)
メガネをかけるとサングラスみたいになって面白いですね (^^)
さて,このカメラも何とか動きましたが,細かくなると逆に解析の方が難しくなりますね (^^;;;;
対象を何にして何に使うか,,によって適応するセンサーは当然変わるでしょうから,考え所です。
ま,それよりもCR・LF系のトラブル(多分)には少々疲れましたね。
ちなみにアンダーソンが作曲した「タイプライター」という曲は手動のタイプライターのCR・LFの時の音を使っています (^^)
ワープロで手動のタイプライターが使われなくなり,オリベッティーのタイプライターが売れなくなって廃れた町。その町おこしの運動がArduinoですからねぇ〜。世は移るのです,,,。
で,居酒屋1回なみの出費を顧みず,もう少し解像度の良いのはどうだろと,32X24のサーマルカメラを試してみました。
1.今回の試行のシステム構成です。
1) Pimoroni - MLX90640 サーマルカメラ ブレークアウト
・Melexis MLX90640 遠赤外線センサーアレイ: 32x24 pixels、64FPS
・標準 55°x35°
・検出温度: -40~300°C、精度 約 1°C
・I2C インタフェース(アドレス 0x33)、3.3V or 5V
広角110°のもあります。
2) ESP32 Development Board
WifiとBluetoothも使えて,メモリも多くとれそうなので使ってみました。何やら複雑な商品構成で,自分が買った廉価品がどれなのか確証がありません(^^;;;;
Pinの配置では次図の型と一致します。
ちなみにLEDを点滅させるテスト(Lチカ)に対応するボー上のLEDがつながっているPinは私の版ではGPO2Pinでした。
Arduino IDEでプログラミングして書き込むので,ボードマネージャーの追加などが必要です。
いろんな方が書いてくれていますので参考にしながらやっていけましたが,一番まとまっている感じがするページをメモしておきます。
→ RANDOM NERD TUTORIAL ESP32 Project
3) PC (Windows 10)
・Arduino IDEとProcessingは導入済み
・ESP32とはマイクロBのUSB接続
以上のものを実際に配置するとUSBからシリアル通信線と電源は得て,ESP32が3.3V駆動なので電圧のレベル変換もなく,I2Cのプルアップだけですむので配線はシンプルです。
とは言うものの,ESP32のボード表面にPin番号が書かれているタイプは,幅が広いので,5穴版のブレッドボードでは片方の1列しか残りません (^^;;;;;;;;;;
2.ソフトを入れて動かしてみる
同じカメラを使ったモジュールのあるsparkfunのサイトからソフトを探しました。
→ Qwiic IR Array (MLX90640) Hookup Guide
ここには以下のサンプルなどがあります。
・Library
・Example 1 - Basic Readings
カメラからデータを少し読んで,ArduinoIDEのシリアルモニタで確認するソフト
・Example 2 - Output To Processing
カメラのデータをシリアル経由でPCに送るソフトと送られたデータをPCの中で視覚化するProcessingのソフトの2本立て
私のシステムがsparkfunの想定するボードと異なるので少々不安を抱きながらやってみました。
1) Example 1 - Basic Readings
ほぼ配線チェックのようなソフトですが,コンパイルでエラーが出ました (^^;;;;;;;
どうも私のライブラリなどの格納の仕方が悪かったのか,シリアル系の関数が一部のループ内で未定義扱いになります。
そこをコメントアウトして無理やり動かすとデータは得られました。配線やシリアル系のデータの動きも問題ない事が分かりほっとしました。
不思議なことに(不思議では無いのかな??)何回かIDEを再起動したり,書き込みをおこなっているとコメントアウト無しでも素知らぬ顔で動いていました 。なんでだろう〜(^^;;;;;;;;;
2) Example 2 - Output To Processing
はい,エラーが出て2時間ほどあれこれ悩みました(^^;;;;;;; 。
ESP32側のソフトはコンパイル・書き込みも問題なくシリアルデータがPCに送られて来るのは確認できました。
それではとProcessingのソフトを動かしてみると,こちらでエラーが出て動きません (^^;;;;;;;;;
ESP32側からはデータをカンマ区切りの長い文字データで送ります。一方,受け取るProcessing側ではそのデータをカンマで分けながら順に配列変数に代入していく流れになっています。どうもここで配列数のオーバーフローが起こっているようでした。
という事は送られた文字列の長さが違う?
そうです。ESP32のコンパイラはどうやら「改行」を「LF」単独ではなく,「CR+LF」にしているように思います。
Processing側のプログラムは「LF」単独を終了マークと認識しているので分ける数が合わなくなってエラーになるのでしょう。なんか大昔からある,機種ごとに異なるCR,LF問題がまだ解決してなくて,また出会ったのでしょうね(検証はしていませんけど,,,)
こういう時の私の常套手段ですが,両方のプログラムのデータの終了マークを"@"にしてみました。
ESP32側の変更箇所
ーーーーーーーーーーーーーーーーー
ーーーーーーーーーーーーーーーーー
Processing側の変更箇所
ーーーーーーーーーーーーーーーーーー
ーーーーーーーーーーーーーーーーーー
はい,これでやっと動きました。
オヤジ,会心のVサインですV(^^)
メガネをかけるとサングラスみたいになって面白いですね (^^)
さて,このカメラも何とか動きましたが,細かくなると逆に解析の方が難しくなりますね (^^;;;;
対象を何にして何に使うか,,によって適応するセンサーは当然変わるでしょうから,考え所です。
ま,それよりもCR・LF系のトラブル(多分)には少々疲れましたね。
ちなみにアンダーソンが作曲した「タイプライター」という曲は手動のタイプライターのCR・LFの時の音を使っています (^^)
ワープロで手動のタイプライターが使われなくなり,オリベッティーのタイプライターが売れなくなって廃れた町。その町おこしの運動がArduinoですからねぇ〜。世は移るのです,,,。