'전체'에 해당되는 글 131건

  1. 2009.08.23 첫 회로 구성 완료 (5)
  2. 2009.08.20 Mac OS X에서 LM3S8962(ARM Cortex M3)용 소프트웨어 개발하기 (14)
  3. 2009.07.29 올림푸스 PEN E-P1
  4. 2009.07.21 실제크기(?)의 건담 출현 (4)
  5. 2009.07.11 정치 (2)
  6. 2009.07.10 당산철교를 건너다
  7. 2009.07.03 미안하다, 행복하다. (5)
  8. 2009.06.29 Mac OS X Snow Leopard 개발자 프리뷰
  9. 2009.06.25 오빠가 돌아왔다 (6)
  10. 2009.06.17 좋댄다 (2)

첫 회로 구성 완료

2009.08.23 21:45 from programming
"소프트웨어 개발자의 하드웨어 개발기" 두번째 글입니다.

ARM Cortex M3 기반의 LM3S8962 개발보드에 블루트스 모듈, 3차원 가속도 센서 모듈을 연결하는데 성공했습니다. 전원공급과 배선 납땜조차 어떻게 해야하는지 모르는 상황에서 이래저래 하다보니 기대이상 잘 됐습니다. PWM 생성해서 서보모터 제어하는데에도 성공했습니다. 

DSC_6172

완성한 1차 보드의 모습. 맨 왼쪽은 JTAG 인터페이스, 가운데가 LM3S8962개발보드, 맨 우측이 블루트스 통신 모듈, 그 아래가 3차원 가속도 센서입니다. 기판 아래쪽에는 전원 공급과 서보모터를 연결하는 핀을 배치했습니다. 

하나하나 직접 만들려면 꽤나 어려운 일일텐데, 고맙게도 모듈화가 너무 잘 되어있어서, 필요한 모듈을 사다가 연결만 하면 되는 수준이었습니다. 이제 납땜은 일시 중단하고, 소프트웨어 개발을 본격적으로 해봐야겠습니다.
 
(저 보드는 프로토타입이랍시고 대강대강 만들었는데, 한번 하고 나니, 다시 하고 싶지는 않아서, 그냥 저걸로 그냥쓸까도 생각중입니다. 아마도 이걸로 끝나지는 않겠지만요)

여기까지 만들면서 어리석은 궁금증이 많았는데, 이래저래 찾아보고, 또 가까운 전문가(!)들에게 물어봐가며 해결했습니다. 제가 궁금했던 부분과 그 해결사항을 나름대로 적어봅니다. (학창시절이었다면, 자료 찾아보기도 쉽지 않았을텐데, 요새는 위키페디아에 이런정보들도 아주 잘 나와있더군요. 위키페디아 덕을 톡톡히 보고 있습니다. 이하는 제멋대로 이해한 내용이며, 정확한 내용을 위해서는 위키페디아를 보시는게 좋을것 같습니다) 

Q. 서보모터를 제어하기 위해서는 PWM (Pulse-Width Modulation)방식을 쓴다고 하는데, 대체 PWM이 무엇인가?
A. 1과0의 값을 넣어주는 주기와 길이에 따라 그 중간값을 표현하는 방식입니다.


위 그림으로부터 단순하게 이해하면, T주기 내에서 Ymax로 표현된 값이 지속된 시간 DT만큼의 비율로 표현 값을 이해할 수 있습니다. 예를들어 D.T가 T의 절반이라면 0.5로 해석하고, T와 같다면 1.0, 계속 Ymin이라면 0.0이라고 이해할 수 있는 것입니다.

제가 구매한 서보모터의 사양을 보면, 20ms주기 T에서, 1.5ms동안 High신호를 주고, 나머지를 Low로 주면 중립위치를 지키고, 1.0ms ~ 2.0ms 범위에서 High값을 주면 해당 값에 맞게 서보모터의 각도가 변화합니다.  즉, 20ms중에 앞부분 일부만을 사용해서 결과값을 사용하는 것이죠.

Q. 회로도들을 보면 캐퍼시터를 끼워넣는 곳이 많은데, 캐퍼시터의 역할은?
A. 전류를 안정화합니다. 

캐퍼시터의 역할이 여러가지 있는것 같은데, 제가 본 회로도에서의 역할은 전류흐름 안정화였습니다. 각종 대학서적을 봐도, 캐퍼시터의 종류와 특성은 잘 나와있으나, 왜 쓰는지에 대한 얘기를 찾기 어려웠습니다. 나와있어도, 저로서는 이해하기 어려웠습니다만, 결국 이해한 내용은 매우 간단합니다. 소프트웨어쪽으로 치자면 버퍼링입니다. 버퍼사이즈가 너무 적으면, 중간중간 데이터가 끊기는 상황이 생길 것이고, 사이즈가 너무 크면, 버퍼링하는 시간이 길어지겠죠. 적절한 크기에 맞는 캐퍼시터를 택하는것이 적절한 버퍼사이즈 정하는 것과 비슷한 문제인 것 같았습니다. 

DC전원을 공급하더라도, 그때그때 상황에 따라 전류가 튈 수 있는데, 이로 인한 오동작을 막기 위해 캐퍼시터를 중간에 병렬로 끼워주면, 안정화를 돕는 것 같습니다. 

Q. 서보모터를 제어하기위해서는 4.8V~6V사이의 전압을 공급해야하는데, MPU에서 나오는 PWM신호(아마도 3.3V)를 공급해서도 제어할 수 있는가?
A. 연결해보니 잘됩니다.

LM3S8962보드는 공급전압이 3.3V입니다. 각종 출력핀의 전압도 3.3V이지 않을까 생각되는데요, (지금생각해보니 측정해보면 되는군요ㅠ.ㅠ), 그렇다면, PWM출력신호도. 3.3V일 가능성이 높았습니다. 이 신호를 그대로 써도 서보모터가 정상 작동할지가 궁금했었습니다. 자료도 찾아보고, 주변의 전문가(!)들에게 물어보니, 아마도 될거 같으니, 한번 연결해 보라는 답변을 들었습니다. 

찾아보니, 이런 디지틀 입출력값을 TTL(Transistor-Transistor Logic)방식이라고 하는데, 0V~5V의 범위에서 0V~0.8V로 연결되면 Low(0), 2.2V~5.0V로 연결되면 High(1)로 나누어 판단하는 기준이었습니다. 즉, 만약 3.3V로 High신호가 나간다고 하더라도, 5V TTL기준에서 2.2V이상의 기준에 걸리기 때문에, 통신에는 문제가 없게 되는거죠. 


이 정도가 이제까지 가장 궁금했던 내용인데, 오늘 프로토타입 보드를 완성하면서 모두 해결되었습니다. 이렇게 저렇게 다 수가 생기는군요. 


-- Special Thanks to 도니형 & 근용군

Posted by hatemogi 트랙백 0 : 댓글 5
"소프트웨어 개발자의 하드웨어 개발기"의 첫 글을 씁니다. 하드웨어 개발에 대한 지식도 무식이 전부이고, 관련해 받은 교육이라고는 고등학교 물리시간에 배운 것이 전부인지라, 모든게 까마득합니다만, 어설프게나마 기록으로 남겨보려 합니다. 누군가에게는 도움이 될지도 모르죠...

임베디드 시스템을 위한 MPU보드라는 걸 구할 수 있더군요. 각종 마이크로프로세서와 그에 연결한 메모리와 플래쉬, I/O모듈등을 함께 자그마한 시스템 보드를 묶어서 파는데다, 가격도 저렴하고, 기본적인 시스템이 갖춰져 있어서, 소프트웨어만 얹으면 간단한 임베디드 시스템을 만들 수 있게 말이죠. 학창시절에 관심을 두려할 때는, 다 따로 사서 만들어야하는 줄 알았습니다. 

CPU 벤더도 다양하고 모델도 다양하지만, 일단 ARM쪽을 알아봤습니다. 임베디드 하면 ARM프로세서가 먼저 떠오르더라구요. 많이 쓰이는 이유가 있겠지 싶었습니다. 국내 모 디바이스 쇼핑몰에서 찾아보니, ARM의 마이크로프로세서를 사용한 임베디드 개발보드가 여러개 보였습니다. 그중에는 ARM v7아키넥쳐 기반의 것이 가장 많은 것 같았고, 나름 신형인 ARM Cortex M3 아키텍쳐의 임베디드 개발보드가 눈에 띄었습니다. 

소프트웨어도 그렇지만, 좀 새로운거 쓰려고보면 이런저런 환경이 걸리는 것들이 많아서, 편하게 가려면 "많이 쓰이는" 녀석을 택하는게 최선이죠. 하지만, 뭔가 좀 새로 하려다 보면 아무래도, 신기술(?)에 끌려서, 고생을 사서하곤 합니다. 어차피 목표결과물을 내기 위한 여유시간도 많이 있겠다, 과감히 Cortex M3보드를 선택했습니다. 

그렇게 구매한 MPU보드는, Texas Instruments사가 인수한 루니너리 마이크로사의 LM3S8962를 가져다 만든 위드로봇의 myCortex-LM8962입니다. (텍사스 인스트루먼트는 어디서 들었는지 꽤 낯익은 회사명이었습니다) 이 개발 보드는 PWM제어 모듈도 포함되어 있어서 제가 원하는 목표결과물에 쉽게 접근할 수 있지 않을까 기대해봅니다.  



위의 보드의 은색 육면체가 이더넷 포트입니다. 보드 전체가 자그마하 하죠. 

저 보드에 전원공급이며, 신호선 연결은 어떻게 할지도 막막하지만, 일단 소프트웨어를 어떻게 얹을지가 막막합니다. 좀 찾아보니, 저 보드에 소프트웨어를 설치하는 방법은 여러가지가 있지만, 위드로봇사에서 판매하는 Stellaris-JTAG 보드를 사용해서 개발&설치하는 방법이 잘 나와있었습니다. (JTAG이 뭔지도 처음 들어보는 용어입니다. ㅠ.ㅠ 대충 이해한 바로는, 임베디드 하드웨어의 소프트웨어 설치나 디버깅에 사용되는 표준 인터페이스쯤 되나봅니다.) 우선 하드웨어 디버깅이 된다는 말에, 해당 보드도 같이 구매했습니다.




역시 비슷하게 작은 크기의 보드입니다. 저기의 USB포트를 PC와 연결하고, JTAG인터페이스를 개발보드에 연결하면, PC로부터 소프트웨어를 설치하고, 디버깅도 할 수 있습니다. 매뉴얼에 개발 방법이 잘 나와있습니다만, 한가지 아쉬운 점이 있었습니다. 각종 소프트웨어 드라이버나 개발 방법이 Windows기준으로 되어있다는겁니다. 이거 하겠다고, VM띄워서 개발하기도 깝깝하고, 그냥 맥에서 개발하는 방법이 없을까 찾아봤습니다. 이래저래 해보니, 다행히 Mac OS X에서도 개발이 가능하더군요. 

1. 하드웨어 연결

위의 두 하드웨어를 연결해서 MacBook Pro에 연결하면 다음과 같이 USB하드웨어가 잡힙니다. 


별다른 추가작업 없이 "Stellaris Evaluation Board"라고 잡혀줍니다. 고맙기 그지 없습니다. 

2. 컴파일러

OS X에서 사용할 수 있는 무료 ARM 크로스 컴파일러는 GNUARM과, yagarto가 있습니다. 이 중, Cortex M3를 지원하는 컴파일러는 yagarto뿐입니다. 바이너리를 받아서 /usr/local/yagarto에 설치했습니다.

3. OCD (On-Chip Debugger) 

JTAG인터페이스를 통해서 디버깅을 할때 쓰는 디버거입니다. 역시 무료버전으로 OpenOCD라는 소프트웨어가 있습니다. 이 소프트웨어는 OS X버전이 따로 있어서 별 문제없이 설치 가능합니다. 이 프로그램이 GDB와 연동해서 하드웨어에 소프트웨어를 얹을 수 있고, 얹은 소프트웨어를 디버깅할 수 있게도 해줍니다. openocd-ftd2xx로 USB에 잡힌 Stellaris Evaluation Board와 연결해서 작업할 수 있습니다. 따로 드라이버를 깔면 Virtual COM Port도 잡을 수 있을 것 같은데, 해당 드라이버가 아직 OS X Leopard까지만 지원하는 것 같습니다. (Snow Leopard 개발판을 먼저 쓰고 있는게 이럴때도 걸림돌이 되어주는군요) 일단 저는 Virtual COM Port가 필요없는 상황입니다.

OpenOCD가 최신버전이 0.2.0인데, 명령어가 조금 달라서, 매뉴얼을 보고 좀 손봐야할 부분이 있습니다. OpenOCD가 설치된 디렉토리를 뒤져보면  lm3s8962.cfg도 구할 수 있고, 인터페이스 설정파일도 찾아서 그대로 쓸 수 있습니다.


4. 통합개발환경 (IDE)

상용제품으로 CrossWorks for ARM이라는 아주 훌륭해보이는 제품이 있었습니다만, 개인버전이 $150입니다. 시험판을 써보고, 실제로 구매할까도 생각했습니다만, 시험판 라이센스를 구하는데 실패했습니다. 라이센스 담당자가 두번째 보낸 메일을 무시하더군요. 제가 앞으로 임베디드 소프트웨어 개발을 전문적으로 할 것도 아니고, 그냥 무료판 구해다 하는데 결정적 도움을 주었습니다.

결국 오래전에 떠났던 이클립스 (Eclipse)판으로 돌아왔습니다. 오래전 자바 개발할 때 쓰던 환경인데, 이렇게 임베디드용 C개발을 위해 돌아도다니, 참 모를 일입니다. 어쨌건 새로 설치해보니 Cocoa인터페이스로 재무장한 이클립스, 아주 더 멋져진 모습입니다.

Eclipse CDT환경을 설치하고, Zylin사의 Embedded CDT 플러그인을 추가로 설치합니다. 이 플러그인이 OpenOCD와 GDB프로토콜로 통신해서 이클립스 환경에서 디버깅을 할 수 있습니다. 



5. 연동 성공!

이런 구성으로 연결해서 간단한 예제를 컴파일하고, 얹어보고, 디버깅하는데 성공했습니다. 다른 구성 방법도 많이 있겠지만, 일단 OS X에서 개발 가능하다는데에 크게 만족스럽습니다.

이렇게 설정은 그럭저럭 해결한 거 같습니다. 이제 그럼, 얹을 소프트웨어를 개발해 봐야겠습니다. 



Posted by hatemogi 트랙백 0 : 댓글 14

올림푸스 PEN E-P1

2009.07.29 17:58 from 일상
오랜간만에 지름신이 왕림하셨다. 이 녀석이 나오는줄도 모르는 사이, 이미 2차물량까지 전량 판매되었다는군. 3차물량이 풀리려면 얼마나 걸릴지 모르겠지만, 아마도 질러주실듯. 어딘가 감추어놓은 PEN EE3도 꺼내서 함께 갖고 놀아볼까?

Posted by hatemogi 트랙백 1 : 댓글 0


도쿄 오다이바에 키 18미터 크기의 건담을 만들었다는군. 저 사진 아래에 조그만 사람들 보이나? ㅋㅋㅋ 일본사람들 참 재밌어. 나머지 사진들을 보아하니 디테일도 아주 훌륭하다. 동영상으로 보니 고개도 살짝 살짝 돌리고, 불도 들어오고 훌륭한데? 담에 도쿄에 가게되면, 오다이바 또 가봐야겠구나. 

원문: http://blog.flickr.net/en/2009/07/09/a-robot-rise/
Posted by hatemogi 트랙백 0 : 댓글 4

정치

2009.07.11 02:56 from 일상
얼마전 일어난 국민적 충격 사태이후, 정치에 조금이나마 관심을 갖게 되었다. 오래전부터, 무작정 기피했던 분야(?)에 창피하지만 이제부터라도 관심을 갖게 된 것. 날마나 웃음을 안겨주는 코미디 같은 일들이 벌어지는 것을 보고 있노라니 웃어야하는건지 울어야하는건지 아리송할 때가 많아지고 있다. 

일간지까지는 아니더라도, 주간지를 사서 보고있다. 조금이나마 관심을 갖게된 것은 긍정적인 일이지만, 한편으로는 늘상 얼굴을 찡그리고 있는 내자신을 발견하게 된다. 음, 혹시 이런 이유때문에 우리나라 사람들의 표정이 전체적으로 어두운 것일까하는 생각마저 든다. 

한편, 최근의 인터넷 공격 사태의 배경에 북한세력이 있는 것으로 의심된다고 말하고 있는 정부정보기관의 코미디 덕분에 웃을 수 있는 일도 함께 일어나고 있으니, 최근의 희비가 서로 중화될 수 있는걸까? 갑자기 해당기관에 근무하는 몇몇 선배들의 얼굴이 떠오르면서, 그 형들이 후배들 보기에 창피하진 않을까 내가 다 걱정이 된다. 

내가 할 수있는 일은 많지 않겠지만, 일단 관심을 갖고 꼬박꼬박 소신껏 투표하리라 다짐이라도 해야겠다. 

날 다시 웃게 해줘! 
Posted by hatemogi 트랙백 0 : 댓글 2

당산철교를 건너다

2009.07.10 03:56 from 일상
지하철 2호선을 타고 당산철교를 건너다가 바라본 서쪽 하늘. 한참 오던 비가 잠시 멎은 하늘의 노을, 그 다양하고 화려한 색깔이 아름다웠다. 어디 먼 곳에 갈 필요 없다. 공해만 가득하다고 생각했던 서울하늘도 이렇게 아름다울 수 있는걸.

Posted by hatemogi 트랙백 0 : 댓글 0

미안하다, 행복하다.

2009.07.03 19:26 from trip
world2009 프로젝트의 전반전 후, 경기가 취소된 것인지, 아니면 후반전을 위한 휴식기인지 알 수 없었다. 하지만 현상황에서는 전반전만으로도 콜드게임을 이룬것 같아서, 후반전은 진행되지 않을 것 같다. 본의아니게 주변에 떠들어대기도 했고, 모종의 대리만족감을 전파하고 있던 중이라서 그랬는지, 아쉽다는 얘기를 듣기도 했고, 자세한 이유를 어렵사리 설명해보았으나, 이해를 구할 수 없기도 했다.

자세한 이유를 알려줄 수 없어서 조금은 답답하지만, 난 행복하기만 하다. 얻고자 떠날 수 있었고, 얻어서 돌아올 수 있었던 행운이 감사하고 말이다. 

주변사람의 이런저런 상황과는 별개로 나만 행복한거 같아서 미안할 정도로 말이다. 어제 찍은 어제 사진을 보고, 한 친구가 행복해 보인다는 말을 적어주었다. 그말을 듣고 다시보니 정말 그런것 같기도 하다. 

DSC_6104

어때? 진짜로 행복해 보이나? 정말이라면, 이 행복도 주변인들에게 전파될 수 있겠지.
Posted by hatemogi 트랙백 0 : 댓글 5

Mac OS X Snow Leopard 개발자 프리뷰, 유혹을 참지 못하고 설치했다. 정식버전은 9월즈음에 출시 되는 것 같은데, 아직은 한창 안정화작업중인듯. WWDC에서 나눠준 빌드 10A380버전은 키노트에 소개된 Dock에서의 Expose기능을 다 지원하지 않았으나, 최근 올라온 10A394버전으로 업데이트 했더니 해당 기능이 잘 작동했다. 

이래저래 안되는 소프트웨어가 있을거라 생각해서 참으려 했지만, llvm으로 빌드된 기본 소프트웨어들이 한층 빠른 성능으로 동작한다라는 얘기에 한번 설치해보고, 다시 Leopard로 내려가지 못하고 있는 상황. 아직까지는 참을만 하다. 

현재 안되고 있는 것은 아래와 같다. 
  • iStat menu 설치 불가
  • Aquamacs에서의 한글출력
  • iTerms에서 option키를 meta키로 사용하기 
  • MacPorts (이건 좀 크군...)

내가 주로 쓰는 소프트웨어에서 위의 것들이 안되고 있지만, 나머지 기본 프로그램들은 아직까지 크래쉬없이 아주 잘 돌고 있다. Aquamacs에서 한글이 깨져보이는 바람에, 터미널에서 emacs를 사용해보고 있다. 아직 나쁘진 않군. 

전반적인 느낌은 기분인지 몰라도, 한결 가벼운 느낌. 정식 출시되면 위의 프로그램들도 잘 돌게 되겠지.

update: MacPorts는 소스를 받아서 빌드하니 정상 작동. 
Posted by hatemogi 트랙백 0 : 댓글 0

오빠가 돌아왔다

2009.06.25 11:09 from trip
모 이통사 광고에 배경음악으로 소개되어 유명해진 그룹 W&Whale의 노래 제목이다. 광고의 원곡인 R.P.G.도 좋지만, 난 그 앨범에서 "오빠가 돌아왔다"라는 노래가 제일 좋다. 보컬의 보이스도 매력적이지만, 가사가 꽤 마음에 들었던 것.

늘 한마리 고독한 늑대처럼 
세상과 화해하지 못한채
매섭게 치켜 뜬 눈빛속에
화려한 슬픔을 간직한채
....
또 어딘가 먼곳을 바라보며
오빠는 가만히 노래했지
현실에 타협할 수 없었던
위대한 패배자들의 블루스
....

노래 가사의 일부인데, "세상과 화해하지 못한", "화려한 슬픔", "위대한 패배자", 이런 문구들이 꽤나 마음에 들었던 것. 슬픔도 화려할 수 있고, 패배자도 위대할 수 있다니 말이다.

그건 그렇고, 나 역시 돌아왔다. 원래 여행계획의 전반전의 일정만 모두 소화한채, 불현듯, 아주 갑자기 돌아와버린 것. (합리적 인간이 아닌) 합리화의 인간인 나는 이런저런 공감살만한 이유들을 떠올려봤으나, 주변사람들에게 얘기해보니, 별 실효가 없었다. 수많은 이유들을 얘기해보아도, 그들의 궁금증을 속시원히 해결해 줄 수 없었다. 

괜찮다. 각자 독자적인 삶을 살다보면, 남들과 공감할 수 없는 일들이 많아지기 마련이라고 생각한다. 그것이 오히려 다행일지도 모른다. 남들과 너무 쉽게 공감할 수 있는 일들만 일어난다면, 그역시 참 맛없는 삶 아니겠는가? 

떠났던 이유와 돌아온 이유는 사실 매우 간단하다. 떠나고 싶어 떠났었고, 돌아오고 싶어져서 돌아왔다. 마음이 원했던 길을 따른 것 뿐이다. 정말 원한다는 걸 알게된다면, 그 외의 걸림돌들은 헤쳐나가는 수가 생긴다고 믿어보고 있다. 

아무튼, 난 돌아왔다. 당당한 자신감, 내 정체성, 내 꿈을 데리고.
Posted by hatemogi 트랙백 0 : 댓글 6

좋댄다

2009.06.17 18:17 from swing

내가 린디합을 좋아하는 이유는, 무엇보다도 그 쾌활한 즐거움 때문이다. 린디합을 춤추는 사람들의 밝은 표정, 심지어 덜떨어져 보이기까지 한다. 하지만 한편, 살짝씩 살펴본 다른 커플댄스의 얼굴표정은 진지하다 못해 심각해보이기까지도 했었다. 뭐가 그리도 진지하신건지. 스윙댄스의 밝음은 아마도 스윙재즈의 특성과도 연결되는 속성인거 같다. 그저 밝게 바라보는 것이지. 모가 그렇게들 신난다고...

사진은 프랭키 파티에서 춤추는 동안 찍힌 것 같다. 파트너는 몬트리올에서 온 아만다. 내 얼굴은 잘 보이지 않지만, 아마도 크게 웃고 있는 중인거 같다. 내가 춤추다 저렇게 웃는 것은 아마도 대단히 호흡이 잘맞았거나, 아니면 아주 우스운 실수를 했을 때이다. 아마도 후자의 상황일 확률이 크다. 난 저런 우스꽝 스러운 상황의 웃음이 너무 좋다. 그것이 취미로 즐길 때의 특권이기도 할테고. (어우, 공연때 실수라도 해봐...)
 
저 자세만으로만 봐서는 무슨 동작 전후인지 모르겠다. 스윙아웃 전후로 보기에는 자세가 너무 높고, 언더암턴 전이라고 보기에는 너무 마주 보고 있고, 노래 전주중일 때로 보기에는 커넥션이 없고. 흠, 사뭇 궁금하지만, 어쨋건 중요한 것은 폭소하고 있다는 것.
Posted by hatemogi 트랙백 1 : 댓글 2

티스토리 툴바