Salvando dados do sensor do Arduino em um arquivo de texto

34

Como posso salvar os dados recuperados de um sensor em um arquivo de texto no computador?

desNotes
fonte

Respostas:

30

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
}
Nikolaus Gradwohl
fonte
Para onde deve ir o código do "lado do processamento" - no mesmo código do arduino ou em um script c separado?
você precisa saber é o seguinte
1
Em um roteiro de processamento separado - de processamento não é compilado para C, mas a java
Nikolaus Gradwohl
@UladKasach "Processing" é um ambiente de programação multiplataforma. De fato, é o ambiente de programação com o nome mais estúpido do mundo.
Scott Seidman
9

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.

Craig Trader
fonte
6

O programa gobetwino registrará os valores dos sensores de um Arduino em um arquivo de texto ou planilha com o mínimo de esforço. Ele também pode automatizar as coisas no computador, adicionar carimbos de data / hora (para que você não precise programá-los no arduino) etc.

texto alternativo

endólito
fonte
5

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

Cyberspice
fonte
4

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.

garageàtrois
fonte
1
Você provavelmente também desejaria associar carimbos de data / hora a cada leitura do sensor; nesse caso, provavelmente precisará substituir esse catcomando por algum tipo de script.
garageàtrois 16/11/11
3

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);
Ulad Kasach
fonte
1

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())])
GM
fonte
0

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 .

Cyberspice
fonte