esp-wroom-02(esp8266)でmicroSDカードを使ってみた

 

・目的

esp8266でmicroSDを使ってみる。microSDは動作電圧が3.3V

なのでロジックレベル変換をしなくていいんで楽。

 

・使用したもの

esp-wroom-02(esp8266)

microSDdip化キット

       http://akizukidenshi.com/catalog/g/gK-05488/

抵抗10kΩ4個

3端子レギュレータ3.3V500mA (NJU722333)

単三4本

ジャンパワイヤ

 

・方法

(1)回路組み立て

SPI通信でesp8266とmicroSDを接続する。

esp8266がマスターでmicroSDがスレーブだ。

 

microSD側のピン配置は以下の図。

microSD側で使用するピンはCD/DAT3,CMD,VDD,CLK,

VSS,DAT0。

VDDは3.3V電源にVSSはGNDに接続。

カード検出スイッチは今回使わない。

f:id:shangtian:20180213163518p:plain

出典:http://akizukidenshi.com/download/ds/akizuki/K-5488_AE-MICRO-SD-DIP.pdf

 

esp8266のピンアウトを示した。

SPI通信でmicroSDとやりとりするので

紫色のピンを使う。

f:id:shangtian:20180214172036p:plain

出典:http://eleclog.quitsq.com/2015/08/esp-wroom-02.html

 

esp8266とmicroSDの接続するピンを以下の表に示した。

esp8266 microSD
CLK(IO14) CLK
MISO(IO12) DATA0
MOSI(IO13) CMD
CS(IO15) CD/DAT3

 

3端子レギュレータNJU72233で3.3Vを供給する。

またIO15,IO2,IO0への配線はesp8266のFlash boot moode

で起動するため。

f:id:shangtian:20180213155121p:plain

f:id:shangtian:20180213154825j:plain

 

(2)スケッチ

 

SPI通信を使うのでSD.hだけでなく

SPI.hもインクルードする。

CS(チップセレクト)ピンを15ピンに

設定したが、他のピンであっても大丈夫だ。

 

CS(Chip Select)ピンはSS(Slave select)ピンと表記される

こともある。このピンはマスタ側(esp8266)が通信相手(microSD)

を選択するときに使う。マスタ側は通信する相手のCSピンのみを

Lowにして通信を開始する。つまり通信中だけCSがLowでそれ以外は

Highになるように設定する。setup()関数の最初でcsピンをOUTPUT

でHIGHに設定しておく。

 

#include <SD.h>
#include <SPI.h>

File myFile;
const int cs = 15;

void setup() {
  pinMode(cs,OUTPUT);
  digitalWrite(cs,HIGH);
  Serial.begin(9600);
  while(!Serial) {
    ;
  }
  Serial.println("Initializing SD card...");
  
  if(!SD.begin(cs)) {
    Serial.println("initialization failed");
    return;
  }
  Serial.println("initialaization done.");

  if(SD.exists("example.txt")) 
    Serial.println("example.txt exists.");
  else
    Serial.println("example.txt dosen't exist.");

  Serial.println("Creating example.txt");
  myFile = SD.open("example.txt", FILE_WRITE);


  if(myFile){
     Serial.println("writing ....");
     myFile.println("12345abcd");
     myFile.close();
  }else 
     Serial.println("error opening examole.txt");
  myFile = SD.open("example.txt");
  if(myFile){
    Serial.println("example.txt :");  

    while(myFile.available()) 
       Serial.write(myFile.read());
    myFile.close();
  }else
     Serial.println("error opening example.txt");
}

void loop() {
  
}

 

・実行結果

以下の写真が実行結果

ちゃんと動いてますな 

f:id:shangtian:20180214181726p:plain

 

 

参考文献

「SPI」の解説 - しなぷすのハード製作記

SPI通信で、PICと加速度センサを「お話」させてみた | 技ラボ

SDカードコネクタのピン配列: マイコンな日曜