일정

 

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. 최종 발표 준비 및 문서 작업

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

insert into TBL1 (col1,col2,col3,col3)

values (col1, (select col2 from tbl2),col3.col4)

 

이때 select 절의 반환 결과는 단일 행 쿼리여야 한다. 

괄호 내의 쿼리 결과는 몇 개를 반환하던 하나로 인식해서 만일

아ㅋㅋ col2, col3 이렇게 하면 같이 들어가겠지 라고 생각해서

select col2,col3 from tbl2 이래버리면 not enough values 오류가 발생한다...!

 

select col2,col3 from tbl2 (x)

(select col2 from tbl2),(select col3 from tbl2) (o)

 

 

 

'학원 수업 관련 > Study - DB' 카테고리의 다른 글

SQLD 자격증 취득하기!  (0) 2022.01.29

융합소프트웨어응용 

시험이 어려울 줄 알았으나, 개념에서만 나온 걸 보고 좀 당황스러웠다. 이게 아닌데..하고 말이지.

책만 좀 열심히 볼껄 그랬다. 프로젝트 점수 잘 받아놓고 마무리가 아쉽게 된 셈.

이게 될까? -> 일단 사서 뚱땅거려보자 -> 어? -> 내년에 좀만 손보면 되겠다 순이였던 것 같았다.

팀원들이 참 대단한게 약간의 힌트만 주고 관련 글들만 찾아서 올려줬는데.. 직접 찾아보고 고생을 좀 하더니...

결국 동작하는 걸 만들어냈다. 

 

웹프로그래밍

거의 팀원 구성은 한달쯤 지난 것 같았다. 사이트를 만들어 보는 게 과제였는데..

내 실력도 비루한데 팀원들 실력은 더욱 처참했다. 느낌이 쎄 하길래 미리서부터 데이터 구축, 조회 페이지, 삭제 페이지 등은 만들어놓았긴 했지만 전날되서야 겨우 모일 수 있었고, 그때부터 만들었다. 

팀원한테 맡겨놨던 메인페이지는 레이아웃이 개판 오분전이였고, 그래서 만나기 전날 찾아놓은 반응형 레이아웃 웹페이지 예제 가져다 뜯어고치고

로그인페이지도 하도 밋밋하길래 모양만 바꾸라고 했더니 디자인만 손보면 되는데 인자값까지 손봐놔서 살리기엔 내 능력 밖이라 판단하고 그낭 원래 쓰려던 거 썼다. 

더 잘 하고 싶긴 했지만 한 학기 막판에 너무 힘들어서 하는 대까지만 하고 마무리.

사실 오늘까지 기능을 더 구현해서 올리라고 그랬는데, 그냥 동작 확인이 가능하게끔 학교 내 서버에 업로드하고, 확인만 한 채로 마무리해서 그냥 메일 보냈다. 

+ Recent posts