はじめに
M5StickCにはマイクロSDスロットがありません。
スロットがあるM5StackかM5StickVを使った方が簡単ですが、
M5StickCでマイクロSDカードの読み書きをやってみました。
M5StickCにマイクロSDを接続する
SDカードはSPI接続でアクセスできるのでM5StickCのGPIOピンをSDカードに接続できるようにします。
マイクロSD変換アダプターを改造するとかでも作れると思いますが、
秋月のDIP化キットが¥300とかなので、そういうのを使った方が簡単です。
基本はこちらのサイトのを参考にしています。
https://lang-ship.com/blog/?p=721
SDカードの2~7のPINがSPIモードでの通信に使われるので、
それらをM5StickCのピンに割り当てればSDカードの読み書きができます。
HATポートにくわえ、Groveポートのピンまで使えば全て割り振ることもできますが、
GroveポートはI2CかUARTとして使いたいところですので、
SDの2番がCSで、常にこれを選択する状態にして構わないので10kΩとかの適当な抵抗でGNDにつなげます。
(ジャンパーでGND直結でもよいと思います)
SPIはMISOとMISO、MOSIとMOSIみたいな感じで
同じ名前のを接続すればいいので、普通は簡単なんですが、
SDカードのピンアサインを見るとCMDとかDAT0とかで
SPIの名称と異なるので、こちらのサイトを見ながらやってみました。
http://maicommon.ciao.jp/ss/Arduino_g/SDcard/index.htm
SDカードの2番(CD)をCS(実際はGND)
SDカードの3番(CMD)をMOSI
SDカードの4番のVDDは3V3
SDカードの5番のCLKはCLK
SDカードの6番のVSSはGND
SDカードの7番(DAT0)をMISO
と接続すればよいです。
SDカードの読み書きの方法
ArduinoライブラリのSD.hをincludeするだけです。
ただし、CSは接続してないので、-1を指定します。
#include "SD.h"
SPI.begin(0, 36, 26, -1);
以上の様に初期化すれば、M5Stack等と同様の方法でSDカードの読み書きができます。