Table of Contents
この記事で学習できること
- SDデータモジュールにデータを保存する方法を学習します。
- 何かを測ったらそのデータを確認するだけでなく保存したい場合があります。ArduinoをPCに接続していればデータをPCに転送して保存できますが、Arduino単体で動作させる場合はデータを保存する機能が必要になります。SDデータモジュールを接続してデータを保存します。
必要な部品は?
| SDモジュール (microSDカードスロット) | 1個 |
| Arduino UNO R3 | 1個 |
関連する製品の購入先は?
- Amazon で [Arduino用のUNO R3 最終版スタータキット]を購入しました。Arduino UNO R3が含まれます。ブレッドボードや多くの部品が付属しており、それぞれを単体で購入するよりお得です。
- 秋月電子通商 で [microSDカードスロット レベルシフタ付きブレークアウト基板キット]を購入しました。

- SDモジュールのfritzingの部品データが無かったので作成しました。

Fritzingのデータを作成する記事は?
- [Fritzing の部品データを作る方法] — Arduinoと相性の良いCADソフト fritzing用のデータを作成します
microSDカードスロットのピン配置は?
| 端子番号 | 端子名 (Arduino側端子) | 端子概要 |
| 1 | 5V IN (5V) | +5V電源入力(+4.0V~+6.5V) |
| 2 | 3.3V ENABLE | 内部3.3Vレギュレータ ON/OFF |
| 3 | 3.3V OUT | 内部3.3Vレギュレータ出力 |
| 4 | GND (GND) | GND |
| 5 | CLK (SCL:13) | SDカード クロック(CLK) |
| 6 | DAT (MISO:12) | SDカード データ(DAT) |
| 7 | CMD (MOSI:11) | SDカード コマンド(CMD) |
| 8 | CS (SS:10) | SDカード チップセレクト(CS) |
| 9 | SW | SDカード カード検出スイッチ(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);
}- スケッチでSDカードにデータを保存するには以下の手順を繰り返します。
● ファイル名と書き込みモードを指定してファイルを開きます。以下は書き込みモードです。
myFile = SD.open("DATA_LOG.csv", FILE_WRITE); ● ファイルにデータを書き込み、改行します。
myFile.println(i);● ファイルを閉じます。
myFile.close();- [Arduinoにjpegカメラを付けて一定間隔で撮影した画像をSDカードに保存しました]–jpegカメラの画像データを保存します。
- [Arduinoに接続したGPS受信機の測位データをSDカードに記録しました]–GPSの位置情報を保存します。
- [温度センサーとRTC(実時間)モジュールをI2Cで接続してデータをSDカードに保存しました ]–温度センサのデータを保存します。
- [Arduinoを使って距離と時間データをSDカードに記録しました] — 距離データを保存します。
- [Arduinoデータロガーシールドを使ってデータを記録しました]–データロガーシールド(SDカードモジュールが含まれています)を使ってデータを保存します。
まとめ
- SDモジュールを使ってデータをSDカードに保存する方法が学習できました。シリアルモニタにデータを出力する操作に似た操作でデータが保存できました。
質問、誤植の指摘などありましたら。「問い合わせ」のページからお願いします。

