7
3

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 3 years have passed since last update.

簡易非接触体温計をつくってみた

Posted at

オムロンのセンサとArduinoとProcessing on ネットブック with WinXp

私の職場の高専では、6月下旬から課外活動も徐々に再開しています。ただし、活動前に体温計測が義務付けられています。
そこで、研究室にあったWinXPのネットブックと非接触赤外線センサ(OMRON MEMS非接触温度センサD6T-44L-06)をつかって非接触の検温器をつくってみました。
顔表面の温度を測るので、外気温の影響を補正しないといけないのですが、そこは、NEC技研に掲載されていた実験結果の図を使って学生達に補正してもらうことにしました。
パソコンの横に気温計を設置する必要がありますが。
失敗は、数多くありました。一番、大変だったのが、WinXPのノートブックにArduinoをUSB認識させ、サンプルプログラムのProcessingのCOMポート指定の克服ですね。
やっと完成しました。学生さんたち、使ってくれるだろうか。。。

外観等

YouTube動画による紹介
非接触検温器.png

写真外観
IMG-3799.JPG
Arduinoとセンサの筐体は蓋面に両面テープで貼り付けています。
IMG-3800.JPG
動作画面とセンサ部分です。
IMG-3801.jpg
このセンサは4x4のセルで計測温度を表示してくれます。非常に画素のあらいサーモグラフィですね。センサ部に顔を近づければ、全セルが34~5度になります。
離れて立っても顔のあたりの温度が、34~35度になりました。

計測方法を示す図

検温器.jpg

# ハード構成

Arduino UNOのプログラム

Arduino UNO のプログラムはスイッチサイエンスさんの「MEMS温度センサを使おう」ページを参考にしました。
このページの「// D6T-44L test program for Arduino // D6T_test_Arduino.ino // 2013/03/27 http://www.switch-science.com 」をそのまま使わせてもらいました。

ネットブック上のプログラム

  • OS はWindowsXPです。使いみちのないネットブックですが、小型なのでなにかに使えると思って、捨てずにおいてありました。ストレージはSSDです。
  • ProcessingはWin 32bit版をダウンロードすれば使えました。
  • Arduinoを認識させるためにnon admin用のArduinoIDEをインストールしました。
  • Processingのプログラムも上のページを参考にしました。
  • 変更箇所は、11行目のポート番号のところです。リストでCOMに接続されている番号がコンソールに出力されるので、ポート番号を示す、リストの順番(一番目は0です)を書く必要があります。私の場合は、COM8で、リストの2番目に表示されたので、1を指定しました。
  • 温度は16エリアの中の最大値を計測値にしています。
  • 表示部の大きさを変えて、一番上に最大値を計測値として表示するようにしました。
  • 以下がリストです。
TempMeter20200705.pde
/*
  D6T-44L test program for Processing
  2013/03/26 www.switch-science.com
  2020/07/05 https://www.youtube.com/channel/UC41qeaw-dXNdl0puKkXiuKA/
  */

import processing.serial.*;

float[] tdata = new float[17]; // 温度を入れる配列(PTAT込みで来ることも考えて17要素分確保)
float tptat; // PTAT
float tmax; // Taion
String portName; // シリアルポート名
int serialport = 1; // 接続するシリアルポート番号を指定する
                    // Macの場合、/dev/tty.*のポートを選択してください。
String buf; // 受信バッファ
color[] tcolor = {#400040,#000080,#006060,#008000,#C0C000,#E0A000,#E00000,#F08080}; // 色テーブル

Serial myPort;  // Create object from Serial class

void setup() {
  size(480,600);
  println(Serial.list());
  portName = Serial.list()[serialport];
  myPort = new Serial(this, portName, 9600);
  myPort.clear();

}
void draw() {
  myPort.write(0x01); // データのリクエストをする
  delay(100); // 100ms待つ(すぐにシリアルポートの受信チェックをしないため)
  while (myPort.available() > 0) { // シリアルポートにデータが来ていたら
    delay(300); // 300ms待つ(データ全体が送信されるのを待つため)
    buf = myPort.readString(); // 受信
    myPort.clear();  // シリアルポート受信バッファのクリア
    tdata = float(split(buf, ','));  // データをカンマで分割し、floatで配列に格納
    tmax = 0.0;
    for (int i = 0; i < 16; i++) { // 各エリアごとに色を設定し、四角を描画する
      if ( tmax < tdata[i] ){ tmax = tdata[i]; }
      if (tdata[i] < 0) {
        
        fill(tcolor[0]);
      } else if (tdata[i] < 5) {
        fill(tcolor[1]);
      } else if (tdata[i] < 10) {
        fill(tcolor[2]);
      } else if (tdata[i] < 15) {
        fill(tcolor[3]);
      } else if (tdata[i] < 20) {
        fill(tcolor[4]);
      } else if (tdata[i] < 25) {
        fill(tcolor[5]);
      } else if (tdata[i] < 30) {
        fill(tcolor[6]);
      } else  {
        fill(tcolor[7]);
      }
      rect((i % 4)*120, (i / 4)*120+60, (i % 4)*120+120,(i / 4)*120+120+60);
      if (tdata[i]<5) {fill(255);} else {fill(0);}
      textAlign(CENTER, CENTER);
      textSize(20);
      text(str(tdata[i]),(i % 4)*120+60, (i / 4)*120+60+60);
    }
    rect(0, 0, 480,60); fill(255);
    textAlign(CENTER, CENTER);
    textSize(32);
    text(str(tmax),240, 30);
    
  }
}

コスト概算

概算は、12,000円ぐらいですね。
なお、M5Stackで同じようなものを作れるみたいです。

  • センサ 7150円
  • ArduinoUNO 3300円
  • ASUS Eee PC 901 メモリ 1GB SSD 4GB ヤフオクで2200円ぐらい

よかったら YouTube 簡単マイコン教室 チャンネルにもお越しください。

かんたんマイコン教室.png
https://www.youtube.com/channel/UC41qeaw-dXNdl0puKkXiuKA/

7
3
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
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?