おおたfabさんでは電子工作初心者勉強会を定期的に開催しています。
今回はESP32でmicroSDを読み書きしてみます。これを利用して収集したデータをmicroSDに蓄積したり、あらかじめ作成したデータを読み込んで利用することもできるようになります。
材料
microSDカードスロット変換基板
microSDカード
microSDカードスロットの接続
ESP32-DEVKITCとmicroSDカードスロット変換基板の接続は以下のようにしました。microSDカードスロット基板は各社でピン名称が異なるようですので注意してください。
SparkFun マイクロSDカードスロット・ピッチ変換基板を使う場合は以下のように接続します。
| MicroSD Breakout | ESP32-DEVKITC |
|---|---|
| 1 CS | 4 (DigitalOut cs) |
| 2 DI | 23 (SPI mosi) |
| 3 VCC | +3.3V |
| 4 SCK | 18 (SPI sclk) |
| 5 GND | GND |
| 6 DO | 19 (SPI miso) |
| 7 CD | 未使用 |
SparkFun マイクロSDカードスロット・ピッチ変換基板を使った接続例です。

秋月電子のマイクロSDカードスロットDIP化キット \[105488\]を使う場合は以下のように接続します。
| MicroSD DIP化キット | ESP32-DEVKITC |
|---|---|
| 1 DAT2 | 未使用 |
| 2 CD/DAT3 | 4 (DigitalOut cs) |
| 3 CMD | 23 (SPI mosi) |
| 4 VDD | +3.3V |
| 5 CLK | 18 (SPI sclk) |
| 6 VSS | GND |
| 7 DAT0 | 19 (SPI miso) |
| 8 DAT1 | 未使用 |
| 9 SWB | 未使用 |
| 10 SWA | 未使用 |
サンプルプログラムの書き込み
Arduino IDEでmicroSD用のサンプルプログラムがSD_Test.inoが用意されているのでこれを使います。プログラムは以下の場所にあります。
ファイル→スケッチ例→ESP32 Dev Module用のスケッチ例→SD→SD_Test.ino
以下の手順で確認します。
SD_Test.inoを開いたらそのままコンパイルしてESP32 DevKit-Cに書き込みます。
microSDカードをセットしてリセットボタンを押し、シリアルモニタの表示を確認します。通信速度は115200baudにしてください。
microSDカードが読めない場合はCard Mount FailedあるいはNo SD card attachedと表示されます。microSDカードに問題がないようであれば、配線が正しいかを確認してください。
正常にmicroSDカードが使えれば、まずSD Card Type: でカードの種類が表示されます。
そのあとmicroSDカードの容量が表示され、ディレクトリとファイルの作成、読み書き、削除の操作が行われます。
シリアルモニタの表示例は以下のようになります。
| |

詳細はプログラムを参照してください。
まとめ
microSDのライブラリを使うことで簡単なプログラムでmicroSDカードの読み書きを行うことができました。サンプルプログラムのSD_Test.inoには基本的なmicroSDカードに対する操作が含まれていますので参考になると思います。
