Arduinoセンサーデータをテキストファイルに保存する


34

センサーから取得したデータをコンピューター上のテキストファイルに保存するにはどうすればよいですか?

回答:


30

serial-libを使用してセンサーデータをシリアルポートに書き込み、シリアルポートからデータを読み取り、ファイルに書き込む小さな処理プログラムを作成できます。

arduinoコードで、setupメソッドでシリアルライブラリを初期化します

Serial.begin(9600);

センサーの値をシリアルインターフェイスに書き込みます

Serial.println(value);

ループメソッドで

処理側では、PrintWriterを使用して、シリアルポートから読み取ったデータをファイルに書き込みます

import processing.serial.*;
Serial mySerial;
PrintWriter output;
void setup() {
   mySerial = new Serial( this, Serial.list()[0], 9600 );
   output = createWriter( "data.txt" );
}
void draw() {
    if (mySerial.available() > 0 ) {
         String value = mySerial.readString();
         if ( value != null ) {
              output.println( value );
         }
    }
}

void keyPressed() {
    output.flush();  // Writes the remaining data to the file
    output.close();  // Finishes the file
    exit();  // Stops the program
}

「処理側」のコードはどこに行くべきですか-同じarduinoコードまたは別のcスクリプトで?
ウラドカサッハ

1
別の処理スクリプト-処理はCにコンパイルされず、Javaにコンパイルされます
ニコラウスグラドウォル

@UladKasach「処理」は、マルチプラットフォームのプログラミング環境です。実際、それは世界で最も愚かな名前を持つプログラミング環境です。
スコットサイド

9

さらに別のオプションは、SDカードリーダー/ライターを使用して、ファイルをSDカードに書き込むことです。データの収集が完了したら、SDカードをワークステーションコンピューターと交換します。このアプローチにより、コンピューターから切断されたプロジェクトを実行でき、大量のデータの不揮発性ストレージが提供されます。


6

プログラムgobetwinoは、最小限の労力でArduinoのセンサー値をテキストファイルまたはスプレッドシートに記録します。また、コンピューター上のものを自動化したり、タイムスタンプを追加したりすることができます(したがって、それらをarduinoにプログラムする必要はありません)。

代替テキスト


5

最も簡単な方法は、シリアルライブラリとその出力を使用することです。その後、ターミナルプログラムを使用して、出力をテキストファイルにキャプチャできます。ハイパーターミナルはWindows、TeratermはLinux、Z TermはOS Xで利用可能です。

メラニー


4

シリアルモニターウィンドウから出力をコピーして貼り付けることなく、センサーデータをコンピューターのファイルに直接書き込みたい場合は、シリアルポートから直接データストリームを読み取ってみてください(シリアルモニターはとにかく、容疑者)。Mac / Linuxでは次のようにします。

cat /dev/cu.usbmodem1d11 

神は、Windowsマシンで何が同等であるかを知っています。


1
おそらく、各センサーの読み取り値にタイムスタンプを関連付けたいと思うでしょう。その場合、おそらくそのcatコマンドを何らかのスクリプトに置き換える必要があります。
garageàtrois

3

Pythonスクリプトを作成して、シリアルポートを読み取り、結果をテキストファイルに書き込むことができます。

##############
## Script listens to serial port and writes contents into a file
##############
## requires pySerial to be installed 
import serial

serial_port = '/dev/ttyACM0';
baud_rate = 9600; #In arduino, Serial.begin(baud_rate)
write_to_file_path = "output.txt";

output_file = open(write_to_file_path, "w+");
ser = serial.Serial(serial_port, baud_rate)
while True:
    line = ser.readline();
    line = line.decode("utf-8") #ser.readline returns a binary, convert to string
    print(line);
    output_file.write(line);

1

Pythonスクリプトを使用する方が簡単で安全であることがわかりました。私は通常、シリアルライブラリに基づいてこれを使用します。datetimeモジュールを使用してタイムスタンプを追加することも非常に一般的です。

import serial
from datetime import datetime

sensor = "DH11"
serial_port = '/dev/ttyACM0'
baud_rate = 9600
path = "%s_LOG_%s.txt" % (str(datetime.now()), sensor)
ser = serial.Serial(serial_port, baud_rate)
with open(path, 'w+') as f:
    while True:
        line = ser.readline()
        f.writelines([line.strip(), " t = %s \n " % (datetime.now())])

0

次のステップでは、イーサネットシールドまたはWIZ810MJボードなどを使用して、arduinoをインターネットで有効にします。その後、そこにデータを書き込んで、それを送信して、照合するWebサーバーに送信できます。私は、飼育環境温度モニターでこれを行います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.