ArduinoとSDカードモジュールによるデータロギング

Data Logging with Arduino and an SD Card Module

データロギングは、多くの重要な側面です 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.必要なライブラリのインストール

  1. 開ける Arduino ide.
  2. 行きます スケッチ→ライブラリを含める→ライブラリを管理します.
  3. 検索する 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および自動化プロジェクト.

コメントを残す

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.