Câu trả lời:
bạn có thể ghi dữ liệu cảm biến vào cổng nối tiếp bằng serial-lib và viết một chương trình xử lý nhỏ đọc dữ liệu từ cổng nối tiếp và ghi nó vào một tệp.
trong mã arduino kích hoạt lib nối tiếp trong phương thức thiết lập
Serial.begin(9600);
và ghi giá trị cảm biến của bạn vào giao diện nối tiếp bằng cách sử dụng
Serial.println(value);
trong phương thức vòng lặp của bạn
về phía xử lý, sử dụng PrintWriter để ghi dữ liệu đọc từ cổng nối tiếp vào tệp
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
}
Tuy nhiên, một lựa chọn khác là sử dụng đầu đọc / ghi thẻ SD và ghi tệp của bạn vào thẻ SD. Khi bạn hoàn tất việc thu thập dữ liệu, hãy trao đổi thẻ SD với máy tính của máy trạm. Cách tiếp cận này sẽ cho phép bạn chạy dự án của bạn bị ngắt kết nối với máy tính và sẽ cung cấp cho việc lưu trữ một lượng lớn dữ liệu không bay hơi.
Phương pháp đơn giản nhất là sử dụng thư viện Nối tiếp và xuất ra đó. Sau đó, bạn có thể chụp đầu ra thành tệp văn bản bằng chương trình đầu cuối. Hyperterminal có sẵn trên Windows, Teraterm trên Linux và Z Term trên OS X.
Melanie
Nếu bạn muốn ghi dữ liệu cảm biến trực tiếp vào một tệp trên máy tính của mình mà không phải sao chép và dán biểu mẫu đầu ra của cửa sổ màn hình nối tiếp, thì hãy thử đọc luồng dữ liệu trực tiếp từ cổng nối tiếp (dù sao đó cũng là màn hình nối tiếp nghi ngờ). Trên mac / linux, hãy làm một cái gì đó như:
cat /dev/cu.usbmodem1d11
Chúa biết những gì tương đương trên máy tính windows.
cat
lệnh đó bằng một số loại tập lệnh.
Bạn có thể tạo tập lệnh python để đọc cổng nối tiếp và ghi kết quả vào tệp văn bản:
##############
## 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);
Tôi thấy dễ dàng hơn và an toàn hơn khi sử dụng tập lệnh Python. Tôi thường sử dụng cái này dựa trên thư viện nối tiếp . Cũng rất phổ biến khi sử dụng mô đun datetime để thêm dấu thời gian:
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())])
Bước tiếp theo là sử dụng tấm chắn ethernet hoặc thứ gì đó như bảng WIZ810MJ và internet cho phép arduino của bạn. Sau đó, bạn có thể viết dữ liệu vào đó và gửi nó để nói rằng một máy chủ web để đối chiếu nó. Tôi làm điều này trong màn hình nhiệt độ vivarium của tôi .