Respostas:
você pode gravar os dados do sensor na porta serial usando serial-lib e gravar um pequeno programa de processamento que lê os dados da porta serial e os grava em um arquivo.
no código do arduino, inicialize a lib serial no método de instalação
Serial.begin(9600);
e escreva os valores do seu sensor na interface serial usando
Serial.println(value);
no seu método de loop
no lado do processamento, use um PrintWriter para gravar os dados lidos da porta serial em um arquivo
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
}
Outra opção é usar um leitor / gravador de cartão SD e gravar seu arquivo em um cartão SD. Quando terminar de coletar dados, troque os cartões SD com o computador da estação de trabalho. Essa abordagem permitirá que você execute seu projeto desconectado de um computador e fornecerá armazenamento não volátil de grandes quantidades de dados.
O método mais simples é usar a biblioteca Serial e gerar saída para isso. Você pode capturar a saída em um arquivo de texto usando um programa de terminal. O Hyperterminal está disponível no Windows, Teraterm no Linux e Z Term no OS X.
Melanie
Se você deseja gravar dados do sensor diretamente em um arquivo no seu computador sem precisar copiar e colar a saída da janela do monitor serial, tente ler o fluxo de dados diretamente da porta serial (que é o que o monitor serial faz de qualquer maneira, eu suspeito). No mac / linux, faça algo como:
cat /dev/cu.usbmodem1d11
Deus sabe o que é equivalente em máquinas Windows.
cat
comando por algum tipo de script.
Você pode criar um script python para ler a porta serial e gravar os resultados em um arquivo de texto:
##############
## 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);
Achei mais fácil e seguro usar um script Python. Eu costumo usar este baseado na biblioteca serial . É muito comum usar também o módulo datetime para adicionar os registros de data e hora:
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())])
O próximo passo é usar o escudo ethernet ou algo como uma placa WIZ810MJ e a Internet para habilitar o seu arduino. Em seguida, você pode gravar dados e enviá-los para um servidor da Web para agrupá-los. Eu faço isso no meu monitor de temperatura do viveiro .