주간 진행 보고서 (5월 2주차)

2019.05.07


앱의 EditText 스타일만 조금 변경하고 학교 실전문제연구단 (X-Corps) 팀빌딩 교육에 참석했다.

저번 오리엔테이션에 이어 올해 처음으로 실전문제연구단에 참가한 사람들을 대상으로 교육을 진행했는데 시간이 조금 늦어지긴 했지만 생각보다 유익한 시간이었던 것 같다.

이번 주는 오늘 교육 이후에 안드로이드 내의 데이터베이스인 SQLiteDatabase 기능과 연동하여 설정 값들을 저장하고 서버 연동 전까지 각종 기능들을 테스트 해볼 예정이다.

이제 곧 제품을 구입할 시기가 된 것 같아서 서둘러서 마무리를 해야할 것 같다.

팀빌딩 교육에서는 팀플을 진행하면서 필요한 부분들에 대해 조금 더 자세히 생각해 볼 수 있었다.

가장 먼저 팀플의 정의를 적어보고 다른 사람과 공유하면서 어떤 의견이 자신에게 가장 와 닿는지 투표하는 시간을 갖기도 했었는데 그 때 여러 가지 의견 중에 내 의견이 뽑혀서 기분이 좋았다.

팀플에서는 효율성보다 효과성이 중요하다는 것, 팀플에서 가장 중요한 것은 사람의 능력이나 그 자체가 아닌 스케줄링이라는 것 그리고 팀플이 망하는 이유, 팀플을 잘하기 위해 어떻게 업무를 나누어야 하는지 등 팀플에 필요한 다양한 정보들을 쉽고 재미있게 설명을 해주셔서 앞으로 캡스톤디자인과 실전문제연구단 프로젝트를 진행하는데 많은 도움이 될 것 같다.



자세히 보기

주간 진행 보고서 (4월 5주차 - 5월 1주차)

2019.04.30


오늘은 출근 후 I2C 통신프로토콜에 관한 자료 수정을 마무리하고 학교에서 진행하는 실전문제연구단 오리엔테이션에 참석했다.

가서 앞으로 실전문제연구단 사업이 어떻게 진행되는지, 어떤 교육을 지원해주는지, 지원 금액은 어떻게 되는지 등 다양한 정보들을 들을 수 있었고 앞으로 2번 정도 추가적인 교육을 들으러 가야할 것 같다.

I2C 통신프로토콜 연구 부분에서는 특별히 어려웠던 내용은 없었고 장치 데이터 시트 분석 전까지의 내용만 진행했다.

이번 주 내로 장치 부분 연구까지 마치고 다음 주부터 다시 데이터 관리 화면을 완성하고 구현하지 못한 나머지 부분들을 해결할 예정이다.

또, 다음 주에 실전문제연구단 팀빌딩 교육이 있어서 그 때 한 번 더 참여해야 할 것 같다.



2019.05.01


자세히 보기

주간 진행 보고서 (4월 4주차)

2019.04.23


오늘과 내일은 라즈베리파이에서 사용할 통신 프로토콜에 관한 연구를 진행할 계획이다.

팀원들과 나누어 UART, SPI, I2C에 관한 정보를 조사하려고 하는데 그 중에서 나는 I2C를 조사할 계획이다.

차후 모든 정보들을 취합하게 되면 다른 통신 방식도 확인해봐야겠다.

오늘은 일반적인 I2C의 정의와 UART, SPI와의 차이점, 필요한 전압, 구성 및 특징 그리고 통신 방식에 관한 내용들을 조사하였다.

오늘은 이 내용을 정리하고 내일은 통신 예제와 특정 부품에 대한 데이터시트 조사를 진행할 예정이다.

조사한 내용으로는 다음과 같다.

I2C는 필립스에서 개발한 직렬 컴퓨터 버스로, 여러 개의 저속 주변 기기를 연결하기 위해 사용된다.

시리얼 통신에 사용되는 UART 또는 SPI들보다 더 단순하여 심플한 회로 구성이 가능하며 최대 1,008개의 슬레이브 장치를 지원하는 동시에 N:N 통신도 가능하다.

자세히 보기

주간 진행 보고서 (4월 3주차)

2019.04.16


데이터 관리 화면 설계를 시작했다.

기본적으로 레이아웃 구성과 화면에 들어갈 아이콘 등 UI 초안을 만들고 그에 맞춰 기본적인 xml을 구성했다.

오늘은 저장된 데이터 세트의 수를 보여주는 플레이트, (데이터 검색, 전체 데이터 보기, 데이터 분석) 아이콘을 구성하였다.

추가로, 2차 계획 설계 기간 이후로 작품의 이름을 교체했기 때문에 그에 맞춰 앱 이름을 ‘MRM 컨트롤러’에서 옴니 카 컨트롤러로 변경하였다.

4월 15일에 2차 계획 발표를 마무리하고 오늘 처음으로 3차 계획 기간에 대한 작업을 시작했다.

이번 2차 계획 발표 때 메카넘 휠에서 옴니 휠로 변경한 것, 와이파이 통신 방식에 대한 교수님의 불만사항이 있었고 이를 수정할 지, 그대로 유지할 지 다음 계획 발표 전까지 생각해봐야 할 것 같다.

우선 옴니 휠을 사용하는 이유를 더 확실하게 해야 할 필요가 있을 것 같고 와이파이 통신 방식은 제품 제작이 완료되는대로 바로 확인해서 적용하도록 해야겠다.



자세히 보기

주간 진행 보고서 (4월 2주차)

2019.04.09


월요일에 담당 교수님께 발표할 제작 PPT를 검사받았는데 특징과 다른 시스템과의 차별성이 뚜렷하지 않다는 말씀을 하셔서 전반적인 내용을 다시 계획하고 수정하려고 한다.

오늘은 우선 필요한 내용들을 추가로 조사하고 내일까지 PPT를 완성한 이후에 교수님께 다시 제출할 계획이다.

이번에는 기존 시스템들과 차이를 중점으로 작성할 수 있도록 해야겠다.

일단은 기존의 RC카들을 찾아보고 작동 영상들을 확인하였다.

기존에 공개된 RC카들은 대부분 앞, 뒤로만 움직일 수 있고 회전 반경이 큰 경우가 대부분이었는데 옴니 휠이나 메카넘 휠을 장착한 RC카들은 대각선으로의 이동도 어렵지 않다보니 360도 회전을 제외하고는 회전하는 것이 크게 중요하게 작용하지 않았다.

또, 앱을 이용한 RC카는 많았지만 와이파이를 이용하고, 팔과 센서를 동시에 제어하는 옴니 카 RC카는 보지 못했기 때문에 2차 발표 때에는 그 차별성을 확실히 할 필요가 있을 것 같다.



2019.04.10

자세히 보기

주간 진행 보고서 (4월 1주차)

2019.04.02


버튼 화면의 대부분의 기능을 구현했다.

물론 지금은 임시적으로 구현해 놓은 것이기 때문에 차후에 제품과 연동시킬 때 수정해야 할 사항들이 많다.

우선 버튼 화면 촬영 기능, 랜덤 주행모드 활성화 기능, 팔 제어 기능 On/Off, 그리고 환경설정 버튼까지 추가하였다.

랜덤 주행모드 같은 경우에는 작동 시에 전체 화면을 가리도록 해서 다른 버튼들을 강제로 클릭할 수 없도록 하였다.

추가로, 기존 메인 화면의 연결 상태 텍스트뷰의 폰트 스타일을 변경하였고 마지막으로 버튼 화면의 오른쪽, 왼쪽 이동에 대한 360도 회전, 역회전 기능 또한 구현하였다.

버튼 화면의 촬영 버튼에 대한 동작 방식을 추가하였는데 나중에 촬영을 할 경우에 라즈베리파이 내의 하드디스크에 사진을 저장하고 그 파일을 전송시켜서 앱의 화면에 출력하도록 할 지, 아니면 앱 내 화면을 스크린샷으로 찍도록 할 지 그 방법도 생각해봐야 할 것 같다.

팔 제어 모드 같은 경우에는 버튼을 구현 할 때에 Toggle 버튼 대신 텍스트뷰와 변수를 이용하여 On/Off를 제어하도록 했는데 Background를 Java 코드로 교체하는 부분에서 문제가 생기기도 했다.

자료를 찾아보다가 setBackground(ContextCompat.getDrawable()) 메소드를 이용하여 현재의 Context에 대한 Background를 변경할 수 있다는 것을 확인하고 교체하였다.

자세히 보기

주간 진행 보고서 (3월 4주차)

2019.03.26


환경설정 다이얼로그 부분을 마무리지었다.

데이터 자동 저장 기능 On/Off 버튼과 데이터 저장 주기에 대한 기능을 활성화시키고 환경설정 다이얼로그 내 일부 UI를 수정하였다.

이것 이외에는 부가적인 일들로 시간을 보냈고 이번 주 기간 동안에는 조이스틱을 이용한 화면을 구성하는 데 몰두할 계획이다.

데이터 저장 주기 선택 방식을 TextView 버튼 방식으로 설정해두었고 단위를 선택할 때마다 그 숫자 혹은 글자의 색깔을 변경하여 선택하였다는 표시를 확실히 확인할 수 있게 하였다.

SetTextColor(Color.parseColor) 메소드로 색상 변경을 시도하는 도중 문제 하나가 발생했는데 font-family에 해당하는 설정 메소드 Java 클래스 파일에 따로 존재하지 않아서 폰트 스타일에 대한 xml을 새로 만들고 setTextAppearance 메소드를 이용하여 필요한 경우마다 폰트 스타일을 변경하도록 하였다.

또, 다이얼로그 생성 시 EditText에 자동으로 포커싱 되는 문제가 있었는데 그 부분은 처음에 최상위 레이아웃에 포커스를 줌으로서 문제를 해결하기도 했지만 Visibility를 이용하여 사라지고 나타나게 하는 것이 보기에 더 좋은 것 같아 그렇게 코드를 작성했다.

대부분의 화면들이 완성되면 안드로이드 SQLiteDatabase를 이용하여 설정 값들을 저장할 계획이다.



자세히 보기

주간 진행 보고서 (3월 3주차)

2019.03.19


아이피 정보 변경 다이얼로그의 기능을 1차적으로 구현하였다.

메인 화면에서 MRM이 서버와 잘 연결되어 있는지 확인하기 위해 연결 상태를 표시해주는 텍스트뷰를 추가했었는데 그 위에 현재 설정한 아이피 주소와 포트번호 정보를 보여주는 텍스트뷰를 하나 더 추가하여 메인화면에서 즉각적으로 정보를 확인할 수 있도록 하였다.

또, 조이스틱부 화면을 설정하기 위해 기본적인 개념을 공부하였는데 생각보다 복잡한 내용으로 구성되어 있었다.

기존의 View는 onDraw 메소드를 이용하여 시스템에서 화면 그리기를 하게 되어 있는데 이처럼 움직임이 많을 수 있는 View 같은 경우에는 SurfaceView를 사용해야만 원하는 시점에 바로 화면에 그릴 수 있다고 해서 조이스틱을 비롯해 나중에 카메라 화면을 표시할 때도 이 기능을 연구해서 사용해보아야겠다.

우선, 오늘 아이피 정보 변경 다이얼로그의 기능을 구현하면서 EditText와 관련한 문제들을 직면했는데 아이피 주소와 포트번호를 입력하지 않은 경우 또는 아이피 주소 형식이 잘못된 경우에 대한 예외처리를 해야 했다.

입력하지 않은 경우를 제외하고는 숫자와 온점(.)만을 입력해야만 하는데 온점의 개수와 위치 등을 파악해야 하는 경우도 있어서 이 부분은 중요하다기보다는 선택적인 부분이라 나중에 많은 부분이 완료되면 그 때 추가하는 걸로 해야겠다.

또, 엔터키 방지와 int의 최대 표현 길이를 넘지 않도록 SingleLine과 MaxLength를 제한하였다.

마지막으로, 조이스틱 UI를 연구하는 부분에 있어서 직접 SurfaceView 위에 하나부터 열까지 다 그리는 방식도 있겠지만 오픈소스를 이용하는 방법도 있는 것 같아 어떤 방법을 쓰는 것이 좋을지 고려해봐야 할 것 같다.

자세히 보기

주간 진행 보고서 (3월 2주차)

2019.03.12


애플리케이션 초안을 설계했다.

초반이라 팀원들과 하드웨어 부분을 같이 연구하는 것이 맞지 않나 싶었지만 나중에 소프트웨어 부분이 차지하는 비율이 조금 더 크기 때문에 먼저 해 놓으면 좋을 것 같아 미리 앱 디자인을 시작하였다.

현재시간, 동작 버튼, 작동시간, 온/습도 표시, 이동거리, 기울기, 카메라 화면 등 다양한 부분들이 필요했고 임시적으로 메인부를 만들기 전에 버튼 방식의 실행부 부분을 메인 화면에 만들어 테스트 해보았다.

각 기능들이 포함될 레이아웃 부분을 나누는 것이 최우선이기 때문에 그 부분을 먼저 시작했고 다른 부분들은 순차적으로 만들어나갈 계획이다.

손으로 그려본 초안과 실제로 스마트폰에서 보이는 화면 간의 공간 차이로 인해 1차 초안에서 디자인을 약간 수정하였다.

버튼 방식의 실행부를 테스트하는데, 화면을 구성하는데 있어 자동으로 화면 전환이 되지 않도록 강제로 가로모드로 설정해두었고 맨 위에 상단바가 보이지 않도록 전체화면을 적용시켰다.

다만 전체화면을 적용하는데 있어 illegalStateException이 발생했는데 메인 클래스에 AppCompatActivity를 import한 상태로는 setContentView가 제대로 적용되지 않아 Activity를 import시켜 이 문제를 해결하였다.

화면을 나누고 아이콘 등 기본 UI만 배치하고 WebioPi와의 서버 연동부터 연구할 계획이다.

자세히 보기

주간 진행 보고서 (3월 1주차)

2019.03.05


로뎀기술에 첫 출근하여 연구하고자 하는 WebioPi를 이용한 메카넘 휠 제어 설계에 관한 기초적인 계획을 수립하였다.

라즈베리파이 핀맵, 통신규격 등 보드와 회로에 관련된 기초 개념이 부족하여 대표님께서 직접 라즈베리파이 보드를 보여주시면서 앞으로의 연구를 위해 전반적으로 흐름을 어떻게 잡아야 할 지 설명해주셨다.

하드웨어 관련 강의를 많이 듣지 않아서 처음 라즈베리파이 보드판을 접해보았는데 상당히 복잡한 구조로 이루어져 있어 이 안에 포함되어 있는 다양한 기능들과 통신규격들에 관한 개념 정립을 우선시 해야할 것 같다고 하셨다.

보드에 관한 기초적인 개념들을 정립하기 위해서 자료조사를 먼저 실시한 이후에 어느 정도 정리가 되면 만들고자 하는 제품의 설계도를 제대로 설계하고자 한다. 같이 실습을 받는 팀원들과 역할을 분담하여 조사를 하기로 했기 때문에 내일까지 보드에 연결되는 파워, 배터리와의 작동 방식들을 조사하고 의견을 나누어 볼 계획이다.



2019.03.06


어제 부족했던 라즈베리파이 보드와 전원 공급, 배터리, 컨버터 등과의 관계에 대한 개념을 조사하고 파워포인트로 정리한 내용을 실습시간 내내 추가적으로 보충해나갔다.

자세히 보기