Збереження даних датчика Arduino у текстовий файл


34

Як я можу зберегти дані, отримані з датчика, в текстовий файл на комп'ютері?

Відповіді:


30

ви можете записати дані датчика в послідовний порт за допомогою 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
}

Куди повинен піти код "сторони обробки" - в тому ж коді arduino або окремому скрипті c?
Улад Касач

1
В окремому сценарії обробки - обробка не компілюється в C, а в java
Nikolaus Gradwohl

@UladKasach "Обробка" - це багатоплатформене програмне середовище. Насправді це середовище програмування з найглупішим іменем у світі.
Скотт Сейдман

9

Ще один варіант - використовувати зчитувач / записувач SD-карт та записати свій файл на SD-карту. Коли ви закінчите збирати дані, поміняйте SD-картки на комп’ютер робочої станції. Такий підхід дозволить запустити проект, відключений від комп'ютера, і забезпечить енергонезалежне зберігання великої кількості даних.


6

Програма gobetwino буде записувати значення датчиків з Arduino в текстовий файл або електронну таблицю з мінімальними зусиллями. Він також може автоматизувати речі на комп’ютері, додавати часові позначки (тому не потрібно програмувати їх у ардуїно) тощо.

alt текст


5

Найпростіший метод - використовувати послідовну бібліотеку і виводити на неї. Потім можна зафіксувати вихід у текстовий файл за допомогою програми терміналу. Гіпертермінал доступний в Windows, Teraterm в Linux і Z Term в OS X.

Мелані


4

Якщо ви хочете записати дані сенсора безпосередньо у файл на своєму комп’ютері без необхідності копіювати та вставляти вихідні дані у вікно послідовного монітора, то спробуйте прочитати потік даних безпосередньо з послідовного порту (що це все одно робить серійний монітор, я підозрюваний). На mac / linux роблять щось на кшталт:

cat /dev/cu.usbmodem1d11 

Бог знає, що еквівалент на машинах Windows.


1
Напевно, ви також хочете пов’язати часові позначки з кожним зчитуванням датчика, і в цьому випадку вам, мабуть, потрібно буде замінити цю catкоманду на якийсь сценарій.
garageàtrois

3

Ви можете створити сценарій 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);

1

Мені було легше і безпечніше використовувати сценарій 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())])

0

Наступним кроком є ​​використання або екрану Ethernet, або чогось типу плати WIZ810MJ та Інтернету. Потім ви можете записати дані до цього та надіслати їх на веб-сервер, щоб зіставити їх. Я роблю це у своєму моніторі температури віварію .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.