1. 과제 진척 개요완성된 홈 집화면 인터페이스입니다. 전체적으로 집에 들어가면 큰 문이 자동으로 열리고 닫히는 형식으로 구성을 했습니다. 집은 jkit128과 cam이 연결되어 있어서 실시간으로 영상과 조도, 온도 값을 받아 옵니다. 그리고 이러한 값들이 다른 pc로 전송이 되어서 다른 pc에서도 집의 온도와 조도를 조절할 수 있고, 호출을 누르면 영상이 전송이 되고 대문을 열수가 있습니다. 이러한 기능 이외에 다양한 기능을 추가했습니다.다른 pc인터페이스입니다. 실제 집에서 들어오는 온도와 조도 값을 실시간으로 확인할 수 있습니다. 그리고 온도와 조도를 다른 pc에서 조절할 수 있고, 에어컨, 난방, 화제 등 집안의 상태를 실시간으로 체크할 수 있습니다. 그리고 호출을 누르면 영상이 전송되고 문을 열수가 있습니다. 또한, 집에 들어간 사람들의 사진을 저장할 수 있어서 최근 10번안에 누가 집안에 들어왔는지 확인할 수 있습니다.2. 과제 진척 상세 내용2.1 프로그램 주요 기능2.1-1) 홈 화면 기능1) 로그인 기능1. 키패드를 이용한 비밀번호 입력 기능 및 누를 때마다 소리울림2. 비밀 번호 입력 동안 비밀 번호 수정 가능 기능3. 비밀번호가 틀릴 경우 틀린 횟수 표시 기능4. 비밀 번호 3회 틀릴 경우 “삐용삐용”소리와 함께 경찰 LED ON5. 비밀 번호 변경 기능2) 대문 기능1. 로그인 성공 시 대문이 열림 애니메이션 효과2. 대문이 열릴 때마다 효과음3. 2초뒤 자동으로 문이 닫히는 애니메이션 효과3) 5v 전원 체크 및 온도 조도 확인1. 실시간으로 5v를 체크하고, 연결 상태를 화면에 표시2. 5v가 연결되면 실시간으로 온도 및 그래프 표시2.1 실시간으로 온도 PC2로 전송3. 5v가 연결되면 실시간으로 조도 막대 바 표시3.1 실시간으로 조도 PC2로 전송4. 온도 Auto mode4.1 설정온도와 현재온도를 비교해서 에어컨 및 난방 자동 on/off기능4.2 난방이나 에어컨을 수동으로 조절할 경우 자동으로 Auto mode 해제4.3 P기 버튼 값 전송3) 온도 및 조도 조절1. 원하는 온도를 홈 화면으로 전송2. 원하는 조도를 홈 화면으로 전송4) 영상 저장 기능1. 홈 화면에서 호출을 누르면 자동으로 영상 출력2. 대문 열림 버튼을 누를시 영상 캡처 기능3. 최근 집에 출입한 10명의 사람들 영상을 확인 가능3. 기능별 상세 설명전체 블록다이어그램 구조이다.1) 로그인 기능로그인버튼을 클릭하면 기존에 저장되어 있던 비밀번호와 사용자가 입력한 비밀번호를 비교해서 일치하면 새로운 while문으로 들어가서 대문이 열리고 외출버튼을 on시킵니다.1. 키패드를 이용한 비밀번호 입력 기능 및 누를 때마다 소리울림아래 그림과 같이 각 버튼을 이용해서 로그인 비밀번호를 입력하도록 구성했습니다. 비밀번호 입력방식은 이벤트구조를 이용했습니다. 각 버튼마다 문자열 추가를 이용해서 번호가 추가되도록 구성을 했습니다. 그리고 각 버튼을 누를 때마다 부저가 울리도록 설정했습니다.2. 비밀 번호 입력 동안 비밀 번호 수정 가능 기능비밀번호 문자열의 길이를 측정한 다음 –1을 해주고 문자열 자르기 함수를 이용해서 맨 뒷자리를 제외한 문자열을 다시 비밀번호 입력 문자열에 넣어 줌으로써 지우기 기능이 구현됩니다.3. 비밀번호가 틀릴 경우 틀린 횟수 표시 기능처음에 비밀번호 문자열의 길이가 틀리면 틀린 횟수를 +1시키고 비밀번호를 초기화 시킵니다. 만약 문자열의 길이가 맞더라도 비밀번호가 틀리면 똑같이 틀린 횟수를 +1시켜서 화면에 표시 해줍니다.4. 비밀 번호 3회 틀릴 경우 “삐용삐용”소리와 함께 경찰 LED ON위에서 체크한 비밀번호 틀린 횟수가 3회가 되었을 경우 아래 보이는 case문으로 들어가서 키패드를 비활성화 시킵니다. 그리고 부저를 이용해서 솔과 시를 10번 반복하고 경찰 LED가 켜집니다. 그 뒤 플랫시퀀스 구조를 이용해서 다시 키패드가 활성화 되도록 구성했습니다.5. 비밀 번호 변경 기능원하는 비밀번호를 입력하고 변경 버튼을 클릭하면 기존에 저장되어 있던 비밀번호 문자열 변수의 값을 바꾸어 주어서 비밀태가 되면 문이 닫히도록 코딩을 했습니다. 문이 닫힐 때도 열릴때와 마찬가지로 다층 시퀀스를 이용해서 애니메이션 효과를 주었습니다.3) 5v 전원 체크 및 온도 조도 확인1. 실시간으로 5v를 체크하고, 연결 상태를 화면에 표시타임아웃에 타임변수와 같이 숫자형 변수를 추가해서 시간을 체크하는 변수로 만들었습니다. flag체크 시간은 0.5s으로 숫자형 변수가 50이 되면 flag의 상태를 확인하고 만약 전원이 연결되어 있으면 LED를 on시키고 전원 연결 문자열을 보여주고 연결이 되지 않았으면 LED를 off 시키고 전원을 연결해달라는 문구를 보여줍니다.2. 5v가 연결되면 실시간으로 온도 및 그래프 표시위에서 5v가 연결되면 온도를 읽어오는 코딩을 실행합니다. temp를 시리얼 통신으로 보내고 40ms이후에 값을 받아서 온도계와 온도계차트에 값을 넣습니다.2.1 실시간으로 온도 PC2로 전송실시간으로 집의 온도를 TCP/IP통신을 이용해서 PC2에 전송시킵니다. 이렇게 전송된 값은 PC2에서 다시 온도를 표시하는데 사용됩니다.3. 5v가 연결되면 실시간으로 조도 막대 바 표시5v가 연결되면 위에 온도를 읽어온 이후에 다층 시퀀스를 이용해서 바로 조도 센서값을 읽어 옵니다. 값을 읽어 드린 후 막대 그래프에 값을 보여줍니다.3.1 실시간으로 조도 PC2로 전송온도와 마찬가지로 조도 센서의 값도 실시간으로 TCP/IP통신을 이용해서 PC2에 전송을 합니다.4. 온도 Auto mode4.1 설정온도와 현재온도를 비교해서 에어컨 및 난방 자동 on/off기능원하는 온도를 설정 한 이후 온도 설정 버튼을 클릭하면 현재 온도계와 온도를 비교해서 설정온도가 현재온도보다 낮으면 에어컨을 동작시키고, 설정온도가 현재온도보다 높으면 난방을 틀어줍니다.4.2 난방이나 에어컨을 수동으로 조절할 경우 자동으로 Auto mode 해제만약 수동으로 에어컨이나 난방을 조절하면 자동으로 오토모드가 해제되도록 했습니다. 아래를 보시면 오토모드를 통해서 지정된 난방과 에어컨의 값을 약간의 딜 마찬가지로 자동 설정을 통해서 지정된 전등 값을 배열에 저장합니다. 그리고 일정 딜레이를 이 후 현재의 전등과 비교해서 만약 틀리면 전등 자동모드가 해제되도록 구성을 했습니다.5.3 PC2에서 조도를 설정하면 FND에 출력PC2에서 조도값을 보낼 때 light라는 문자를 실어서 보내기 때문에 패턴 일치를 이용해서 판단을 합니다. 그래서 조도 값이 들어오면 그 값을 FND에 출력시킵니다. 만약 50이라는 값을 전송 시키면 FND에 0050이 출력 됩니다.6. 5v가 연결되면 실시간으로 영상 출력전원 상태가 on이면 실시간으로 영상정보를 출력시킵니다. 약간의 딜레이를 주어서 프로그램이 느려지는 것을 방지 했습니다.7. 화제 감지 기능7.1 현재 온도가 36도 이상이 되면 화제 및 소방차, 스프링클러 작동7.2 화제가 감지되면 “삐용삐용”소리 울림실시간으로 읽은 값이 만약 36도 이상이 되면 화제감지, 스프링클러, 소방차 LED를 ON시킵니다. 그리고 “삐용삐용” 소리를 이용해서 주변 사람들에게 알려주는 기능을 합니다.8. 외출을 할 때 집안에 전등이 켜져 있으면 부저음 발생집에서 외출할 때 외출버튼을 누르면 전등이 켜져있는지 꺼져있는지 확인합니다. 만약 전등이 하나라도 켜져 있다면 부저음이 울리게 되고, 외출상태는 변하지 않게 됩니다.9. 실시간으로 에어컨, 난방, 화제, 스프링클러 상태를 PC2로 전송TCP/IP를 통해서 에어컨, 난방, 화제, 스프링클러의 상태를 보냅니다. 보낼 때 각각 확인할 수 있는 문자열을 추가시켜서 보내기 때문에 이 문자열을 이용해서 PC2에서 각 값을 확인합니다.5) 초인종 기능1. 초인종을 누를 경우 집안의 영상을 다른 pc로 전송초인종을 누르면 호출이 on상태가 되고 실시간으로 영상을 PC2에 전송합니다.2. PC2에서 대문 열림 버튼을 클릭하면 자동으로 대문이 열림PC2에서 door이라는 문자열과 함께 상태 값을 보내주면 이 값을 받아서 대문을 열고 호출을 off 시킵니다.2.1-2) PC2 화면 기능1) 실시간 상태 표시1. 조절1. 원하는 온도를 홈 화면으로 전송원하는 온도를 설정하고 ‘자동 온도조절’버튼을 클릭하면 지정한 온도가 PC1으로 전송됩니다. 그리고 PC1에서 온도 auto mode가 동작합니다.2. 원하는 조도를 홈 화면으로 전송원하는 조도 값을 전송합니다. 그러면 PC1에서 이 값을 이용해서 FND에 표시를 합니다.4) 영상 저장 기능1. 홈 화면에서 호출을 누르면 자동으로 영상 출력홈 화면에서 호출을 누르면 영상을 보내주기 때문에 PC2에서는 따로 설정할 필요 없이 실시간으로 영상을 출력하면 된다. 그래서 호출을 누를때만 영상이 PC2에 보이게 된다.2. 대문 열림 버튼을 누를시 영상 캡처 기능우선 대문 열림 버튼을 클릭하면 이벤트 구조에 들어와서 사진 저장 상태 LED를 on시킨다. 그러면 현재 전송되고 있는 화면을 문자열 배열에 저장시킨다. 배열은 총 10개로 만들어서 총 10명의 출입 상황을 확인할 수 있다.3. 최근 집에 출입한 10명의 사람들 영상을 확인 가능지금까지 출입한 사람 중에 원하는 기록을 선택한 다음 열기 버튼을 클릭하면 그때 들어온 사람의 사진을 볼 수 있다. 그리고 오른쪽에 사진저장 개수를 보여주어서 지금까지 몇 번 문을 열어주었는지도 확인할 수 있다.3. 과제 수행 후기이번 과제를 수행하면서 가장 어렵고 까다로웠던 점은 rs-232통신과 tcp-ip통신부분이였습니다. rs-232통신은 j_kit128에서 값을 받아오는 역할을 하는 통신인데 j_kit128에서 동시에 받아와야 하는 데이터가 많아지면서 rs-232통신 간의 delay time을 미세하게 조정해야했습니다. rs-232통신은 다층 시퀀스 구조를 이용하여 구현 하였는데 각각의 시퀀스 구조의 delay time을 크게 설정해주면 j_kit128에서 값을 읽어오는 속도가 너무 느려 프로그램의 동작 속도가 느려졌습니다. 반대로 delay time을 작게 설정해주면 오버플로우 에러가 발생하였습니다. 따라서 시행착오 법을 통해 적절한 delay time을 찾아야 했습니다.또한 프로그램 특니다.
1. 과제 진척 개요이번 과제를 수행하면서 많은 문제점이 있었지만 NI에서 제공하는 예제 및 도움말을 통해 많은 문제점들을 해결할 수 있었습니다. 주문 시스템 프로그램의 기본 기능으로는 크게 로그인 기능, 메뉴 주문, 주문 대기 시간, 매출액 4가지로 나누어져 있습니다. 그래서 기본적인 기능 4개로 큰 틀을 만들어 놓고 실제 주문시스템에 필요한 기능들을 많이 추가했습니다.완성된 주문 시스템 프로그램의 UI입니다.2. 과제 진척 상세 내용2.1 작품의 기능1) 로그인이 되면 전체 주문 시스템 프로그램 보이기 기능2) 로그인 기능1. 키패드를 이용한 비밀번호 입력 기능2. 비밀 번호 입력 동안 비밀 번호 수정 가능 기능3. 비밀번호가 틀릴 경우 틀린 횟수 표시 기능4. 비밀 번호 3회 틀릴 경우 10초 동안 키패트 비활성화 기능5. 비밀 번호 변경 기능3) 메뉴에 따라 결제금액/지불금액/거스름돈/대기시간 표시 기능1. 메뉴판 추가 기능2. 메뉴판 삭제 기능4) 주문 메뉴의 대기 시간 카운트 및 수정1. 주문할 경우 주문 상태 창에 주문 메뉴 표시 기능2. 주문 시 결제금액 보다 낮으면 추가해야할 금액 표시 기능3. 메뉴를 주문 현황판 표시 기능(3개 주문까지)3.1 주문을 누르면 차례대로 주문 현황에 등록 기능3.2 최근 주문 시간이 다 되면 자동으로 주문 현황 목록 정렬 기능3.3 주문 현황에 주문이 3개 밀려 있으면 추가 주문 대기 시간 표시 기능4. 주문 누를 때 결제 금액보다 낮으면 추가 지불해야 할 금액 표시 기능5. 추가 주문 기능5.1 주문 목록에 추가 주문 메뉴 및 가격, 대기 시간 추가 기능5.2 추가 주문 시 결제 금액이 부족한 경우 추가 결제 금액 표시 기능6. 메뉴 취소 기능6.1 기존에 주문 현황에서 주문 메뉴 수정 및 가격, 대기 시간 수정 기능6.2 기존에 주문 목록에 취소 품목이 없을 경우 다이얼로그 표시 기능7. 품목 취소 기능8. 메뉴 예약 기능8.1 예약 시간이 다 되면 자동으로 주문 현황에 예약메뉴 추가 기능8.2 예약은 한 번있던 비밀번호와 사용자가 입력한 비밀번호를 비교해서 일치하면 새로운 while문으로 들어가서 프로그램이 실행 됩니다.1. 키패드를 이용한 비밀번호 입력 기능아래 그림과 같이 각 버튼을 이용해서 로그인 비밀번호를 입력하도록 구성했습니다. 비밀번호 입력방식은 이벤트구조를 이용했습니다. 각 버튼마다 문자열 추가를 이용해서 번호가 추가되도록 구성을 했습니다.2. 비밀 번호 입력 동안 비밀 번호 수정 가능 기능비밀번호 문자열의 길이를 측정한 다음 –1을 해주고 문자열 자르기 함수를 이용해서 맨 뒷자리를 제외한 문자열을 다시 비밀번호 입력 문자열에 넣어 줌으로써 지우기 기능이 구현됩니다.3. 비밀번호가 틀릴 경우 틀린 횟수 표시 기능처음에 비밀번호 문자열의 길이가 틀리면 틀린 횟수를 +1시키고 비밀번호를 초기화 시킵니다. 만약 문자열의 길이가 맞더라도 비밀번호가 틀리면 똑같이 틀린 횟수를 +1시켜서 화면에 표시 해줍니다.4. 비밀 번호 3회 틀릴 경우 10초 동안 키패트 비활성화 기능위에서 체크한 비밀번호 틀린 횟수가 3회가 되었을 경우 아래 보이는 case문으로 들어가서 키패드를 비활성화 시킵니다. 그리고 기다림 함수와 for문을 이용해서 10초를 기다리고 플랫시퀀스 구조를 이용해서 다시 키패드가 활성화 되도록 구성했습니다.5. 비밀 번호 변경 기능원하는 비밀번호를 입력하고 변경 버튼을 클릭하면 기존에 저장되어 있던 비밀번호 문자열 변수의 값을 바꾸어 주어서 비밀번호가 변하게 된다.3) 메뉴에 따라 결제금액/지불금액/거스름돈/대기시간 표시 기능아래 그림과 같이 메뉴에 따라 결제금액/지불금액/거스름돈/대시시간을 표시해 줍니다.1. 메뉴판 추가 기능아래 그림과 같이 메뉴 이름, 가격, 소요시간을 입력하고 원하는 메뉴판 번호를 입력한 다음 메뉴추가 버튼을 클릭하면 해당되는 메뉴 번호에 새로운 메뉴가 추가 됩니다.2. 메뉴판 삭제 기능삭제를 원하는 메뉴번호를 선택하고 메뉴 삭제 버튼을 클릭하면 해당 번호의 메뉴판을 초기화 시켜줍니다.4) 주문 메뉴의 대기 시간 카운트 및 수정를 표시함과 동시에 다이얼로그 창으로도 표시해줍니다.3. 메뉴를 주문 현황판 표시 기능(3개 주문까지)메뉴를 주문하는 구조는 다층 시퀀스구조를 이용했습니다. 처음 주문 버튼을 클릭하면 사용자가 입력한 메뉴번호와 수량을 입력 받습니다. 그렇게 입력받은 수량을 이용해서 주문 결제금액과, 소요시간을 계산합니다. 그리고 주문현황에 저장되는 메뉴이름은 주문한 메뉴의 첫 글자와 주문 수량을 합쳐서 표시를 합니다. 예를 들어서 햄버거 3개, 오리고기 2개를 주문했을 경우 주문현황 목록에는 “햄3오2”처럼 저장이 됩니다. 이렇게 주문이 완료되고 난 뒤 주문 상태창에 주문이 완료되었다는 문자열을 표시합니다.3.1 주문을 누르면 차례대로 주문 현황에 등록 기능주문을 누르면 주문현황에 차례대로 저장이 되기 위해서는 주문현황 목록을 먼저 확인해야 합니다. 확인하는 방법은 주문 현황이 비어있는 칸에는 총 가격이 0원이므로 인덱스 0부터 주문 총가격이 0원인 인덱스를 검색합니다. 비어있는 인덱스를 찾으면 그곳에 주문내역을 저장합니다.3.2 최근 주문 시간이 다 되면 자동으로 주문 현황 목록 정렬 기능주문 현황에 2개나 3개의 주문이 저장되어 있는 경우 최근 주문이 완료가 되면 이전 주문이 앞으로 쉬프트 되어야 합니다. 그래서 첫 번째 주문현황의 대기 시간이 0이 되면 case문으로 들어와서 배열 잘라내기 함수를 이용해서 첫 번째 인덱스를 제외한 배열을 다시 주문현황 배열에 저장합니다. 그렇게 되면 이전 주문 현황이 앞으로 옮겨지게 되고 새로운 대기 시간이 카운트 됩니다.3.3 주문 현황에 주문이 3개 밀려 있으면 추가 주문 대기 시간 표시 기능총 3개의 주문현황이 있기 때문에 2번 째 인덱스의 총 가격이 0이 아니면 주문현황에 저장 할 공간이 없습니다. 그래서 총 가격이 0이 아니면 첫 번째 주문내역의 대기시간을 확인한 후 그 시간만큼 기다려 달라는 다이얼로그 창을 띄워서 사용자에게 알려줍니다.4. 주문 누를 때 결제 금액보다 낮으면 추가 지불해야 할 금액 표시 기능주문 버튼을 누르고해서 저장합니다.두 번째는 추가 주문하는 메뉴가 기존에 주문한 메뉴에 없을 경우입니다. 만약 기존에 주문한 목록에 추가주문 메뉴가 없을 경우 주문 목록에 새로 추가한 메뉴의 이름과 수량을 추가시키고, 총 금액과 대기 시간을 추가해줍니다.5.2 추가 주문 시 결제 금액이 부족한 경우 추가 결제 금액 표시 기능지불금액이 결제금액보다 작을 경우 다이얼로그 창을 이용해서 추가 지불해야 할 금액을 알려줍니다.6. 메뉴 취소 기능6.1 기존에 주문 현황에서 주문 메뉴 수정 및 가격, 대기 시간 수정 기능사용자가 취소를 원하는 메뉴의 개수를 입력하고 메뉴 취소 버튼을 클릭하면 먼저 주문 현황에 취소를 원하는 메뉴가 주문이 되어있는지를 확인합니다. 취소를 원하는 메뉴가 주문이 되어 있으면 해당 주문 목록의 수량을 감소시키고 총 가격, 대기 시간을 단축 시킵니다. 그리고 메뉴를 취소한 만큼 거스름돈을 표시해줍니다.6.2 기존에 주문 목록에 취소 품목이 없을 경우 다이얼로그 표시 기능주문 목록에 취소하고 싶은 품목이 없을 경우에는 사용자가 실수를 했기 때문에 주문 되지 않은 품목이라고 다이얼로그창을 이용해서 알려줍니다.7. 품목 취소 기능취소를 원하는 주문 번호를 선택한 후 주문 취소 버튼을 클릭하면 다이얼로그 창으로 취소된 주문 메뉴의 이름을 표시해줍니다. 그리고 해당 주문 목록이 삭제되고 나면 삭제한 주문 번호 바로 뒤에 있는 주문 목록이 앞으로 한 칸씩 옮겨집니다.8. 메뉴 예약 기능8.1 예약 시간이 다 되면 자동으로 주문 현황에 예약메뉴 추가 기능사용자가 원하는 메뉴를 선택하고 예약시간을 설정한 뒤 예약 버튼을 클릭하면 사용자가 선택한 메뉴의 수량을 새로운 변수에 추가합니다. 그리고 저장한 예약 시간을 저장합니다.예약시간이 저장되면 실시간으로 1초마다 예약시간을 감소시킵니다. 예약시간이 0초가 되었을 때 사용자가 입력한 메뉴의 목록을 이용해서 주문 현황에 예약 주문을 추가하게 됩니다.8.2 예약은 한 번 밖에 안 되고, 추가 예약할 경우 다이얼로그 표시 기능예약버튼을 따른 추천메뉴 표시 기능추천 메뉴를 표시해주기 위해서는 각각 품목이 얼마나 주문이 되었는지 확인을 해야합니다. 그래서 주문버튼, 추가주문 버튼을 클릭할 때에는 메뉴가 추가되는 부분이기 때문에 추천메뉴 배열 변수에 메뉴의 개수를 추가합니다. 메뉴 취소의 경우에는 메뉴 품목이 줄어드는 부분이기 때문에 배열변수의 메뉴 개수를 감소시켜 줍니다.이렇게 저장된 각각의 총 메뉴 주문 개수를 이용해서 가장 많이 주문한 2개의 품목을 찾기 위해 정렬을 수행합니다. 정렬하는 방법은 새로운 배열변수를 하나 더 선언하고 각각의 총 메뉴 주문 개수를 대소 비교합니다. 그래서 가장 많이 주문한 메뉴의 인덱스를 저장합니다. 새롭게 정렬된 배열을 이용해서 추천메뉴1에는 가장 많이 팔린 메뉴를 표시해주고 추천메뉴 2에서는 두 번째로 많이 시킨 메뉴를 표시해줍니다.6) 프로그램 종료 시 그날 총 매출액 자동 정산프로그램을 종료할 경우 종료 시점까지 저장된 총 매출액을 TEXT파일로 저장 시켜줍니다. 그리고 프로그램을 종료하면 다시 로그인창으로 돌아가기 때문에 로그인창을 제외한 모든 기능이 사라지게 됩니다.1. 만약 완료 되지 않은 주문이 있을 경우 프로그램 종료 불가 기능프로그램 종료 버튼을 누를 당시 주문 현황에 완료되지 않은 주문이 있을 경우 주문이 완료되지 않았다는 다이얼로그 창과 함께 프로그램이 종료되지 않습니다.3. 과제 수행 후기이번 중간 프로젝트를 하면서 랩뷰의 편리함을 다시 느낄 수 있었습니다. 처음에는 기본적인 기능들을 하나씩 구현하면서 기본적인 프로그램의 틀을 만들었습니다. 그렇게 프로그램의 틀을 잡고난 후 실제로 주문 시스템 프로그램에 필요한 기능에 대해서 생각하고 생각나는 기능들을 하나씩 추가했습니다. 보통 기본적으로 틀이 완성된 프로그램에서 기능을 추가하려면 많은 수정작업을 거쳐야 하지만 렙뷰는 정말 간단하게 기능 추가가 가능 했습니다. 그래서 제가 생각했던 여러 가지 기능들을 손쉽게 추가를 할 수 있었습니다.다만 아쉬운 점이 있다면 렙뷰 기능 중에 counter의 .
자동 항법 쿼드콥터 Contents 개발 목적 개발 환경 시스템 구조 쿼드콥터 구조 및 제어 Android Quad Copter Controller Check List Q A 개발 목적 Purpose 휴대폰을 이용해서 조종기를 탐색할 수 있을까 ? 사용하지 않고 내가 원하는 위치를 시스템 구조 기간 2014.05.01 ~ 2014.08. 30 (3+1 months) 개발 환경 OS : Windows 7, Android Tools : Microsoft Visual Studio, MySql , Arduino , Eclipse Language : C, C#, JAVA, JAVA Script System Architecture Roll, Pitch, Yaw auto_pitch,auto_roll , controll 값 Controll 값 , GPS 좌표 값 Roll, Pitch, Yaw, 사 진 쿼드콥터의 구조 및 제어 쿼드콥터 구조 모터 : APL20-26T (750kv, 11.1v) 변속기 : hobby king 20A 초음파 센서 : MB1010 (20hz, 6m) 기압센서 : MS5611 모터 제어 동역학 한 주기 2ms 모터 제어 범위 1ms~2ms 모터 제어 초음파 센서 ( 회로 ) RC 필터 전기적 노이즈 제거하기 불안정한 데이터는 전기적인 노이즈에 의해 발생이 가능합니다 . 많은 량의 전류가 모터를 돌리기 위해 사용이 되고 모터가 속도를 바꿀 때마다 전압 레벨은 위로 튀거나 아래로 내려가게 됩니다 초음파 센서 ( 코딩 ) 메디안 필터 총 5 개의 초음파 센서 값을 이용해서 오름 차순으로 정렬하고 중간 값을 실제 쿼드콥터를 날리는데 사용한다 . 값이 튀는 현상 발생 실제 값과 2m 이상 차이가 나는 값이 가끔씩 발생한다 . RC 필터로 전기적 노이즈를 많이 제거 했지만 아두이노에서 아날로그 값을 읽을 때 가끔씩 실제 값과 다른 값을 읽어 들인다 . 기압센서 회로 고도 해 수면 고도 = 1013.25 해수면기압 현재 기압 1 5.257 −1 ∗ 현재 온도 +273.15 0.0065 기압센서 최근 5 개의 값을 저장한다 . 메디안 필터를 이용 해서 중간값을 뽑아 낸다 . 가중치 필터를 이용 해서 값의 변화폭을 줄인다 . 현재 기압센서 = 2m 분해능 10cm 이내로 제어 가능 PID 제어 ( 피드백 ) PID 제어 비례 (Proportional) 제어와 적분 (Integral) 제어와 미분 (Differential) 제어 조합으로 된 제어 방법 . 비례 게인 (