아두이노 LM35 온도계 (with Processing)

아두이노에서 받아들인 온도센서 데이터를 PC로 전송하여 PC 화면으로 출력하는 프로그램을 만들어 보겠습니다. PC쪽 프로그램은 프로세싱(https://processing.org/)을 이용하였습니다.

LM35 온도센서

LM35 온도센서는 측정된 온도 값을 아날로그 데이터(전압)로 출력해 주는 센서입니다. 측정할 수 있는 온도 범위에 따라 다양한 규격과 가격으로 판매되고 있습니다. LM35DZ의 경우 약 천원 내외의 가격으로 판매되고 있습니다.
LM35 온도센서는 연결 및 사용방법이 매우 간단합니다. 외부로 노출된 핀은 3개 입니다. 생긴 것은 작은 트랜지스터 같습니다.

3번 핀을 GND로 하고, 1번 핀에 5V의 전압을 넣어주면 2번 핀으로 현재 온도값이 일정한 전압으로 출력됩니다. 이 전압을 측정하여 온도를 알아냅니다.
2번 핀으로 출력되는 전압 값(V)에 100을 곱한 숫자가 섭씨온도와 정확하게 일치합니다. 따라서 멀티테스터의 숫자에서 소수점만 오른쪽으로 두 칸 옮겨서 읽으면 현재 온도가 됩니다.
즉,

2번 핀의 출력값이 0.10 V 이면 -> 현재 온도는 10 ℃
2번 핀의 출력값이 0.20 V 이면 -> 현재 온도는 20 ℃
2번 핀의 출력값이 0.25 V 이면 -> 현재 온도는 25 ℃

LM35 연결

LM35 2번 핀이 아두이노의 A0에 연결됩니다.

소프트웨어 설치 및 작동 방법

  1. 아두이노에 Firmata 펌웨어를 업로드 해야 합니다. Firmata는 아두이노에 설치되어 PC와 통신하기 위한 프로그램입니다.
    파일 > 예제 > Firmata > StandardFirmata
  2. https://processing.org/download/에 접속하여 프로세싱을 다운로드 받습니다.(processing-x.x.x.zip 파일 형태) 이미 설치되어 있다면 다운로드 단계는 생략합니다.
  3. 다운받은 zip 파일을 적당한 폴더에 압축을 풀어 놓습니다.
  4. processing.exe 파일을 실행시킵니다.
  5. 프로세싱에 아래의 소스코드를 붙여넣습니다.
    import processing.serial.*;
    import cc.arduino.*;
    
    Arduino arduino;
    
    void setup() 
    {
        //fullScreen();
        size(640, 360);
        frameRate(1);
    
        println(Arduino.list());
        arduino = new Arduino(this, Arduino.list()[0]);
    
        fill(0);
        textSize(min(width, height)/3);
        textAlign(CENTER, CENTER);
    }
    
    void draw() 
    {
        background(255);
        text(round(map(arduino.analogRead(0), 0, 1024, 0, 500.0)) + " ℃", width/2, height/2);
    }
  6. 키보드 [Ctrl+R] 키를 눌러 프로세싱 프로그램을 실행시키면, 아두이노의 센서 값을 가져와서 PC 화면에 뿌려줍니다.
  7. 프로세싱 코딩에 대해 잘 알고 있다면 화면을 좀 더 예쁘게 꾸며서 나만의 온도계를 만들 수도 있습니다.

추가내용 – 프로세싱에서 “No library found for cc.arduino” 오류 메시지가 뜨는 경우

프로세싱에 Firmata 라이브러리가 설치되어 있지 않아 생기는 에러 메시지입니다.
아래와 같이 라이브러리를 설치해 주세요.

  1. 프로세싱 메뉴의 스케치 → 내부라이브러리 → 라이브러리 추가하기를 선택하면, 라이브러리 팝업 창이 뜹니다.
  2. 라이브러리 중 Arduino (Firmata) | Controls…를 클릭하여 선택한 다음, Install 버튼을 클릭하여 라이브러리를 설치합니다.

이렇게 하신 후 다시 실행시켜 보세요.

목차