본문 바로가기

Electronics

탈옥 안한 아이폰으로 아두이노 제어하기

아이폰은 아래쪽에 달린 30핀 커넥터를 통해서 외부기기를 제어하거나 데이타를 받으려면 애플과 계약을 체결해야만 가능하기 때문에 탈옥을 해야만 외부와 시리얼통신이 가능했었다. 그러나 작년에  RedPark라는 회사에서  iOS기기용 30핀 커넥터에 연결해서 쓸수 있는 시리얼케이블을 출시해서 이제는 그 시리얼케이블만 사면 손쉽게 외부기기를 아이폰과 시리얼포트를 통해 연결할 수 있게 되었다. 



사실 이 시리얼케이블은 출시된지 좀 됐고 나도 산지가 반년은 훨씬 넘었으나 사 놓기만 하고 그간 방치하다가 며칠전에서야 연결해봤다. 늦어진데 일조한 이유가 이 케이블의 한쪽끝이 RS-232 9핀 커넥터라서 아두이노 같은 마이크로 컨트롤러와 연결하려면 TTL레벨로 전압을 변환해주는 보드가 별도로 필요하다는 것이다. RS-232 시리얼 신호는 +-14V의 나름 고전압이기 때문에 아두이노의 5V ~ 0V의  TTL 시리얼 신호로 바꿔줘야만 아두이노가 타버리지 않고 통신이 되기 때문이다.

당시 이 시리얼케이블을 산곳이 메이크진에서 운영하는 부품 판매사이트인 makershed.com 이었는데 당시 이 레벨 컨버터만 품절이라 못사서 만들어야 했는데 귀찮아서 미루다가 이제서야 만들어서 연결해보게 됐다는 그런 게으른 사연이다. 

레벨컨버터는 사실 저항과 제너 다이오드만 가지고도 만들 수 있는 것인데(ladyada의 Mini POV3의 회로도에서 9핀 커넥터와 MCU사이의 회로 참조), 만들려고 부품을 찾다보니 예전에 레벨컨버터를 만들려고 이미 74HC04로직 칩을 사둔게 있어서 제대로 만들기로 했다.


위 사진에서 기판에 표시한 T와 R이 잘못된 회로도를 보고 표기한거라 틀린것이다. 저 6핀의 순서는 USB시리얼 컨버터가 포함되지 않은 아두이노 미니계열이나 릴리패드 등에 쓰이는 핀으로 사실상의 표준이라고 할 수 있다. 아두이노쪽에서볼때 GROUND, CTS, VCC, RX, TX, RTS의 순서로 되어 있다.  



회로도는 wolfden.org의 P4B라는 RS232 serial programming adapter의 회로도를 참조했다. 다만 회로도의 RX와 TX가 반대로 표기되어 있으니 주의해야한다. 그것 때문에 한참 고생했다--;; RX TX 표기는 항상 자기를 기준으로 해야하는데 가끔 상대기기의 입장에서 표기해주는 너무 친절한 사람들이 있어서 문제다. 

아이폰의 프로그램은 메이크진에 글쓰는 Brian Jepson이란 아저씨가 올려놓은 설명코드를 그대로 썼다. 우선 레드파크 웹사이트에서 이메일등록하고 SDK를 받아야 한다. 물론 이 케이블을 써보려면 아이폰 개발자 계정이 있어야만 한다. 그래야 아이폰에 프로그램을 업로드 할 수 있기 때문에 이 케이블을 테스트라도 해볼 수 있는 것이다. Xcode 에 있는 아이폰 시뮬레이터에서는 작동해볼 수가 없는 것이다.

아두이노에도 Jepson의 코드 중에서 arduino 디렉토리에 있는 것을 올려 놓고 시리얼 레벨 컨버터를 거쳐서 아이폰과 연결하면 아이폰의 버튼을 켜고 끌때 마다 아두이노에 연결한 LED가 켜지고 꺼진다.

아래는 작동영상이다. 



자아~ 그럼 이제 이걸로 뭘 만들어 볼까?