'프로젝트/학교과제'에 해당되는 글 4건

  1. 2007/02/02 TCP/IP 1:1채팅&파일전송 프로그램 (6)
  2. 2006/06/26 걷는 실린더 로봇 구현 완성. (3)
  3. 2006/06/20 Alpha 버전 완성 (Color Pop Pop in Mobile)
  4. 2006/06/10 우리들 만의 RC car 모습!! (8)
3학년 2학기 임베디드시간에 나온 기말과제.

임베디드시간에 리눅스 커널에 대해서 공부하더니 기말프로젝트로 나온게 1:1전송과 파일전송 프로그램이였다.
TCP/IP는.. 수업시간에 간단한 예제 몇개만 보여주고 알아서 해오라~ 라고 던져준 과제 =ㅂ=)乃.

윤성우님의 TCP/IP 책과 ncurses library문서를 참고해서 제작한 프로그램이다. 이 프로그램을 만들었던게 12월 세번째 주였는데, 이미 회사에 취업해 있던 상태 였으며 하루는 서울에 있는 회사에 출근을 하고 하루는 천안에 있는 학교에 기말고사 시험을 보러 가는 무지막지한 주였다.

User inserted image

구현할때 가장 많이 시간을 들였던건 ncurses library쓰는것. 사실 이 라이브러리가 있다는걸 발견하는것도 오래 걸렸다. kdlp도 뒤지고 google도 뒤지고 해서 알게 되었고, 다행히 library정리는 잘 되어 있어서 쓰는데는 많은 삽질을 하진 않았다.

ncurses library를 쓰게된 이유가 Turbo C의 gotoxy 기능과 getx, gety의 기능을 Linux에서 구현하기 위해서 였는데, 이 기능이 있어야만 상대방으로부터 받은 메시지를 출력하는 부분과 자신의 메시지를 입력하는 부분을 따로 분리해서 구현할 수 있기 때문이다. 안그러면 자신이 메시지 입력하는도중에 상대방으로부터 메시지가 도착하면 골치아픈 상황이 발생하게 된다.

재미있는거는, 프로그램에서 사용하는 통신프로토콜을 수업시간에 조교형이 주었다. 예를들어 채팅 메시지는 TEXT내용 이런식으로 전송된다 라는걸. 하지만 다른 친구들이 만든 프로그램과 테스트를 해보면 제대로 작동이 안된다. 서로 너가 프로토콜을 지키지 않은거야 라고 우기기만 할뿐이다.

3일정도 밤세며 공부하고 배워가며 작업을 했었는데 프로젝트 검사할때는 너무 금방 끝나버려서 아쉽기도했다. 다른 친구들은 교수님께서 실행시켜보고 Vim 사용법이라던지 소켓프로그래밍에대해서 물어보던데 난 실행만 시켰더니 리포트 내라고만 하시고 가셨....

인터페이스를 이쁘게, UI를 편하게, 파일전송을 효과적으로, 글씨 입력과 출력되는부분이 분류되게 등등을 신경쓰다보니 코드가 1100줄이 넘어갔다. Makefile 문법을 제대로 아는것도 아니고 파일 단위로 나누기도 귀찮아서, 프로젝트는 파일 하나에 모든 함수를 다 구현했었는데, Vim에서 500라인까지는 어찌저찌 할 수 있었으나 그 이상이 되니 Vim에디터로는 도저히 진행이 어려워.... EditPlus로 작업을 하고.. ftp에 업로드하고, 리눅스에서 받아 컴파일해 테스트했다 =_=;;;;;;;;

TCP/IP를 처음 사용해본 프로젝트였으며, 오랫만에 원없이 밤세며 코딩해본 프로그램이며, 리눅스에서 처음 진행한 프로젝트라는거에 의의를 두고 싶은.. 프로젝트.

회사에 입사해서 이제 쉴만큼 쉬었으니 프로그래밍에 다시 빠져보자 !!
Posted by Mastojun

3학년 1학기 수강과목인 컴퓨터그래픽스의 텀 프로젝트,

걷는 실린더 로봇 구현하기를 완성했다.


마우스 왼쪽 버튼을 누른 상태로 드레그 하면 회전이 가능하고,
마우스 오른쪽 버튼을 누른 상태로 드레그 하면 확대, 축소가 가능하다.

휠 마우스를 클릭하면 메뉴가 나오는데, 걷기, 달리기, 특수동작의 메뉴가 있다.

특수동작은 메트릭스!!

그냥 과제는 "걷는" 로봇 만들기 이지만 다들 이상한거 옵션으로 하나 둘씩 붙이길래 나도 고심끝에 정한거다.

시간만 많으면 여러가지 동작을 더 집어 넣을 수 있지만 그건 그저 시간낭비일뿐, 이걸 체점하는 조교님도 그다지 높게 평가해 주시진 않는다.

이젠 리포트 쓰는 일만 남았구나 >_ <)

이로서 이번학기가 완벽히 끝난건가.... 정말 바쁘고 할일이 많은 한학기였어..

Posted by Mastojun
TAG OpenGL
또.. 제작과정은 전혀 올리지 않고, 덥썩! 완성.. (...) 이라는 포스트를 올려요 ^^;; 오호호;;


컬러팝팝의 모바일 버전입니다. 싸이월드 (http://cyworld.com) 의 콘텐츠중 플래쉬 게임에 컬러팝팝을 찾아 어떤 게임인지 알아보는것도 좋을듯 (....orz..)

자세한 이야기는 여길 클릭!!



비록 Alpha버전이라는 꼬리표를 달고 있는 녀석이지만, 어쨋든 완성입니다. 차차 업그래이드 시켜야죠 ^^;
Posted by Mastojun
TAG WIPI

바로 이것이 무려 3주동안 (매일은 아니지만 -_ -;;) 만든 RC카의 본체 입니다. "이게 어딜봐서 자동차야!!" 라고 따지진 마시고 ;;; 과에 돈이 많지 않아, 작년에 단체로 구매를 해 둔 마이크로 마우스 Body와 모터 세트를 "빌려" 주더군요;; 푸품 명세서에서 자동차등의 굴러가는거를 만들겠다고 한 조는 모두다 저 마이크로 마우스를 "빌려"줬습니다. 프로젝트 발표가 끝나면 다 분해해서 돌려 드려야 해요 ㅠ
맨 위에 보이는 것이 사각LED입니다 (매일 둥근 LED만 보다가 사각 LED를 보니 신선하더군요;;; 조교님이 가지고 있는거 얻었습니다 ㅋ) 리모컨에서 버튼을 누르면 각 버튼에 해당되는 LED가 불이 켜집니다.

이런 식으로 말이죠, 위의 불빛으로도 알 수 있듯이 지금은 전진 버튼과 오른쪽 버튼을 누른 상태 입니다. 이럴경우 전진하면서 오른쪽으로 회전을 하죠 (왼쪽바퀴 2번 돌때 오른쪽바퀴는 1번 회전합니다)
총 동작은 10가지가 있습니다.


이것이 바로 리모콘!! 실제 RC카에 쓰는 조그바가 달린 그런 스위치는 아니며, 볼품없어 보일수도 있지만 -_-;; 가운데 아래에 ㅗ (뻐큐 아님 -_-;;) 모양으로 배열되어 있는것이 바로 스위치 입니다. 물론 직관적으로도 알 수 있는것과 같이, 상 하 좌 우 버튼 입니다. 동시에 두개를 누르면 앞으로 가면서 왼쪽 혹은 오른쪽 동작도 하며, 양옆을 동시에 누르면 제자리에서 왼쪽으로 회전~ 위, 아래를 동시에 누르면 제자리에서 오른쪽으로 회전을 합니다.
버튼을 누르면 오른쪽 위에 있는 사각형(RF통신 모듈 BiM418) 에게 왼쪽에 있는 사각형(Atmega8515, 일종의 CPU)이 버튼에 맞는 펄스 신호를 보내주어, 본체에 있는 BiM418송신부에게 전달을 해주죠. Bim418 RF통신 모듈도.. "빌려" 준 것 입니다. 돌려줘야 해요 ㅠㅠ
오른쪽에 있는 빨간줄과 검정줄은 5v DC전압을 걸어줄 선 입니다.
위에 나와있는 Atmega8515가 본체에도 있습니다. 사진엔 안보이지만, 1번째 갈색 층 위에 살포시 얻져 있죠. 바로 이 Atmega8515에 CodeVisionAVR로 코딩한(문법은 C언어) 소스코드를 집어 넣게 됩니다. 소스코딩은 제가 담당을 하였죠 :D 회로 설계는 같이 (거의 친구가 다) 했고~ 납땜은 전적으로 친구가 했습니다 (-_ -); 실업계 나와서 납땜하나는 죽여주거든요ㅋ

본체에 달려있는 서브모터 제어 드라이버를 찍은 사진. 저 가운데에 있는 기다란 칩이 매우 애타게 했죠, 심심하면 퍽~ 퍽~ 터져 나가버려가지고. 무려 10개는 날려 먹은 것 같습니다.;; 전류를 너무 세계줘서 날리고~ 전압을 너무 세계줘서 날리고~, 한번은.. 로직 회로는 5v로 동작을 하게 되는데, 모터는 15볼트 정도로 전압을 인가 시켜줘야 하거든요~ 처음 다 만들고 가지고 놀다가 (파워 서플라이에 기다랗게 선을 연결해서 바닥에 두고) 왼쪽으로 회전을 휘리릭~ 하다 15v (+) 선이 5v 가 돌아 다녀야 하는 로직 신호에 살짝 스치더니, 불꽃을 팍팍~ 튀고, 나가버렸습니다 (-_ -); 결국 저 칩과, Atmega8515칩 하나 날려 먹었죠 (ㅠㅠ)
이렇게 나가버리면 오실로스코프를 가지고 처음부터 끝까지 하나하나 찝어가며 디버깅을 해야 합니다 (소스코드에 있는 오류를 고치는것도 디버깅이고, 회로 상의 납땜오류나 설계 오류 고치는 것도 디버깅 이라고 하더군요)


우리학교 컴퓨터 공학과 기초전기실습실 풍경입니다~.(노트북이 실습실에 있는건 아니구요;; 제 노트북 입니다 ㅋ) 컴퓨터공학과 이지만 기초전기 실습은 할 수 있는 이런 실습실이 있죠, 입학할때 분명히 1인 1실습 장비!! 라고 들었는데, 2인 1 실습 장비 입니다. (고학년은 충분히 1인 1실습 장비로 쓸 수 있긴 합니다;) 각 자리마다 브레드보드(빵판), 파워 서플라이와 디지털 멀티미터, 함수 발생기, 오실로스코프가 있죠~ 1학년때 처음 이것들을 다룰땐 정말 신기하고 낮설었는데 지금은 어느덧 익숙해져 버린 기계들 입니다.

여하튼, 이렇게 RC Car가 완성되었습니다 -_-; 아직은 볼품은 없지만 겉에 무언가를 휘 감거나 할듯...;
어려운 프로젝트 하나가 끝나서 기분이 후련하고~
작업 내역 하나하나를 다 기록하려 했는데 이렇게 갑자기 불쑥! 완성되었습니다 = ㅂ=) 하고 올려 죄송스럽기도 하네요. ㅎ

제가 한게 각각 MCU에 들어가는 소슨데, 생각보다 어렵고 쉬운 작업이였습니다. BiM418 에서는 데이터를 직렬로밖에 보낼 수 없는데, 상 하 좌 우 버튼을 모두 구분하기 위해서는 4bit의 데이터 전송이 필요하며, 어떠한 경우에도 이 신호를 해석할 수 있도록 소스코드 짜느라 약간 힘들었습니다 (...) 다른 사람들은 여기에 들어가는 알고리즘을 어떻게 설계했을지 궁금하네요.ㅎ

동영상 보러가기 : http://blog.naver.com/mastojun/40025468837 
Posted by Mastojun