ArduinoにSDカードモジュールを接続してデータを記録する方法

この記事で学習できること

  • SDデータモジュールにデータを保存する方法を学習します。
  • 何かを測ったらそのデータを確認するだけでなく保存したい場合があります。ArduinoをPCに接続していればデータをPCに転送して保存できますが、Arduino単体で動作させる場合はデータを保存する機能が必要になります。SDデータモジュールを接続してデータを保存します。

必要な部品は?

SDモジュール (microSDカードスロット)1個
Arduino UNO R31個
関連する製品の購入先は?
— 購入したSDモジュールの外観 —
  • SDモジュールのfritzingの部品データが無かったので作成しました。
— 作成したfritzing用部品データ —
Fritzingのデータを作成する記事は?

microSDカードスロットのピン配置は?

端子番号端子名 (Arduino側端子)端子概要
15V IN (5V)+5V電源入力(+4.0V~+6.5V)
23.3V ENABLE内部3.3Vレギュレータ ON/OFF
33.3V OUT内部3.3Vレギュレータ出力
4GND (GND)GND
5CLK (SCL:13)SDカード クロック(CLK)
6DAT (MISO:12)SDカード データ(DAT)
7CMD (MOSI:11)SDカード コマンド(CMD)
8CS (SS:10)SDカード チップセレクト(CS)
9SWSDカード カード検出スイッチ(SW 検出時GND)

回路図(配線図)は?

  • fritzingで描いた回路図(配線図)と実際の配線です。
— Arduino UNO R3とSDモジュールの接続図と実配図 —

SDカードにデータを書き込みます

  • SDカードスロットのSDカードににArduino で0から一つずつ数を増やした数字を書き込みます。シリアルモニタで表示することもできます。
— 作成されたCSVファイルとファイル内のデータ —
  • SDカードに[DATA_LOG.CSV]のファイルが作られます。
  • [DATA_LOG.CSV]のファイルには数字が書き込まれています。

スケッチのコードは?

  • SDカードスロットをArduino で動作させるために、2つのライブラリを使います。
    • SPI.h : SDカードとArduino UNO R3 間をSPI通信で接続します。
    • SD.h: SDカードのデータ書き込み・読み込み操作を行います。
//www.arduinomakesiteasy.com
//2022.4.28

//ライブラリインクルード
#include "SPI.h" 
#include "SD.h"

//SDカード設定
File myFile;                //クラス指定
const int chipSelect = 10;  //チップセレクトピン指定

//一般変数
int i;

void setup()
{
  Serial.begin(9600);

  //SDカードの初期化
  Serial.println("Initializing SD card...");
  
  if (!SD.begin(chipSelect)) {
    Serial.println("Initialization failed or does not exist");
    while (1);
  }
  Serial.println("Initialization done.");
  Serial.println();

  //一般変数の初期化
  i=0;
  
  delay(1000);  
  
  //シリアルログの最初の行に表示項目を表示する
  Serial.println("Count Start");

  //ログデータの最初の行に記録項目を記入する
  myFile = SD.open("DATA_LOG.csv", FILE_WRITE); //SDカードをオープンする 
  myFile.println("Count Start");
  myFile.close(); 	//SDカードをクローズする   
}

void loop()
{
  //シリアルログの表示
  Serial.println(i);
   
  //SDカードへの書き込み
  myFile = SD.open("DATA_LOG.csv", FILE_WRITE); 
  myFile.println(i);
  myFile.close();

  i+=1;
  
  // 測定間隔を設定する
  delay(1000);   
}
  • スケッチでSDカードにデータを保存するには以下の手順を繰り返します。

● ファイル名と書き込みモードを指定してファイルを開きます。以下は書き込みモードです。

myFile = SD.open("DATA_LOG.csv", FILE_WRITE); 

● ファイルにデータを書き込み、改行します。

myFile.println(i);

● ファイルを閉じます。

myFile.close();

まとめ

  • SDモジュールを使ってデータをSDカードに保存する方法が学習できました。シリアルモニタにデータを出力する操作に似た操作でデータが保存できました。

質問、誤植の指摘などありましたら。「問い合わせ」のページからお願いします。