05-29-2019 07:40 AM
LattePanda AlphaはArduino Leonardoを内蔵したボードPCで、先代のLattePandaよりもパワフルになって冷却ファンも付いていますが値段も高くなっています。
MLX90640はI2C接続の32x24画素の赤外線温度センサです。赤外線温度センサとしてはPanasonicのAMG8834 (Grid Eye)は手軽に使えて、8x8画素ですが熱画像のように見ようと思えば見られないことはない楽しいセンサーです。画素数が多いMLX90640はどんな感じなのか気になります。
LabVIEWがインストールされたボードPCに解像度の高い(と言っても32x24ですが、)赤外線温度センサをつないで温度分布がモニターできたら使いどころがあるかもしれないと考えて試してみました。
私が試した範囲での結果です。
MLX90640は解像度が高いのはとても良いのですが、LattePanda内蔵のLeonardoを使った場合はデータを0.5Hz間隔でしか取り込めませんでした。LattePandaである必要は無くなりますが、LeonardoにこだわらずMLX90640が動作するArduinoを選んでUSBで接続した方が良いと思います。
LattePanda,MLX90640,LabVIEW
LattePandaAlpha,MLX90640
配線
MLX90640のサンプルプログラム
モジュールを発売しているSparkfunからArduino用サンプルプログラムが提供されていますが、センサーメーカーのMelexis社のライブラリを使っているためRAM容量が小さなArduino UNOやLeonardoでは動作しないことが明記され、Arduino IDE環境で使用できるTeensy3.1というボードで動作が確認されているとのことです。
解像度に魅力を感じてMLX90640を使ってみたい方は、Teensyを購入することをお勧めします。(TeensyはArduino IDEにTeencyduinoというadd-onが必要なので少し違和感を感じつつも、Teensy3.5を購入して4Hzでの動作を確認しました。)
RAM容量の問題ならば32x24画素の1ラインずつ処理すればなんとかなりそうなものだろうとトライしている方がいて、以下のサイトは参考になりました。
1)センサー製造時のEEPROMデータをシリアルで読み込むプログラムを走らせて、配列でプログラム領域に書き込む。(上記サイトの方式を踏襲)
2)Melexis社のライブラリは32X24一括で処理しているので、1ライン(32データ)ごとに処理してシリアルで送り出すように変更する。
動かしてみないと分からないことですが、2Hzぐらい行けるかと期待していたので0.5Hzでしか動かせなかったのは残念でした。
10-06-2020 10:32 AM
labviewは、どのような回路になったのですか?教えて欲しいです。。。よろしくお願いします。
10-06-2020 08:04 PM
こんにちは、
LattePanda Alphaは棚から引っ張り出して、あれや、これや付けないと動かないので数日お待ちください。
<< ついでに赤外線温度センサに関連する参考情報 >>
赤外線温度センサで体温を推定するのが流行っていますが、測定した皮膚温と体温は一致しないものなので推定の根拠が必要です。
いろいろ探しましたが、人間生活工学研究センターのデータから根拠を作るのが良さそうな気がしています。
https://www.hql.jp/database/cat/etc/clothdb1998/体温調節能データベース
もっと良い根拠を知っている方はお知らせください。
10-06-2020 10:26 PM
MLX90640は接続していないので、当時動いていたプログラムをそのままアップします。
LabVIEWのプログラムはシリアルデータを受け取って強度グラフに表示しているだけです。
MLX90640用のArduinoプログラムはSparkFunから提供されています。そのプログラムはメモリに余裕のあるTeensyというArduinoボードが前提で、LattePandaに内蔵されているArduino UNO(互換)ではメモリ不足で動きません。
Arduino UNOでも動作するように改造したプログラム"MLX90640forUNO.ino"をアップしますが、動作速度は0.5Hzです。Teensy3.5では4Hzで動作しましたので、どうしてもUNOを使いたい人以外はメモリに余裕のあるArduinoボードを使ったほうが良いと思います。
10-07-2020 02:30 AM
コロナ渦の中、誠にありがとうございます!本当に助かります!
質問なのですが、i2cを用いてますか?
10-07-2020 03:54 AM
<< i2cについてどの程度ご存知なのかわからないので、余分なことも書いてありますが必要なければスルーしてください。>>
i2cはMLX90640とArduino間の通信で使用しています。
ArduinoとPC(LabVIEW)間はシリアル通信です。
MLX90640のデータシートには通信でi2cを使うと書いてあります。
Arduinoではi2cのことを"wire"と呼ぶ慣例があり、プログラムの中でwireライブラリを使っています。
i2c通信の実質的な部分はsparkfunのライブラリで行われています。
通信部分に興味がある場合はデータシートとsparkfunのライブラリを読むと参考になるかもしれません。ただし、MLX90640はかなり難解な方なのでi2c通信を理解するのであればもっとシンプルなセンサーから始めた方が良いと思います。
余談ですが、最近の面白いセンサはi2cとかspiで通信するものが多いので、データを得るだけであればArduinoをセンサーのインターフェースと考えて、センサーのサンプルスケッチを改造してデータをシリアル通信でPCのLabVIEWに送るのが便利です。
センサーを完璧に理解してからデータを使いたいというタイプの人も、センサーのデータを見ながら理解したほうが理解が深まると思います。
10-08-2020 12:00 AM
本当にありがとうございます!すごい助かります!
今、研究をしてまして教えてくださった事を参考にさせて頂きます!ありがとうございました!
またわからない事があれば聞いてもよろしいでしょうか?
10-08-2020 02:27 AM
>>またわからない事があれば聞いてもよろしいでしょうか?
参考になるようなことがあるのであれば、良いですよ。
その際は、可能な範囲でMLX90640を接続している環境をお知らせください。
---------------- -------------------- --------------------
本スレッドとは全く関係ありませんが、先日のメイカーフェア東京2020での展示ブースの写真です。
LabVIEW Community Editionと電子ブックの製本見本や自作の立体パズルを"チームいわて"に展示してもらいました。私は高齢者が近所にいるので感染リスクを避けてリモート参加でした。
10-13-2020 10:16 PM
コメント失礼します。
お聞きしたいことがあります。
mlx90640は、i2cにて何ビット目から温度情報が現れますか?
10-16-2020 12:27 AM
こんにちは、
このセンサーは難解なので私は詳細を理解していません。
センサーメーカーMelexisが提供しているMLX90640用I2Cドライバーを使ったので何ビット目から温度情報が現れるのか気にしませんでした。
詳細を知りたい場合は、おそらく、MLX90640のデータシートと
https://github.com/melexis/mlx90640-library
の資料とプログラムを読めば分かるのではないかと思います。