Guardar los datos del sensor Arduino en un archivo de texto

32

¿Cómo puedo guardar los datos recuperados de un sensor en un archivo de texto en la computadora?

    
pregunta desNotes

8 respuestas

28

puede escribir los datos del sensor en el puerto serie utilizando serial-lib y escriba un pequeño programa de procesamiento que lea los datos del puerto serie y los escriba en un archivo.

en el código arduino inicializa la biblioteca serial en el método de configuración

Serial.begin(9600);

y escriba los valores de sus sensores en la interfaz serial usando

Serial.println(value);

en tu método de bucle

en el lado de procesamiento use un PrintWriter para escribir los datos leídos desde el puerto serie a un archivo

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
}
    
respondido por el Nikolaus Gradwohl
6

Otra opción más es usar un lector / escritor de tarjetas SD y escribir su archivo en una tarjeta SD. Cuando haya terminado de recopilar datos, cambie las tarjetas SD con la computadora de su estación de trabajo. Este enfoque le permitirá ejecutar su proyecto desconectado de una computadora y proporcionará un almacenamiento no volátil de grandes cantidades de datos.

    
respondido por el Craig Trader
6

El programa gobetwino registrará los valores del sensor desde un Arduino a un archivo de texto u hoja de cálculo con un mínimo esfuerzo. También puede automatizar cosas en la computadora, agregar marcas de tiempo (por lo que no es necesario programarlas en el arduino), etc.

    
respondido por el endolith
5

El método más simple es utilizar la biblioteca de serie y obtener resultados. A continuación, puede capturar la salida en un archivo de texto utilizando un programa de terminal. Hyperterminal está disponible en Windows, Teraterm en Linux y Z Term en OS X.

Melanie

    
respondido por el Cyberspice
4

Si desea escribir datos del sensor directamente en un archivo en su computadora sin tener que copiar y pegar la salida desde la ventana del monitor en serie, intente leer el flujo de datos directamente desde el puerto en serie (que es lo que hace el monitor en serie De todos modos, sospecho). En mac / linux haga algo como:

cat /dev/cu.usbmodem1d11 

Dios sabe cuál es el equivalente en máquinas con Windows.

    
respondido por el garageàtrois
3

Puede crear una secuencia de comandos de Python para leer el puerto serie y escribir los resultados en un archivo 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);
    
respondido por el Ulad Kasach
0

El siguiente paso es usar el escudo de Ethernet o algo así como una placa WIZ810MJ e Internet para su arduino. A continuación, puede escribir datos y enviarlos a un servidor web para que los compagine. Hago esto en mi monitor de temperatura de vivarium .

    
respondido por el Cyberspice
0

Me pareció más fácil y seguro usar un script de Python. Usualmente uso este basado en la biblioteca de serie . Es muy común usar también el módulo datetime para agregar las marcas de tiempo:

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())])
    
respondido por el G M

Lea otras preguntas en las etiquetas