UI 흐름도

워테맨 자동급수 시스템은 다음과 같은 User Inteface 흐름으로 구성된다.
-파란색 박스모양은 각 단계별 화면에 표시되는 내용이고,
-붉은색 기호는 각각의 화면에서 해당 버튼을 눌렀을 때 연결되어야 하는 화면기능의 표시임

 

 

 

프로그램 코딩 샘플 
 

 


6~18  line:  연결될 부품들에 대한 IO Pin 배정
19~35 line: 프로그램에서 사용할 전역 변수들

 

 


39~47  line:  펌프,LED등을 위한  핀들의 모드설정 및 초기값 지정 
49~56 line: 초기모드 표시(LCD화면에 메세지 표시,LED 점멸)한 후 LCD화면 Clear
5 6line~  : EEPROM에 보관해 놓은 Data가 있을 경우 처리(Data보관시 1번지에 1로 표시해 놓고)
59~61line : 급수간격 Day(10번지),급수간격 Hour(12번지) 값을 읽어 급수간격을 초단위로 계산
67~71line: 대기중 비정상종료 인지 확인하여 복구하기 위한 Data        
*** 메모리 입출력함수 
   EEPROM.read(x) : 메모리 x번지 읽기,    EEPROM.write(x, y); 메모리x번지에 y값으로 쓰기  

 

 

 

77 line:  대기중 비정상 종료된 경우 대기하기 기능으로 이동
78~86 line: 종합상황을 LCD화면에 표시하기 
88 line  :  키패드로 부터 1글자 입력 받기 
89~106 line : 키패드 입력 문자에 따라 해당 기능 수행하기 

 


109 line: 함수 호출 파라메터로 숫자모드인지 문자모드인지 구분을 전달받기 
111 line : 키패드눌림상태 확인하여 읽기  
113~118 line : 문자모드 일경우 입력된 문자가 메뉴선택용 문자인지 확인하여 맞으면  입력확인용
                     비프음 출력하고 복귀 
119~123 line : 숫자모드 일경우 입력된 문자가 숫자인지 확인하여 맞으면  입력확인용 비프음
                  출력하고 복귀  

 

 

130~133 line: LCD에 안내 문구 출력 
135~157 line : 3개 숫자를 입력받아 첫 숫자는 대기일수, 뒤 두자리숫자는 대기시간으로 사용
136 line : 숫자모드로 키패드 입력받기
140, 144 line : 입력되는 숫자 첫번째와 세번째 일때 잘라서 사용하기 
146~155 line: 시간단위가 24를 초과할 경우 다시 입력받기 
159~165 line : 메모리에 보관하고 작업완료 비프음 출력

 

 

169~172 line: LCD에 안내 문구 출력 
174~182 line : 3개 숫자를 입력받아  급수시간으로 사용
175 line : 숫자모드로 키패드 입력받기
179 line : i==2 즉 세번째 숫자가 입력되었을 때 입력된 세문자를 연결하여 숫자로 변환 
183~190 line : 메모리에 보관하고 작업완료 비프음 출력

 

 

 

 

250 line: Ready 상태임을 메모리에 저장
253~256 line : Ready상태에서 비정상종료된 경우 잔여시간을 보돤되었던 시간으로 set
257 ~275 line : Delay타임 입력받기 ( 잔여시간 Counting을 바로 시작하는 것이 아니고 일정시간 이후부터 시작하기 )

 

 

 

 


276 line: 물통에 물이 있는지 확인하는 함수 호출
278 line~  : Ready상태 : 조건을 반복 check하며 급수할 것인지 여부 결정 
279,280 line : 조건 Check하기 위한 온습도 값읽기 
283 ~292  line : 타이머잔여시간이 0이고 온습도 조건이 맞으면 물주기 함수 호출 
293 ~305 line : 잔여시간을 Day-Hour로 변환하여 LCD화면에 표시하기 
306~311 line: 매 10분마다 현재 상태( 잔여시간)을 메모리에 저장해 놓기

 

 


312~322 line: Ready 상태에서 #버튼이 눌러지면 비프음 출력하고 Ready상태 종료하기

 

 

327~332 line: 비프음을 출력하고 펌프가동 함수 호출

 

 

 

336~339  line: LCD에 안내 문구 출력 
342~349  line : 물통에 물이 있는지 확인한 후 펌프에 연결된 릴레이와 급수중 LED 가동
350 ~360 line : 급수잔여 시간을 계산하여 LCD표시하고 종료되면 loop를 빠져나와 복귀 

 

 

378  line: 수위센서 VCC에 전원 공급하기  
380  line: 수위센서 값 읽기 
378  line: 수위센서 VCC에 전원 공급 중단하기  
382~393 line : 저항값이 일정 수치 이상일 경우 물이 없다고 판정하여 비프음 출력 및  물없음LED로 사용자에게 알리고 복귀

 

 

 

 

 

 

6. 연결완료된 본체와 물통

 

 

7. 화분 물주기 연결

 

  1) 워터맨의 굵은 호스를 변환니플을 이용해 가는 호스로 연결하고    
  2) 가는호스를 연장 연결하여  화분별 급수 스프링쿨러로 연결한다.

 

 

기능 요건

 자동으로 화분에 물을 주기 위한 기기로서 다음과 같은 기능을 가진 자동급수 시스템 개발한다.  


    1) 사용자는 다음 사항을 키패드와 화면을 통해 직접 지정할 수 있어야 한다.
         - 물주는 간격(시간단위,최대 10일간격)
         - 물주는 수량( 펌프를 가동시키는 시간, 초단위, 최대 999초 )  
         - 물을 주기 위한 최대 습도  ( 비오는 날은 물주기 생략하기 )
         - 물을 주기 위한 최소 온도 ( 추운날에는 물주기 생략하기 )

    2)사용자가 지정한 바에 의해 조건이 만족되면 펌프를 가동시켜 화분에 물주기

    3) 급수 진행중일 때에는 파란색LED를 켜고, 급수 타임인데 수조에 물이 부족한 경우에는 붉은색LED와 부저음으로 사용자가 물을 보충할 수 있도록 알려주어야 한다.

    4) 지정된 예약시간 이외에도 사용자가 원할 때에는 강제로 물주기 펌프를  가동시켜 물주기를 실행할 수 있어야 한다.

    5) 펌프 가동중, 또는 지정시각 대기 중일 때 사용자는 강제로 이를 중지시키키고 이전 화면으로 되돌아 가는 기능이 있어야 한다. 

    6) 지정된 간격동안 대기중에 정전이나 조작 실수에 의해 일시적으로 POWER OFF되어 버렸을 경우에도 정상 작동할 수 있어야 한다. ( 10 분 정도의 오차 허용 ) 
        -예를 들어 24시간으로 지정된 시간간격중 20시간째 대기중에 정전이나 잠깐 파워 스위치를 껏다가 켜서 시스템이 재가동 되었을 경우 재가동 시점부터 다시 24시간을 대기하면  급수간격이 44시간이 되어 버림.

 

 

기능 구현방법

 

구현대상 기능

 참조

사용 핀

키패드입력  

7.키패드

D5~D12

화면출력

8 .LCD화면

A4,A5

( I2C 통신핀)

부저음 출력

6_부저

D2

현재 온도 습도 Check

10.온습도센서

D3

워터펌프ON/OFF제어

12.릴레이

D4

물없음 LED 표시

5.LED 전구

D13

급수중 LED 표시

5.LED 전구

A2

( 참조 1)

물통 물부족여부 Check

11.수위센서

A1, A0

 (참조 2)

 

참조1)
LED전구 점등에는 디지털 출력을 사용해야 하지만  위에서 D2 ~ D13까지 다른 용도로 사용하고 있어 디지털 출력핀이 부족하다. 이럴 경우 아날로그 입력용 핀을 디지털용으로 용도를 바꿔 사용해도 동작되므로 A2를 디지털 출력용으로 선언해서 사용한다.  

 

참조2)
물통에 물이 있는지 여부를 check하기 위해 센서전극에 전류를 공급하고 저항값을 측정하는 방식을 사용한다. 그런데 물통안에서는 전기가 잘 통하기 때문에 시스템이 대기하는 시간내내 전류가 흘러 전력낭비 및 구리선 부식 현상이 발생할 수 있다.  따라서 물부족 Check가 필요한 시점( 대기하다가 물주기 타임이 되었을 때)에만 A0를 통해 센서전원에 전류를 잠깐 공급하고 센서Check하는 방식으로 개발.   

 

워터맨 시스템 종합배선도

 

워터맨 배선연결

 

 

 

종합배선도에 따라 각종 센서와 부품들을 배선연결한다.  단, 조립의 편의를 위해

    1) 키패드 연결선은 암-수 점퍼선 8가닥을 이용하여 키패드 꽂을수 있는 상태로만 연결한다

    2) 워터펌프 전원선을 아직 연결하지 않는다.

    3) LCD Back Light 스위치는 아직 연결하지 않는다. 

    4) 수위센서의 물통 측 전극 단자는 아직 연결하지 않는다.

+ Recent posts