2009년 5월 23일 토요일

마이크로SD를 아뒤노에 연결시키기 (MicroSD interface for Arduino)

일명 Poorman's version으로 구현해 본 아뒤노를 위한 마이크로SD(Transflash) 인터페이스이다.

마이크로SD 소켓을 구입하기도 힘들고 구한다 해도 SMD 타입의 좁은 피치를 가지고 있기 때문에 PCB를 만들지 않으면 신호선을 연결하기가 힘들다.
그래서 찾아낸 방법이 마이크로SD를 구입할 때 같이 껴 주는 MicroSD to SD adapter를 소켓 대용으로 이용하는 것이다.

SD의 경우 9개의 핀이 있지만 SPI모드로 동작하는 경우는 7개 핀만 사용한다. 각 핀의 배치는 다음과 같다. 이 7개의 동박면에 직접 신호선을 땜질하는 것이다.

여기서 주의할 점은 SD는 3.3V 디바이스라는 점이다. Vdd뿐 아니고 다른 핀들도 3.3V레벨의 신호를
사용해야 한다.
MicroSD(Transflash)의 핀 배치는 다음과 같다.

Arduino호환보드중에 전원으로 3.3V를 사용하는 경우는 각 핀을 Arduino SPI에 직접 연결시켜 주면 된다. 하지만 대부분의 Arduino 보드들은 5V를 사용하기 때문에 신호 레벨을 바꿔 줘야만 한다.


위의 회로를 사용해서 Arduino와 연결해주면 된다. 단 위의 회로에서 왼쪽에 uSD to SD adapter는 라이브러리를 따로 그리기 귀찮아서 그냥 MicroSD 소켓을 사용해 버려서 핀 번호가 좀 다르다. 위의 사진을 보고 같은 이름의 핀을 연결시켜 주면 된다. ^^;;;

회로 부분만 만능기판에 만들어 본 것이다.

최종적으로 MicroSD adapter의 핀에 납땜질을 해서 신호선을 뽑아내어 만능기판 회로에 연결하고 아답터를 접착제나 실리콘을 사용하여 기판의 아래쪽에 붙여주면 된다.

이렇게 구성하여 arduino에 연결하면 MicroSD를 FAT16으로 포맷하여 파일시스템으로 사용할 수 있게 된다. MicroSD가격이 많이 저렴해 졌기 때문에 아주 적은 비용으로 대용량의 파일시스템을 추가할 수 있기 때문에 장시간의 데이터 로그가 필요한 경우에 매우 유용하게 사용할 수 있다.

댓글 4개:

  1. 안녕하세요. 이쪽으로 옮기셨군요.

    텍스트큐브가 더 좋은가요? ^^



    저 회로 만으로 sd제어가 되는건가요? 신기하네요.

    답글삭제
  2. @펩시맨 - 2009/05/25 10:57
    sd카드는 SPI 모드가 있어 마이크로 프로세서에서 사용하기가 아주 편하죠. 위에 써 놓은것처럼 SD가 3.3V를 사용하기 때문에 위의 회로는 단지 5V->3.3V 레벨변환용일 뿐 프로세서 자체가 3.3V를 쓰는 경우는 저 회로조차도 필요없이 그냥 핀만 1:1로 연결해주면 됩니다.

    답글삭제
  3. 자료 감사하게 참고하겠습니다.

    sdhc를 연결할때 한핀이 추가 된다고 하던데

    sdhc도 연결방법이 같은가요

    답글삭제
  4. @물병든남자 - 2009/06/03 14:48
    대체 SDHC가 한 핀이 더 추가된다는 이야기는 어디서 나왔는지 몰라도 꽤 끈질기게 돌고 있던데 사실이 아닙니다.



    SD와 SDHC의 가장 큰 차이는 어드레싱 방법의 차이(블록 어드레싱 가능여부)때문에 SDHC가 4G이상을 지원(이론상으로는 최대 2T까지) 가능한 점이죠. Pinout은 동일하기 때문에 조금 오래된 장비중에도 sd 컨트롤러 펌웨어 업그레이드만으로 sdhc 지원이 가능해지기도 합니다.



    아마 저 헛소문의 근원은 SDIO와 SDHC를 착각하고 있는거 같습니다. SD슬롯에 주변기기를 연결할 수 있는 SDIO의 경우 SD 1-bit mode나 SPI모드의 경우 Interrupt 신호가 추가됩니다.

    답글삭제