Risposte:
è possibile scrivere i dati del sensore sulla porta seriale usando serial-lib e scrivere un piccolo programma di elaborazione che legge i dati dalla porta seriale e li scrive in un file.
nel codice arduino initalizzare la libreria seriale nel metodo di installazione
Serial.begin(9600);
e scrivere i valori del sensore sull'interfaccia seriale utilizzando
Serial.println(value);
nel tuo metodo loop
sul lato elaborazione utilizzare un PrintWriter per scrivere i dati letti dalla porta seriale in un file
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
}
Un'altra opzione è quella di utilizzare un lettore / scrittore di schede SD e scrivere il file su una scheda SD. Al termine della raccolta dei dati, sostituire le schede SD con il computer della workstation. Questo approccio ti consentirà di eseguire il progetto disconnesso da un computer e fornirà l'archiviazione non volatile di grandi quantità di dati.
Il metodo più semplice consiste nell'utilizzare la libreria seriale e produrre l'output. È quindi possibile acquisire l'output in un file di testo utilizzando un programma terminale. Hyperterminal è disponibile su Windows, Teraterm su Linux e Z Term su OS X.
Melanie
Se vuoi scrivere i dati del sensore direttamente su un file sul tuo computer senza dover copiare e incollare l'output dalla finestra del monitor seriale, prova a leggere il flusso di dati direttamente dalla porta seriale (che è comunque ciò che fa il monitor seriale, I sospettare). Su mac / linux fai qualcosa del tipo:
cat /dev/cu.usbmodem1d11
Dio sa qual è l'equivalente su macchine Windows.
cat
comando con una sorta di script.
È possibile creare uno script Python per leggere la porta seriale e scrivere i risultati in un file di testo:
##############
## 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);
Ho trovato più facile e sicuro usare uno script Python. Di solito uso questo basato sulla libreria seriale . È molto comune utilizzare anche il modulo datetime per aggiungere i timestamp:
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())])
Il prossimo passo è usare lo scudo ethernet o qualcosa come una scheda WIZ810MJ e Internet per abilitare il tuo arduino. È quindi possibile scrivere i dati su di esso e inviarli per dire un server Web per fascicolarli. Lo faccio nel mio monitor della temperatura del vivarium .