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

아두이노 초음파 거리 & 온도 모니터링 LCD 알람 시스템

부품 및 소모품

Arduino UNO1개
Adafruit 표준 LCD 16x2 (흰색 on 파란색)1개
초음파 센서 HC-SR04 (일반)1개
Maxim DS18B20 1-Wire 디지털 온도계1개
4.75kΩ 저항1개
SparkFun 푸시버튼 스위치 12mm1개
단일 턴 포텐셔미터 10kΩ1개
부저1개
LED (녹색, 노란색, 빨간색 각 1개)3개
221Ω 저항3개
브레드보드 (일반)1개
점퍼 와이어 (일반)1세트

앱 및 온라인 서비스

프로젝트 소개

아두이노 초음파 거리 & 온도 모니터링 LCD 알람 시스템

이 프로젝트는 물탱크 수위 정보를 제공합니다. 수위가 낮으면 녹색 LED 점등, 중간이면 노란색 LED 점등, 높으면 빨간색 LED가 부저 소리와 함께 점멸합니다. 초음파 센서로 센서-수면 간 거리를 측정해 LCD에 표시하고, DS18B20으로 탱크 내부 온도도 함께 표시합니다.

이 프로젝트는 더 큰 프로젝트의 일부입니다. 2단계: 펌프 작동 표시용 6개 추적 LED 원형 장착 (링크). 3단계: 수위 높으면 펌프 시작, 낮으면 정지 (제작 중). 실제로는 방수 초음파 센서 사용 예정이며 배선/코드 변경 없음. 센서가 젖었을 때(습도) 판독에 어떤 영향 있을지 모르니 이 프로젝트는 정보 제공용이고, 3단계에서 자기 접점으로 펌프 제어 예정.

코드

#include <LiquidCrystal.h>  // Liquid Crystal 라이브러리 로드
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 6  // 데이터선은 아두이노 핀 6에 연결

OneWire oneWire(ONE_WIRE_BUS);  // OneWire 인스턴스 생성
DallasTemperature sensors(&oneWire);  // Dallas Temperature에 oneWire 참조 전달

LiquidCrystal LCD(12, 11, 5, 4, 3, 2);  // LCD 객체 생성 (RS, E, D4, D5, D6, D7)

int trigPin = 9;   // 센서 Trig 핀 → 아두이노 핀 9
int echoPin = 7;   // 센서 Echo 핀 → 아두이노 핀 7
int myCounter = 0;
float pingTime;    // 왕복 시간 (마이크로초)
float targetDistance;  // 목표 거리 (cm)
float speedOfSound = 776.5;  // 음속 (마일/시) - 원본 단위 주의

void setup() {
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  LCD.begin(16, 2);  // 16x2 LCD 초기화
  LCD.setCursor(0, 0);
  LCD.print("Distance:");
  sensors.begin();  // 온도 센서 라이브러리 시작
  pinMode(8, OUTPUT);   // 노란색 LED
  pinMode(10, OUTPUT);  // 빨간색 LED
  pinMode(13, OUTPUT);  // 녹색 LED
}

void loop() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2000);  // 신호 안정화
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(15);    // 15μs 트리거 펄스 (일반적으로 10μs 권장)
  digitalWrite(trigPin, LOW);
  delayMicroseconds(10);
  
  pingTime = pulseIn(echoPin, HIGH);  // 마이크로초 단위
  pingTime = pingTime / 1000000;      // 초 단위 변환
  pingTime = pingTime / 3600;         // 시간 단위 변환
  targetDistance = speedOfSound * pingTime;  // 마일 단위 거리
  targetDistance = targetDistance / 2;       // 왕복이므로 반으로
  targetDistance = targetDistance * 160934.4; // 마일 → 센티미터 변환
  
  sensors.requestTemperatures();  // 온도 측정 요청
  
  LCD.setCursor(10, 0);
  LCD.print(" ");  // 행 지우기
  LCD.setCursor(10, 0);
  LCD.print((int)(targetDistance + 0.5));  // 반올림 거리 출력
  LCD.print("cm ");
  
  LCD.setCursor(0, 1);
  LCD.print(" ");  // 행 지우기
  LCD.setCursor(0, 1);
  
  if (targetDistance > 40) {
    LCD.print("LEV LOW ");
    LCD.print(sensors.getTempCByIndex(0));
    LCD.print((char)223);  // 도(°) 기호
    LCD.print("C");
  } else if (targetDistance < 40 && targetDistance > 20) {
    LCD.print("LEV MED ");
    LCD.print(sensors.getTempCByIndex(0));
    LCD.print((char)223);
    LCD.print("C");
  } else {  // targetDistance < 20
    LCD.print("LEV HIGH ");
    LCD.print(sensors.getTempCByIndex(0));
    LCD.print((char)223);
    LCD.print("C");
  }
  
  delay(2000);
  
  // LED 제어
  if (targetDistance > 40) {
    digitalWrite(13, HIGH);  // 녹색 ON
  } else {
    digitalWrite(13, LOW);   // 녹색 OFF
  }
  
  if (targetDistance < 40 && targetDistance > 20) {
    digitalWrite(8, HIGH);   // 노란색 ON
  } else {
    digitalWrite(8, LOW);    // 노란색 OFF
  }
  
  if (targetDistance < 20) {
    digitalWrite(10, HIGH);  // 빨간색 ON
    delay(2000);
    digitalWrite(10, LOW);   // 빨간색 OFF
  } else {
    digitalWrite(10, LOW);   // 빨간색 OFF
  }
}

회로도

lcd_pot_led_buzz_pb_distsens_temp_EHVdF6S1L7.fzz (프리칭 파일)

제조공정

  1. 통합 QR, RFID, 온도 검증 출입 통제 시스템
  2. 라즈베리 파이 다중 DS18B20 1-와이어 센서 연결으로 정확한 온도 모니터링
  3. 라즈베리 파이와 파이썬으로 원격 온도 센서 만들기 – 단계별 가이드
  4. 라즈베리 파이 & DS18B20으로 다중 센서 온도 & 조도 모니터링 시스템 구축
  5. 라즈베리 파이와 습도 센서로 자동 에어로포닉스 시스템 만들기
  6. MCP9808, InfluxDB, Grafana로 라즈베리 파이 홈 온도 모니터 구축하기
  7. MAX6675 IC로 아두이노 포텐타 H7에 열전대 센서 연동하기
  8. DHT11 온습도 센서 + LED 표시등 + 피에조 부저 프로젝트
  9. DS1302 RTC와 아두이노 우노로 만드는 신뢰할 수 있는 알람 시계
  10. NASA 고다드 랩온칩 센서: 실시간 유량·온도 모니터링