Відповіді:
ви можете записати дані датчика в послідовний порт за допомогою 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-картки на комп’ютер робочої станції. Такий підхід дозволить запустити проект, відключений від комп'ютера, і забезпечить енергонезалежне зберігання великої кількості даних.
Найпростіший метод - використовувати послідовну бібліотеку і виводити на неї. Потім можна зафіксувати вихід у текстовий файл за допомогою програми терміналу. Гіпертермінал доступний в 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. Я зазвичай використовую цей на основі послідовної бібліотеки . Для додавання часових позначок дуже часто використовується також модуль дати:
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 та Інтернету. Потім ви можете записати дані до цього та надіслати їх на веб-сервер, щоб зіставити їх. Я роблю це у своєму моніторі температури віварію .