Antworten:
Sie können die Sensordaten mit serial-lib auf die serielle Schnittstelle schreiben und ein kleines Verarbeitungsprogramm schreiben, das die Daten von der seriellen Schnittstelle liest und in eine Datei schreibt.
im arduino code initialisiere die serial lib in der setup methode
Serial.begin(9600);
und schreiben Sie Ihre Sensorwerte mit auf die serielle Schnittstelle
Serial.println(value);
in Ihrer Loop-Methode
Verwenden Sie auf der Verarbeitungsseite einen PrintWriter, um die von der seriellen Schnittstelle gelesenen Daten in eine Datei zu schreiben
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
}
Eine weitere Möglichkeit besteht darin, einen SD-Kartenleser / -schreiber zu verwenden und Ihre Datei auf eine SD-Karte zu schreiben. Wenn Sie mit dem Sammeln der Daten fertig sind, tauschen Sie die SD-Karten mit Ihrem Workstation-Computer aus. Mit diesem Ansatz können Sie Ihr Projekt unabhängig von einem Computer ausführen und große Datenmengen nichtflüchtig speichern.
Die einfachste Methode besteht darin, die serielle Bibliothek zu verwenden und an diese auszugeben. Anschließend können Sie die Ausgabe mit einem Terminalprogramm in eine Textdatei umwandeln. Hyperterminal ist unter Windows, Teraterm unter Linux und Z Term unter OS X verfügbar.
Melanie
Wenn Sie Sensordaten direkt in eine Datei auf Ihrem Computer schreiben möchten, ohne die Ausgabe aus dem Fenster des seriellen Monitors kopieren und einfügen zu müssen, versuchen Sie, den Datenstrom direkt von der seriellen Schnittstelle aus zu lesen (was der serielle Monitor sowieso tut) vermuten). Auf Mac / Linux machen Sie so etwas wie:
cat /dev/cu.usbmodem1d11
Gott weiß, wie das bei Windows-Computern aussieht.
cat
Befehl wahrscheinlich durch eine Art Skript ersetzen .
Sie können ein Python-Skript erstellen, um die serielle Schnittstelle zu lesen und die Ergebnisse in eine Textdatei zu schreiben:
##############
## 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);
Ich fand es einfacher und sicherer, ein Python-Skript zu verwenden. Normalerweise benutze ich diese, die auf der seriellen Bibliothek basiert . Es ist sehr üblich, auch das datetime-Modul zu verwenden, um die Zeitstempel hinzuzufügen:
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())])
Der nächste Schritt besteht darin, entweder das Ethernet-Shield oder so etwas wie ein WIZ810MJ-Board zu verwenden und Ihr Arduino über das Internet zu aktivieren. Sie können dann Daten darauf schreiben und sie an einen Webserver senden, um sie zu sortieren. Das mache ich in meinem Vivarium-Temperaturmonitor .