電子工作

【Arduino】センサーのログをSDカードに書き込む

はじめに

Arduinoを使って、センサーから得た値をSDカードに記録していく方法を解説します。

前回の記事

コード

まずは今回使用したコードから。

#include <SD.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_BMP085.h>

Adafruit_BMP085 bmp;
const int CS = 4;

void setup() {
    bmp.begin(); //気圧センサ
    Serial.begin(9600); //シリアル通信開始
    Serial.println("Initializing SD.....");
    pinMode(10, OUTPUT);

    if (!SD.begin(CS)) {
        Serial.println("not found SD");
    } else {
        Serial.println("SD OK");
    }
}

void loop() {
    String dataStr = ""; //String型の宣言
    dataStr += String(double(bmp.readPressure()) / 100); //センサの値を文字列として結合

    File dataFile = SD.open("log.txt", FILE_WRITE);
    
    if (dataFile) {
        Serial.println(dataStr); //シリアルコンソールに値を表示
        dataFile.println(dataStr); //SDに文字列を書き込み
        dataFile.close();
    } else {
        Serial.println("File write error!");
    }
    delay(60000);
}

このコードを実行すると、log.txtというファイルをSDカード上に作成し、気圧(hpa)を書き込んでいきます。

インクルードするライブラリ

ArduinoからSDカードへのデータの読み書きを行うための「SD.h」というライブラリがあります。加えて、SDカードの書き込みにはSPI通信を利用しているので、SPI通信を行うための「SPI.h」というライブラリをインクルードする必要があります。

ライブラリ名説明
SD.hSDの読み書きを行う
SPI.hSPI通信を行う
Wire.hI2C通信を行う(センサー用)
Adafruit_BMP085.h気圧センサのライブラリ

SDカードの仕様