아두이노용 데이터로깅 쉴드의 SD카드 사용

아두이노용 데이터로깅 쉴드의 SD카드 사용

(메가 및 레오나르도 사용자의 경우)

만얀 아두이노 레오나르도나 메가를 사용중이라면, "SD card on any PIN" 기능을 지원하기 위해 라이브러리를 업데이트하여야 합니다. 만약 아두이노 Uno/Duemilanove/Diecimila를 사용한다면 라이브러리 업데이트는 필요없습니다. 아래는 라이브러리 업데이트 방법입니다.


먼저 libraries 폴더를 찾습니다. 보통 아두이노 실행파일이 들어 있는 폴더에서 찾아 볼 수 있습니다. 폴더를 보면 SD폴더를 찾아 볼 수 있고 SD.cpp, SD.h등을 살펴볼 수 있습니다.

libraries 폴더에서 SDbackup이라는 폴더를 만들어 기존의 SD 폴더를 백업폴더로 옮겨 넣습니다. 이렇게 하면 기존 라이브러리는 숨겨지게 됩니다.
sdbackup.gif
https://github.com/adafruit/SD 을 방문하여 다운로드 버튼을 눌러 새로운 SD카드 라이브러리를 받고 ZIP압축을 풉니다. 풀은 압축의 폴더에 SD.cpp, SD.h파일이 있는지 확인하고 폴더명을 SD로 변경한 후 libraries 폴더에 SD 폴더를 옮겨 놓습니다.

아두이노 메가/레오나르도에서 SD 라이브러리 사용하기

아두이노 메가와 레오나르도는 SPI핀이 같지 않기 때문에 SD카드와 통신할 SPI핀이 어떤것인 지 지정을 하여 주는 것이 필요합니다. 데이터로거 쉴드에서는 SPI핀은 10, 11, 12, 13번 핀입니다.

스케치 코드에서 SD.begin()함수를 찾아서 아래와 같이 핀 번호를 변경합니다.


SD.begin(10,11,12,13);

cardinfo 스케치 코드는 SD카드와 직접 통신하기 위하여 로우레벨 라이브러리를 사용합니다. 그래서 SD.begin()함수대신 card.init()함수를 호출합니다. card.init()를 호출할때는 반드시 아래와 같이 SPI핀을 명시해 주어야 합니다.


card.init(SPI_HALF_SPEED, 1
0,11,12,13);


이렇게 하여 주었으면, 다음으로 CardInfo 예제 스케치를 선택합니다.
opencardinfo.gif

이 스케치 코드는 SD카드에는 아직 카드에 아무런 데이터를 쓸 수 없습니다. 다만 카드를 인식하고 카드에 대한 몇몇 정보를 말해줄 뿐입니다. 그러나 이 코드는 SD카드가 지원되는 카드인지 알아볼 때 매우 유용하게 사용될 수 있습니다. 새로운 카드를 사용하기 전에 이 스케치 코드를 이용하여 테스트를 하여 보십시오.

스케치 코드의 첫부분으로 돌아가서 chipselect 라인이 올바른지 확인하십시오. 데이터로거 쉴드는 10번 디지털 핀을 사용하므로 10으로 바꾸어 줍니다.



cardinfocs.gif

sd.begin()함수가 아래와 같이 변경되었는지 다시 한번 확인합니다.

SD.begin(10,11,12,13);
이제 SD카드를 삽입하고 스케치를 업로드합니다.
2013_04_06_IMG_1551-1024.jpg

시리얼 모니터 창을 열고 텍스트 박스창에 글자를 입력하면 아마 아래와 같은 것을 볼 수 있을 것입니다.

cardinfook.gif

데이터는 알아보기 힘들지만 볼륨타입이 FAT16이라는 것과 볼륨크기 정보를 알아 볼수 있습니다. 만약 불량카드를 삽입하면 아래와 같은 화면을 볼수 있습니다.

badsdinfo.gif

마지막으로 카드를 빼고 스케치코드를 다시 실행시키면 아래와 같은 화면을 볼수 있습니다.

cardinfonone.gif
Comments