한국식(?) mp3플레이어에 익숙한 사람들은 그냥 mp3파일을 mp3플레이어 내의 폴더에 바로 복사하는걸 더 편하게 생각하고 아이튠의 음악 관리 방식을 불편하다고 생각하는 경우가 많다.
하지만 drag-n-drop방식은 아주 원시적인 방식으로 플레이어에 기껏해야 자주 듣는 음악 몇십곡 집어넣고 검색같은거 없이 곡들을 그냥 순차적으로 듣는 경우에나 유용하지 곡이 많아지거나 조금만 복잡한(?) 방식의 음악듣기를 원하는 경우에는 속수무책이 되어 버리기 쉽다.

예를 들어 '우울할 때 듣는 곡', '내 best 30', '야간 드라이브 할 때 듣는 곡' 식으로 폴더를 나눠 놓고 음악을 집어 넣는데 만일 A라는 곡이 3가지에 모두 포함되는 경우 A의 파일을 폴더 3곳에 각각 복사를 해 줘야 하기 때문에 플래쉬 메모리가 낭비되게 된다.

그 에 비해 아이튠의 경우 A의 파일은 한 곳에만 저장되고 (저장 위치는 사용자가 신경 쓸 필요가 없다. iTunes가 자동으로 알아서 관리해 준다.) 3개의 플레이 리스트를 만들어 그 플레이 리스트에 A라는 곡을 넣어만 주면 된다.

그리고 iTunes는 거기서 한발 더 나아가서 Smart playlist를 지원한다.
이건 플레이리스트에 사용자가 따로 곡을 집어넣어 줄 필요 없이 원하는 조건만 지정해 주면 그 조건에 맞는 곡들을 자동으로 목록에 추가해 주는 기능이다.


아이튠에서 곡 정보 화면이다. 여기에 그 곡의 다양한 정보(Tag)가 들어간다. 아이튠의 경우 대부분의 동작이 이 tag를 기반으로 움직이기 때문에 곡의 tag를 정확하게 관리해 주는게 필수적이다. 이 역시 drag-n-drop방식에 익숙한 사람들에게는 쓸데없는 일이라고 생각되기 쉬운데 tag는 일단 한번만 정리 해 놓으면 더 이상 편하고 효율적일수가 없다.


iTunes를 실행한다.


Files->New Smart Playlist... 를 선택해 준다.


스마트 플레이리스트를 설정해 줄 수 있는 창이 열리게 된다. 조건 항목이 1개인데 항목을 늘리고 싶으면 오른쪽의 '+' 버튼을 눌러주면 된다.


위쪽의 화면에서 '+' 버튼을 눌러 조건 항목을 2개로 만든 화면이다. 다시 조건항목을 줄이려면 '-' 버튼을 눌러주면 된다.

여기서 조건이란 태그에 들어있는 값들 중에 자신이 원하는 조건을 말한다. 즉 '[가 수 이름](a)[ABCDE](b)[시작](c)하는 노래' 같은 식으로 원하는 조건을 설정할 수 있다. 위의 조건 항목에서 첫번째 칸에 (a)의 값을, 두번째 칸에 (c)의 값을, 세번째 칸에 (b)의 값을 넣어주면 된다.


(a) 항목에 들어갈 수 있는 값들이다. 가수 이름 뿐 아니라 앨범제목, 작곡가, 쟝르, 발매년도, rating, 샘플링 레이트, 플레이 횟수 등등 매우 다양한 조건을 선택할 수 있다.


(c)항목에 들어갈 수 있는 값이다. 가수 이름인 경우 정확한 가수 이름(is) 뿐 아니고 특정 가수 제외(is not), 이름 일부분(contains), 이름 일부분에 제외(does not contain), 특정 글자로 시작하는 이름(starts with), 특정 글자로 끝나는 이름(ends with)등의 조건을 줄 수 있다.

또한 여기는 안 나왔지만 (a)가 발매년도나 Ratings인 경우 어디부터 어디까지(is in the range)등의 조건도 줄 수 있다.


임의로 만들어 본 조건이다. 저 플레이 리스트에는 내 ratings가 별 4개 이상이고 Jazz쟝르이면서 2000에서 2009년에 나온 곡들이 자동으로 들어가게 된다.

위에서 본 것 같이 Smart Playlists를 잘 활용하면 그냥 순차적으로 또는 랜덤하게 듣는 방법 이외에 진짜 매우 smart하게 자신이 원하는 곡들을 찾아 들을 수 있는 다양한 방법을 사용할 수 있게 된다.
Posted by nautes

아이폰/터치팟 플래쉬 용량이 작은건 아니지만 음악에 apps들을 넣다보면 어느새 부족해지기 쉽상이다.
그 중 좀 황당하고 골치아픈 문제중 하나가 아이튠에서 apps를 구입한 다음 아이폰/터치팟과 싱크를 시키는데 '메모리 부족'이라는 에러를 내고 설치가 되지 않는 경우이다.

지도 데이터를 모두 포함하고 있어 용량이 큰 apps중 하나인 Playmap 같은 경우 아이튠에서 봤을 때 343MB 용량이다.

그런데 free space가 4~500MB 정도 남아있는 아이폰으로 옮기려고 sync를 하면 메모리가 부족하다고 에러가 나고 설치가 진행되지 않는다.

그 원인은 아이폰/터치팟의 apps는 ipa라는 확장자를 가지는데 확장자만 다른 이름일 뿐 실제로는 zip 파일이다. 아이폰에 설치할 때 일단 아이튠에서 아이폰으로 ipa파일이 전송된 다음 아이폰에서 압축을 풀어 설치하게 되기 때문에 설치를 위해서는 아이폰에 apps 파일 크기보다 최소 2배 이상의 free space가 있어야만 한다. 실험해 본 결과 800MB 이상의 빈 공간이 있어야만 Playmap이 설치가 가능했다.
하지만 설치가 끝나면 ipa파일은 압축을 푼 다음에는 아이폰에서는 자동으로 삭제되어 버리기 때문에 Playmap이 설치되고 난 다음에 확인해 보면 아이폰에는 약 350MB의 빈 공간이 남아있다.



그러므로 apps설치 시 apps 크기보다 빈 공간이 아직 남아 있는데도 이런 에러가 생기는 경우 해결책은 크기가 작은 apps들을 지우거나 음악/비디오 파일을 지워 충분한 공간을 만들어 줘서 원하는 apps를 설치한 다음 지웠던  apps/음악/비디오를 다시 넣어주면 된다.

즉 예를 들어 app A의 크기가 300MB이고 빈 공간이 500MB인데 메모리 부족으로 설치가 안된다면 이미 설치도어 있는 약 150MB크기의 app B를 지워준다. 그러면 빈 공간은 500+150=650MB가 되어 app A를 설치할 수 있게 된다. App A가 설치되고 나면 빈 공간은 다시 약 350MB정도가 남기 때문에 app B를 재설치하는데는 문제가 없다.
Posted by nautes

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

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

커넥터를 금속 케이스에 집어 넣는다.

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

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

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

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

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

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

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

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

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

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

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

Posted by nautes

아이폰/터치팟에서 가상키보드로 입력을 할 때 가장 불편했던 것 중에 하나가 숫자를 입력하려면 123 키를 눌러 숫자키패드로 바꿔줘야만 한다는 것이었다.

5-row QWERTY keyboard는 일반 키보드의 배열과 마찮가지로 아아폰/터치팟의 가상키보드를 5줄로 만들어 맨 윗줄에 숫자키를 집어넣어서 이 문제를 해결해 준다. Jail-broken된 아이폰/터치팟에 설치할 수 있다.

설치하려면 cydia를 실행한 다음 search를 사용해서 5-Row QWERTY 프로그램을 찾아준다.

kb1.jpg

정식 명칭은 '5-Row QWERTY Keyboard'이다. 이 프로그램을 검색해서 설치해주면 된다.

kb2.jpg

설치가 끝나면 초기화면으로 돌아와서 Settings로 간다.

kb3.jpg

Settings에서 'General'을 선택한다..

kb4.jpg

General 화면에서 'International'을 선택한다.

kb5.jpg

International에서 'Keyboards'를 선택한다.


kb6.jpg

Keyboards에 보면 iKeyEx Keyboards라는 항목이 추가된 걸 볼 수 있다. 여기서 5 Row QWERTY를 ON이 되게 해 준다.


kb7.jpg

이것으로 설정이 모두 끝났다.

이제 실제 키보드를 사용해 보기로 한다. 노트 어플로 가서 보면 키보드가 5줄이 되어서 맨 윗줄에 숫자키가 생긴걸 볼 수 있다.


kb8.jpg

또한 이 상태에서 Shift키를 누르면 숫자키가 일반 키보드 배열에서 숫자키 위의 기호들로 바뀐걸 볼 수 있다.


kb9.jpg

이 뿐 아니고 여기서 '123' 키를 누르면 이 키는 'ABC'로 바뀌고 나머지 기호들과 숫자키패드가 나오게 된다.

kb10.jpg

마지막으로 '123' 모드에서 shift를 눌러주면 그 동안 키보드에는 없던 커서 이동키(←,↑,→,↓, pg up, pg dn, tab 등등)들을 사용할 수 있다.

kb11.jpg

블로그코리아에 블UP하기

Posted by nautes

iPhone 3G와 새로 나온 iPod Touch의 경우 케이블을 컴퓨터의 usb포트에 연결하거나 같이 포함되어 있는 충전기를 사용하지 않으면 충전이 되지 않는다.

원인은 변경된 충전회로 때문이다.


200811222311.jpg

위 사진은 iPhone의 회로인데 빨간색으로 표시 된 칩이 Linear Technology의 LTC 4066 USB Power Controller and Li-Ion Linear Charger이다. 즉 아이폰의 배터리 충전과 사용을 컨트롤하는 칩이다.

여기서 문제는 USB 전원을 사용할 경우가 되는데 USB포트에 500mA의 전류가 공급되는 경우에만 USB 전원을 사용하게 된다. 하지만 USB 케이블을 컴퓨터에 연결하는 것 만으로 컴퓨터가 바로 500mA를 공급해 주는게 아니고 enumeration이라는 과정을 거치며 USB장치(여기서는 아이폰)와 컴퓨터간에 정해진 절차(즉 컴퓨터가 아이폰에게 '너 전류가 얼마나 필요해?'라고 물어보고 아이폰이 500mA라고 알려줘야 그에 맞는 전류를 공급해준다.)를 거친 후에야 컴퓨터가 그 포트에 500mA의 전류를 흘려주게 된다. 이 절차 후에 컴퓨터가 충분한 전류를 공급해 줄 때부터 LTC 4066은 USB 전원을 사용해서 충전을 하게 된다.

그런데 일반 외부 아답터를 사용하는 경우는 처음부터 필요한 전류를 항상 공급해주지만 LTC 4066에 그 사실을 알려주지 않으면 LTC 4066은 USB 포트의 전원을 사용할 수가 없다. 이 사실을 알려주기 위해서는 LTC 4066의 HPRW(pin 13)과 WALL(pin 20) 핀을 1.25v이상으로 풀-업(pull-up) 해주면 된다.

200811222322.jpg


200811222323.jpg

아이폰에서는 이 두 핀이 USB 커넥터의 D+, D-에 연결되어 있다. 즉 USB 케이블의 +(USB커넥터의 1번 핀)에 5V를 공급해주고 D+, D-핀을 1.25v이상으로 풀업 해 주면 아이폰은 USB 포트를 통해 공급되는 전원을 사용해서 충전을 할 수 있게 된다.

200811222326.jpg

즉 아래와 같은 회로를 만들어주면 된다.


iphone-chg.jpg


다음 포스트에서 실제 제작방법을 볼 수 있다.

(DIY) 아이폰/아이팟 터치 충전회로 제작.

Posted by nautes

최근들어 LBS(Location Based Service)에 대한 관심이 높아지고 아이폰, 구글폰들이 출시되며 이를 이용한 어플리케이션들이 속속 등장하고 있다. 여기에서 현재 휴대폰의 위치를 알아내는 방법의 원리들에 대해 설명해 보겠다.

먼저 가장 먼저, 널리 사용되는건 GPS이다.

GPS(Global Positioning System)의 기본 원리는 삼각측량법이다.

gps1.jpg

위의 그림에서처럼 지도상에 정확한 위치를 알고 있는 3개 지점에서부터 내 위치까지의 거리를 알 수 있으면 그 각 지점(위의 그림에서는 각 스테이션)을 중심점으로 내 위치까지의 거리를 반지름으로 하는 3개의 원을 그리면 3개의 원은 정확하게 한 점에서 만나게 된다. 그 원들이 만나는 지점이 내 현 위치가 된다.


gps2.jpg

단 여기서 전제조건은 각 스테이션과의 정확한 거리를 알고 있어야 한다는 것이다.

그런데 실제로 거리를 측정할 때 줄자를 가지고 잴 수 있는게 아니고 각 스테이션에서 송출하는 특정 신호를 수신해서 그 신호의 세기를 가지고 거리를 예측하게 된다. 하지만 전파의 특성 상 거리에 반비례해서 신호 세기가 약해지긴 해도 여러가지 조건에 따라 그 약해지는 정도가 항상 변화하기 때문에 대강의 거리를 예측할 뿐 정확한 거리를 알 수가 없다. (실제 GPS에서는 신호 세기가 아니고 시간차를 이용하지만 이 경우에도 정확한 거리를 알 수 없는건 차이가 없다.)


gps3.jpg

대략의 거리를 가지고 원을 그리게 되면 3개의 원이 위의 그림과 같이 한 점에서 만나는게 아니고 그림과 같이 3개의 원으로 둘러 쌓인 부분이 생기게 된다. 예측한 거리의 오차가 크면 클 수록 원으로 표시된 부분의 크기가 커지게 된다. 즉 정확한 위치를 찾을 수 없고 대략 저 둘러 쌓인 부분 내에 있다는 것만 알 수 있게 된다.


gps4.jpg

그래서 더 여러 지점과의 거리를 측정해서 더 많은 원을 그려 더 많은 원들에 둘러 쌓인 부분을 찾으면 그 면적이 줄어들기 때문에 오차를 줄일 수 있게 된다.

그런데 최근에는 GPS를 내장하지 않은 모바일 디바이스들도 무선랜 신호를 이용해 자신의 위치를 상당히 정확하게 찾아내는걸 볼 수 있다. 이 경우는 미리 구축되어 있는 무선 AP목록 DB가 구축되어 있어야 한다. 이 DB는 사업자 핫스팟의 경우는 사업자가 설치된 정확한 주소를 알려줄 수 있지만 개인이 설치한 AP의 경우는 등록된 주소가 없는데 어떻게 위치를 알 수 있을까? 정답은 구글 스트리트 뷰 사진과 유사한 방식으로 War driving을 이용해서 DB를 구축하게 된다.


wd.jpg

자동차에 그림과 같이 무선랜 안테나와 GPS 수신기를 장착하고 차를 몰아 길을 돌아다니면서 각 위치에서 신호가 잡히는 AP의 목록과 신호의 세기를 기록해서 DB를 구축하게 된다.


gps5.jpg

위의 그림에서 각 숫자가 AP이고 알파벳이 자동차가 움직이며 해당 위치에서 신호가 잡히는 AP의 목록을 기록해서 테이블을 만든다.


GPS8.jpg

이렇게 만든 테이블을 이용해 각 AP의 위치 DB를 만든다.

GPS9.jpg

위의 그림과 같이 각각 AP의 신호가 잡히는 지점들을 가지고 있게 된다.


gps6.jpg

그림에서 저 지점에 아이팟 터치가 있다면 13, 15, 17번 AP의 신호를 받을 수 있게 된다.


GPS10.jpg

그럼 그 정보를 이용해 위에 만들어 진 DB를 검색하면 13, 15, 17 모두에 공통으로 들어있는 위치는 M이 된다. 즉 예측할 수 있는 가장 가까운 위치는 M이라고 판단할 수 있게 되는 것이다.

Posted by nautes

이전버튼 1 이전버튼