一覧へ   前へ<<  >>次へ


温度測定の結果をSDカードに記録 (2017年09月10日更新)

イーサネットシールド2 (Arduino Ethernet Shield 2)

秋月電子で購入しました。

これはネットワークに接続できるようにすると共に、SDカードのスロットがあり、データを記録することができます。

まずはここで勉強しながら試してみます。

http://deviceplus.jp/hobby/entry022/
温度測定とSDカードへのカキコミプログラム
前述のサイトのプログラムを参考にして、温度測定結果をSDカードに書き込むプログラムを作成して、試してみました。


#include <SPI.h>
#include <SD.h>
const int chipSelect = 4;
int analogPin = 0; // A0にて抵抗にかかる電圧を測定
int val = 0;
float Vt;
float Rt;
float T0;
float R0;
float B;
float Temp;

void setup()
{
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.print("Initializing SD card...");
pinMode(4, OUTPUT);
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
return;
}
Serial.println("card initialized.");
}

void loop()
{
delay(1000);

val = analogRead(analogPin);
Vt = val * 5 / 1023.0;
Rt = Vt * 5000 / ( 5.0 - Vt);
T0 = 25;
R0 = 10000;
B = 3380;
//温度センサーの値を摂氏度℃に変換
Temp = 1/(log(Rt / R0) / B + 1/(273+T0))-273 ;

String dataString = "";
dataString += String(Temp);
dataString += ",";

File dataFile = SD.open("DATALOG.TXT", FILE_WRITE); //ファイル名

if (dataFile) { //SDカードのファイルが無事開けたら(ない場合は新規作成)
dataFile.println(dataString); //dataStringに入っている内容を書き込み
dataFile.close(); //書き込み後ファイルを閉じる
Serial.println(dataString);
}
else {
Serial.println("error opening datalog.txt");
}
}
結果

温度計はPCの放熱口においてしばらく放置、USBを取り外してSDカードと取り出し、PCで覗いてみたところ、DATALOG.TXTというファイルが生成されており、以下のように記録が残っていました。

時刻の記録も欲しいですね。。。

33.30,
33.52,
33.63,
33.63,
33.41,
33.86,
34.76,
35.44,
36.68,
37.81,
38.94,
39.51,
40.88,
41.34,
42.14,
42.14,
RTC
Real Time Clock というものを購入して、aruduinoに接続し、プログラムを組んで、時計機能を持たせることができる模様。

検索するとサイトが色々でてくるが、どこも読みにくく、理解しにくい。。。

ここの説明はシンプルそうなので、メモを残しておきます。

http://www.petitmonte.com/robot/howto_make_watch.html