간단한 온도계 만들기

유아의 체온을 측정할 때 등에 사용되는 비접촉 온도계를 간단하게 만듭니다.

사용한 것


  • MLX90614
  • 10kΩ 저항 × 2
  • Arduino UNO
  • 브레드 보드
  • 점퍼 와이어
  • M5Stack

  • 2000엔 조금으로 살 수 있는 적외선 온도 센서, MLX90614를 가지고 남아 있었기 때문에
    사용해 보았습니다.
    과거에 딸기 리낙스에서 구입한 3V 동작품입니다.


    배선



    MLX90614의 핀 구성입니다.



    Arduino UNO
    브레드보드
    MLX90614


    3V3
    -
    VDD

    GND
    -
    VSS

    A5(SCL)
    10kΩ
    SCL

    A4(SDA)
    10kΩ
    SDA


    SCL과 SDA의 경우 10kΩ의 한쪽 다리에서 3V3 전원을 공급해야 합니다.
    실제로 배선하면 이렇게 됩니다.


    기본 동작



    Adafruit의 편리한 라이브러리가 있으므로 쉽게 작동 할 수 있습니다.
    Arduino IDE 스케치> 라이브러리 포함> 라이브러리 관리
    나온 검색창에 "mlx"라고 검색하면 표시됩니다.


    위에서 세 번째, "Adafruit MLX90614 Library"입니다.

    선택하고 "설치"를 누르고 무사히 설치되면 사용할 수 있습니다.

    간단하게 동작 확인을 해 봅니다.

    mlx90614_test.ino
    #include <Adafruit_MLX90614.h>
    
    Adafruit_MLX90614 mlx = Adafruit_MLX90614();
    
    void setup() {
      mlx.begin();
    
      Serial.begin(9600);
    }
    
    void loop() {
      // 表面温度の表示
      Serial.print("Temperature : ");  Serial.println(mlx.readObjectTempC());
      // 周囲温度の表示
      Serial.print("Ambient : ");  Serial.println(mlx.readAmbientTempC());
      Serial.println();
    
      delay(3000);
    }
    

    손가락을 가까이 보면 시리얼 모니터에 이런 식으로 나타납니다.


    PC에 연결하지 않아도 온도를 볼 수 있도록



    이것만으로는 매번 PC에 연결되지 않으면 온도를 볼 수 없습니다.
    거기서, 시판의 온도계와 같이, 단체로 온도를 볼 수 있도록(듯이) 하고 싶습니다.

    가지고 있던 M5Stack에 계측한 온도를 표시하도록 했습니다.
    A 버튼을 누르면 표면 온도, C 버튼을 누르면 주위 온도가 나오게 합니다.

    m5stack_mlx90614.ino
    #include <Adafruit_MLX90614.h>
    #include <M5Stack.h>
    
    Adafruit_MLX90614 mlx = Adafruit_MLX90614();
    
    void setup(){
    
      // セットアップ
      M5.begin();
      mlx.begin();
    
      Serial.begin(115200);
    
      // デフォルト表示
      Serial.println("Title");
      M5.Lcd.fillScreen(BLACK);
      M5.Lcd.setTextColor(WHITE);
      M5.Lcd.setCursor(70, 40);
      M5.Lcd.setTextSize(4); 
      M5.Lcd.print("MLX90614");
      M5.Lcd.setTextSize(3); 
      M5.Lcd.setCursor(20, 100);
      M5.Lcd.print("Temperature");
      M5.Lcd.setCursor(170, 140);
      M5.Lcd.print("Display");
    }
    
    void loop() {
    
      if(M5.BtnA.wasPressed()) {
        // 表面温度表示
        Serial.println("Temperature");
        M5.Lcd.setCursor(10, 40);
        M5.Lcd.fillScreen(RED);
        M5.Lcd.setTextColor(WHITE);
        M5.Lcd.setTextSize(3);
        M5.Lcd.print("Temperature  ");
        M5.Lcd.setCursor(50, 100);
        M5.Lcd.setTextSize(8); 
        M5.Lcd.print(mlx.readObjectTempC());
        M5.Lcd.setCursor(230, 180);
        M5.Lcd.setTextSize(2);
        M5.Lcd.print(" deg.");
    
        delay(1000);
      }
    
      if(M5.BtnC.wasPressed()) {
        // 周囲温度表示
        Serial.println("Ambient");
        M5.Lcd.setCursor(10, 40);
        M5.Lcd.fillScreen(GREEN);
        M5.Lcd.setTextColor(WHITE);
        M5.Lcd.setTextSize(3);
        M5.Lcd.print("Ambient  ");
        M5.Lcd.setCursor(50, 100);
        M5.Lcd.setTextSize(8); 
        M5.Lcd.print(mlx.readAmbientTempC());
        M5.Lcd.setCursor(230, 180);
        M5.Lcd.setTextSize(2);
        M5.Lcd.print(" deg.");
    
        delay(1000);
      }
      M5.update();
    }
    

    실제로 움직이고 있는 곳을 GIF 애니메이션으로 해 보았습니다.

    빨간 화면의 표면 온도 때 손가락을 가까이하면 온도가 바뀌고 있음을 알 수 있습니다.

    요약



    센서에 대상물을 가까이 하는 것만으로 바로 온도를 측정할 수 있으므로,
    유아의 체온 측정 등에 사용되는 이유를 잘 알았습니다.
    또, M5Stack가 부담없이 단독으로 움직이는 표시기로서 취급할 수 있기 때문에, 조금 동작을 시험해 보고 싶을 때에 최적입니다.

    좋은 웹페이지 즐겨찾기