OPENCR 1.0에서 SD Card Read가 안됩니다

사용PC : NUC
OS : Ubuntu 20.04
Arduino IDE : 1.18.10

내용
OPENCR 1.0에서 SD 카드에 들어있는 txt자료가 읽혀지지 않습니다.
우선 파일안에 있는 정보를 잘 가져오는지 테스트를 하기 위하여 SD카드에 test.txt 파일을 만들었습니다.

OPENCR에 SD카드 리더기를 장착 후(SD 카드 리더기의 모든 핀을 OPENCR에 맞게 장착하였습니다.)
Arduino_Smart_Hong : 네이버 블로그 해당 블로그에 있는 소스코드를 사용하여 OPENCR에서 SD카드안에 있는 txt 파일을 읽으려하는데 읽혀지지 않습니다.

소스코드는 다음과 같습니다.

#include <SPI.h>
#include<SD.h>
File myFile;

void setup() {
Serial.begin(9600);
Serial.println(“SD카드 모율 초기화 진행”);
if (!SD.begin(4)) {
Serial.println(“초기화 실패”);
while (1);
}
Serial.println(“초기화 성공!”);

myFile = SD.open(“test.txt”);
if (myFile) {
Serial.print("test.txt 내용 읽기 : ");
while (myFile.availabe()) {
Serial.write(myFile.read());
}
Serial.println(“완료”);
} else {
Serial.println(“test.txt 열기 에러”);
}
}

void loop() {
}

아두이노 우노에 SD카드 리더기를 장착한 후 위 소스코드를 그대로 사용하였을 때는 IDE의 시리얼 모니터에 잘 나타나는 것을 확인하였습니다. 어디가 문제이고 해결방법은 무엇일까요?

추가적으로 SD카드 리더기를 30개 바꿔보고 OPENCR도 바꿔보았습니다. 케이블은 점퍼선을 사용하였으며 아두이노 우노에서는 이상이 없었던것으로 보아 케이블과 리더기의 문제는 아닌것 같습니다.

OpenCR에는 아두이노와는 다른 핀맵이 사용되므로, SD 카드 모듈의 핀을 올바르게 연결해야 합니다.

또한, OpenCR의 디지털 핀은 3.3V로 동작하기 때문에,
SD 카드 모듈의 신호는 3.3V로 맞춰서 전달되어야 합니다.
일반적으로 SD 카드 모듈은 5V 레벨의 신호를 사용하므로,
5V 레벨의 모듈을 사용하는 경우 레벨 변환기(Level shifter)를 이용하여
3.3V 레벨의 신호로 변환하여 사용해야 합니다.
그러나 일부 모듈은 3.3V 레벨의 신호를 지원하기 때문에,
이 경우에는 레벨 변환기가 필요하지 않을 수 있습니다.

1 Like

친절한 답변 감사합니다.
답글에서 말씀 주신것 처럼 마이크로 SD카드 모듈에 레벨 쉬프터가 존재하는지를 확인하였습니다.
결과적으로는 모듈에 레벨쉬프터가 존재하는 모듈이었습니다.
혹시 다른 원인이 존재할까요?
OPENCR도 새로 교체하여 TEST를 진행하여도 여전히 SD카드가 읽히지 않습니다.


해당 사진에 보시면 빨강색 박스 표시된곳에 SD카드 모듈 핀을 연결하였습니다.
리더기의 CS는 위 GPIO의 3, 4번에 연결하였습니다.