Guardar datos del sensor Arduino en un archivo de texto

34

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

DESNOTAS
fuente

Respuestas:

30

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

en el código de arduino, inicialice la lib en serie en el método de configuración

Serial.begin(9600);

y escriba los valores de su sensor en la interfaz serial usando

Serial.println(value);

en su método de bucle

en el lado del 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
}
Nikolaus Gradwohl
fuente
¿Dónde debe ir el código del "lado del procesamiento", en el mismo código arduino o en un script c separado?
Ulad Kasach
1
En una secuencia de comandos de procesamiento separada: el procesamiento no se compila en C sino en Java
Nikolaus Gradwohl
@UladKasach "Processing" es un entorno de programación multiplataforma. De hecho, es el entorno de programación con el nombre más estúpido del mundo.
Scott Seidman
9

Otra opción más es usar un lector / escritor de tarjetas SD y escribir su archivo en una tarjeta SD. Cuando termine 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.

Craig Trader
fuente
6

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

texto alternativo

endolito
fuente
5

El método más simple es usar la biblioteca de serie y la salida a eso. Luego puede capturar la salida a un archivo de texto usando un programa de terminal. Hyperterminal está disponible en Windows, Teraterm en Linux y Z Term en OS X.

Melanie

Cyberspice
fuente
4

Si desea escribir datos del sensor directamente en un archivo en su computadora sin tener que copiar y pegar la salida de 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). sospechar). En mac / linux, haga algo como:

cat /dev/cu.usbmodem1d11 

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

garageàtrois
fuente
1
Probablemente también desee asociar marcas de tiempo con cada lectura de sensor, en cuyo caso probablemente deba reemplazar ese catcomando con algún tipo de secuencia de comandos.
garageàtrois
3

Puede crear un script 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);
Ulad Kasach
fuente
1

Encontré más fácil y seguro usar un script de Python. Usualmente uso este basado en la biblioteca serial . Es muy común usar también el módulo de fecha y hora 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())])
GM
fuente
0

El siguiente paso es usar el escudo de ethernet o algo así como una placa WIZ810MJ e internet habilitan su arduino. Luego puede escribir datos en eso y enviarlo a un servidor web para clasificarlo. Hago esto en mi monitor de temperatura de vivario .

Cyberspice
fuente