将Arduino传感器数据保存到文本文件


34

如何将从传感器检索到的数据保存到计算机上的文本文件?

Answers:


30

您可以使用serial-lib将传感器数据写入串行端口,并编写一个小型处理程序,该程序从串行端口读取数据并将其写入文件。

在arduino代码中在设置方法中初始化序列库

Serial.begin(9600);

并使用以下命令将传感器值写入串行接口

Serial.println(value);

在你的循环方法

在处理端,使用PrintWriter将从串行端口读取的数据写入文件

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
}

“处理方”代码应该放在哪里-使用相同的arduino代码或单独的C脚本?
乌拉德·卡萨奇

1
在单独的处理脚本中-处理不是编译为C而是编译为Java
Nikolaus Gradwohl

@UladKasach“处理”是一个多平台的编程环境。实际上,这是世界上最愚蠢的名称的编程环境。
Scott Seidman

9

还有一种选择是使用SD卡读/写器,然后将文件写入SD卡。收集完数据后,用工作站计算机换出SD卡。这种方法将使您可以在与计算机断开连接的情况下运行项目,并为大量数据提供非易失性存储。


6

程序gobetwino将以最小的努力将来自Arduino的传感器值记录到文本文件或电子表格中。它还可以自动执行计算机上的操作,添加时间戳(因此您无需将其编程到arduino中)等。

替代文字


5

最简单的方法是使用串行库并将其输出。然后,您可以使用终端程序将输出捕获到文本文件中。在Windows上可以使用超级终端,在Linux上可以使用Teraterm,在OS X上可以使用Z Term。

梅兰妮


4

如果您想直接将传感器数据写到计算机上的文件中,而不必复制并粘贴来自串行监视器窗口的输出,请尝试直接从串行端口读取数据流(无论如何,这是串行监视器执行的操作,我疑似)。在Mac / Linux上,请执行以下操作:

cat /dev/cu.usbmodem1d11 

上帝知道Windows机器上的等效功能。


1
您可能还希望将时间戳与每个传感器读数相关联,在这种情况下,您可能需要cat用某种脚本替换该命令。
garageàtrois

3

您可以创建一个python脚本来读取串行端口并将结果写入文本文件:

##############
## 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

我发现使用Python脚本更容易,更安全。我通常基于串行库使用此。使用datetime模块添加时间戳是很常见的:

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

下一步是使用以太网屏蔽或WIZ810MJ板之类的东西,并通过Internet启用arduino。然后,您可以向其中写入数据,然后将其发送到Web服务器进行整理。我在活体温度监测仪中进行此操作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.