2009년 5월 30일 토요일

아이팟/아이폰 독 커넥터 시리얼 케이블 만들기 (DIY iPod/iPhone dock connector serial cable)

아이팟 터치/아이폰의 시리얼 포트를 사용할 수 있으면 다른 장비들과 연결해서 상당히 재미있는 일들을 많이 할 수 있게 된다.
하지만 시중에서 아이팟용 시리얼 케이블을 팔고 있지 않기 때문에 직접 만들어 보았다.
아이팟 도킹 커넥터의 pinout은 pinouts.ru 에서 확인할 수 있다.

먼저 아이팟 30핀 도킹 커넥터 male 타입은 Devicemart에서 구입할 수 있었다. 구입해야 하는 부품명은 ipod-30p-conn-wire 으로 개당 2500원이다.

커넥터를 구입하면 내용물은 다음과 같다.


커넥터는 30핀인데 위의 사진에서 보는것처럼 서로 엇갈리게 배치되어 자세히 보지 않으면 핀 위치를 찾기가 좀 힘들게 되어 있다.

핀 배치를 좀 보기 쉽게 풀어 그려 본 것이다. 다리가 긴 핀과 짧은 핀이 있어서 다리가 긴 핀은 바깥쪽에 있고 짧은 핀은 안쪽에 배치되어 있다. 그리고 각각의 핀은 조금씩 위치가 어긋나게 배치되어 있다.
이 핀들이 다 있으면 납땜질 하기 불편하기 때문에 필요없는 핀들은 다 뽑아버린다. 롱노우즈 플라이어로 잡아 땡기면 쉽게 빠져나온다. 단 한번 빠져나오면 다시 끼기 힘들기 때문에 뽑아내야 하는 핀의 위치를 확실하게 확인한 다음에 빼기 바란다.
시리얼 케이블에 필요한 핀들이다. 이 중 1,2,15,16,29,30은 모두 GND로 아이팟 내부에서 다 전기적으로 연결되어 있다. 그러므로 다 연결할 필요는 없다.

이 핀들만 남겨놓으면 된다. 15, 16도 땜질에 방해가 되기 쉬우므로 빼 버려도 관계 없다.
배선 연결은 위와 같다. 실제 시리얼 포트에 연결하는건 Tx, Rx, GND 3선이면 된다. 물론 아이팟에 연결하는 장치의 전력소모가 크지 않은 경우 3.3V에 연결해서 아이팟에서 전원을 공급받을수도 있다. (단 이 경우 아이팟 전력소모가 약간이나마 증가하는걸 염두에 둬야 한다.)
또한 Tx, Rx도 3.3V 레벨의 신호이기 때문에 RS-232에 연결하려면 MAX232, 233같은 레벨 컨버터가 필요하다. 저 2개의 저항은 칩 저항을 사용하면 커넥터 케이스 속에 집어넣을 수 있겠지만 현재 가지고 있는 칩 저항이 없기 때문에 이번에는 커넥터에서 Tx, Rx, Serial GND, GND, 3.3V 이렇게 5개의 선을 뽑아내었다.
Grey - GND
Red - Tx
Green - Rx
Orange - +3.3V
Black - Serial GND

단선을 방지하기 위해 열 수축 튜브로 고정시켜 주었다.

커넥터를 금속 케이스에 집어 넣는다.
집어넣은 모양은 다음과 같다.

또 하나의 금속판을 연결시킨다. 여기서 아래 그림과 같이 커넥터의 홈에 맞게 밀어 넣어줘야 한다.

제대로 집어 넣었으면 아래와 같이 양쪽의 걸쇄가 보인다.

플라스틱 케이스에도 위쪽과 아래쪽이 있다.

아래쪽 케이스에 조립된 커넥터를 집어넣는다.

집어넣은 모습은 다음과 같다.

커넥터를 분리할 때 사용하는 양쪽 버튼을 집어 넣는다. 이 때 버튼도 방향이 있으니까 주의해야 한다.

아래 사진처럼 버튼을 잘 보면 홈이 파여있는 쪽이 앞쪽이다.

버튼까지 다 집어넣은 모습이다.

이제 위쪽 케이스를 아래쪽 케이스에 맞춰서 끼워넣기만 하면 된다.

여기서는 프로토타입 보드에 꼽아 아뒤노와 연결하여 테스트하기 위해 반대쪽에도 헤더핀들을 연결시켜 놓았다.

댓글 42개:

  1. 안녕하세요.

    아이폰을 위 컨넥터로 직접 AUDIO R/L(3, 4번핀) 연결하여 스피커로 듣고 싶은데요...가능할까요???

    바쁘시더라도 답변부탁드립니다.

    답글삭제
  2. @상계동 - 2010/02/03 16:44
    예..가능합니다.

    다만 21번핀과 GND 사이에 68Kohm 저항을 하나 달아줘야 합니다.

    답글삭제
  3. 아~~네...감사합니다...

    한번해보고 궁금한거 있으면 다시 문의드리겠습니다...

    좋은하루되세요.

    답글삭제
  4. 네...잘 동작합니다...

    너무너무 좋은 정보 감사드립니다...

    답글삭제
  5. 아이폰/터치/패드 등에서는 어떤 어플을 써야 Serial 통신이 가능하나요?

    답글삭제
  6. @양대감 - 2010/04/05 13:50
    현재 jailbroken되지 않은 경우 앱스토어에 올라온 앱은 시리얼통신을 지원하는건 없습니다.

    다만 얼마전에 미국의 한 회사가 시리얼 케이블 reference design을 애플에서 공인받은게 있으니 (아직 시판되지는 않고 있습니다) 그게 판매되기 시작하면 시리얼통신을 지원하는 앱이 나올걸로 생각됩니다.

    답글삭제
  7. gps모듈에서 vcc,rx,tx,gnd 연결하면 사용가능하나요?

    답글삭제
  8. @성남 - 2010/04/06 23:50
    jailbroken 된 아이폰인 경우 GPS모듈의 4개 핀을 연결한 다음 아이폰에서 시리얼 포트를 읽는 소프트웨어를 실행하면 GPS모듈의 위치정보가 수신되는걸 확인할 수 있습니다.

    답글삭제
  9. 프로그래머인지라 하드워어는 아는게 없는데 멋지네요..

    혹시, 위와 같은 시리얼 케이블로 마이크랑 이어폰을 연결할수도 있을까요?

    답글삭제
  10. @맑은생수 - 2010/06/25 16:27
    저 시리얼 케이블로는 마이크와 이어폰을 연결할 수 없지만 30핀 커넥터의 다른 핀을 연결해주면 당연히 마이크/이어폰도 연결이 가능합니다.

    답글삭제
  11. 블로그를 보니 정말 지식이 풍부하시네요. 부럽습니다.



    뭐 하나만 여쭤봐도 될까요?



    제가 아이팟 터치를 이용한 시리얼 통신 프로그램을 만드는 프로젝트를 하고 있는데요, 조사를 쫌 해보니 애플에서 포트를 막아놓은 것 같더라구요.



    그래서 탈옥을 한 후 개발을 해야할 것 같은데, 아직 초보라 감이 안오네요. 도움의 말씀을 좀 부탁드립니다

    답글삭제
  12. @이쁜찐빵 - 2010/06/28 19:46
    말씀하신 그대로 아직까지는 탈옥을 하지 않으면 시리얼 포트를 억세스 할 방법이 없습니다.

    탈옥을 하고 나면 /dev/tty.iap 디바이스를 그냥 리눅스나 유닉스에서 시리얼 포트와 동일하게 사용하시면 됩니다. 두번째 링크에 보시면 예제 코드도 보실 수 있습니다.



    http://www.ohscope.com/2009/02/serial-port-on-iphone-with-minicom.html



    http://devdot.wikispaces.com/Iphone+Serial+Port+Tutorial

    답글삭제
  13. @비아토르 - 2010/06/28 22:54
    정말 감사합니다 ㅎㅎ



    그런데 원래 App을 개발할 때는 Xcode를 이용하잖아요? 그래서 저도 그걸로 프로그래밍을 연습하고 있었는데, 탈옥을 한 후에 app을 개발할 때는 어떤 방법을 사용하여야 하는건가요? 혹시 레퍼런스아시면 부탁드립니다.

    답글삭제
  14. @이쁜찐빵 - 2010/06/28 19:46
    탈옥 해도 프로그램 개발하는건 동일합니다.

    답글삭제
  15. @비아토르 - 2010/06/28 23:47
    빠른 답변 감사합니다.



    근데 경험이 많이 없어서 그저 두렵기만 하네요 ㅎㅎ 혹시 시리얼 통신말고 iPod으로 데이터를 전달할 수 있는 방법이 없나요? 블루투스가 가능하다고 하던데 그것도 막혀있는 건가요?

    답글삭제
  16. @맑은생수 - 2010/06/25 16:27
    블투를 이용하는것도 일반적으로 사용할 수 있는 프로파일 API가 제공되지 않기 때문에 그것 역시 탈옥하지 않으면 사용할 수 없습니다.



    탈옥하면 이 블투 스택을 사용하면 외부 디바이스와 HCI, RFCOMM 프로파일을 사용할 수 있습니다.

    http://code.google.com/p/btstack/



    그게 아니고 탈옥하지 않고 외부와 데이터를 교환할 수 있는 방법은 WiFi를 사용하면 됩니다.



    지금 그쪽으로 뭐 하나 만들고 있는게 있는데 다 되면 관련 자료는 여기 올릴 생각입니다. (물론 취미로 하는거라 언제까지 된다는 장담은 할 수 없지만요. ^^;)

    답글삭제
  17. @이쁜찐빵 - 2010/06/29 00:39
    알려주신대로 해서 시리얼 통신에 성공했습니다 ㅎㅎ



    근데 약간의 트릭이 더 필요하긴 하네요~



    감사합니당~

    답글삭제
  18. @이쁜찐빵 - 2010/07/02 12:38
    Tx가 되는걸 보고 다된건줄 알았는데, Rx가 안되네요ㅠㅠ



    Rx를 하기 위해서 혹시 별도로 해주어야 하는 것이 있는지요?

    답글삭제
  19. @이쁜찐빵 - 2010/06/28 19:46
    특별히 RxD와 TxD가 다른건 없습니다. 어떻게 하셨는지 알려주시면 한번 확인해 봐 드리겠습니다.

    답글삭제
  20. 질문이 있는데요.. 외부기기와 앱을 연동하는 프로그램을 구현중인데요.. 일단은 자체 제작한 usb로 테스트를 해볼까 하는데 이것이 상용화가 이루어지려면 애플사에서 시리얼 통신을 위한 케이블을 지원하지 않으면 불가능한 것인가요??

    답글삭제
  21. @개발자 - 2010/07/13 18:45
    아직까지는 애플이 제공하는 iPhone SDK에서는 시리얼 통신을 지원하지 않기 때문에 jailbroke를 하지 않는 한 방법이 없습니다.

    시리얼 포트를 조작하는 앱 역시 앱스토어에서는 판매 거부당할테구요.

    답글삭제
  22. 반갑습니다.

    좋은 공부 하고 있습니다.



    i-phone3 에서 GPS 성능이 좋지않아 외부거치대의 GPS 를 사용 하려고 합니다

    이 경우도 탈옥밖에 없는지요?

    혹시 인증제품 (탐탐, 가민등)들도 탈옥으로만 사용 가능한지요?

    만약 탈옥으로 처리된단 위 알려주신 내용으로 외부 GPS 사용이 가능한지요?

    질문이 너무 광범위하다는 생각...ㅡ,.ㅡ;

    답글삭제
  23. @항상초보 - 2010/07/28 08:42
    TomTom이나 Magellan에서 나온 제품중에 애플에서 인증받은 제품의 경우는 탈옥하지 않아도 동작합니다.



    탈옥하시면 GPS Serial을 사용하면 시리얼 GPS를, BTstack GPS 또는 RoqyBT같은 앱을 구입하시면 블투 GPS 수신기를 아이폰과 연동시켜 사용할 수 있습니다.

    답글삭제
  24. 비밀 댓글 입니다.

    답글삭제
  25. @Anonymous - 2010/07/30 15:43
    스펙이라는게 뭘 말씀하시는지 잘 모르겠고 pin out은 여기 가시면 정리되어 있습니다.



    http://pinouts.ru/PortableDevices/ipod_pinout.shtml

    답글삭제
  26. @비아토르 - 2010/07/28 14:30
    답글 감사합니다.

    많은 정보 올려주신것 잘 보고있습니다. ^^;

    위와 같이

    탈옥을 하지 않고 정상적인 (애플인증) GPS 를 외부에 연결려고 하면 GPS 쪽에 CP 칩이 있어야 한다는데 이 CP 칩만 구해서 연결하면 특별한 설정없이 동작 하는 지요?

    주변 지인께 부탁하니 애플 CP 칩 샘플 (2.0B)은 있다는데 정작 그분도 어떻게 사용하는지 모른신다네요..

    ㅡ,.ㅡ; 그냥 회로에 연결하면 되는 건지 별도의 소자가 필요한지.. 갈 수록 태산입니다. *^^*

    궁금증 투성이 입니다. ^^;

    답글삭제
  27. @항상초보 - 2010/07/28 08:42
    CP칩이라는게 아마 인증기능을 담당해주는걸텐데 저도 그런 칩이 있는건 알고 있어도 관련 자료가 없어 정확하게 뭐라 말씀드리기 힘들군요.

    애플 개발자 프로그램에 등록하고 NDA에 싸인해야 자료를 제공해주기 때문에 인터넷에서 쉽게 구할수도 없어서요.

    Apress 출판사에서 나온 'Building iPhone OS Accessories: Use the iPhone Accessories API to Control and Monitor Devices'라는 책을 보면 관련 자료를 찾아볼 수 있을겁니다. 다만 아직 번역서는 안 나왔습니다.

    답글삭제
  28. 비밀 댓글 입니다.

    답글삭제
  29. @Anonymous - 2010/08/24 16:16
    당연히 MiFi 가입되면 탈옥하지 않고도 시리얼포트를 통한 통신도 가능합니다. 하지만 그 경우도 일반 시리얼 케이블로 되는게 아니고 AV케이블처럼 인증칩이 들어간 시리얼 케이블을 사용해야만 합니다.



    그리고 MiFi에 가입되면 http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2872&param=en546073 이 제품도 구입할 수 있습니다.



    저도 어떻게 알아봤는데 가입하려면 개인은 안되고 회사만 가능하더군요.

    답글삭제
  30. 초보하드웨어쟁이2010년 9월 2일 오전 11:27

    안녕하세요~

    저는 단지 시리얼 통신해서 윈도우의 하이퍼터미널 같은 창에서 a키 누르면 아이폰 터미널에서도 a가 출력 되게끔 하려고 하는데요-

    이미 아이폰은 jail break 된 상황입니다.

    open ssh, mobile Terminal 모두 사용중 입니다.

    아이폰에서 어떤 작업을 해줘야 하나요??



    http://devdot.wikispaces.com/Iphone+Serial+Port+Tutorial

    의 아이폰 용 소스를 어떻게 해야할지 모르겠습니다

    답글삭제
  31. @초보하드웨어쟁이 - 2010/09/04 12:29
    permission error면 터미널에 어떤 계정으로 로그인 하셨는지요?

    일단 su 명령으로 root권한 획득하고 다시 실행해 보시면 될거 같습니다.

    답글삭제
  32. 초보하드웨어쟁이2010년 9월 4일 오후 12:29

    xcode 에서 serial.c를 빌드하여 아이폰에 설치후

    터미널에서 직접 디렉토리까지 들어가, 실행시켰습니다.



    Error opening serial port /dev/tty.iap permission error(13)



    라고 나오네요 ㅠㅠ



    제가 무엇을 놓치고 있는지요? ㅠㅠ

    답글삭제
  33. 아이폰 독커넥터를 통해서 충전+라인아웃+마이크 이렇게 3가지 기능이 다 들어간 케이블을 작성하실 수 없을까요??

    대충 핀 배열이 나온걸 보기는 했지만 어디다 연결해야 할지도 잘 모르겠고, 안다고 해도 손재주가 없다보니...

    요새 아이폰용 마이크들이 엄청 좋은게 많은데 이런 물건이 만들어지면 자동차에서 아이폰으로 음악들으면서 충전하다가 전화오면 미리 연결해둔 마이크로 통화까지 아주 제대로 될 것 같네요...

    답글삭제
  34. 안녕하세요 궁금한게있어서 리플답니다.

    아이폰으로 네트워크 장비를 접속할려고 하는데요

    max232를 집적 연결하기 어려워 http://www.devicemart.co.kr/goods/view.php?seq=7508

    해당 제품을 샀는데요 rs232c 에 max3232가 포함된 모듈이라고 나와있더라고요

    전압은 3.3~5까지 된다고 나와있고요

    구입한 rs232c의 tx - 독케넥터 12번, rx - 독커넥터 13번, gnd - 독커넥터 11번

    이렇게 연결했는데도 안되네요

    minicom 설정하고 실행시키면 접속안되는 메세지만 나오고 있습니다.

    장비쪽에서 콘솔케이블로 연결된쪽 db9 2, 3번에서는 테스터기로 봤을때 5v가 나왔고요

    아이폰 30pin 독커넥터 12, 13번에서는 3.3v가 나왔습니다.

    그리고 구입한 rs232c max3232쪽에서는 전압이 나오는게 테스트가 되었는데요 그 뒤쪽으로 tx, rx에서는 전압이 나오질 않았습니다.

    제조사에 문의해봤는데 해당모듈은 테스트가 다되서 나온것이라고 잘못한거 없나 확인해보라고해서요

    혹시 도움주실수 있나해서 글남겨봅니다.

    max3232가 devicemart쪽에 답변이 max232랑 동작은 똑같이 하나 작동전압이 3.3v라고 나와있는데 저것때문에 문제인가요;

    답글삭제
    답글
    1. 작성자가 댓글을 삭제했습니다.

      삭제
    2. 저걸 쓰면 안되는게 정상입니다. 저 제품은 RS-232 <-> 3.3 or 5V 컨버팅 회로죠.

      말씀대로면 장비쪽은 5V TTL 레벨이기 때문에 http://www.faludi.com/bwsn/xbee-level-shifting/ 이런식의 레벨 컨버터를 구성해 줘야 합니다.

      삭제
    3. 빠른답변 감사드립니다.

      제가 잘몰라서 그랬나보네요; 그럼 간단하게 말하면 MAX32322를 MAX232로 교체하면 해결될까요?

      컨버터를 달고 하기에는 지식이 너무 짧네요;

      삭제
    4. 아뇨. 저기에는 MAXIM 칩은 전혀 필요 없습니다.
      컨버팅 회로라고 해 봐야 땜질만 할 수 있으면 다이오드하고 저항 몇개만 땜질하면 되는 아주 간단한 겁니다.

      삭제
    5. 감사합니다 :)

      알려주신 링크 참조해서 한번해볼께요

      삭제
    6. 구글에서 3.3v to 5v levelshifter로 검색중에 얻은것인데요

      http://creativeelectron.net/blog/2009/10/circuit-transistor-based-3-3v-5v-level-translator/

      이대로 하면 문제없을까요?

      삭제
  35. 안녕하세요
    이것저것 궁금해서 검색하다가 도움 주실 수 있으실것 같아 댓글 달아봅니다!!
    다름이 아니라 30pin 케이블을 통하여 아날로그 라인아웃과 USB 포트를 이용한 충전, PC와의 데이터 통신을 하려고 합니다.
    그러면 3,4,18,21,23,27 및 GND에 연결하고 GND와 21번 사이에 68K옴의 저항을 달아 사용하면 되는건가요?

    답글삭제