回答:
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
}
シリアルモニターウィンドウから出力をコピーして貼り付けることなく、センサーデータをコンピューターのファイルに直接書き込みたい場合は、シリアルポートから直接データストリームを読み取ってみてください(シリアルモニターはとにかく、容疑者)。Mac / Linuxでは次のようにします。
cat /dev/cu.usbmodem1d11
神は、Windowsマシンで何が同等であるかを知っています。
cat
コマンドを何らかのスクリプトに置き換える必要があります。
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);
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())])
次のステップでは、イーサネットシールドまたはWIZ810MJボードなどを使用して、arduinoをインターネットで有効にします。その後、そこにデータを書き込んで、それを送信して、照合するWebサーバーに送信できます。私は、飼育環境温度モニターでこれを行います。