SD Card Module JP

概要
Arduino SDカードモジュールは、Arduinoボードと互換性のあるSDカードインターフェースモジュールです。ArduinoボードでSDカードを読み書きできるようにし、さまざまなプロジェクトでデータ保存、ロギング、ファイル管理などに使用できます。
仕様
| 項目 | 内容 |
|---|---|
| 対応カード | Micro SDカード、Micro SDHCカード(高速カード対応) |
| 電源レベル変換 | 5Vおよび3.3Vシステムインターフェース対応 |
| 電源供給範囲 | 4.5V - 5.5V、3.3Vレギュレータ回路内蔵 |
| 通信インターフェース | 標準SPIインターフェース |
| ピン構成 | GND、VCC、MISO、MOSI、SCK、CS |
| 位置決めホール | M2スクリュー位置決めホール4つ(直径2.2mm) |
活用例
回路構成
| Arduinoピン番号 | SDカードモジュール |
|---|---|
| 4 | CS |
| 11 | MOSI |
| 12 | MISO |
| 13 | SCK |
| GND | GND |
| 5Vまたは3.3V | VCC |

SDカードのフォーマット
この例では、SDカードをクリーンな状態で開始するため、SDカードをフォーマットします。
SDカードリーダーを使用してPCに接続し、フォルダを右クリックしてフォーマットしてください。
(※ 必須ではありません!SDカードに重要なデータがある場合は、必ずバックアップを取ってください。)
1. SDカードに書き込み
SDカードに「GONGZIPSA」という文字列を記録する例です。内部にテキストファイルが作成されます。
#include <SD.h>
File myFile;
void setup() {
Serial.begin(9600);
// SDカード初期化
if (!SD.begin(4)) {
Serial.println("SDカード初期化失敗");
return;
}
// ファイル書き込み
myFile = SD.open("test.txt", FILE_WRITE);
if (myFile) {
Serial.println("test.txtファイル書き込み開始");
myFile.println("GONGZIPSA");
myFile.close();
Serial.println("ファイル書き込み完了");
} else {
Serial.println("ファイル書き込み失敗");
}
}
void loop() {
// 何も処理しない
}
15行目では、FILE_WRITEのほかにREADモードもあります:
| モード | 説明 |
|---|---|
FILE_READ
|
ファイルを読み取り専用で開きます。ファイルに書き込むことはできません。ファイルが存在しない場合は開けません。 |
FILE_WRITE
|
ファイルをライティングモードで開きます。ファイルが存在しない場合、新規作成されます。既存のファイルがある場合、そのファイルの末尾にデータを追加します。既存の内容は上書きされません。 |
実行結果

2. SDカードからファイルを読み取る
SDカード内のファイルを読み取ってシリアルモニタに出力する例です。
#include <SD.h>
File myFile;
void setup() {
Serial.begin(9600);
// SDカード初期化
if (!SD.begin(4)) {
Serial.println("SDカード初期化失敗");
return;
}
// ファイル読み取り
myFile = SD.open("test.txt");
if (myFile) {
Serial.println("test.txtファイル読み取り開始");
while (myFile.available()) {
Serial.write(myFile.read());
}
myFile.close();
Serial.println("ファイル読み取り完了");
} else {
Serial.println("ファイル読み取り失敗");
}
}
void loop() {
// 何も処理しない
}
実行結果

3. SDカード内のファイルリストの確認
SDカード内のファイルリストをシリアルモニタに出力する例です。
#include <SD.h>
void setup() {
Serial.begin(9600);
if (!SD.begin(4)) {
Serial.println("SDカード初期化失敗");
return;
}
Serial.println("ファイルリスト:");
listFiles(SD.open("/"));
}
void loop() {
// 何も処理しない
}
void listFiles(File dir) {
while (true) {
File entry = dir.openNextFile();
if (!entry) {
break; // もうファイルはない
}
Serial.print(entry.name());
if (entry.isDirectory()) {
Serial.println(" [ディレクトリ]");
listFiles(entry); // 再帰的にディレクトリ内のファイルを表示
} else {
Serial.print(" [ファイルサイズ: ");
Serial.print(entry.size());
Serial.println(" バイト]");
}
entry.close();
}
}
実行結果

4. センサーデータのログ記録
土壌湿度センサー(YL-69) センサーのデータを3秒ごとに記録し、SDカードに保存する例です。
#include <SPI.h>
#include <SD.h>
void setup() {
Serial.begin(9600);
// SDカード初期化
if (!SD.begin(4)) {
Serial.println("SDカード初期化失敗");
return;
}
// YL-69センサー初期化(アナログピン設定)
pinMode(A0, INPUT);
}
void loop() {
// YL-69センサーデータの読み取り
int moistureLevel = analogRead(A0);
// moisture.txtファイルをFILE_WRITEモードで開く
File myFile = SD.open("moisture.txt", FILE_WRITE);
if (myFile) {
// センサーデータをファイルに記録
myFile.print("Moisture Level: ");
myFile.println(moistureLevel); // ファイルにデータ追加
myFile.close(); // ファイルを閉じる
Serial.println("データ記録完了");
} else {
Serial.println("ファイル書き込み失敗");
}
delay(3000); // 3秒ごとにデータ記録
}
実行結果
シリアルモニタには「データ記録完了」と表示され、SDカードをPCに接続すると、以前作成したTEXT.txtファイルと現在記録したMOISTURE.txtファイルが存在します。MOISTURE.txtには土壌湿度センサー(YL-69)のデータが記録されているのが確認できます。

