Yanıtlar:
seri-lib kullanarak sensör verilerini seri portuna yazabilir ve seri porttan verileri okuyan ve bir dosyaya yazan küçük bir işlem programı yazabilirsiniz.
Arduino kodunda, seri lib'i kurulum yönteminde başlatabilirsiniz
Serial.begin(9600);
ve kullanarak sensör değerlerinizi seri arabirime yazın.
Serial.println(value);
senin döngü yönteminde
İşlem tarafında seri porttan okunan verileri bir dosyaya yazmak için bir PrintWriter kullanın
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
}
Diğer bir seçenek de bir SD Kart okuyucu / yazıcı kullanmak ve dosyanızı bir SD kartına yazmaktır. Veri toplamayı tamamladığınızda, iş istasyonunuzdaki bilgisayarınızla birlikte SD kartları çıkarın. Bu yaklaşım, projenizi bir bilgisayarla bağlantısı kesilmiş olarak çalıştırmanıza izin verecek ve büyük miktarda verinin uçucu olmayan bir şekilde depolanmasını sağlayacaktır.
Program gobetwino , bir Arduino'dan bir metin dosyasına veya elektronik tabloya sensör değerlerini minimum çabayla girecek. Ayrıca bilgisayardaki şeyleri otomatikleştirebilir, zaman damgası ekleyebilir (böylece bunları arduinoya programlamanıza gerek kalmaz), vb.
En basit yöntem Seri kütüphaneyi kullanmak ve bunun çıktısını almaktır. Ardından bir terminal programını kullanarak çıktıyı bir metin dosyasına kaydedebilirsiniz. Hyperterminal, Windows'ta, Linux'ta Teraterm ve OS X'te Z Terimi ile kullanılabilir.
Melanie
Verileri seri monitör penceresinden çıktısını kopyalayıp yapıştırmak zorunda kalmadan doğrudan sensördeki verileri doğrudan bilgisayarınızdaki bir dosyaya yazmak istiyorsanız, veri akışını doğrudan seri bağlantı noktasından (seri monitörün yine de yaptığı gibi) okumayı deneyin. şüpheli). Mac / linux'ta şöyle bir şey yapın:
cat /dev/cu.usbmodem1d11
Tanrı, pencere makinelerinde neyin eşdeğeri olduğunu bilir.
cat
komutu bir tür komut dosyası ile değiştirmeniz gerekecektir .
Seri portu okumak ve sonuçları bir metin dosyasına yazmak için bir python betiği oluşturabilirsiniz:
##############
## 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);
Bir Python betiği kullanmak daha kolay ve daha güvenli buldum. Bunu genellikle seri kütüphaneye dayanarak kullanırım . Zaman damgaları eklemek için datetime modülünü kullanmak da çok yaygındır:
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())])
Bir sonraki adım ethernet kalkanını kullanmak veya WIZ810MJ kartı gibi bir şey kullanmak ve internet arduino'nuzu mümkün kılmak. Daha sonra buna veri yazabilir ve harmanlamak üzere bir web sunucusu söylemek için gönderebilirsiniz. Bunu vivarium sıcaklık monitörümde yapıyorum .