プログラミング関係の記事はどうやら2024年ほどで業界全体が止まっているように思う。
それはもちろんAIの影響というわけです。
ところがまだまだ需要はあって、誰かの経験や、手順などの記事を筆者も見返したりするわけですが、このブログもほとんどは自分のためのメモといった感じ。
M5Stack(以下M5)ではmicroSDカードが使えるわけですが、iniファイルがどうやら読み込まれていないようで、トラブってました。
SDが読み込まれているかチェックするためのコードをGPTにお願いしました。
ちなみに、何度もエラー。
原因はボードの選択ミスでした。
M5Stack-Core-ESP32を選択、ボードを変えると、速度ももちろん変えてください。

速度は115200じゃないと、入らなかったりします。
#include <M5Unified.h>
#include <SD.h>
/**
* @brief SDカードのマウント確認スケッチ
* 起動時にSDがマウントされているかを画面に表示
*/
void setup() {
auto cfg = M5.config();
cfg.output_power = true; // 5Vライン供給
M5.begin(cfg);
M5.Display.setRotation(1);
M5.Display.setTextSize(2);
M5.Display.setTextColor(WHITE, BLACK);
M5.Display.setTextDatum(MC_DATUM);
M5.Display.fillScreen(BLACK);
M5.Display.drawString("Checking SD Card...", 160, 60);
// SDカードマウントテスト
if (SD.begin(GPIO_NUM_4, SPI, 25000000)) { // M5Stack Basic は CS = 4
M5.Display.drawString("✅ SD Card Mounted!", 160, 100);
} else {
M5.Display.drawString("❌ SD Mount Failed", 160, 100);
}
}
void loop() {
// 何もしない
}
このコードを書き込めば、SDカードの状態を画面中央に表示できます。
SD Card Mountedが表示され、iniファイルの作成に進みます。
iniファイルはいろいろ仕込んでおくと、管理もしやすくて、プログラムコードそのものもシンプルになっていくため、デバッグもしやすい。
非常に便利なシステムですね。
あとは、INIファイルの中身をダンプ表示させるコード。
#include <M5Unified.h>
#include <SD.h>
const char* iniPath = "/config.ini"; // ルート直下のファイル名
void setup() {
auto cfg = M5.config();
cfg.output_power = true;
M5.begin(cfg);
M5.Display.setRotation(1);
M5.Display.setTextSize(2);
M5.Display.setTextColor(WHITE, BLACK);
M5.Display.fillScreen(BLACK);
M5.Display.setCursor(10, 30);
// ★ CS=4 を明示 ★
if (!SD.begin(GPIO_NUM_4, SPI, 25000000)) {
M5.Display.println("SD mount failed");
return;
}
M5.Display.println("SD mounted");
File f = SD.open(iniPath);
if (!f) {
M5.Display.println("INI not found");
return;
}
M5.Display.println("INI found!");
// 1行目だけ表示
String line = f.readStringUntil('\n');
f.close();
M5.Display.setCursor(10, 90);
M5.Display.println(line);
}
void loop() {}
これで表示できればOK!
ちなみに超重要なことが、M5Stack Basic/Core では SD-CS = GPIO 4 が正解であるということ。
引数なしの SD.begin()
にすると ボード定義側のデフォルト CS(機種によって 5 や 15)が選ばれるため、マウント失敗になります。
そのため、コード内部で、SD.begin(GPIO_NUM_4を明示してあげると確実です。

音楽家:朝比奈幸太郎
神戸生まれ。2025 年、40 年近く住んだ神戸を離れ北海道・十勝へ移住。
録音エンジニア五島昭彦氏より金田式バランス電流伝送 DC 録音技術を承継し、
ヴィンテージ機材で高品位録音を実践。
ヒーリング音響ブランド「Curanz Sounds」でソルフェジオ周波数音源を配信。
“音の文化を未来へ”届ける活動を展開中。