ESP32でmicroSDカードを読み書きしてみました(おおたfab 電子工作初心者勉強会)

ESP32

おおたfabさんでは電子工作初心者勉強会を定期的に開催しています。

今回はESP32でmicroSDを読み書きしてみます。これを利用して収集したデータをmicroSDに蓄積したり、あらかじめ作成したデータを読み込んで利用することもできるようになります。

材料

microSDカードスロットの接続

ESP32-DEVKITCとmicroSDカードスロット変換基板の接続は以下のようにしました。microSDカードスロット基板は各社でピン名称が異なるようですので注意してください。

SparkFun マイクロSDカードスロット・ピッチ変換基板を使う場合は以下のように接続します。

MicroSD BreakoutESP32-DEVKITC
1 CS4 (DigitalOut cs)
2 DI23 (SPI mosi)
3 VCC+3.3V
4 SCK18 (SPI sclk)
5 GNDGND
6 DO19 (SPI miso)
7 CD未使用

SparkFun マイクロSDカードスロット・ピッチ変換基板を使った接続例です。

秋月電子のマイクロSDカードスロットDIP化キット [105488]を使う場合は以下のように接続します。

MicroSD DIP化キットESP32-DEVKITC
1 DAT2未使用
2 CD/DAT34 (DigitalOut cs)
3 CMD23 (SPI mosi)
4 VDD+3.3V
5 CLK18 (SPI sclk)
6 VSSGND
7 DAT019 (SPI miso)
8 DAT1未使用
9 SWB未使用
10 SWA未使用

サンプルプログラムの書き込み

Arduino IDEでmicroSD用のサンプルプログラムがSD_Test.inoが用意されているのでこれを使います。プログラムは以下の場所にあります。

ファイル→スケッチ例→ESP32 Dev Module用のスケッチ例→SD→SD_Test.ino

以下の手順で確認します。

  1. SD_Test.inoを開いたらそのままコンパイルしてESP32 DevKit-Cに書き込みます。
  2. microSDカードをセットしてリセットボタンを押し、シリアルモニタの表示を確認します。通信速度は115200baudにしてください。
  3. microSDカードが読めない場合はCard Mount FailedあるいはNo SD card attachedと表示されます。microSDカードに問題がないようであれば、配線が正しいかを確認してください。
  4. 正常にmicroSDカードが使えれば、まずSD Card Type: でカードの種類が表示されます。
  5. そのあとmicroSDカードの容量が表示され、ディレクトリとファイルの作成、読み書き、削除の操作が行われます。

シリアルモニタの表示例は以下のようになります。

SD Card Type: SDHC
SD Card Size: 14804MB
Listing directory: /
  DIR : System Volume Information
Creating Dir: /mydir
Dir created
Listing directory: /
  DIR : System Volume Information
  DIR : mydirRemoving Dir: /mydir
Dir removed
Listing directory: /
  DIR : System Volume Information
Listing directory: /System Volume Information
  FILE: WPSettings.dat  SIZE: 12
  FILE: IndexerVolumeGuid  SIZE: 76
Writing file: /hello.txt
File written
Appending to file: /hello.txt
Message appended
Reading file: /hello.txt
Read from file: Hello World!
Deleting file: /foo.txt
Delete failed
Renaming file /hello.txt to /foo.txt
File renamed
Reading file: /foo.txt
Read from file: Hello World!
Failed to open file for reading
1048576 bytes written for 2977 ms
Total space: 14796MB
Used space: 1MB

詳細はプログラムを参照してください。

まとめ

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

タイトルとURLをコピーしました