시스템 개발 프로젝트 1 결과 보고

- Intrusion Detection System -

소 속	학 번	이 름
소프트웨어공학	20020426	김호재
소프트웨어공학	20020933	이상제

목   차

1. 문제 정의

2. 요구사항 및 기능명세

3. 시스템 구조도

4. 시스템 설계도

5. H/W 구성

6. 주요 자료 구조

7. 주요 함수 명세

8. 프로그램 설치 및 동작법 설명

9. 비고

10. 작품 증빙자료

1. 문제 정의

가. 개요

대부분 농촌에서는 도난사고에 대하여 자체적 순찰로 대비하고 있다. 하지만 순찰과 같은 경우는 한 곳을 계속 감시하지 못하는데다 시간적 한계가 있기 때문에 큰 도움이 되지 못하는 실정이다. 따라서 우리는 침입자가 감지되었을 시 자동적으로 관리자에게 알려주는 방범시스템을 만들고자 한다.

나. 목표

1) 침입자가 감지될시 음성메세지 출력 후 사용자의 이동전화로 SMS 전송

2) 촬영된 침입자의 사진영상을 사용자의 컴퓨터로 전송하여 어플리케이션	에서 확인 가능

3) 시스템이 구동되는 시간 및 관리자의 휴대전화 번호를 터치스크린으로	설정한다.

4) 메모리에 누적된 사진을 삭제 및 백업할 수 있도록 한다.

다. 기여도

침입자가 발생 하였을 시 바로 사용자가 그 상황을 알 수가 있어 빠른 상	황 대처가 가능해져 예전보다 도난사고 발생률이 현저히 낮아질 것이라고	본다.

2. 요구사항 및 기능명세

가. 요구사항

1) 외부 인터페이스 요구 사항

- 하드웨어 인터페이스 : 현재 사용하는 하드웨어 인터페이스는	터치스크린으로 사용자의 데이터를 입력 가능해야 한다.

- 소프트웨어 인터페이스 : QT를 이용한 GUI환경의 사용자 인터	페이스를 제공한다.

2) SMS 메시지

- 전송 중 오류시 재전송이 가능해야 한다.

3) 성능에 대한 요구 사항

- 침입자에 대한 반응 시간은 5초 이내이어야 하며 SMS 메시지	와 사진영상을 보내는데까지의 시간은 1분이내이어야 한다.

나. 기능명세

1) 하드웨어의 주요 기능

- 침입자의 위치 인식 : 초음파센서의 신호로 위치확인

- 침입자 사진 촬영 : 침입자 위치로 카메라 포커스 이동 후 사진	촬영

- 경고 음성 메시지 출력 : 침입자에게 경고 음성메시지 출력

- 침입자 사진 전송 : 침입자 사진을 사용자의 컴퓨터로 전송

2) 소프트웨어의 주요 기능

- 사진관리 : 사진확인, 사진 삭제, 이동식 메모리로 사진 복사

- 환경설정 : 휴대전화 번호 설정시스템, 구동시간 설정, 촬영속	도 설정, 관리자 비밀번호 설정

3. 시스템 구조도

※ 시스템의 구조도

1) 사각형 형태의 감지 영역 안에 4개의 초음파 센서를 각 모서리에 설치	하고 물체 여부를 감지한다.

2) 초음파 센서는 임베디드 보드에 USB로 연결되어 있으며 각 센서는 물	체가 감지되었을 시 위치정보를 전송한다.

3) 침입자가 감지되었을 시 경고 SMS를 전송하고 위치정보를 통해 카메	라로 침입자의 사진영상을 촬영한다.

4) 사진영상은 사용자의 컴퓨터와 임베디드 보드에 기록된다.

4. 시스템 설계도

0. Observer System

1. 환경 설정

2. 사진관리

3. 침입자 감지

5. H/W 구성

가. 개발 환경

1) CPU - PentiumD 3.2G

2) Ram - DDR2 1G

3) Harddisk - 160G

나. 임베디드 보드

1) CPU - S3C2410

2) Touchscreen - LP35

3) Lan - cs8900

다. 초음파 센서

1) 송신 - MA40S4S

2) 수신 - MA40S4R

라. 카메라

- Logitech Qickcam Orbit AF

마. CDMA 모듈

- BSM 860S

6. 주요 자료 구조

파일 이름: ERROR_MAP
파일 종류 : text file
자료 이름	자료형	자릿수	비고
Error_case Error_message	double string	6 255	오류코드 번호 오류메시지

파일 이름: PHONE_NUM
파일 종류 : text file
자료 이름	자료형	자릿수	비고
Phone_number	string	30	휴대전화 번호

파일 이름: START_WATCH
파일 종류 : text file
자료 이름	자료형	자릿수	비고
Hour Minute Second	integer integer integer	2 2 2	시간 분 초

파일 이름: STOP_WATCH
파일 종류 : text file
자료 이름	자료형	자릿수	비고
Hour Minute Second	integer integer integer	2 2 2	시간 분 초

파일 이름: SNAPSHOT_CYCLE
파일 종류 : text file
자료 이름	자료형	자릿수	비고
Tick	ineger	4	사이클 주기(초)

파일 이름: PASSWORD
파일 종류 : text file
자료 이름	자료형	자릿수	비고
password	ineger	10	비밀번호

7. 주요 함수 명세

모듈 이름	ObserverSystem
모듈 형	Parameter	Void
	Return	Void
호출하는 모듈	None
사용하는 파일	None
기능설명	● 환경설정, 사진관리 등의 메뉴를 선택하고 호출한다. ● 침입자감지 모듈을 호출한다.
알고리즘	SWITCH(메뉴){ CASE 환경설정: CALL 환경설정(Void); CASE 사진관리: CALL 사진관리(Void); } CALL 침입자감지(Void);

모듈 이름	환경설정
모듈 형	Parameter	Void
	Return	Void
호출하는 모듈	ObserverSystem
사용하는 파일	None
기능설명	● 전화번호 설정, 감시시간 설정, 촬영주기 설정, 비밀번호 설정 등의 메뉴를 선택하고 호출한다.
알고리즘	SWITCH(메뉴){ CASE 전화번호설정: CALL 전화번호설정(Void); CASE 감시시간설정: CALL 감시시간설정(Void); CASE 촬영주기설정: CALL 촬영주기설정(Void); CASE비밀번호설정: CALL 비밀번호설정(Void); }

모듈 이름	전화번호설정
모듈 형	Parameter	Void
	Return	Void
호출하는 모듈	환경설정
사용하는 파일	PHONE_NUM
기능설명	● MMS를 전송 받을 관리자 전화번호를 설정한다.
알고리즘	사용자로부터 관리자 전화번호를 입력 받음; WRITE 전화번호 TO PHONE_NUM 파일;

모듈 이름	감시시간설정
모듈 형	Parameter	Void
	Return	Void
호출하는 모듈	환경설정
사용하는 파일	START_WATCH, STOP_WATCH
기능설명	● 감시를 시작할 시간과 종료할 시간을 설정한다.
알고리즘	사용자로부터 감시를 시작할 시간을 입력 받음; WRITE 시작시간 TO START_WATCH 파일; 사용자로부터 감시를 종료할 시간을 입력; WRITE 종료시간 TO STOP_WATCH 파일;

모듈 이름	촬영주기 설정
모듈 형	Parameter	Void
	Return	Void
호출하는 모듈	환경설정
사용하는 파일	SNAPSHOT_CYCLE
기능설명	● 침입자가 감지되었을 때 사진을 촬영할 주기를 설정한다.
알고리즘	사용자로부터 촬영주기를 입력 받음; WRITE 촬영주기 TO SNAPSHOT_CYCLE;

모듈 이름	비밀번호설정
모듈 형	Parameter	Void
	Return	Void
호출하는 모듈	환경설정
사용하는 파일	PASSWORD
기능설명	● 시스템의 비밀번호를 설정한다.
알고리즘	사용자로부터 기존 비밀번호를 입력 받음 IF(비밀번호가 일치하지 않음) THEN { CALL 오류메시지출력(오류번호); RETURN; } ELSE { LABEL 1: 새로운 비밀번호를 입력 받음; 새 비밀번호를 재입력 받음; IF(새로운 비밀번호 = 재입력 번호) THEN; WRITE 새 비밀번호 TO PASSWORD 파일; ELSE GOTO LABEL 1; }

모듈 이름	사진관리
모듈 형	Parameter	Void
	Return	Void
호출하는 모듈	ObserverSystem
사용하는 파일	None
기능설명	● 사진보기, 사진삭제, 이동식메모리로복사 등의 메뉴를 선택하고 호출한다.
알고리즘	SWITCH(메뉴){ CASE 사진보기: CALL 사진보기(Void); CASE 사진삭제: CALL 사진삭제(Void); CASE 이동식메모리로복사 CALL 이동식메모리로복사(Void); }

모듈 이름	사진보기
모듈 형	Parameter	Void
	Return	Void
호출하는 모듈	사진관리
사용하는 파일	None
기능설명	● 저장되어 있는 사진을 화면에 출력한다.
알고리즘	PRINT 사진목록; 사용자로부터 출력할 사진을 선택 받음; PIRNT 선택된 사진;

모듈 이름	사진삭제
모듈 형	Parameter	Void
	Return	Void
호출하는 모듈	사진관리
사용하는 파일	None
기능설명	● 저장되어 있는 사진을 삭제한다.
알고리즘	PRINT 사진목록; 사용자로부터 삭제할 사진을 선택 받음; DELETE 선택된 사진;

모듈 이름	이동식메모리로복사
모듈 형	Parameter	Void
	Return	Void
호출하는 모듈	사진관리
사용하는 파일	None
기능설명	● 저장되어 있는 사진파일을 이동식 메모리로 복사한다.
알고리즘	IF(이동식 메모리가 연결되지 않았음) THEN CALL 오류메시지출력(오류번호); IF(이동식 메모리에 용량이 부족함) TEHN CALL 오류메시지출력(오류번호); 사진파일들을 이동식 메모리로 복사;

모듈 이름	침입자감지
모듈 형	Parameter	Void
	Return	Void
호출하는 모듈	ObserverSystem
사용하는 파일	None
기능설명	● 침입자를 감지하고 사진을 촬영하여 관리자 CDMA모뎀으로 MMS를 전송한다.
알고리즘	WHILE TRUE WHIEL 침입자위치 == NULL 침입자위치 = CALL 침입자위치인식(Void); END WHIEL CALL 카메라이동(침입자위치); 사진이름 = 사진촬영(Void); CALL 사진전송(사진이름); END WHILE

모듈 이름	침입자 위치인식
모듈 형	Parameter	Void
	Return	침입자위치
호출하는 모듈	침입자감지
사용하는 파일	None
기능설명	● 침입자의 위치를 인식한다.
알고리즘	IF(침입자가 감지되지 않았음) THEN RETURN NULL; 4개의 센서로부터 침입자의 위치 계산; RETURN 침입자위치

모듈 이름	카메라이동
모듈 형	Parameter	침입자위치
	Return	Void
호출하는 모듈	침입자감지
사용하는 파일	None
기능설명	● 침입자위치 방향으로 카메라 초점을 이동시킨다.
알고리즘	카메라의 위치를 초기화시킨다; 침입자위치 방향으로 카메라를 이동시킨다;

모듈 이름	사진촬영
모듈 형	Parameter	Void
	Return	사진이름
호출하는 모듈	침입자감지
사용하는 파일	None
기능설명	● 카메라로부터 영상을 받아 사진을 촬영한다.
알고리즘	카메라로부터 영상을 받음; 영상을 JPEG압축; JPEG 파일로 저장; RETURN 사진이름;

모듈 이름	사진전송
모듈 형	Parameter	사진이름
	Return	Void
호출하는 모듈	침입자감지
사용하는 파일	PHONE_NUM
기능설명	● 사진을 관리자 CDMA 모뎀으로 MMS전송
알고리즘	GET 관리자전화번호 FROM PHONE_NUM; LABEL 1: 사진이름에 해당하는 JPEG파일을 관리자전화번호로 MMS 전송; IF(실패) THEN GOTO LABEL 1;

모듈 이름	오류메시지출력
모듈 형	Parameter	Double 오류case
	Return	Void
사용하는 파일	ERROR_MAP
호출하는 모듈	None
기능설명	● 호출하는 모듈로부터 오류case를 전달받는다. ● 전달받은 오류case에 해당하는 오류메시지를 출력한다.
알고리즘	GET 오류case FROM ERROR_MAP Switch(오류case) { case에 해당하는 오류메세지 출력; }

8. 프로그램 설치 및 동작법 설명

※ 본 시스템은 임베디드 프로그램의 경우 별도의 소프트웨어 설치 방법이	존재하지 않으며 하드웨어 설치만을 필요로 한다.

<하드웨어 설치 위치>

1. 위의 그림과 같이 정사각형 형태의 구역에 A, B, C, D에 초음파 센서 모듈을 설치하고 E의 위치에 Camera를 설치한다.

2. 각각의 초음파 센서 모듈과 카메라는 임베디드 보드와 USB로 연결을 하고 임베디드 보드에 외부 전력을 공급한다.

3. 외부전력이 들어오면 임베디드 보드의 운영체제는 자동으로 부팅이 되며 부팅 완료 후 소프트웨어가 자동으로 실행된다.

<감시 시간 설정>

4. 프로그램이 자동 시작이 되면 감시 시간을 설정한다.

< 촬영 주기 설정>

5. 침입자가 발생했을 시 사진 영상을 촬영할 주기를 설정한다.

<사용자 전화번호 변경>

6. 침입자가 발생했을 시 경고 SMS 메시지를 전송받을 이동전화 번호를 설정한다.

7. 설정을 마친 뒤 사용자가 설정해 놓은 감시시간이 되면 감시프로세서가 자동으로	백그라운드 실행이 된다.

9. 비고(고찰 혹은 감상 포함)

시스템 개발 프로젝트를 통해 처음으로 임베디드 프로그래밍을 해보면서 일반 데스크탑 어플리케이션 제작시보다 많은 어려움을 느꼈다. 무엇보다 개발 보드의 제조회사에서 제공해주는 문서 자료들이 너무 오래된 버전이었고 새로운 버전에 대해선 전혀 지원을 해주지 않아 관련 지식을 조사하는데 많은 시간을 소모해 버렸다. 하지만 이러한 과정에서 프로젝트에 필요한 관련 자료를 찾는 법을 알게 되었고 리눅스 운영체제가 전반적으로 어떻게 구성되어 있고 어떻게 구동되는지를 알게 됐으며 관련 디바이스 드라이버가 없을시 직접 제작할 수 있게 되었다.

어플리케이션 제작 시에는 의외의 오류가 발생하였었다. 임베디드 보드에 프로그램을 올리기 전 데스크톱에서 구동을 하였을 때 아무 문제없이 잘 돌아가던 어플리케이션이었지만 임베디드 보드의 처리속도 차이로 어플리케이션 구동이 제대로 된 결과값이 나오지 않는 일도 있었다.

무엇보다도 아쉬웠던 점은 하드웨어적인 부분을 설정하는데 많은 시간을 소모하여 어플리케이션 제작에 많을 시간을 할당하지 못했다는 점이다.

다음에 임베디드 프로그래밍 프로젝트를 하는 후배들이 있다면 이 문서가 많은 도움이 되었으면 한다.

10. 작품 증빙자료

가. 데스크톱 어플리케이션

1) 메인 화면

시스템에서 침입자가 감지되어 사진영상이 촬영됐을 경우 그 영상이 데스	크톱 어플리케이션에 전송된다. 전송된 사진영상은 메인 화면에 보여지게	되며 최근 영상으로 화면이 갱신되게 된다.

나. 임베디드 어플리케이션

1) 메인 화면

Confirm Picture : 기존에 촬영한 사진 영상을 확인, 삭제, 백업을 할 수	있다.

Property setting : 사용자 이동전화 번호, 시스템 구동 시간, 사진영상 촬	영 주기, 사용자 비밀번호 변경 설정 등을 할 수 있다.

2) 환경 설정

Phone number setting : 사용자 이동전화 번호를 설정한다.

WhatchTime Setting : 시스템 구동 시간을 설정한다.

Snapshot Time Setting : 사진 촬영 주기를 설정한다.

Change Password : 사용자 비밀번호를 변경한다.

3) 사용자 번호 설정

SMS메시지를 전송 받을 이동전화 번호를 등록한다.

4) 감시 시간 설정

시스템이 구동될 시작 시간과 종료 시간을 설정한다.

5) 촬영 주기 설정

침입자가 발생했을 시 촬영하는 주기를 설정한다.

6) 사용자 비밀번호 설정

시스템의 비밀번호를 설정한다.

7) 사진 확인

기존에 촬영된 사진영상을 확인한다.

8) 사진 삭제

기존에 저장된 사진영상을 삭제한다.

9) 이동식 메모리로 이동

기존에 촬영된 사진영상을 이동식 메모리에 복사한다.

다. 데모 동영상

- 별도 첨부