データロギングは、多くの重要な側面です IoT、環境監視、およびセンサーベースのプロジェクト。で ArduinoとSDカードモジュール、 あなたはできる センサーデータ、タイムスタンプ、その他の測定値を保存します 将来の分析のため。このガイドでは、方法を示します SDカードモジュールをArduinoに接続します、データを書き込み、読み取り、一般的な問題をトラブルシューティングします。
1。必要なもの
✅ Arduino委員会 (UNO、メガ、ナノなど)
✅ マイクロSDカードモジュール(SPIベース)
✅ microSDカード(FAT32フォーマット、2GB〜32GB推奨)
✅ ジャンパーワイヤ
✅ センサー(オプション、例:DHT11、BMP280など)
🔹 注記: SDモジュールは、Arduinoを使用して通信します SPI(シリアル周辺インターフェイス).
2。SDカードモジュールをArduinoに配線します
SDカードモジュールピン | Arduino UNO PIN | Arduino Mega Pin |
---|---|---|
VCC | 5V | 5V |
GND | GND | GND |
味噌 | 12(spi miso) | 50(spi miso) |
モシ | 11(spi mosi) | 51(spi mosi) |
SCK | 13(SPI SCK) | 52(SPI SCK) |
CS(チップセレクト) | 10(spi cs) | 53(spi cs) |
3.必要なライブラリのインストール
- 開ける Arduino ide.
- 行きます スケッチ→ライブラリを含める→ライブラリを管理します.
- 検索する SD インストールします ArduinoによるSDライブラリ.
4。SDカードの初期化(SDモジュールが機能するかどうかをテスト)
以下を使用してください 基本的なテストコード SDモジュールが機能しているかどうかを確認するには:
#include <SPI.h>
#include <SD.h>
const int chipSelect = 10; // Set CS pin for SD card
void setup() {
Serial.begin(115200);
Serial.print("Initializing SD card...");
if (!SD.begin(chipSelect)) {
Serial.println("SD card initialization failed!");
return;
}
Serial.println("SD card is ready.");
}
void loop() {
// Nothing here
}
このコードがすること:
✔ 初期化 SDモジュール.
✔ プリント 「SDカードの準備ができました」 検出された場合。
✔ プリント 「SDカードの初期化は失敗しました!」 エラーがある場合。
🔹 トラブルシューティング:
✅ SDカードがあることを確認してください FAT32フォーマット.
✅ 確保する 正しい配線 (味o、MOSI、SCK、およびCS)。
✅ 別のものを試してください CSピン(たとえば、10の代わりに4) コードを更新します。
5。SDカードへのデータの書き込み
この例 ファイルを作成します(data.txt
)センサーの測定値を書き込みます.
#include <SPI.h>
#include <SD.h>
const int chipSelect = 10;
void setup() {
Serial.begin(115200);
if (!SD.begin(chipSelect)) {
Serial.println("SD card initialization failed!");
return;
}
File dataFile = SD.open("data.txt", FILE_WRITE);
if (dataFile) {
dataFile.println("Hello, this is a test log!");
dataFile.close();
Serial.println("Data written to SD card.");
} else {
Serial.println("Failed to open file.");
}
}
void loop() {
// Nothing here
}
このコードがすること:
✔ 作成または開く data.txt
.
✔ 書いている 「こんにちは、これはテストログです!」 ファイルに。
✔ 書き込み後にファイルを閉じます。
🔹 ファイル処理機能:
✔ SD.open("filename.txt", FILE_WRITE);
→書き込みファイルを開く。
✔ dataFile.println("Text");
→ファイルにデータを書き込みます。
✔ dataFile.close();
→ファイルを閉じてデータを保存します。
6. SDカードからデータを読む
このコードを使用します SDカードのデータを読み取り、表示します.
#include <SPI.h>
#include <SD.h>
const int chipSelect = 10;
void setup() {
Serial.begin(115200);
if (!SD.begin(chipSelect)) {
Serial.println("SD card initialization failed!");
return;
}
File dataFile = SD.open("data.txt");
if (dataFile) {
Serial.println("Reading file...");
while (dataFile.available()) {
Serial.write(dataFile.read()); // Print file content
}
dataFile.close();
} else {
Serial.println("Failed to open file.");
}
}
void loop() {
// Nothing here
}
このコードがすること:
✔ 開く data.txt
読むために。
✔ ファイルの内容をに印刷します シリアルモニター.
🔹 ヒント: ファイルを確認してください 読む前に存在します エラーを避けるため。
7。SDカードへのロギングセンサーデータ
この例はログを記録します DHT11センサーからの温度と湿度のデータ.
必要なコンポーネント
✅ DHT11温度および湿度センサー
✅ DHTライブラリ(Adafruit DHTセンサーライブラリ)
DHT11センサーの配線
DHT11ピン | Arduino Pin |
---|---|
VCC | 5V |
GND | GND |
データ | 2 |
コード:DHT11データをSDカードに記録します
#include <SPI.h>
#include <SD.h>
#include <DHT.h>
#define DHTPIN 2 // Pin connected to DHT sensor
#define DHTTYPE DHT11 // Define sensor type (DHT11 or DHT22)
DHT dht(DHTPIN, DHTTYPE);
const int chipSelect = 10;
void setup() {
Serial.begin(115200);
dht.begin();
if (!SD.begin(chipSelect)) {
Serial.println("SD card initialization failed!");
return;
}
}
void loop() {
float temp = dht.readTemperature();
float humidity = dht.readHumidity();
if (isnan(temp) || isnan(humidity)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
File dataFile = SD.open("log.txt", FILE_WRITE);
if (dataFile) {
dataFile.print("Temperature: ");
dataFile.print(temp);
dataFile.print(" °C, Humidity: ");
dataFile.print(humidity);
dataFile.println(" %");
dataFile.close();
} else {
Serial.println("Failed to write to SD card.");
}
Serial.print("Logged: Temp = ");
Serial.print(temp);
Serial.print(" °C, Humidity = ");
Serial.println(humidity);
delay(2000); // Log every 2 seconds
}
このコードがすること:
✔ 読みます 温度と湿度 から DHT11センサー.
✔ データをログに記録します log.txt
SDカードで。
✔ 値を印刷します シリアルモニター.
8。トラブルシューティングのヒント
問題: SDカードは検出されませんか?
✅ SDカードがそうであることを確認してください FAT32フォーマット.
✅ ダブルチェック 味o、MOSI、SCK、およびCS配線.
✅ 試す 別のSDカード (一部のカードは互換性がありません)。
問題: データは節約されませんか?
✅ いつも ファイルを閉じます 使用 dataFile.close();
.
✅ 確保する 十分な保管スペース SDカードで利用できます。
9。実用的なアプリケーション
✔ 気象監視システム - ログ温度、湿度、および空気圧。
✔ エネルギー監視 - 記録 電圧と電流 時間の経過とともに読み取り。
✔ GPS追跡 - 店 緯度と経度 GPSモジュールからのデータ。
✔ イベントロギング - レコードセンサートリガーまたはボタンプレス。
10。結論
を使用して Arduinoを備えたSDカードモジュール 素晴らしい方法です センサーデータ、ログイベントを保存するか、ポータブルデータロガーの作成。と SPI通信、簡単にできます ファイルの読み取りと書き込み、それを理想的にします IoTおよび自動化プロジェクト.