การบันทึกข้อมูลเซ็นเซอร์ Arduino เป็นไฟล์ข้อความ


34

ฉันจะบันทึกข้อมูลที่ดึงจากเซ็นเซอร์ไปยังไฟล์ข้อความบนคอมพิวเตอร์ได้อย่างไร

คำตอบ:


30

คุณสามารถเขียนข้อมูลเซ็นเซอร์ไปยังพอร์ตอนุกรมโดยใช้ serial-lib และเขียนโปรแกรมประมวลผลขนาดเล็กที่อ่านข้อมูลจากพอร์ตอนุกรมและเขียนลงในไฟล์

ในรหัส arduino ทำให้มีชีวิตชีวาแบบอนุกรม lib ในวิธีการตั้งค่า

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 แยกต่างหาก
Ulad Kasach

1
ในสคริปต์การประมวลผลที่แยกต่างหาก - การประมวลผลไม่ได้ถูกรวบรวมไปยัง C แต่ไปยังจาวา
Nikolaus Gradwohl

@UladKasach "กำลังดำเนินการ" เป็นสภาพแวดล้อมการเขียนโปรแกรมแบบหลายแพลตฟอร์ม ในความเป็นจริงมันเป็นสภาพแวดล้อมการเขียนโปรแกรมด้วยชื่อที่โง่ที่สุดในโลก
Scott Seidman

9

อีกทางเลือกหนึ่งคือการใช้เครื่องอ่าน / เขียน SD Card และเขียนไฟล์ของคุณไปยังการ์ด SD เมื่อคุณรวบรวมข้อมูลเสร็จแล้วให้สลับการ์ด SD กับคอมพิวเตอร์เวิร์กสเตชันของคุณ วิธีการนี้จะช่วยให้คุณสามารถรันโครงการที่ถูกตัดการเชื่อมต่อจากคอมพิวเตอร์และจะให้การจัดเก็บข้อมูลจำนวนมากแบบไม่ลบเลือน


6

โปรแกรมgobetwinoจะบันทึกค่าเซ็นเซอร์จาก Arduino ไปยังไฟล์ข้อความหรือสเปรดชีตโดยใช้ความพยายามน้อยที่สุด นอกจากนี้ยังสามารถทำให้สิ่งต่าง ๆ บนคอมพิวเตอร์อัตโนมัติเพิ่มการประทับเวลา (ดังนั้นคุณไม่จำเป็นต้องเขียนโปรแกรมลงใน Arduino) ฯลฯ

ข้อความแสดงแทน


5

วิธีที่ง่ายที่สุดคือการใช้ห้องสมุดอนุกรมและส่งออกไปที่ จากนั้นคุณสามารถจับภาพเอาต์พุตไปยังไฟล์ข้อความโดยใช้โปรแกรมเทอร์มินัล Hyperterminal พร้อมใช้งานบน Windows, Teraterm บน Linux และ Z Term บน OS X

เมลานี


4

หากคุณต้องการเขียนข้อมูลเซ็นเซอร์โดยตรงไปยังไฟล์บนคอมพิวเตอร์ของคุณโดยไม่ต้องคัดลอกและวางแบบฟอร์มแสดงผลหน้าต่างการตรวจสอบแบบอนุกรมจากนั้นลองอ่านกระแสข้อมูลโดยตรงจากพอร์ตอนุกรม (ซึ่งเป็นสิ่งที่จอภาพอนุกรมทำอยู่แล้วฉัน สงสัย). บน mac / linux ทำสิ่งที่ชอบ:

cat /dev/cu.usbmodem1d11 

พระเจ้าเท่านั้นที่รู้ว่ามีอะไรเทียบเท่ากับเครื่อง windows


1
คุณอาจต้องการเชื่อมโยงการประทับเวลากับการอ่านเซ็นเซอร์แต่ละครั้งซึ่งในกรณีนี้คุณอาจต้องแทนที่catคำสั่งนั้นด้วยสคริปต์บางประเภท
Garageàtrois

3

คุณสามารถสร้างสคริปต์ไพ ธ อนเพื่ออ่านพอร์ตอนุกรมและเขียนผลลัพธ์ลงในไฟล์ข้อความ:

##############
## 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 และอินเทอร์เน็ตให้เปิดใช้งาน Arduino ของคุณ จากนั้นคุณสามารถเขียนข้อมูลไปยังสิ่งนั้นและส่งไปเพื่อบอกเว็บเซิร์ฟเวอร์เพื่อตรวจทาน ฉันทำเช่นนี้ในของฉันตรวจสอบอุณหภูมิ vivarium

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.