Как сохранить данные, полученные с датчика, в текстовый файл на компьютере?
вы можете записать данные датчика в последовательный порт, используя 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
}
Еще один вариант — использовать устройство чтения/записи SD-карт и записать файл на SD-карту. Когда вы закончите сбор данных, замените SD-карты на рабочую станцию. Такой подход позволит запустить ваш проект без подключения к компьютеру и обеспечит энергонезависимое хранение больших объемов данных.
Программа gobetwino записывает значения датчиков с Arduino в текстовый файл или электронную таблицу с минимальными усилиями. Он также может автоматизировать работу компьютера, добавлять временные метки (так что вам не нужно программировать их в Arduino) и т. д.
Самый простой способ - использовать библиотеку Serial и выводить в нее. Затем вы можете записать вывод в текстовый файл с помощью программы терминала. Hyperterminal доступен для Windows, Teraterm для Linux и Z Term для OS X.
Мелани
Если вы хотите записать данные датчика непосредственно в файл на вашем компьютере без необходимости копировать и вставлять выходные данные из окна последовательного монитора, попробуйте прочитать поток данных непосредственно из последовательного порта (что в любом случае делает последовательный монитор, я подозревать). В Mac/Linux сделайте что-то вроде:
cat /dev/cu.usbmodem1d11
Бог знает, что эквивалентно на машинах с Windows.
cat
команду каким-либо сценарием.Вы можете создать скрипт 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);
Я обнаружил, что проще и безопаснее использовать скрипт 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())])
Следующим шагом будет использование ethernet-шилда или чего-то вроде платы WIZ810MJ и подключения к Интернету вашей Arduino. Затем вы можете записать в него данные и отправить их, скажем, на веб-сервер для их сопоставления. Я делаю это в моем температурном мониторе вивария .
Влад Касач
Николаус Градволь
Скотт Сейдман