2009년 8월 22일 토요일

초 저가 SD 메모리 커넥터 제작 (DIY inexpensive SD card connector)

Instructable 사이트에 쉽게 만들 수 있는 SD 카드 소켓 제작법이 있길래 따라해 봤다.
단 이 사이트에 있는건 제작하려면 강력접착제와 바이스 같은 공구가 필요하기 때문에 저 내용을 약간 응용해서 그냥 만능기판에 직접 제작하기로 했다.

필요한 부품은 7핀 헤더 2개만 있으면 된다.

SD카드의 핀은 총 9개이지만 SPI모드인 경우 7개만 사용하면 되고 핀의 피치가 0.1"(2.54mm)이기 때문에 두개의 헤더를 만능기판에 꼽아주고 헤더의 핀을 적당히 구부려 주면 된다. SD 카드에 대한 자세한 이야기는 이전 포스트를 참조하면 된다.
옆쪽에서 봤을 때 위와 같이 되도록 핀을 구부려 주면 된다. 기판에 헤더를 땜질 한 다음에 저런식으로 구부리기는 힘들기 때문에 특히 왼쪽 헤더는 땜질하기 전에 미리 구부린 다음에 기판에 고정시키는 것이 좋다.




만들어 진 모습이다.


완성된 커넥터에 실제 SD 카드를 꼽은 모습이다.

위에서 이야기 했던것처럼 9핀중에 SPI모드에서 사용하는건 실제 7핀 뿐이다. 주의해야 할 점은 사진에서 맨 오른쪽 2핀이다. 다른 핀들 사이에는 플라스틱으로 칸막이가 되어 있기 때문에 문제가 없는데 마지막 2핀 사이에는 칸막이가 없다. 그래서 SD카드를 꼽을 때 헤더의 맨 오른쪽이 제일 오른쪽 핀에 닿지 않도록 주의해 줘야 한다.


아이폰/터치팟 아답터 충전회로의 차이점 (Difference between iPhone/iPod Touch charging circuit)

이전 포스트에서 아이폰/아이팟 터치 충전회로에 대해 설명한 적이 있었다.
저항을 4개 사용한 회로를 소개했는데 인터넷을 찾아보면 2개의 저항을 사용한 회로도 있고 실제로 그 회로를 사용해도 충전에 문제가 없다.
그래서 그 차이점을 알아 보았다.

이전 포스트에서 사용했던 저항 4개를 사용한 회로이다. 여기서 R3은 150Kohm, R4는 100Kohm, R1/R2는 둘 다같은 값의 저항(100Kohm을 사용하면 무난)을 사용해주면 된다.


저항을 2개만 사용하는 회로이다. 여기서 R1/R2는 둘 다 같은 값의 저항(50Kohm이나 100Kohm정도)을 사용하면 된다.



위쪽 회로의 경우 D-는 2.5V, D+는 2V가 걸리게 되고 아래쪽 회로의 경우는 D-, D+ 모두 2.5V가 걸리게 된다. 아이폰/아이팟 터치의 충전회로는 D+, D-에 걸리는 전압을 측정해서 얼마만큼의 전류를 사용할 수 있는지 판단한다.
위쪽의 저항을 4개를 사용한 경우에는 750mA의 전류를 사용하고 아래쪽의 저항을 2개만 사용한 경우에는 500mA의 전류를 사용한다.

즉 충분한 전류를 공급할 수 있는 경우 위쪽의 회로를 사용해주면 좀 더 빨리 충전이 되고 그렇지 않은 경우 아래 회로를 사용해도 충전은 되지만 시간이 조금 더 걸리게 된다.

2009년 8월 14일 금요일

압력센서를 사용한 고도계 및 속도계 (Altimeter and Airspeed meter using pressure sensor)

고도를 측정하기 위해서 압력센서를 사용한다. 고도가 높아짐에 따라 압력이 낮아지기 때문에 압력의 변화를 측정하면 고도를 알 수 있다.

이번에 사용한 압력센서는 Freescale의 MPX4250 GP이다.


이 센서의 특성은 다음과 같다.

센서 내부에 온도보상 회로와 앰프가 들어있기 때문에 마이크로 프로세서의 A/D 컨버터에 직접 연결해주면 된다. 단 출력신호에 low pass filter를 붙여주었다.






속도를 측정하기 위해서도 역시 압력센서를 사용한다. 다만 이번에는 고도계와는 다르게 dual port pressure sensor를 사용한다. 이번에 사용한 센서는 Freescale의 MPXV5010 DP이다.


이 센서의 특성은 다음과 같다.


속도계의 원리는 1700년대 프랑스 엔지니어 Henri Pitot가 발명한 pitot tube를 사용한다.




위의 그림에서 볼 수 있는것처럼 하나는 RAM air pressure, 다른 하나는 static air pressure(속도에 관계 없이 고도에 따라서만 변함)를 입력받아 두 압력의 차이를 이용해 속도를 계산할 수 있다.
Pitot tube는 실제 항공기에서도 사용된다.






센서 회로는 압력센서의 경우와 동일하게 해 주면 된다.



아이폰에서 2G/3G망을 통한 데이터 통신을 막는 방법

아이폰을 사용하는 사람중에 무제한 데이터 요금제가 아닌 경우(언락폰을 구입해서 일반 음성요금제에만 가입해 사용하는 경우 등) 어플을 사용할 때 자신도 모르게 2G/3G망을 통해 오가는 데이터로 인해 예기치 못한 요금이 나올 수 있다.

이를 방지하기 위해서는 WIFI를 통해서만 데이터 통신을 하고 2G/3G망을 통해서는 데이터 통신을 못하게 만들어 줘야 한다. 각 망 사업자별로 데이터 통신을 위한 APN이 있는데 이 값을 null로 만들어주면 무선망을 통한 데이터 통신을 하지 못하게 된다.

1. 먼저 이 파일을 다운받는다.


2. 자신의 이메일로 방금 다운받은 파일을 첨부해 메일을 보내준다.


3. 아이폰에서 메일 어플을 실행해서 방금 보낸 메일을 연 다음 첨부된 파일을 클릭한다.


4. 아래와 같은 화면이 나오면 Install 을 눌러 프로파일을 설치해주면 된다. 그러면 이제부터는 wifi를 통해서만 데이터 통신을 하고 2G/3G망을 통해서는 데이터 통신을 하지 않게 된다.

---
다시 2G/3G망을 통해서도 데이터 통신을 하도록 하고 싶으면 다음과 같이 하면 된다.

1. Settings 선택

2. General을 선택


3. Profile을 선택

4. Remove 버튼을 눌러 설치되어 있는 프로파일을 삭제해주면 된다.

2009년 8월 7일 금요일

mBed - 임베디드 프로토타이핑을 위한 최적의 보드

NXP Semiconductor가 ARM7 TDMI-S 기반의 LPC236x를 사용해서 mBed라는 재미있는 보드를 만들었다.


Circuit Cellar라는 잡지의 기사(위의 사진을 클릭하면 그 기사를 pdf로 볼 수 있다.)에서 발견하고 바로 구해보았다.


40핀 DIP form-factor(0.1" pitch, 0.9" pin spacing, 44mm x 26mm)에 LPC 236x, 512KB Flash, 32KB SRAM, 2KB NV SRAM 메모리를 가지고 있고 GPIO이외에도 위의 사진에서 볼 수 있는것처럼 매우 다양한 인터페이스를 가지고 있다. 특히 이더넷의 경우 별도의 추가 트랜스포머 없이 RJ-45에 직접 연결하면 된다. 전원 역시 외부에서 공급받는것 이외에 USB포트에서 공급받을 수도 있다.

이 보드의 가장 재미있는 부분은 펌웨어이다. 컴퓨터와 USB로 연결하면 컴퓨터는 이 보드를 USB디스크로 인식한다. 다운로드 하려는 바이너리 파일을 이 디스크에 복사해주고 리셋버튼을 누르면 그 이미지가 실행된다.

또한 웹기반의 개발환경을 제공하기 때문에 맥/윈도우/리눅스 모두에서 사용할 수 있다.



웹사이트(http://mbed.co.uk)의 우측 상단에 있는 Compiler라는 링크를 누르면 개발환경이 열린다.

새 프로그램을 추가하려면 My Programs에서 마우스 오른쪽 버튼을 클릭해 준다.

New Program...을 선택한다.

프로그램 이름을 넣어주고 OK 버튼을 눌러준다.

프로그램이 추가되고 기본적 템플릿이 만들어진다.

화면 오른쪽이 에디터로 프로그램을 입력/수정해주면 된다. 컴파일은 화면 위쪽의 Compile 버튼을 눌러주면 된다.

화면 아래쪽의 상태창에 컴파일 결과가 나타난다. 에러 없이 정상적으로 컴파일이 끝나면 위와 같은 출력이 나오게 된다.

정상적으로 컴파일이 끝나면 생성된 바이너리 파일을 컴퓨터로 다운받을 수 있다. Download 버튼을 눌러주면 된다.

바이너리 파일을 컴퓨터에 저장해 준다.

위에서 이야기 했던것 처럼 이 보드는 컴퓨터에게 'MBED'라는 이름의 USB 디스크로 인식된다. 왼쪽에 방금 다운받은 TEST.bin 파일이 보인다.

위에서 다운받은 파일을 'MBED' 디스크에 복사해주면 된다.

복사가 끝나면 보드 가운데 있는 파란색 리셋버튼을 눌러주면 프로그램이 실행된다. 디스크에 이미지 파일이 여러개 있어도 상관없고 리셋버튼을 누르면 가장 최근에 집어넣은 이미지가 실행된다.




개발환경은 인터페이스를 쉽게 사용할 수 있는 다양한 라이브러리를 기본으로 제공해주고 있다.


각 링크를 클릭하면 해당 인터페이스에 대한 설명과 사용법, 예제코드가 나온다.

디지털 출력포트의 경우이다. 샘플코드에서 볼 수 있는것처럼 arduino와 상당히 유사하다.

가장 장점중에 하나로 이더넷의 경우 별도의 트랜스포머 없이 RJ-45에 위의 4개의 핀을 직접 연결해주면 된다.

총 4개의 시리얼 포트를 제공해 준다. (3개는 물리적 포트, 1개는 USB를 통한 가상 시리얼 포트)

이 역시 mBed보드의 장점중에 하나로 컴퓨터와 usb로 연결해주면 mBed보드가 USB 드라이브로 인식될 뿐 아니라 가상 시리얼포트도 만들어지기 때문에 추가 시리얼 케이블이 없어도 시리얼 콘솔을 사용할 수 있다. 맥의 경우 /dev/tty.usbmodem*, 리눅스의 경우는 /dev/ttyACM* 이라는 디바이스가 자동으로 만들어진다.


Arduino보다 크기는 더 작아도 빠른 프로세서(코어는 72MHz로 동작한다), 훨씬 큰 메모리, 다양한 인터페이스를 제공해주기 때문에 임베디드 프로토타입용으로 최적의 보드라고 생각된다.