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?

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
}

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.


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


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


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.


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);

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())])

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 .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.