본문 바로가기
모두의 아두이노/아두이노 센서

[아두이노][온도 센서] KY-013으로 간단한 온도 모니터링 프로젝트 시작하기!

by 로니킴 2024. 11. 27.


KY-013 온도 센서와 아두이노를 활용해 실시간 온도 모니터링을 배워보세요! 단계별 가이드로 쉽게 따라 할 수 있습니다. 여러분의 첫 번째 IoT 프로젝트를 시작해 보세요!"

 

목차

     

     

     


     [아두이노][온도 센서] KY-013으로 간단한 온도 모니터링 프로젝트 시작하기!

    KY-013 아날로그 온도 센서는 간단한 구조와 낮은 비용으로 온도 측정 기능을 구현할 수 있는 효과적인 센서입니다. 아두이노와의 연결을 통해 실시간 온도 데이터를 읽고, 이를 LCD와 시리얼 모니터에 출력하는 과정을 통해 기본적인 전자 공학 및 프로그래밍 기술을 배울 수 있습니다.
    이 프로젝트에서는 센서와 아두이노의 하드웨어 연결, 아날로그 신호의 처리 및 변환, 데이터를 화면에 출력하는 방법을 다뤘습니다.
    KY-013 센서를 활용하면 온도 경고 시스템, 무선 온도 모니터링, 환경 데이터 로깅 등 다양한 프로젝트로 확장할 수 있습니다. 이 센서는 초보자부터 중급 사용자까지 누구나 쉽게 활용할 수 있는 유용한 도구입니다.

     

     


     

     

     

    1. 아날로그 온도 센서(KY-013)란?

    KY-013 아날로그 온도 센서는 저항 온도 감지기(NTC Thermistor)를 사용하여 온도를 측정하는 간단한 모듈입니다. 이 센서는 온도 변화에 따라 저항값이 변하며, 아날로그 신호를 통해 데이터를 제공합니다. 온도 측정 범위는 -55°C에서 +125°C로, 일상적인 환경 모니터링에 적합합니다. 간단한 핀 구성으로 VCC(전원), GND(접지), Signal(신호) 핀만 연결하면 손쉽게 사용이 가능합니다. NTC 서미스터의 특성상 온도가 상승하면 저항값이 감소하는 원리를 기반으로 동작합니다. KY-013은 낮은 비용과 간단한 구조로 초보자부터 중급 사용자까지 폭넓게 활용 가능합니다. 특히 온도 모니터링, 환경 제어, 알림 시스템 등 다양한 프로젝트에 응용할 수 있습니다. 전압 분배 회로를 통해 저항 변화를 아날로그 전압으로 변환하여 온도를 계산합니다. 작고 경량화된 설계로 Arduino와 같은 마이크로컨트롤러에 적합한 센서입니다. 이 센서를 통해 간단한 온도 측정 기능을 프로젝트에 쉽게 추가할 수 있습니다.

     

     

     

    KY-013 아날로그 온도 센서는 저항 온도 감지기(NTC Thermistor)를 사용하여 온도를 측정하는 간단한 모듈입니다. 이 센서는 온도가 상승하면 저항값이 감소하는 특성을 활용하여 아날로그 출력 신호를 제공합니다. 온도 측정 범위는 -55°C에서 125°C로, 일상적인 환경 모니터링이나 기본적인 온도 기반 프로젝트에 적합합니다.

    주요 특징:

    • 넓은 온도 범위: -55°C에서 +125°C까지 온도 측정 가능
    • 아날로그 신호 출력: 저항의 변화에 따른 전압 변화를 아날로그 핀으로 출력
    • 간단한 연결: VCC, GND, Signal 핀만 연결하면 동작
    • 활용 가능성: 온도 측정 데이터를 통해 환경 모니터링, 알림 시스템 등에 응용 가능

    NTC (Negative Temperature Coefficient) 서미스터가 포함된 이 모듈은 전압 분배 회로를 통해 온도 변화에 따른 저항값을 계산하며, 이를 기반으로 온도를 변환합니다. 이러한 특징 덕분에 KY-013은 저비용으로 온도 감지 기능을 추가하려는 초보자와 중급 사용자 모두에게 적합한 선택지입니다.

     

     


     

     

    2. 아날로그 온도 센서(KY-013)의 동작 원리

    KY-013의 동작 원리는 NTC 서미스터의 저항 변화와 전압 분배 회로를 기반으로 합니다. NTC 서미스터는 온도가 상승하면 저항값이 감소하는 특성을 가집니다. 이 특성을 활용하여 KY-013은 전압 분배 회로를 통해 저항값에 따른 전압을 출력합니다. 아두이노는 이 아날로그 신호를 analogRead() 함수를 통해 읽어들입니다. 읽어들인 전압 값으로 서미스터의 저항값을 계산하며, 수식을 통해 이를 온도로 변환합니다. 온도 변환 과정에서는 서미스터의 베타 계수를 활용해 복잡한 수학적 변환이 이루어집니다. 변환된 온도 값은 섭씨 단위로 변환되어 시리얼 모니터 또는 LCD 디스플레이에 출력됩니다. 이러한 과정은 간단하면서도 효율적으로 동작하며, 초보자가 쉽게 이해하고 응용할 수 있습니다. KY-013은 특히 온도 변화 감지가 필요한 프로젝트에 실용적이며, 비용 대비 성능 면에서 탁월한 선택입니다.

     

     

     

    KY-013의 동작 원리는 NTC 서미스터의 저항 변화전압 분배 회로를 기반으로 합니다. NTC 서미스터는 온도가 상승하면 저항값이 감소하는 특성이 있으며, 전압 분배기를 통해 이러한 저항 변화를 아날로그 전압 신호로 변환합니다.

    동작 과정:

    1. 전압 분배 회로:
      • KY-013 모듈은 전압 분배 회로를 통해 입력 전압을 두 저항(NTC 서미스터와 고정 저항) 사이에 나눕니다.
      • 아두이노는 이 출력 전압을 analogRead()를 사용하여 측정합니다. KY-013 아날로그 온도 센서는 전압 분배 회로를 사용하여 온도에 따라 변화하는 저항값을 전압으로 변환합니다. 이 원리는 두 개의 저항(고정 저항과 NTC 서미스터)이 직렬로 연결된 회로에서 전압이 분배되는 방식으로 작동합니다.
    2. 저항 계산:
      • 출력된 전압 값으로 NTC 서미스터의 현재 저항을 계산합니다. 
    3. 온도 변환:
      • 계산된 저항값을 서미스터의 특성 곡선(베타 계수와 함께 사용)을 기반으로 로그 함수와 수식을 적용하여 온도로 변환합니다. 
    4. 출력:
      • 변환된 온도 값은 LCD 디스플레이, 시리얼 모니터, 또는 다른 출력 장치를 통해 사용자에게 전달됩니다.

    이 원리는 간단하면서도 매우 효율적이기 때문에 초보자가 아두이노 프로젝트에서 온도 감지 기능을 구현하기에 적합합니다. KY-013은 정밀도와 응답 속도 면에서 고급 센서에 비해 떨어질 수 있지만, 가격 대비 기능에서 매우 실용적인 선택입니다.

     


     

     

    3. 아날로그 온도 센서(KY-013) 구입하기

     

    KY-013 아날로그 온도 센서는 다양한 온라인 쇼핑몰에서 구매할 수 있습니다. 예를 들어, 다두이노에서는 900원에 판매하고 있으며 다두이노,  일렉솔루션에서는 600원에 제공하고 있습니다. 가격은 판매처에 따라 다를 수 있으므로, 구매 전에 여러 곳의 가격과 배송비를 비교하는 것이 좋습니다. 또한, 신뢰할 수 있는 판매처를 선택하여 제품의 품질과 배송 기간을 확인하는 것이 중요합니다. 초보자라면, 상세한 제품 설명과 사용 예시를 제공하는 판매처를 선택하는 것이 도움이 될 수 있습니다.

     


     

     

     

    4. 아날로그 온도 센서(KY-013) 하드웨어 연결하기

    KY-013 아날로그 온도 센서를 아두이노와 LCD 키패드 쉴드와 함께 사용하려면 다음과 같이 연결합니다. 먼저, KY-013 센서의 VCC 핀을 아두이노의 5V 핀에, GND 핀을 아두이노의 GND 핀에 연결하여 전원을 공급합니다. 그런 다음, 센서의 신호 핀(S)을 아두이노의 아날로그 입력 핀 A1에 연결합니다. 이렇게 하면 센서의 아날로그 신호를 아두이노가 읽을 수 있습니다. LCD 키패드 쉴드는 아두이노의 디지털 핀 8, 9, 4, 5, 6, 7에 연결되며, 이를 통해 LCD 제어가 가능합니다. 이러한 연결을 통해 KY-013 센서로부터 측정된 온도 데이터를 아두이노가 수집하고, LCD에 표시할 수 있습니다. 이때, LCD 키패드 쉴드의 A0 핀은 키패드 입력을 위해 사용되므로, 센서와의 충돌을 피하기 위해 다른 아날로그 핀(A1)을 사용하는 것이 좋습니다.

     

     

    KY-013 아날로그 온도 센서의 신호 핀(S)을 아두이노 LCD 키패드 쉴드의 아날로그 입력 핀 A1에 연결하는 것은 일반적인 연결 방식입니다. 이러한 연결을 통해 센서의 아날로그 신호를 아두이노가 읽어들일 수 있습니다.

     

    하드웨어 연결 방법:

    1. KY-013 센서와 LCD 키패드 쉴드 연결:
      • VCC 핀: KY-013의 VCC 핀을 LCD 키패드 쉴드의 5V 핀에 연결합니다.
      • GND 핀: KY-013의 GND 핀을 LCD 키패드 쉴드의 GND 핀에 연결합니다.
      • 신호(S) 핀: KY-013의 S 핀을 LCD 키패드 쉴드의 아날로그 입력 핀 A1에 연결합니다.

    왜 이렇게 연결하는가?

    • 전원 공급(VCC) 및 접지(GND) 연결 이유: 센서가 정상적으로 작동하려면 안정적인 전원 공급이 필요합니다. LCD 키패드 쉴드의 5V와 GND 핀을 통해 센서에 전원을 공급하여 안정적인 동작을 보장합니다.
    • 신호(S) 핀 연결 이유: KY-013 센서는 온도에 따라 아날로그 신호를 출력합니다. 이 신호를 아두이노가 읽기 위해서는 아날로그 입력 핀에 연결해야 합니다. LCD 키패드 쉴드의 A1 핀은 이러한 아날로그 신호를 수신하는 역할을 합니다.

    이러한 연결 방식을 통해 아두이노는 KY-013 센서로부터 온도 데이터를 받아 LCD에 표시할 수 있습니다.


     

     

     

    5. 아날로그 온도 센서(KY-013) 소프트웨어 코딩하기

     

    센서를 제어하기 위한 소프트웨어 준비 과정은 다음과 같은 단계로 이루어집니다

     


    1. 아두이노

    01 연결

    - 아두이노와 PC 연결

    - 아두이노 IDE 실행

    - 메뉴 → 툴 → 보드:아두이노 UNO 확인

    - 메뉴 → 스케치 → 확인/컴파일

     

    02 컴파일 확인

    스케치>확인/컴파일(CTRL+R) 를 선택해서 컴파일을 진행합니다.

     

    03 아두이노 우노 업로드

    컴파일이 이상없이 완료되면 스케치>업로드(CTRL+U) 를 선택해서 컴파일 파일을 업로드 합니다.

     

    04 동작 확인

    센서의 동작을 확인할 수 있습니다.

     


    2. 코드 설명

    이 코드는 KY-013 아날로그 온도 센서를 통해 온도를 측정하고, 측정된 값을 아두이노 LCD 쉴드에 표시하는 과정을 자동화합니다. 동작은 다음 순서로 구성됩니다:

    #include <LiquidCrystal.h>
    
    // LCD 핀 설정
    LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
    
    // 핀 정의
    const int TEMP_SENSOR_PIN = A1; // KY-013 센서 핀
    float temperatureC;             // 섭씨 온도 저장 변수
    
    // 서미스터 상수
    const float R_REF = 10000.0;     // 기준 저항 (10kOhm)
    const float BETA = 3950.0;       // 서미스터의 베타 계수
    const float T_REF = 298.15;      // 기준 온도 (25°C, Kelvin)
    const float ABS_ZERO = 273.15;   // 절대 영도 (0K)
    
    void setup() {
      lcd.begin(16, 2);               // LCD 초기화
      Serial.begin(9600);             // 시리얼 모니터 초기화
      lcd.print("Initializing...");   // LCD 초기 메시지
      delay(1000);
      lcd.clear();                    // LCD 초기화
    }
    
    void loop() {
      float resistance = calculateResistance(); // 저항 계산
      temperatureC = convertToTemperature(resistance); // 온도 변환
      
      displayTemperature(temperatureC); // 온도 출력
      logData(resistance, temperatureC); // 시리얼 출력
    
      delay(1000); // 1초 대기
    }
    
    // 저항 계산 함수
    float calculateResistance() {
      int analogValue = analogRead(TEMP_SENSOR_PIN); // 아날로그 값 읽기
      return R_REF / (1023.0 / analogValue - 1);     // 저항 계산
    }
    
    // 온도 변환 함수
    float convertToTemperature(float resistance) {
      float tempKelvin = 1.0 / (log(resistance / R_REF) / BETA + 1.0 / T_REF);
      return tempKelvin - ABS_ZERO; // Kelvin → Celsius
    }
    
    // LCD 출력 함수
    void displayTemperature(float temp) {
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("KY-013 Sensor");
      lcd.setCursor(0, 1);
      lcd.print("Temp: ");
      lcd.print(temp, 1); // 소수점 1자리 출력
      lcd.print(" C");
    }
    
    // 디버깅 데이터 출력 함수
    void logData(float resistance, float temp) {
      Serial.print("Resistance: ");
      Serial.print(resistance);
      Serial.print(" Ohms, Temp: ");
      Serial.print(temp);
      Serial.println(" C");
    }

     

    주요 흐름 설명:

    1. 사용자는 아두이노에 전원을 공급하고 코드를 업로드합니다.
    2. 아두이노는 LCD에 초기 메시지("Initializing...")를 표시하고 센서 데이터를 요청합니다.
    3. KY-013 센서는 아날로그 신호 값(온도에 따른 저항)을 아두이노로 전달합니다.
    4. 아두이노는 calculateResistance() 함수로 저항값을 계산하고, 이를 convertToTemperature() 함수로 변환하여 섭씨 온도를 얻습니다.
    5. 변환된 온도는 LCD 화면에 출력되며, 시리얼 모니터로 디버깅 데이터가 전송됩니다.
    6. 아두이노는 1초 대기 후 다음 데이터를 요청하며 루프를 반복합니다.


    1. 초기화 단계

    • LCD 초기화: LCD 쉴드가 16x2 크기로 초기화됩니다. 초기 메시지 "Initializing..."가 표시되어 시스템이 시작 중임을 사용자에게 알립니다.
    • 시리얼 모니터 설정: 디버깅을 위해 시리얼 모니터가 초기화되며, 센서 값과 계산된 온도 값을 출력할 준비를 합니다.
    • 초기화 완료 후 LCD 화면을 초기화하고, 시스템 동작 준비를 완료합니다.

    2. 메인 루프 시작

    코드의 loop() 함수는 아래 단계를 반복 실행합니다. 이 반복 구조는 센서 데이터를 실시간으로 읽고 처리하여 표시합니다.


    3. 센서 데이터 읽기

    • 아날로그 데이터 수집: KY-013 센서의 아날로그 핀(A1)으로부터 전압 값을 읽습니다.
    • 저항 계산: 전압 분배 회로의 원리를 사용하여 센서의 저항 값을 계산합니다. 이는 온도 변화에 따라 변화하는 NTC 서미스터의 저항 특성을 반영합니다.

    4. 온도 변환

    • 저항값을 온도로 변환: 센서의 저항 값을 수학적 공식을 통해 섭씨 온도로 변환합니다.
    • 변환 과정에서 NTC 서미스터의 베타 계수와 기준 저항 값을 사용하여, 온도-저항 특성 곡선에 따라 온도를 계산합니다.
    • 계산된 온도 값은 섭씨 단위로 저장됩니다.

    5. 온도 표시

    • LCD 화면 출력: 계산된 온도 값을 LCD 쉴드에 출력합니다.
      • 첫 번째 줄에는 "KY-013 Sensor"라는 고정 텍스트를 표시합니다.
      • 두 번째 줄에는 "Temp: XX.X C" 형식으로 실시간 온도를 출력합니다.
    • 시리얼 모니터 출력: 디버깅 목적으로 계산된 저항 값과 온도 값을 시리얼 모니터에 출력하여 시스템 동작 상태를 확인합니다.

    6. 대기 후 반복

    • 데이터 갱신을 위해 1초간 대기한 뒤, 루프를 반복하여 새로운 센서 데이터를 읽고 처리합니다.

    주요 동작 흐름 요약

    1. 초기화: LCD와 시리얼 통신 설정, 초기 메시지 출력.
    2. 센서 데이터 읽기: KY-013 센서로부터 아날로그 데이터를 수집.
    3. 데이터 처리: 아날로그 데이터 → 저항 값 → 온도 값으로 변환.
    4. 출력: LCD와 시리얼 모니터를 통해 온도 값 표시.
    5. 반복: 1초마다 새로운 데이터 처리.

    이 구조는 실시간 데이터 수집 및 디스플레이를 간단하고 명확하게 구현하며, KY-013 센서와 LCD 쉴드를 통해 온도 측정 결과를 직관적으로 제공하는 시스템을 구성합니다.

     

     

     

    예시: KY-013 센서와 LCD 쉴드가 연결된 시스템 동작

    초기화 단계

    1. LCD 초기 메시지:
    Initializing...

    (1초 후 화면 초기화)


    측정 및 출력 예시

    1. LCD 화면 출력: KY-013 Sensor Temp: 26.3 C
    2. 시리얼 모니터 출력: Resistance: 9560.23 Ohms, Temp: 26.3 C

    온도 변화 예시

    • 온도가 상승했을 때:
      • LCD 화면: KY-013 Sensor Temp: 35.7 C
      • 시리얼 모니터: Resistance: 7023.18 Ohms, Temp: 35.7 C
    • 온도가 하강했을 때:
      • LCD 화면:KY-013 Sensor Temp: 18.5 C
      • 시리얼 모니터: Resistance: 12345.67 Ohms, Temp: 18.5 C

    이 예시는 KY-013 센서를 사용하여 측정한 온도가 LCD와 시리얼 모니터에 실시간으로 출력되는 모습을 보여줍니다.

     

     

     


     

     

     

     

     

    6. 아날로그 온도 센서(KY-013) 동작 확인

    KY-013 센서와 아두이노의 하드웨어 연결이 올바른지 점검한 후, 작성한 코드를 업로드합니다. LCD 화면에는 "KY-013 Sensor"와 현재 온도가 "Temp: XX.X C" 형식으로 표시되어야 합니다. 손을 대거나 주변 온도를 변화시키며 센서가 온도 변화를 감지하고 LCD에 적절히 표시되는지 확인합니다. 또한, 시리얼 모니터를 통해 읽은 데이터와 LCD에 표시된 값이 일치하는지 비교합니다.

     

     

     

    KY-013 아날로그 온도 센서와 아두이노를 연결한 후, 작성한 코드가 올바르게 작동하는지 확인하려면 다음 단계를 따르세요:

    1. 하드웨어 연결 점검:
      • 전원 공급: 아두이노 보드가 USB 케이블을 통해 PC와 연결되어 전원이 공급되고 있는지 확인합니다.
      • 센서 연결: KY-013 센서의 핀들이 아두이노 보드의 해당 핀(A1 등)에 정확하게 연결되었는지 확인합니다.
    2. 코드 업로드 및 실행:
      • 아두이노 IDE에서 작성한 코드를 컴파일하고 보드에 업로드합니다.
      • 업로드가 완료되면 보드가 자동으로 리셋되어 코드가 실행됩니다.
    3. LCD 출력 확인:
      • LCD 화면에 "KY-013 Sensor"와 함께 현재 온도가 "Temp: XX.X C" 형식으로 표시되는지 확인합니다.
      • 온도 값이 실시간으로 업데이트되는지 관찰합니다.
    4. 온도 변화 테스트:
      • 센서에 손을 대거나 주변 온도를 변화시켜 센서가 온도 변화를 감지하는지 확인합니다.
      • LCD에 표시되는 온도 값이 변화에 따라 적절히 변동되는지 확인합니다.
    5. 시리얼 모니터 확인:
      • 아두이노 IDE의 시리얼 모니터를 열어 센서로부터 읽은 원시 데이터와 변환된 온도 값이 출력되는지 확인합니다.
      • 시리얼 모니터에 출력되는 값이 LCD에 표시되는 값과 일치하는지 비교합니다.
    6. 문제 해결:
      • 예상과 다른 값이 출력되거나 LCD에 아무것도 표시되지 않는 경우, 하드웨어 연결 상태와 코드 설정을 다시 확인합니다.
      • 센서의 핀 연결, 아두이노 보드의 전원 공급, 코드 내 핀 번호 설정 등이 올바른지 점검합니다.

    이러한 단계를 통해 KY-013 아날로그 온도 센서와 아두이노 시스템이 올바르게 작동하는지 확인할 수 있습니다.


     

     

    7. 마무리

    이 프로젝트는 KY-013 센서를 활용해 아두이노와의 하드웨어 연결, 온도 데이터 처리, LCD를 통한 실시간 출력 과정을 학습할 수 있는 기회였습니다. 온도 변화에 따라 데이터가 LCD에 정확히 표시되는 것을 확인하며, 센서와 마이크로컨트롤러 간의 상호작용을 이해했습니다. 이를 바탕으로 데이터 로깅, 경고 시스템, 무선 모니터링과 같은 확장 프로젝트로 발전시킬 수 있습니다. KY-013 센서를 활용한 다양한 응용 분야를 탐구하며 실생활에 유용한 시스템을 개발할 수 있습니다.

     

    KY-013 아날로그 온도 센서를 활용한 이번 프로젝트를 통해 아두이노와 센서 간의 상호작용을 이해하고, 실시간으로 온도 데이터를 수집하여 LCD에 표시하는 과정을 경험하셨습니다.

     

    이 프로젝트를 통해 얻을 수 있는 주요 학습 내용은 다음과 같습니다:

    • 아두이노와 센서의 하드웨어 연결 방법: 센서의 핀 배치와 아두이노 보드의 핀을 정확하게 연결하는 방법을 익혔습니다.
    • 아날로그 신호 처리: 아날로그 센서로부터 데이터를 읽고, 이를 유의미한 값(온도)으로 변환하는 과정을 학습했습니다.
    • LCD를 통한 데이터 출력: 수집한 데이터를 LCD에 실시간으로 표시하여 사용자와의 인터페이스를 구축하는 방법을 배웠습니다.

    이러한 경험을 바탕으로 다음과 같은 확장 프로젝트를 고려해볼 수 있습니다:

    • 온도 경고 시스템 구축: 설정한 임계 온도를 초과하거나 하회할 때 경고음을 발생시키거나 LED를 점등하여 사용자에게 알리는 시스템을 만들 수 있습니다.
    • 데이터 로깅 시스템: 측정된 온도 데이터를 일정한 시간 간격으로 SD 카드에 저장하여 장기간의 온도 변화를 기록하고 분석할 수 있습니다.
    • 무선 모니터링 시스템: 블루투스 또는 Wi-Fi 모듈을 활용하여 측정된 온도 데이터를 스마트폰이나 PC로 전송하여 원격으로 모니터링할 수 있는 시스템을 구축할 수 있습니다.

    이러한 확장 프로젝트를 통해 아두이노와 센서를 활용한 다양한 응용 분야를 탐구하고, 실생활에 적용할 수 있는 유용한 시스템을 개발해보시기 바랍니다.

     

     

     

     


     

     

     

    모두의 아두이노 환경 센서 : 네이버 도서

    네이버 도서 상세정보를 제공합니다.

    search.shopping.naver.com

     

    반응형


    댓글