Wio LTE JP VersionでSDカード使いたい
解決したいこと
Iot初心者からの質問となります。
Wio LTE JP VersionでSDカードを使用したいと考えていますが、
SDカード初期化の段階で発生するERRORを解消できません。
お力添えいただけると甚だ幸いでございます。
★使用したアイテム
・Wio LTE JP Version (https://soracom.jp/store/5301/)
・Transcend microSDHC 32G
★実行した内容
1:以下のリンクの内容をほとんどそのまま実行。
しかしながら、SDカードの初期化の段階で、ERRORが返ってくる。
[1]https://github.com/SeeedJP/WioLTEforArduino/blob/main/examples/basic/SDReadWrite/SDReadWrite.ino
↓
2:過去の投稿で、本件と同じERRORについて対処されたものがあり、同じように実行。
しかしながら、どうにもERRORが解消されない。
[2]https://qiita.com/riris4488/items/910d1120dbadbd859871
発生している問題・エラー
--- START ---------------------------------------------------
### I/O Initialize.
### Power supply ON.
### Initialize SD card.
### ERROR! ###
自分で試したこと
上述の通り、過去の投稿[2]を参考に、以下の対応を実施。
1:SDカードへの配線を調べる。
[3]https://wiki.seeedstudio.com/Wio_LTE_Cat.1/#wio-lte-jp-version-v13b-schematic-online-viewer
<調べた結果>
"Adruino Pin #" | "STM32F412RG Pin" | 線名 | "SD card Pin"
51 | PC10 | SDIO_D2 | DAT2
52 | PC11 | SDIO_D3 | CD/DAT3
54 | PD2 | SDIO_CMD | CMD
53 | PC12 | SDIO_CK | CLK
39 | PC8 | SDIO_D0 | DAT0
40 | PC9 | SDIO_D1 | DAT1
↓
2:C:\Users{ユーザ名}\Documents\Arduino\libraries\SDforWioLTE\src\utility\Sd2Card.h
に記載されているコードを確認。
MOSI以外にもPin番号が異なる様子であったので、Sdcard.hのファイルに以下の修正を実施→上書き保存。
修正前
/** SPI chip select pin */
uint8_t const SD_CHIP_SELECT_PIN = 43; //10;
/** SPI Master Out Slave In pin */
uint8_t const SPI_MOSI_PIN = 50; //11;
/** SPI Master In Slave Out pin */
uint8_t const SPI_MISO_PIN = 40; //12;
/** SPI Clock pin */
uint8_t const SPI_SCK_PIN = 44; //13;
修正後
/** SPI chip select pin */
uint8_t const SD_CHIP_SELECT_PIN = 52;// 43; //10;
/** SPI Master Out Slave In pin */
uint8_t const SPI_MOSI_PIN = 54;// 50; //11;
/** SPI Master In Slave Out pin */
uint8_t const SPI_MISO_PIN = 39;// 40; //12;
/** SPI Clock pin */
uint8_t const SPI_SCK_PIN = 53;// 44; //13;
↓
3:再度Wio LTE JP Versionに以下のソースコードを書き込み→実行するも、変わらずSDカードの初期化の段階でERRORが返ってくる。
該当するソースコード
#include <WioLTEforArduino.h>
#include <SDforWioLTE.h>
#define FILE_NAME "test.txt"
WioCellular Wio;
void setup() {
delay(10000);
SerialUSB.begin(115200);
SerialUSB.println("");
SerialUSB.println("--- START ---------------------------------------------------");
SerialUSB.println("### I/O Initialize.");
Wio.Init();
SerialUSB.println("### Power supply ON.");
Wio.PowerSupplySD(true);
delay(10000);
SerialUSB.println("### Initialize SD card.");
if (!SD.begin()) {
SerialUSB.println("### ERROR! ###");
return;
}
File myFile;
SerialUSB.println("### Writing to "FILE_NAME".");
myFile = SD.open(FILE_NAME, FILE_WRITE);
if (!myFile) {
SerialUSB.println("### ERROR! ###");
return;
}
myFile.println("testing 1, 2, 3.");
myFile.close();
SerialUSB.println("### Reading from "FILE_NAME".");
myFile = SD.open(FILE_NAME);
if (!myFile) {
SerialUSB.println("### ERROR! ###");
return;
}
SerialUSB.println(FILE_NAME":");
while (myFile.available()) {
SerialUSB.write(myFile.read());
}
myFile.close();
SerialUSB.println("### Setup completed.");
}
void loop() {
}