산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

블루투스 온도 모니터: 아두이노 나노와 NTC 서미스터로 구현

부품 및 소모품

부품수량
Arduino Nano R31
점퍼 와이어 (범용)1세트
HC-06 블루투스 모듈1
NTC 서미스터1
10kΩ 저항1
1kΩ 저항1
2.21kΩ 저항1

필요한 도구 및 장비

앱 및 온라인 서비스

프로젝트 개요

아두이노 나노와 NTC 서미스터로 온도를 측정하고, HC-06 블루투스 모듈을 통해 안드로이드 앱으로 실시간 전송하는 튜토리얼입니다.

회로 구성

1. 서미스터 전압 분배 회로

서미스터와 알려진 저항(10kΩ)을 직렬로 연결해 전압 분배기를 구성합니다. 아두이노 아날로그 핀 A0로 분배 전압을 읽어 서미스터 저항값을 계산합니다.

raw = analogRead(analogPin);
if(raw) {
  ratio = raw * Vin;
  Vout = ratio / 1024.0;
  ratio = (Vin / Vout) - 1;
  R2 = R1 * ratio;
}

2. 베타 공식으로 온도 변환

얻은 저항값을 베타 공식으로 온도(°C)로 변환합니다. 서미스터의 베타 값과 25°C에서의 저항값(Ro)은 데이터시트에서 확인해야 합니다.

Temp = Beta / log(R2 / (Ro * exp(-Beta / To)));
Temp = Temp - 273.15; // 켈빈 → 섭씨

3. 블루투스 모듈 연결

HC-06 모듈은 3.3V 로직이므로 아두이노 TX → 모듈 RX 사이에 1kΩ/2.21kΩ 전압 분배기가 필요합니다. 모듈 VCC는 5V, GND는 공통, 모듈 TX → 아두이노 RX 직결 가능합니다.

아두이노 코드 동작

시리얼 통신(9600 baud)으로 온도 데이터를 전송합니다. 25~75°C 범위 모니터링 예제이며, 74°C 이상이면 약 5분(300초) 카운트 후 "Heating Complete" 메시지, 26°C 이하면 "Temperature ≤ 25°C" 메시지를 보냅니다.

안드로이드 앱 (MIT App Inventor 2)

블루투스 연결 후 시리얼 데이터를 수신해 화면에 표시하는 간단한 앱을 제작했습니다. 사용자 인터페이스와 블록 프로그래밍 예시가 포함되어 있습니다. 앱 인벤터 갤러리에서 다운로드 가능합니다.

필요에 따라 온도 임계값 알림 소리, 가열 완료 알림 등 커스터마이징이 쉽습니다.

마무리

브레드보드 조립 후 납땜하고 3D 프린팅 케이스에 넣어 완성할 수 있습니다. 서미스터 케이블을 길게 뽑아 측정 대상(용액 등)에서 전자부를 멀리 떨어뜨릴 수 있게 했습니다.

주의사항: 블루투스 모듈 전압 분배기 회로도에 오류가 있어 수정했습니다. 코드 업로드 시 블루투스 모듈을 분리하면 업로드 실패를 방지할 수 있습니다.

전체 코드

// Temperature monitor with bluetooth module
int analogPin = 0;
int raw = 0;
int Vin = 5;
float Vout = 0;
float R1 = 10000; // 사용 저항값으로 변경
float Ro = 10000; // 서미스터 25°C 저항값으로 변경
float R2 = 0;
float ratio = 0;
float Temp = 0;
float Beta = 3694; // 서미스터 베타값으로 변경
float To = 298.15; // 25°C = 298.15K

void setup() {
  Serial.begin(9600);
}

void loop() {
  raw = analogRead(analogPin);
  if(raw) {
    ratio = raw * Vin;
    Vout = ratio / 1024.0;
    ratio = (Vin / Vout) - 1;
    R2 = R1 * ratio;
    Temp = Beta / log(R2 / (Ro * exp(-Beta / To)));
    Temp = Temp - 273.15;

    if(Temp >= 74) {
      for (int i = 0; i <= 30; i++) {
        Serial.print("Temperature >= 74 °C");
        delay(10000);
      }
      Serial.print("Heating Complete");
      delay(10000);
    } else if (Temp <= 26) {
      Serial.print("Temperature <= 25 °C");
      delay(10000);
    } else {
      Serial.print("Temperature: ");
      Serial.println(Temp);
      delay(10000);
    }
  }
}

회로도

블루투스 온도 모니터: 아두이노 나노와 NTC 서미스터로 구현

참고: 분배기 저항 R2는 사용 중인 서미스터 저항값에 맞게 변경하세요. 알 수 없는 저항과 R2의 차이가 클수록 온도 측정 오차가 커집니다.

제조공정

  1. 라즈베리 파이 온습도 네트워크 모니터 DIY 구축 가이드
  2. 라즈베리 파이 & BrickPi로 ThingSpeak 온도 모니터 만들기
  3. 라즈베리 파이 대시보드로 집 온도 모니터링하기
  4. 스마트 식물 갈증 알림기 – DIY 토양 수분 센서로 최적의 수분 관리
  5. 이탈리안 워드 클럭(Word Clock) 제작: 아두이노 나노 + 네오픽셀 + LCD + RTC
  6. 아두이노 MKR Fox 1200으로 신뢰성 높은 시그폭스 kWh 미터 만들기
  7. 터치프리 제스처 잠금장치: APDS-9960과 아두이노로 보안 액세스 구현
  8. 아두이노 나노 컴패니언 키트 – DIY 전자 작업을 위한 필수 부품 및 도구
  9. 아두이노용 절연 아날로그 입력 회로 만들기
  10. 아두이노 우노로 정밀 반응 속도 테스터 만들기