SSブログ

Arduinoでデータロガーを作る【温度センサ+SDカード】 [Arduino]

前回までで、
 ・SDカードにファイルを読み書きする #ArduinoでSDカードにファイルを読み書きする
 ・温度を測定する #Arduinoで温度を測る【温度センサ】
ことができましたので、これを組み合わせて温度データをSDカードに書き込むデータロガーを作りたいと思います。


【配線図】
Arduino_温度センサデータロガー_ブレッドボード.jpg

【スケッチ】
ネットも参考にすると、もう少しスマートな記述もありますが、今の自分の理解レベルと少々乖離している感もあったので、まずはベタな書き方ですが載せてみます。
今後スキルが上がれば、改版したいと思っています。
①float(浮動小数点)形式、②String(文字列)形式の両方を記述していますが、下記では①をコメントアウトして、②を有効にしています。

/*******************************************************************************
SDカードデータロガー

++++++ note ++++++
・測定した温度をコンソール画面に表示およびSDカードにデータ保存するプログラム
・Arduino Pro Mini(3.3V, 8MHz)
・温度センサ LM61BIZ(測定範囲:-25℃~+85℃)
・①float(浮動小数点)形式でも②String(文字列)形式でも出力結果は同じ

*******************************************************************************/
#include 
#include 

File myFile;

const float Vcc = 3.3;                          //電源電圧(定数)
float temp_volt;                                //出力電圧
float temp_data;                                //温度


// the setup routine runs once when you press reset:初期化(電源投入/リセット時1回のみ実行)
void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);                           //9600bpsでシリアルポートを開く
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

//SDカードの初期設定
  Serial.print("Initializing SD card...");

  if (!SD.begin(10)) { //4→10に変更
    Serial.println("initialization failed!");
    while (1);
  }
  Serial.println("initialization done.");
}


// the loop routine runs over and over again forever: main loop
void loop() {
  int sensorValue = analogRead(A0);             //read the input on analog pin 0:
  temp_volt = Vcc * sensorValue / 1023;         //アナログピンから読み取った値を元の出力電圧値に戻す

// 出力電圧から温度データを作成
  temp_data = (temp_volt - 0.6) / 0.01;         //【データシート】T[℃] = (Vo - 0.6) / 0.01

// 温度データをコンソール画面に表示  ※2種類記載
/*
 ①float(浮動小数点)形式で表示
  Serial.print(temp_data);                      //温度を表示
  Serial.println("[℃]");                       //単位は℃
*/
// ②String(文字列)形式で表示
  String dataString = "";
  dataString += String(temp_data);
  dataString += "[℃]";
  Serial.println(dataString);                   //温度を表示、単位は℃


// SDカードに書き込む
// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
  myFile = SD.open("tempdata.txt", FILE_WRITE); //"tempdata.txt"ファイルを書き込み用に開く
                                                //戻り値がファイル情報になり、myFile に受け渡す
// ファイルに温度データを書き込み  ※2種類記載
// if the file opened okay, write to it:
  if (myFile) {
/*
 ①float(浮動小数点)形式で書き込み
    myFile.print(temp_data);
    myFile.println("[℃]");
*/
// ②文字列(String)で書き込み
    myFile.println(dataString);

// close the file:
    myFile.close();                             //ファイルを閉じる
  } else {
// if the file didn't open, print an error:
    Serial.println("error opening tempdata.txt");
  }

  delay(1000);                                 //1秒単位 ※delay():単位ms
}


上記でもデータは保存できたのですが、少々残念なことに、データを取得したタイムスタンプが無いんですねー。。。
なので、次はRTCを使ってタイムスタンプとセットでデータを保存できるようにしたいと思います。



profile_picture_40×40.JPG
nice!(0)  コメント(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Arduinoで温度を測るArduinoでRTCを使う ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。