GPS Logger 자작기

Electronics 2009.08.17 00:55
GPS Logger를 만들기로 마음 먹은지 6개월은 더 지난 것 같다. 마냥 미루고만 있다가 갑자기 지난 주 산행에 앞서 급 필 받아서 만들게 되었다. GPS Logger란 GPS 위성신호를 받아서 여정 내내 이동한 궤적을 좌표로 기록하는 장치이다. 그걸 기록해서 뭐하냐고? 별 대단한 이득은 없다. 그냥 여정(트랙)을 올리는 사이트에 올려서 내가 이런 곳을 다녀왔다라는 걸 알려보겠다는 거다. 거기엔 다른 사람들이 등산을 하는데 내 등산 기록이 도움이 되길 바라는 마음도 있고, 사진과 GPS좌표를 연동시켜서 웹에 올리는 재미도 있다.

내 주변에 김 모군도 그런걸 뭐하러 올리고 xx인지 모르겠다고 한마디 하지만, 올리고 싶은 사람은 또 올린다는 거다. 사회심리학적으로 어떤 동기부여가 있어서 사람들이 그러는지는 불확실하지만 지난 주에 이어 오늘도 열심히 다운받고 변환해서 올리고 있는 나를 보니 이거 왠지 모르게 재미있다. 블로그에 놀러갔다온곳 사진올리는 것도 그거 올려서 뭐하냐? 누가 돈주냐? 뭐 이러면 별 할말은 없지만 그래도 열심히들 올리고 있지 않은가?

사진이나 글 말고도 올릴것 하나 가 늘어난 셈이라고 할까? 사진이나 동영상 올리는 것하고 또 다른 맛이있다. 지금은 당장 내가 올린 트랙을 받아서 등산할때 쓸 수 있는 휴대용 기기가 변변치 않지만, 아이폰이나 안드로이드 폰이 나오면 바로 가능할 것 같다. 그렇게 된다면 다른 사람이 올린 GPS트랙을 내가 받아서 그런 기기에 열려서 지도 보면서 길 잃지 않게 잘 써 먹을 수 있을 것 같다. 내가 올린 트랙이 당장은 쓸모가 없을지라도 언젠가 그렇게 쓰이거나, 아니면 그냥 지도에 표시된 트랙 자체 만으로도 산행전에 보게 된다면 좋겠다는 바램이 있는 것이다.

오늘도 서론이 매우 길어졌다. GPS로거는 Ladyada.net에 Arduino보드에 끼워서 쓰는 쉴드 제작법이 올려져 있고, 키트를 판매도 한다. 하지만 미국에 있는 사이트에서 그정도를 주문하기도 그렇고, 그 사이트에 나온대로 만들면 사이즈가 너무 커져서 나는 나름대로 소형으로 만들어 보려고 했다.

Ladyada의  Arduino용 GPS Shield

사실 부품 중 Arduino Pro Mini는 미국에서 주문하긴 했다. 예전에 Sparkfun에서 몇 가지 살것이 있어서 나중에 GPS로거 만들려는 심산으로 함께 구매해두었던 것이다. 내가 산 Arduino Pro Mini는 3.3v에 8Mhz의 클럭 스피드로 작동하는 Atmega168v 칩이 들어간 녀석이다. 당시에는 GPS로거에는 적절하다고 생각하고 샀으나 나중에 보니 S RAM이 딸려서 Aruino를 수정해줘야 하는 꽁수를 부려야만 했다. Atmega328이 들어간 것으로 샀어야 했다.

Sparkfun의 Arduino Pro Mini

기본 구조는 GPS모듈에서 시리얼포트를 통해 받은 데이타를 SD 메모리 카드에 저장하는 단순한 구조다. 일단 GPS모듈과 Arduino를 3.3v용으로 사서 3.7v인 1셀짜리 리튬폴리머 배터리를 전원으로 쓰려고 했다. 그렇게 되면 GPS 모둘과 Arduino의 전압이 달라서 써야하는 여러 부품들을 쓰지 않아도 되기 때문에 더 Arduino Pro Mini보드와 GPS모듈을 바로 직결할 수 있다. 나중에 보니 SD메모리카드도 동작전압이 3.3v여서 아주 안성마춤으로 부품들이 궁합이 맞았다.

GPS모듈은 디바이스마트에서 산 Ublox 칩셋을 사용한 것을 썼는데, 웹사이트의 제품 설명이나 첨부된 매뉴얼에는 5V용이라고 써 있고, 화일로 올려져 있는 PDF로 된 데이타 쉬트에는 3.3v용이라고 써 있어서 제작사에 전화해보니전화도 꺼져 있다. 답답한 마음에 그냥 5V를 연결해 보니 모듈이 너무 뜨거워 지는게 아닌가? 불안해서 다시 3.3v로 연결해보니 여전히 잘 작동하면서 발열도 줄어들었다. 그러나 MTK칩셋을 쓴 freenavi.co.kr에서 판매하는 모듈보다는 발열이 심하다. 그냥 실내에서 켜보면 거의 100mA정도의 전력을 소모한다. GPS신호가 잡히면 약간 줄어들긴 하겠지만 야외에서도 만져보면 약간 따듯한 것이 전기좀 먹겠다 싶다.

제작시 문제가 되었던 부분은 SD메모리 카드 소켓의 단자 번호 였다. 3,6번이 GND라고 회로도에 있길래 한쪽부터 순서대로 3번째와 6번째 단자에 테스터를 대보니 전기가 통하길래 제대로 찾았구나 싶어서 그대로 연결을 했더니 안되는 것이다. 나중에 이상해서 데이타쉬트를 찾아보니 아래와 같이 맨앞이 9번이고 그 다음부터 1번이 시작되어 거꾸로 8번에서부터 세어도 6번과 3번은 세번째와 여섯번째 단자가 되는 기이한 우연의 일치를 보이는 것이었다. 결과적으로 8번을 1번으로 알고 연결을 햇으니 될리가 없지 --; 이런 우연은 없어줬으면 한다. 무슨 막장 드라마도 아니고 이게 뭐냐? 데이타쉬트 확인은 기본 아닙니까 이런 댓글은 삼가해주기 바란다 --;



위와 같은 문제만 없다면 아래에 있는 Ladyada의 GPS쉴드 회로도만 보고도 충분히 GPS로거를 만들 수 있다. 라고 말하면 좀 무리가 있다. 이 회로도는 Arduino용 쉴드 회로도 이기 때문에 Arduino의 포트 번호가 표시되어 있지 않아서, 회로도만 봐서는 Arduino의 몇번 포트로 연결되는지를 쉽게 알 수 없다.

Ladyada의 GPS쉴드 회로도

그래서 내가 매핑해 놓은 것을 회로도로 보여주고싶지만 그려 놓지를 않아서 그냥 글로 써보겠다. 앞이 SD카드 소켓 번호이고 뒤가 Arduino포트 번호이다. 1-10, 2-11, 3-GND, 4-VCC, 5-13, 6-GND, 7-12 이렇게 연결된다.
GPS모듈의 TX는 Arduino의 RX로, GPS모듈의 RX는 Arduino의 TX로 연결해 주고, VCC는 VCC끼리 GND는 GND끼리 연결해준다.

Arduino의 아날로그 0번(A0) 포트에 LED를 하나 연결해서 SD카드에 기록할때 마다 한 번씩 깜빡이도록 했다. LED에는 100오옴짜리 저항 하나를 직렬로 달아서 마이너스는 GND에 연결하고 플러스는 Arduino A0 포트에 연결한다.

배터리는 디바이스마트에서 싸게 파는 500mA짜리 리튬폴리머 배터리를 두개 병렬로 연결해서 용량을 늘렸다. 아직 최대 사용시간을 재보진 않았지만 경험상 7~8시간은 넘었으니 하루 등산 코스는 충분히 기록하겠다 싶다. 이틀은 무리이다.



케이스는 카세트테이프 케이스의 돌기를 잘라내고 이용했다. 흔들리지 않도록 포장용 완충재인 PE폼을 잘라서 빈공간을 채웠다. 파워 스위치조차 없다. 배터리 끼우면 켜진다. --;

Arduino 프로그램은 아래에 올렸다.
원래 프로그램은 Sirf칩셋을 쓰는것을 전제로 만들어져서 GPS모듈을 제어 하는 코드까지 들어 있으나 나는 Ublox칩셋을 썼기 때문에 해당 제어코드를 쓸 수가 없어서 프로그램을 약간 손봤다. Ublox칩셋은 요상한 듣보잡인 GPTXT라는 출력을 내보내는 등의 문제가 있어서,  쓸데없는 메시지라인은 다 무시하고 위성신호 잡힌 상태에서 GPRMC 라인만 기록하도록 해놨다.

슬립기능도 귀찮은 관계로 그냥 빼버렸기 떄문에 GPS모듈의 전원제어도 안된다. 5초로 되어 있는 슬립카운트는 단지 5초 마다 기록을 시도할 것인지만을 의미한다. 이런게 자작의 맛이 아닌가? 또 오픈소스의 장점이기도 하고.  내 멋대로 바꿀수 있다는거 ^^

이렇게 기록된 GPS로그 데이타는 MNEA라는 표준에 의한 텍스트화일이다. 그 화일을 GPSVisualizer.com이란 사이트에 가면 여러가지 포맷으로 변환해주고 Everytrail이라는 사이트에 올릴 수 있도록 연동해주기도 한다.

KML이나 GPS로 변환하면 상오기 님의 gpson.kr 사이트에 올릴 수도 있다. 그리고 Geotag란 프로그램을 쓰면 사진이 찍힌 시간에 매치되는 위치 정보를 사진화일에 첨부시켜 준다. 나는 리눅스를 쓰는데 exiftool이라는게 더 필요하다길래 시냅틱패키지 관리자에서 찾아서 깔아줬더니 잘 돌아간다. 윈도우즈에서는 음.. 은퇴한 빌게이츠에게 물어보시길~ 그게 귀찮으시면 리눅스로 세계로 오시라~







저작자 표시 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comments 11
  1. Favicon of http://pepsiman.tistory.com BlogIcon 펩시맨 2009.08.22 23:30 신고 Modify/Delete Reply

    잘만드셨네요.
    아두이노 미니를 구입하셨네요 작긴 무지 작네요 ^^;
    충전은 어떻게 하는건가요?

    • Favicon of http://blog.whattomake.co.kr BlogIcon MrKiss 2009.08.23 00:55 신고 Modify/Delete

      충전은 RC용 리튬폴리머 충전기를 씁니다. 커넥터가 맞는게 없어서 하나 만들었죠. 디바이스마트에서 커넥터도 팔더라구요

  2. Favicon of http://sangogi.com BlogIcon 상오기 2009.09.07 17:35 신고 Modify/Delete Reply

    직접 만드시다니 부럽기만 합니다 ^^
    첫 직장이 펌웨어쪽이라 H/W쪽에도 손댈뻔 했는데 인수합병 되면서 사라지는 바람에 그만두었네요 ^^;;

    • Favicon of http://blog.whattomake.co.kr BlogIcon MrKiss 2009.09.09 15:31 신고 Modify/Delete

      인터넷에 워낙 정보가 많기도 하지만, 요즘엔 오픈소스 하드웨어인 arduino 덕분에 더 쉬워졌습니다.
      일단 어떻게든 만드는건 그리 어렵지 않지만 완벽하게 만드는건 언제나 어려운 것 같습니다. 저 GPS로거도 첵섬을 통과한 에러 때문에 매번 등산 로깅 할때마다 터키 어디쯤에 몇번은 다녀오곤 합니다- -; 가는데가 정해져 있더라구요 경도 127에서 1이 빠진 27인 지역이더군요. 수동으로 걸러주고 있는데, 아예 프로그램에 그걸 넣어줄까봐요

  3. Favicon of http://calmarea.net BlogIcon 레제포스 2010.02.28 11:53 신고 Modify/Delete Reply

    배터리 충전은 어떻게 하시나요+_+? 9v 사각형 전지를 연결했더니 한시간도 못가네요.ㅠ
    리튬 폴리머 전지를 생각하고 있는데
    요건 충전을 어떻게하는지ㅋ

    • Favicon of http://blog.whattomake.co.kr BlogIcon MrKiss 2010.02.28 12:31 신고 Modify/Delete

      저 배터리는 디바이스마트에서 산건데요. 거기서 저 배터리에 맞는 커넥터를 팔아요. 그 커넥터를 사서 제 리튬폴리머 충전기에 연결할 수 있는 커넷터케이블을 만들었습니다.
      리튬폴리머 충전기는 무선조종모형비행기용이구요.
      요즘엔 아이폰 사서 이거 안쓰지만, 아이폰으로 GPS경로를 저장하려면 배터리 소모도 크고 사진찍거나, 동영상찍을때 등이 번거로워서 이걸 다시 쓸까도 생각해 봅니다.

  4. 강무경 2012.07.18 16:50 신고 Modify/Delete Reply

    문의 드립니다.
    GPS쉴드를 이용한것을 참고하셨고 GPS쉴드를 사용하지 않음으로 회로가 수정이 되었다 하셨는데...
    안내해주신 내용은 이해가 가는데...
    회로도에 SD카드가 저항이나 다이오드 등으로 연결이 되어 있는데...
    이 부분 무시하고 그냥 다이렉트로 아두이노랑 SD카드를 연결하면 되는건가요?
    아니면 1,2,5의 경우는 저항의 회로를 거친 후에 아두이노랑 연결하면 되는건가요?
    부탁드립니다.
    감사합니다.

    • Favicon of http://blog.whattomake.co.kr BlogIcon MrKiss 2012.07.18 21:02 신고 Modify/Delete

      회로도를 '부연' 설명하기 위해 SD 카드 핀번호와 아두이노 포트 번호를 알려드린것뿐이예요. 저항이나 다이오드는 당연히 회로도 대로 넣으셔여합니다!

  5. 강무경 2012.07.19 08:16 신고 Modify/Delete Reply

    빠른 답변 감사합니다
    좋은 작품 만들 수 있는 길을 열어 주셔서 감사합니다

  6. 강무경 2012.09.11 14:40 신고 Modify/Delete Reply

    아두이노...
    그저 하드웨어를 좋아서 시작했지만...
    GPS 데이터 받는 정도는 할 수 있겠다 싶었지만... ^^;
    김성수님 덕분에 제작을 할 수 있었습니다.
    뭐 잘 만들고 동작도 잘 하는건 아니지만... ^^;
    덕분에 감사합니다.
    파일 저장도 잘 되고...
    단...
    3~4k 정도 저장하고 나면 뻗어 버립니다.
    적을때는 그보다 더 적구요.
    파일 open 관련인가 싶어서...
    저장하는 부분에서 매번 파일을 열고 저장하고 파일을 닫으면 동작은 잘 합니다.
    물론 파일 내용이 문제가 됩니다.
    파일명 하나에 매번 새로운 데이터를 쓰네요.
    오히려 이게 안정적인것 같긴한데...
    내용을 계속해서 추가를 해야 할텐데 이건 항상 한줄만 하고 있으니...
    뻗는 이유라고 생각 되시는게 있거나 혹은 파일을 뒤에 이어서 계속 저장할 수 있는 부분에 대해 조언 부탁드립니다.
    감사합니다.

    • Favicon of http://blog.whattomake.co.kr BlogIcon MrKiss 2012.09.13 04:23 신고 Modify/Delete

      같은 하드웨어에 같은 프로그램이라면 정상동작해야되는데 의아하네요 --;; 제 껀 시작할때 잘 안되는 경우가 종종 있지만 리셋 몇 번 하다보면 정상작동도 하고 저장도 잘되거든요. 중간에 뻗는다면 접촉불량으로 리셋되는게 아닌가 싶기도 하구요.
      파일을 GPS업데이트 할 떄마다 매번 새로 여는건 잘못된 방식인것 같구요. 코드는 화일 여는 부분은 그대로 쓰시는게 나을듯 합니다.

Write a comment

◀ PREV : [1] : ... [69] : [70] : [71] : [72] : [73] : [74] : [75] : [76] : [77] : ... [198] : NEXT ▶