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

아두이노 기반 조기 홍수 감지 시스템 – 소스 코드 & 회로 설계

조기 홍수 감시 시스템 – 회로도 & 프로젝트 소스 코드

개발도상국과 선진국을 막론하고 홍수는 인명과 재산 피해를 초래하는 대규모 자연재해입니다. 해저 지진, 허리케인, 폭우 등 자연재해로 인한 홍수가 매년 전 세계 곳곳에서 발생합니다.

폭우 시 다양한 지리적 지역에서 관리되지 않는 배수 시스템이 홍수를 유발하고 많은 생명을 앗아갑니다. 수위 상승을 조기에 감지해 경보를 주는 시스템이 있다면 인명 대피로 생명을 구할 수 있습니다. 기술로 수위 상승을 감지하고 사전에 경보하여 많은 사람을 대피시킬 수 있는 시스템이 필요합니다.

이 프로젝트에서는 연못, 댐, 저수지의 수위를 감지하고 부저로 경보를 주는 프로토타입을 소개합니다. 소규모 프로토타입으로 아두이노 우노, 초음파 센서, 부저, LCD, 연결 와이어를 사용합니다.

관련 프로젝트:

조기 홍수 감지 회로도

아두이노 기반 조기 홍수 감지 시스템 – 소스 코드 & 회로 설계

필수 부품

관련 프로젝트:

이제 이 기본 회로에 사용된 부품을 하나씩 알아보겠습니다.

아두이노 우노(Arduino UNO)

아두이노는 전자 프로젝트 개발용 오픈 소스 플랫폼입니다. 언제든 쉽게 프로그래밍, 삭제, 재프로그래밍이 가능합니다. 아두이노 우노, 나노, 메가, 릴리패드 등 다양한 보드가 용도에 따라 다른 사양으로 출시되어 있습니다.

이 프로젝트에서는 아두이노 우노로 가전제품을 자동 제어합니다. 16MHz 클럭 속도로 작동하는 ATmega328 마이크로컨트롤러 IC가 탑재되어 있으며 USART, I2C, SPI 통신 프로토콜을 지원합니다.

보통 마이크로 USB 케이블로 아두이노 IDE 소프트웨어를 사용해 프로그래밍합니다. ATmega328에는 사전 프로그래밍된 온보드 부트로더가 있어 외부 하드웨어 없이 코드 업로드가 쉽습니다. 전자 프로젝트나 제품 제작에 광범위하게 활용되며 C/C++ 언어로 프로그래밍해 배우기 쉽습니다.

관련 프로젝트:

아두이노 IDE는 프로그래밍을 훨씬 쉽게 만듭니다. 코드를 void setup()와 void loop() 두 부분으로 분리합니다. void setup()은 한 번만 실행되며 주로 초기화에 사용되고, void loop()는 지속 실행되어야 할 코드 부분입니다.

이 모델은 6개 아날로그 입력 핀과 14개 디지털 GPIO 핀(입출력용, 6개는 PWM 출력 가능)을 가지며 pinMode(), digitalWrite(), digitalRead(), analogRead() 함수로 제어합니다. 6개 아날로그 입력 채널(A0~A5)은 10비트 해상도를 제공합니다.

보드는 USB 케이블(5V) 또는 DC 잭(7~20V)으로 전원 공급 가능하며, 저전력 장치용 3.3V 생성을 위한 온보드 전압 레귤레이터가 있습니다.

ATmega328이 USART, SPI, I2C 통신 프로토콜을 지원하므로 USART용 0(Rx), 1(Tx) 핀, I2C용 SDA(A4), SCL(A5) 핀, SPI용 SS(10), MOSI(11), MISO(12), SCK(13) 핀이 있습니다.

관련 프로젝트:

HC-SR04 초음파 센서

HC-SR04는 비접촉 방식으로 거리를 측정하는 초음파 센서입니다. 레이더와 소나와 같은 원리로 작동하며 매우 정밀하게 거리를 측정하는 효율적인 방법을 제공합니다.

이론상 최대 450cm까지 측정 가능하나 실제로는 2cm~80cm 범위에서 3mm 정확도로 측정됩니다. 5V 동작, 15mA 미만 전류, 40Hz 주파수로 작동합니다.

아두이노 기반 조기 홍수 감지 시스템 – 소스 코드 & 회로 설계

HC-SR04에는 송신기와 수신기가 장착되어 있습니다. 학교에서 배운 속도, 거리, 시간 기본 공식으로 거리를 계산합니다.

거리 = 속도 × 시간

HC-SR04 송신기가 공기 중으로 초음파를 발사합니다. 이 파동이 센서 범위 내 물체에 반사되면 수신기가 반사파를 수신합니다. 위 공식으로 거리를 계산하려면 속도와 시간을 알아야 합니다.

초음파의 보편적 속도는 약 330m/s입니다. 시간은 마이크로컨트롤러에 구축된 회로로 측정됩니다. 에코 핀은 초음파가 수신기로 돌아오기까지의 시간 동안 HIGH 상태가 됩니다. 이렇게 HC-SR04 센서와 물체 간 거리를 계산할 수 있습니다.

관련 프로젝트:

HC-SR04와 아두이노 우노 인터페이싱

HC-SR04 초음파 센서는 아두이노, PIC, 라즈베리 파이 등 모든 마이크로컨트롤러와 사용 가능합니다. 이 프로젝트에서는 HC-SR04를 아두이노 우노와 인터페이싱합니다. HC-SR04 모듈은 VCC, GND, Trig, Echo 4개 핀을 가집니다.

HC-SR04 모듈에 5V와 GND를 아두이노 우노로 공급합니다. Trig 핀과 Echo 핀은 입/출력 핀이므로 아두이노 우노의 입/출력 핀에 연결합니다. 거리 측정을 위해 Trig 핀을 10마이크로초 동안 HIGH로 설정했다가 LOW로 설정합니다.

이렇게 40kHz 초음파가 발생해 물체로 향하고 반사되어 모듈 수신기로 돌아옵니다. 물체 감지 시 즉시 수신부 반환으로 Echo 핀이 반환 시간 동안 HIGH가 됩니다.

이 시간에 파동 속도 330m/s를 곱해 HC-SR04 모듈과 물체 간 거리를 구합니다.

관련 게시물:

16×2 LCD 디스플레이

16×2 LCD를 아두이노 우노와 인터페이싱하는 것은 매우 쉽습니다. 시중에는 다양한 LCD가 있지만 이 프로젝트에서는 16×2(2행, 각 행 16자 표시)를 사용합니다.

이 모듈에는 히타치 HD44780 드라이버가 탑재되어 마이크로컨트롤러와 인터페이싱 및 통신을 돕습니다. 4비트 모드와 8비트 모드로 작동 가능합니다. 4비트 모드는 4개 데이터 핀만 필요해 배선이 간단하고, 8비트 모드는 8개 데이터 핀이 필요합니다. 여기서는 4비트 모드를 사용합니다. 16×2 LCD 핀 설명을 살펴보겠습니다.

아두이노 기반 조기 홍수 감지 시스템 – 소스 코드 & 회로 설계

16×2 LCD 모듈 핀 설명:
LCD 핀 설명
VSS 그라운드 핀
VCC +5V 전원 공급
VEE LCD 대비 조절 핀
RS 레지스터 선택: 데이터 모드 또는 명령 모드
RW 읽기 또는 쓰기 모드
E LCD 인에이블
DB0-DB7 데이터 및 명령 입력 핀
LED+ 백라이트 LED 양극
LED- 백라이트 LED 음극

이 LCD는 자체 발광하지 않아 화면 뒤 LED가 백라이트 역할을 합니다. 아두이노 IDE의 LiquidCrystal 라이브러리로 초기화와 출력이 쉽습니다. 이 프로젝트에서 주로 사용할 LCD 함수는 다음과 같습니다.

LiquidCrystal lcd(rs, en, d4, d5, d6, d7); lcd.begin() lcd.clear() lcd.print()

조기 홍수 감지 시스템 작동 원리 & 소스 코드

초음파 센서를 기준 레벨에 설치해 송신기와 수신기가 수위를 향하도록 합니다. 아두이노 우노가 센서와 수위 간 거리를 측정합니다.

LCD에 두 지점 간 거리를 표시합니다. 홍수 기준 수위를 설정하고 수위가 기준에 도달하면 부저를 HIGH로 설정하고 LCD에 홍수 경보 문구를 출력합니다.

코드 설명

#include LiquidCrystal lcd(2,3,4,5,6,7); lcd.begin(16,2);

LCD 디스플레이 내장 라이브러리를 포함합니다. LiquidCrystal lcd() 함수는 아두이노 우노에 연결된 데이터 핀 번호를 인자로 받습니다. lcd.begin()으로 16×2 LCD를 초기화합니다.

pinMode(18,OUTPUT); //trigger pin pinMode(19,INPUT); //echo pin pinMode(20,OUTPUT); //buzzer

핀 18과 20을 트리거와 부저용 출력 핀으로, 핀 19를 에코 핀용 입력 핀으로 설정합니다.

t=pulseIn(19,HIGH); dist=t*340/20000;

시간 변수 't'가 트리거 핀이 HIGH 상태인 시간을 감지하고, 이를 센티미터 단위 거리로 계산해 변수 'dist'에 저장합니다.

if(dist<40) { digitalWrite(20,HIGH); lcd.clear(); lcd.setCursor(0,1); lcd.print("Water level is rising. Kindly evacuate"); delay(2000); } else { digitalWrite(20,LOW); delay(2000); } 

이 코드에서 홍수 조건을 센서와 수위 간 거리가 40cm 이하로 설정했습니다. 수위가 40cm 이하로 도달하면 부저가 HIGH로 경보하고 LCD에 홍수 경보 메시지를 표시합니다.

전체 소스 코드:

#include LiquidCrystal lcd(2,3,4,5,6,7); float t = 0; float dist = 0; void setup() { lcd.begin(16,2); pinMode(18,OUTPUT); //trigger pin pinMode(19,INPUT); //echo pin pinMode(20,OUTPUT); //buzzer lcd.setCursor(0,1); lcd.print(" Water Level Detector"); delay(2000); } void loop() { lcd.clear(); digitalWrite(20,LOW); digitalWrite(18,LOW); delayMicroseconds(2); digitalWrite(18,HIGH); delayMicroseconds(10); digitalWrite(18,LOW); delayMicroseconds(2); t=pulseIn(19,HIGH); dist=t*340/20000; lcd.clear(); lcd.setCursor(0,1); lcd.print("Distance : "); lcd.print(dist/100); lcd.print(" m"); delay(1000); if(dist<40) { digitalWrite(20,HIGH); lcd.clear(); lcd.setCursor(0,1); lcd.print("Water level is rising. Kindly evacuate"); delay(2000); } else { digitalWrite(20,LOW); delay(2000); } } 

관련 프로젝트:

산업기술

  1. C# using 문 마스터하기: 네임스페이스 임포트, 별칭, 정적 지시자
  2. 심포니 링크(Symphony Link): 데이터센터 안정적 누수 감지 솔루션
  3. AT89S52 마이크로컨트롤러와 LM35 센서를 이용한 온도 기반 기기 제어 시스템
  4. 아두이노만으로 DTMF 디코더 구축하기 – 추가 IC 불필요
  5. 파이썬 연동 아두이노 RFID 출석 관리 시스템 구축하기
  6. 아두이노 우노 기반 인간 감지 로봇: 센서 통합 단계별 가이드
  7. SERENA: TFT LCD 터치스크린 탑재 아두이노 메가 2560 커스텀 알람 시스템
  8. 실시간 산불 감시 시스템 - SMS 알림 기능 포함
  9. 아두이노, 윈도우 IoT, 애저 클라우드 기반 고급 낙상 감지 시스템
  10. Biz4Intellia IoT 물 누수 감지가 산업 효율성을 높이는 이유 – 5가지 핵심 이점