MEMS温度センサを使おう

発売前新発売の商品ですがオムロンのMEMS温度センサを使って簡易サーモグラフィーみたいなものを作りました。
今回使った温度センサは、非接触で4x4の範囲の温度を測ることができます(1x8のものもあります)。一般的なサーモグラフィー用の温度センサに比べると解像度がかなり低いのですが、そのぶんお手頃価格で購入できます。
MEMS thermal sensor by OMRON D6T-44L-06
なお、スイッチサイエンスでは、4x4のほうの温度センサ(形D6T-44L-06)とケーブル(ハーネス)を近日中に販売開始します販売しています。興味を持たれた方は販売開始までしばらくお待ちください。温度センサハーネスを発売しました。

Arduinoと温度センサの間はI2Cで通信するので、I2C通信の機能が割り振られているAnalogピンにセンサを接続します。(今回使ったのはArduino Duemilanoveですが、Unoでも同じです。Leonardoだと違うので、適宜変更してください)

MEMS thermal sensor by OMRON D6T-44L-06

ピン配置は左からGND、VCC(5V)、SDA、SCL


温度センサのピン配置はセンサ(レンズ)を上に向けた時に、コネクタに向かって右からGND、VCC(5V)、SDA、SCLですので、

  • SCL - A5
  • SDA - A4
  • VCC - A3
  • GND - A2

と接続しました。VCCとGNDは正しくは電源とGNDの端子につなぐべきですが、この温度センサは消費電流が標準で5mAと低消費電力なので、GPIOポートを出力にしてHighとLowに設定することで電源を供給し、接続の手間を減らしています。
MEMS thermal sensor + Arduino

I2C通信を行うためにWireライブラリを入れています。ただ温度センサから送られてくるデータは35バイトなので、32バイト以上も受信するためにfenrirさんのWireExtライブラリも使っています。

やっていることはさほど難しくなくて、シリアルポートから0x01が送られてきたら温度センサから温度データを読み出してシリアルポートに送り出すだけです。デバッグで楽をするためにテキストで送信しましたが、送信データ量を減らしたいならバイナリで送信したほうがいいでしょう。長くなるのでソースコードは記事の最後に付けておきます。ソースではJSONで送信する関数も入れておきました。(JSON出力は未テストなので間違ってたらごめんなさい)
なお、改行コードはCR+LF(0x0D+0x0A)です。

画面表示がないとつまらないので、PCで受信して画面表示することにしました。開発言語はProcessingです。ソースは同じく最後に付けておきます。Arduinoにデータのリクエストを送信し、少し待ってからシリアルポートをチェックし、データが来ていたら全部のデータが受信できるまでまたしばらく待ってから受信します。受信したデータはカンマ区切りのテキストなので、splitで分割してfloatで浮動小数点数値に変換して配列に格納します。あとは温度ごとに色を設定してから四角を描いて、を16回繰り返して1回分の処理が完了します。温度の数値も表示しておきました。こういったリアルタイムの画像表示をするプログラムをさっと作りたいときにはProcessingが便利ですね。
MEMS thermal sensor + Arduino + Processing

そんなわけで、繰り返しにはなりますが4x4のほうの温度センサ(形D6T-44L-06)とケーブル(ハーネス)を近日中に販売開始します販売しています。興味を持たれた方は販売開始までしばらくお待ちください。温度センサハーネスを発売しました。

Pocket