일정

 

2021.10.11~2021.10.16

아이디어 브래인스토밍 및 멘토링 기획서 작성, 아이디어 선정, 필요 부품 주문

 

2021.10.18~2021.10.25

요구사항 정의서, DB 설계, 기획서 작성 및 DB 설계 확정

 

2021.10.26~2021.10.30

GitHub 사용법 학습 및 레퍼지토리 생성, 칸반보드 작성 시작.

아두이노 - 웹서버 간 통신 테스트. 기초 감지 로직 작성.

각 기능을 위한 DAO / VO 설계 및 SQL 쿼리문 작성, 테스트

웹페이지 레이아웃, 페이지 배치 및 배경화면 변경, 

 

2021.11.01~2021.11.04

일산화탄소 농도에 따른 기기 동작 코드 작성

발표 자료 제작 및 최종 검수

시제품 제작 및 동작영상 촬영, 질의응답 대비

담당 Part

데이터베이스 설계 및 시퀸스 생성.

GetSensor 서블릿 작성 및 DAO 설계

SQL 쿼리문 작성 및 테스트

아두이노 센서, 네트워크 통신테스트, 주 로직 설계, 시제품 제작.

기타 프로젝트간 팀원들 파트 막히는 부분 AS 및 조율 - DB, SQL, 서블릿, 아두이노

 

1주차(2021.10.11~2021.10.16) 진행 과정

0. 아이디어 도출 (브래인스토밍 진행) & 아이디어 멘토링

내부에서 아이디어를 선정해서 멘토링을 받기 보단 다 모아서 가자는 생각으로 아이디어를 모아 다음과 같이 작성했다.

브래인스토밍 과정

브래인스토밍으로 도출한 아이디어를 가지고 멘토링을 받았다.

내가 제안했던 유해가스 감지기 및 경보기만 살아남아 보충할 점에 대해 의견을 들었다. 

알림까진 좋으나 신고 기능에 대해 보강할 점이 필요해 해당 부분은 진행하면서 생각하기로 의견을 종합했다.

 

1.부품 주문

아이디어에 필요한 부품들을 주문하는 절차를 가졌다. 장바구니에서 바로 엑셀을 뽑을 수 있다는 장점, 

대학교때 잘 썼던 디바이스마트에서 주문을 했으나...그게 나중에 대참사가 될 줄은 몰랐다.

부품 선정 및 주문서 작성.

 

2주차(2021.10.18~2021.10.25) 진행 과정

1. 데이터베이스 테이블 명세서, 테이블 정의서 작성

여기서 생각보다 시간이 많이 걸렸다. 나머지 문서야 팀원들이 분담해서 작성하고, 내가 봐주면서 보강해주면 되는 것이라 어렵진 않았지만...몇번을 갈아 엎은지를 모르겠다. 멘토링 받으며 해결.

 

데이터베이스 요구사항 정의서
관리자 회원정보 테이블

 

3주차 (2021.10.26~2021.10.30) 진행 과정

0. 아두이노 네트워크 통신 테스트

값이 넘어올 JSP 파일을 만들어 통신 테스트를 진행.

아두이노 코드를 작성했다.

ESP8266 모듈과 메가보드를 사용하기에 소프트웨어시리얼을 사용하지 않았다.

아두이노 코드 링크 >> https://github.com/SkyBlaze96/Toyproject/blob/main/MQ_9_WebServerChange.ino

정상적으로 넘어가는 것을 확인한 뒤 서블릿 설계에 들어갔다.

 

1. GetSensor & DAO 메서드 생성

파일명 확장자를 안 붙힌 체 서블릿 파일명을 지정하면 바로 프로젝트 내의 자바 리소스에 접근할 수 있게 된다.

DAO는 미리 생성해놨기에 GetSensor 서블릿을 만들고, DAO로 넘어가 메서드를 만들었다.

GetSensor 서블릿

 

DAO 내 InsertSensor 메서드

아두이노에 RTC 모듈을 달지 않아 일단 시간은 네트워크에 전송이 되었을 때 그 때 서버 시간을 넣어줄 수 있도록 

SimpleDateFormat를 사용했다. 

그리고 쿼리문이 진짜 긴데...목적을 설명하면 다음과 같다.

 통합 정보 테이블의 모든 컬럼에

 1) 관리 번호는 자동 부여 (시퀸스)

 2) 관리자 번호는 사용자 정보 테이블에 들어있는 기기 아이디와 입력받은 기기 아이디와 일치하는 관리자 번호

 3) 사용자 번호는 사용자 정보 테이블에 들어있는 기기 아이디와 입력받은 기기 아이디와 일치하는 사용자 번호

 4) 입력받은 기기 아이디 

 5) 입력받은 가스 농도

 6) SimpleDateFormat의 시간정보

이런 걸 넣고자 하는 쿼리문이다.

 

3. 기초 로직 설계 및 동작설계

설정한 평균농도에 따라 가스벨브를 잠그고 (솔레노이드벨브) 환풍기를 동작시키며 경고 알람을 동작시키고, 

해당 상황이 되었을 때 외부 웹서버로 이를 전송하도록 큰 틀을 잡았다.

 

단순히 아두이노 코드 내의 void loop() 내에 작성하면 무조건 보내기만 하니 

조건문을 걸어 평균농도가 일정 수치가 넘고, 60회(테스트 편의를 위해 10회로 조정함)할 때만 

값을 보내도록 하고, 카운트 변수를 초기화하도록 설정했다.

값이 정상화되면 모든 외부 릴레이, 부저 동작을 멈추게끔 하고 싶어 조건문 내에 중지하는 함수를 호출하게 했더니

멈추거나 아니면 값이 안 넘어가는 경우가 생겼다.

 

그냥 외부 릴레이 함수를 평균 계산하고 타이머 누적하는 함수에서 호출하도록 변경했다.

 

4. Github 칸반보드 작성

지금이야 모두 마무리되서 Done에 가 있지만

크게 해야 할 일을 To Do에 작성, 그날 그날 진행중인걸 In progress에 넣는 식으로 작성을 했다.

 

3주차 (2021.11.01~2021.11.04) 진행 과정

 

0. 프로토타입 조립 및 시연 영상 촬영

포맥스 3T로 외형을 만들고, 글루건과 록타이드 본드를 사용했다. 

배선의 문제인지 역전류의 문제, 전류량 문제인지는 모르겠으나 아두이노와 솔레노이드 벨브를 12V 어댑터 전원을

사용하도록 연결하니 릴레이가 동작하는 시점(즉, 솔레노이드 벨브에 전원이 인가되는 순간)에 보드가 리부팅 되는

문제가 있었다.

일단 동작 영상은 찍어야 하니 여분의 릴레이로 교체하고, 아두이노 전원인가는 USB 포트로 하도록 했다.

1.아두이노 내부 로직 완성

영상 촬영 및 테스트를 위해 수치를 낮게 설정했었는데 (평균농도 20ppm, 카운트 5회)

수치를 현실적인 경고기준으로 변경했다. (250ppm 이상이 3분 정도 지속되면)

2. 최종 발표 준비 및 문서 작업

시스템 동작 흐름도를 작성하고, 발표를 맡은 팀원과, 발표자료 제작 팀원 간 계속 확인해가며 발표준비를 진행했다.

+ Recent posts