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

SDモジュールにデ-タを保存する方法は?

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

必要な部品は?

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

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

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

回路図(配線図)は?

  • Fritzingで描いた回路図(配線図)と実際の配線です。

SDカードスロットをどう使うの?

  • SDカードスロットのSDカードににArduino で0から一つずつ数を増やした数字を書き込みます。同時にシリアルモニタにその数字を表示させます。
  • 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);   
}
  • 作成したCSVファイルをPCで読むと作成時間が「2000/01/01 1:00」になっています。これはArduinoに時刻を記憶しておく機能が無いためです。RTC(実時間)モジュールを取り付けると時刻データが使えるのでファイルに時間データを付けることが出来ます。[Arduinoを使って時間データをSDカードに記録する方法]でこの機能をスケッチに加えています。

SDカードの機能を簡単に使用するには?

  • Arduino UNO R3のボードに色々なPCB基板を差し込んで機能を追加できるように設計されています。データロガーシールドを使うとブレッドボードにSDカードを取り付けて配線することなくデータを記録する機能を容易に追加できます。
  • ブレッドボードにSDカードを取り付けてる場合と。データロガーシールドを使う場合で回路は同じなのでスケッチはそのまま使えます。配線がなくなり、使用する場合に取り扱いが楽になります。
  • [Arduinoデータロガーシールドを使ってデータを記録しました]で製品を紹介しています。
関連する記事は?

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