전자공학과 프로그래머

22
전전전전전 전전전전전 전전전 1

Upload: neola

Post on 23-Feb-2016

109 views

Category:

Documents


0 download

DESCRIPTION

전자공학과 프로그래머. 김정민. 목차. 기본소개 이력서 수상과 외부활동 세미나 참가 라즈베리파이 실험 개발과 프로젝트 Android Car eBook Atmega GPS GPS SHOT 알카로이드 Opencv Bill 짐짐이 httpd 3 4 5 7 11 14 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 전자공학과  프로그래머

1

전자공학과 프로그래머김정민

Page 2: 전자공학과  프로그래머

2

기본소개 이력서 수상과 외부활동

세미나 참가 라즈베리파이 실험

개발과 프로젝트 Android Car eBook Atmega GPS GPS SHOT 알카로이드 Opencv Bill 짐짐이 httpd

3

4 5

7 11 14 16 18 19 20 21

목차

Page 3: 전자공학과  프로그래머

3

기본소개 이력서

성명 김정민 주소지

안양시 만안구 안양시 안양9동프라자 아파트 207-306

연락처 Email [email protected] 핸드폰 010-5197-2314 자택 031-442—5515

학적 학교명 기간 비고

양명고등학교 2003/3 ~ 2006/2 졸업 한국산업기술대학교 2006/3 ~ 재학

병역 자격증 구분 기간 비고 구분 등급

만기제대 2008/8 ~2010/6 육군 JLPT 1급 TOEIC 550

운전면허 보통1종

수상경력 수상명 수상년도 비고

구글핵페어 2012 선정 및 참여 산학협력 대전 2012 한국산업기술평가 원장상

장학금 수상

종류 년도/학기 금액 교육역량강화 특별지원 2012/2 2,000,000

성적우수D 2011/1 800,000

Page 4: 전자공학과  프로그래머

4

수상과 외부활동 세미나 참가

세미나명 우분투 나눔주제 Linux 에서 Win32 개발 , wiresharck, llvm, WebSocket,lunchPad 등

참가기간 2012.4~

사진 성과1. 리눅스에 대한 정보습득2. 최신기술 습득3. 다른 리눅스유저들과 정보공유4. 자신에 대한 자극

세미나명 그놈코리아 tech talk

주제 perf, SPARQL tracker

참가기간 2012.12.1

사진 성과1. 디버거 perf 에 대한 정보습득2. Tracker 를 이용한 자료구조 개발

Page 5: 전자공학과  프로그래머

5

수상과 외부활동 라즈베리파이 실험보드명 라즈베리 파이 B

사양 SOC BCM2835

CPU ARM1176JZF-S core

GPU OpenGL ES 2.01080p 30h.264/MPEG-4

MEMORY 256MB

I/O HDMISDCARDUSBEtherNet

OS RTOSDebian WheezyArch LinuxXmbc

장점 1. 낮은 가격2. 많은 지원 OS3. 활발한 개발과 정보공유

실험동기 1. 자신만의 개발보드에 대한 필요2. 세미나에서 권유3. OS 지원과 해외에서 진행중인 많은 프로젝트

Page 6: 전자공학과  프로그래머

6

실험실험명 실험내용

bcm2835 분석 pi( 이하 라즈베리 파이 ) 에 사용되는 Soc 분석개발환경 구축 1. 크로스 컴파일환경구축

2. .config 를 이용한 linux driver 개발환경구축3. IDE 개발환경 구축

GPIO 1. bcm2835 의 분석을 이용2. 기존의 PIC 를 이용하기보다 /dev/mem 을 이용3. little radian 응 사용해야함

OpenCV 1. pi 와 USB_CAM 을 연결2. Opencv Bill 컴파일 실행3. 처리속도가 너무 느림

Raspberry pi as FM transmitter

1. Pi 에서 FM 주파수의 음성신호를 출력2. 원활히 실행됨3. 코드분석은 실패

Page 7: 전자공학과  프로그래머

7

개발과 프로젝트 (Android Car) 프로젝트개요

프로젝트명 Android Car

목표 원격지에서 무인조종이 가능한 자동차기능 1. RC 카를 원격에서 조종

2. RC 카에서 전송되는 영상또한 조종과 동시에 사용자가 볼수있어야 함3. 목표지점에 자동으로 이동하는 시스템구현4. 자동이동간에 모니터링 가능

플랫폼 Hardware Android / AndroidIOIO / RC 카 Software Android

프로젝트 내용프로젝트개요 수동조종

수동조종은 사용자가 안드로이드 화면에 출력되는 RC 카의 카메라화면을 보면서 RC 카를 조작합니다 .

자동조종

자동조종은 구글맵상에서 마커를 지정해주고 RC 카는 목표지점까지 자동으로 이동합니다 . 초음파 센서로 이동중에 장애물을 회피합니다 .

( 사용자 조종 화면 ) (RC 카 실제 운행 )

Page 8: 전자공학과  프로그래머

8

개발과 프로젝트 (Android Car) Hardware

Hardware 1.IOIO ? 안드로이드의 액세서리의 개발을 위해 판매 되는 보드입니다 . USB 연결을 통해서 안드로이드에서 저수준의 입출력을 가능하게 해주는 보드입니다 . 본 프로젝트에서는 RC 카의 모터의 구동에 사용됬습니다 .

2.Android

RC 카의 제어와 연격조종은 모두 안드로이드로 하기때문에 총 2 대의 안드로이드 기기가 필요합니다 .

3.RC 카

RC 카는 IOIO 와 Android 기기를 장착합니다 . RC 카는 기성 제품을 사용하였습니다 .

Page 9: 전자공학과  프로그래머

9

개발과 프로젝트 (Android Car) Software

SoftWare 1. 영상

RC 카에서 영상의 전송은 장착된 안드로이드 SDK 에서 제공되는 카메라 클래스를 사용했습니다 . SDK 에서 기본적으로 카메라화상을 계속적으로 출력하고 그것을 압축 ,전송하고 수신하는 것이 주요 사항입니다 .

2.RC 카 제어 IOIO 는 기본적으로 안드로이드플랫폼에 동작하는 라이브러리를 제공하며 해당 라이브러리를 사용하여 프로그램을 작성하였습니다 .

3. 자동제어

( 자동운행 개념도 )

자동운행은 사용자가 구글맵화면에 좌표를 설정함 으로서 시작됩니다 .시작하게 되면 , RC 카에 설치된 안드로이드는 GPS 를 이용하여 현재 자신이 있는 위치와 목표지점 , 방향을 산술하며 움직이게 됩니다 .또한 이동중에 장애물이 있다면 설치된 적외선센서를 이용하여 장애물의 회피가 가능하도록 프로그램 되었습니다 .

Page 10: 전자공학과  프로그래머

10

대회명 구글핵페어구글핵페어 ?

구글코리아에서 주최한 Google Hackfair 는 Makefair 에 영감을 받아 구글의 Html5,Go, 안드로이드 크롬등의 구글 기술을 사용하여 개발한 결과물로 기술력과 창의력을 선보이는 행사입니다 .

성과 작품전시 , Inspiring Developer 수상참여와 의미

참가를 통해서 학교를 벗어나 다른 분들의 작품을 보면서 자신을 되돌아 보게 되는 계기가 되었습니다 . 그리고 , 그들의 작품이 저에게 의욕을 더욱 자극하였습니다 .

대회명 산학협력 기술대전성과 한국산업기술평가 관리원 원장상

전시사진

개발과 프로젝트 (Android Car) 수상내역

Page 11: 전자공학과  프로그래머

11

개발과 프로젝트 (eBook) 프로젝트 개요

프로젝트명 eBook

프로젝트 설명 임베디드보드 ntc100 을 이용하여 전자책을 구현플랫폼 Hardware ntc 100

Software Embbed Linux/Qt

목표 1. 텍스트 파일을 화면에 출력한다 .2. 페이지 넘기기3. 책갈피 기능4. 메모기능

ntc 100

ntc100 은 코어텍스 CPU 를 사용하는 S5PC100 을 사용하여 제작된 안드로이드 교육용 보드로서 이외에 임베디드 리눅스에도 사용이 가능한 보드입니다 .그렇지만 , 임베디드리눅스같은 경우에 제공되는 정보가 너무적고 지원이 거의 없다는 단점을 가지고 있습니다 .

특이사항 원래는 안드로이드 교육용으로 판매되는 보드이기때문에 관련된 정보가 거의 전무하다 . 제공되는 터치스크린의 드라이버 또한 제대로 동작하지 않았다 .

Page 12: 전자공학과  프로그래머

12

프로젝트 진행작업명 내용

Qt 컴파일 GUI툴킷 Qt 를 사용하기 위해서 qt-embedded-linux-opensource 크로스컴파일하였다 .

문제는 ntc100 에 맞는 아키텍쳐에 따라서 컴파일 하는것이 주요한 사항이었다 .

터치스크린수정

1. 터치스크린 드라이버 소스파일 찾기 위해서 복잡하게 Makefile 을 뒤지기보다 imzige파일까지 생성할때에 과정을 수집하여 , 해당 소스파일을 찾아내었다 . 소스파일은 driv-ers/input/touchscreen/s3c-ts-xwindows.c 이었다 .

2. 기존의 터치스크린의 커서가 어떠한 값을 출력하는지 알아야 했다 .

X 축의 경우 5000~11300 사이의 값을 사용하지만 , 값이 반전되어있었고 해당 범위를 초과했다 .Y 축의 경우에도 값을 초과했다 .

3. 소스수정이외에도 동일한 좌표를 터치해도 계속해서다른 좌표를 출력하기에 커서가 흔들리는 현상이 있었다 .해결방법으로 우선 오른쪽의 위쪽 그래프와 같이 50 단위로 값을 출력해주게 하였다 .그렇지만 , 여전히 커서가 흔들리는 현상이계속되었다 .다음으로 아래쪽 그래프와 같이 빠른속도로 출력되는 값들을 10 개씩 통계를 내어10 개중에 가장 많이 감지한 값을 출력하게하였다 . 결과로 성공적으로 터치가 가능하였다 .

(x 축 그래프 ) (Y 축 그래프 )

개발과 프로젝트 (eBook) 프로젝트 진행

Page 13: 전자공학과  프로그래머

13

개발과 프로젝트 (eBook) 프로젝트 진행 & 실행결과

Qt .conf 수정 터치스크린을 수정했지만 , 타겟보드에서 Qt데모를 동작시킨다면 해당프로그램은 절대로 터치에 반응하지 않는다 . 기본적으로 데스크탑에 설치된다면 이러한 일이 없지만 임베디드 환경에서는 일일이 설정해줘야 했다 .Qt레퍼런스를 뒤져본결과 아래와 같이 직접적으로 드라이버를 설정해줘야 했다 .export QWS_MOUSE_PROTO=tslib:/dev/input/event1

Application코드 작성 Qt 라이브러리를 사용하여 eBook 프로그램의 코드를 작성해주었다 .

실행결과

Page 14: 전자공학과  프로그래머

14

개발과 프로젝트 (Atmega GPS) 프로젝트개요 & 설명프로젝트명 Atmega GPS

목표 1. 시간 , 위도*경도 , 고도 ,각도를 LCD 에 표시2. PC 와 연결시에는 PC 화면에서 정보를 출력3. 4 가지모드를 지원하며 각각의 모드 변경은 버튼을 통해서함

프로젝트 설명 GPS 모튤에서 MTK 패킷포맷으로 출력해주는 신호를 분석하여 사람이 인지할수 있도록 표현해주는 것이 프로젝트의 목표로서 PC 에 연결해주면 정보를 출력하는 것도 그중에 하나입니다 .

플랫폼 Hardware Atmega128 / GPS Module / PC

Software AVR Firmware / MFC

MTK 패킷이란 ? ETK 에서 판매되는 GPS 제품들이 위치정보를 전자적인 정보를 표현해주는 데이터포맷중에 하나로서 GPS module 제품들이 대부분 사용하는 포맷입니다 .

회로도 실제 구현

Page 15: 전자공학과  프로그래머

15

개발과 프로젝트 (Atmega GPS) 프로젝트 실행결과

실행결과1. 위도 , 경도

모드

2. 고도 ,각도 모드

3. 시각 . 속도 모드

4.PC 전송모드

Page 16: 전자공학과  프로그래머

16

개발과 프로젝트 (GPS SHOT) 프로젝트 개요

프로젝트명 GPS SHOT

목표 1. 사진을 찍을때 해당사진의 위치정보를 저장2. 사진을 열람할때 저장된 사진들의 위치를 아이콘으로 구글맵에 표현3. 아이콘을 터치시 해당사진들을 보여줌

플랫폼 Android SDK

프로젝트 내용촬영시 좌표저장

1. 사진을 찍기전에 GPS 정보를 확인2. 사진을 저장시에 분류를 위도와 경도의 이름의 디렉토리에 저장하고 열람시 참조

사진 열람

구글맵에서 아이콘을 터시할시에 해당 장소가 아래의 갤러리에 나타나고 캘러리를 터치할시에 사진을 볼수있습니다 .

( 사진촬영 ) ( 사진저장 계획 )

Page 17: 전자공학과  프로그래머

17

특이사항 1. 안드로이드에서는 일정한 메모리 사용이 제한되어 그림같은경우에 크기를 줄일필요가 있다 .

2. 기본적으로 제공되는 Demo 가 동작안되는 상황도 존재한다 .

실행결과1. 메뉴선택 2. 사진촬영

3. 사진열람

개발과 프로젝트 (GPS SHOT) 실행결과

Page 18: 전자공학과  프로그래머

18

개발과 프로젝트 ( 알카로이드 ) 프로젝트개요 & 실행프로젝트명 알카로이드

목표 1. 벽돌깨기게임을 구현2. 공의 충돌 알고리즘 구현3. 벽돌파괴 알고리즘 구현

OS WindowXp32bit

사용언어 ( 도구 ) C++/MFC

프로그램 주요 개념충돌과 공의

이동

공의 좌표

1. 공은 사실상 4 개의 점을 가진 클래스로 표현하고 처리하였습니다 .

2. 충돌로 벽돌이 파괴될 때에도 이러한 점을 이용하여 처리 하였습니다 .

개발시 특이사항 화면의 반짝임을 없애기 위해 더블 버퍼링 사용

Page 19: 전자공학과  프로그래머

19

개발과 프로젝트 (Opencv_Bill) 프로젝트 개요 & 실행프로젝트명 Opencv Bill

목표 카메라로 얼굴을 인식하면 해당 얼굴을 빌리해링턴의 얼굴로 합성한다 .

개발동기

(BeagleStache)

Beagle 보드에 진행되었던 BeagleStache 라는 카메라에 비춰지는 인물들의 얼굴에 자동적으로 콧수염을 합성해주는 프로젝트에서 염감을 얻어서 시작된 프로젝트 .

개발방향

플랫폼 Linux/Opencv, Qt

실행결과

Page 20: 전자공학과  프로그래머

20

개발과 프로젝트 ( 짐짐이 ) 프로젝트 개요 & 실행프로젝트명 짐짐이

목표 채팅프로그램 맥스를 모방하는 프로젝트 .

개발동기

(맥스 실행화면 )

과거의 맥스나 심심이 같은 프로그램을재미있다고 느끼고 , 개발하게 되었습니다 .

플랫폼 Linux

사용언어 Java/Xml

프로젝트 내용 맥스를 모방하여 만들어진 프로그램입니다 . 비슷한 프로그램으로 심심이가 있고 , 심심이는 DBMS 를 사용했지만 , 해당프로그램은 DBMS 대신에 자바에서 기본적으로 제공되는 xml 트리를 사용하였습니다 . 많은 말은 못하고 다만 , 몇가지 물음에 대답하게 하였습니다 .

실행화면

Page 21: 전자공학과  프로그래머

21

개발과 프로젝트 (httpd) 프로젝트 개요 & 실행프로젝트명 httpd

목표 리눅스에서 다른 프로젝에 추가 가능한 간단한 기능의 http 서버 개발개발동기 http 프로토콜의 흥미로운점은 유용성에 있다 . 초기에 단순히 텍스만을 전송하는데만 한계 되지않고

다른종류의 스크립트들과 더불어서 사용되어 넓은 범용성을 보인다는것입니다 . 더불어 , 일반적인 http 의 클라이언트인 브라우져보다 단순한 기능으로 서버를 만들수 있다는것입니다 .

(AVR 을 이용하여 개발된 http 서버 )

현재에는 서버가 보통은 생각하는 거대하고 값비싼 장비만을 사용할 필요가 없다는 점으로 심지어 8bit 의 AVR 을 이용해서도 서버의 구성이 가능합니다 .

이렇게 구성이 쉽고 접근이 상대적으로 용이하며 , 브라우져같은 경우에 웹페어지를 이용한 GUI 의 지원도 가능한 http 는 커다란 장점을 가지고 있고 이것은 개발의 동기가 되었다 .

플랫폼 Linux

사용언어 C

Page 22: 전자공학과  프로그래머

22

개발과 프로젝트 (httpd) 프로젝트 개요 & 실행

개발과정코드 참조 처음부터 서버를 개발을 시도했으나 실패한 과거의 경험을 참고 삼아 (?) 이번에는 다른 사람이 작성한

프로그램을 참고하여 개발을 시작하였습니다 .

기존에 많이 사용되는 tomcat 이나 php 보다 http://acme.com/software/mini_httpd/ 에서 Jef Poskanzer 가 배포한 mini_httpd 를 참고하였습다 .

이유는 많은 기능이 필요없고 , 다른 프로젝트들은 코드의 참조에 너무나 엄청난 시간을 필요하는 프로젝트들이기 때문입니다 .

기존코드

CGI 모드에 따라서 CGI 를 지원한다 .

WebServer

기본적인 Web 서버 기능이다 . 파일프로토콜도 제공한다 .

코드 변경 변경사항 WebServer

가장 기본적인 Web 서버구현을 목표로 나머지 기능은 삭제하고 , 사용안하는 코드들을 정리하였다 .

실행결과

CGIWebServer

Web-Server

( 미디어 파일 전송 )( 스크립트 전송 )