arduinoでSDに保存するシリアルデータロガーを作った

※記事内に商品プロモーションを含む場合があります

気圧計にシリアル出力を付けたので ロギングしようと思い、
前買ったarduino unoでシリアルデータロガーを作りました。

arduino unoでシリアルデータロガー

arduino unoでシリアルデータロガー

SDカードへの保存は、
ArduinoでSDメモリカードを読み書きする
を参考にしました。

動作はシリアルデータを受信してSDカードのlog.txtに保存します。
ログをWindowsで開くと改行が出来てなかったりしたので
0x0Dは無視して、 0x0Aならprintln(“”);で改行コードを入れる様にしました。

SDカードスロットが無かったのでマイクロSDからSDカードに変換する
アダプタを使用しました。

5Vから3.3Vへのレベル変換は分圧抵抗で行いました。

今後は、arduino用シールドに実装してRTCモジュールを入れて
改行コード挿入時に時間などを挿入出来る様にしたいと思います。

スケッチ

現時点のスケッチです。
// 変数の定義
#include <SD.h>
// 初期化
void setup(){
// シリアルポートを9600 bps[ビット/秒]で初期化
Serial.begin(9600);

Serial.print(“Initializing SD card…”);
pinMode(10, OUTPUT);

if (!SD.begin(4)) {
Serial.println(“initialization failed!”);
return;
}
Serial.println(“initialization done.”);
}

// 繰り返し処理
void loop(){
char inputchar;
if (Serial.available() > 0) {
// シリアルポートより1文字読み込む
inputchar = Serial.read();
File myFile;
myFile = SD.open(“log.txt”, FILE_WRITE);
if (myFile) {
if(inputchar == 0x0A or inputchar == 0x0D){
if(inputchar == 0x0A){
Serial.print(“\n”);
myFile.println(“”);
myFile.close();
}
if(inputchar == 0x0D){
myFile.close();
}
}else{
Serial.print(inputchar);
myFile.print(inputchar);
myFile.close();
}
} else {
Serial.println(“error opening LOGFILE”);
}
}
}