Лучшие варианты для базового последовательного плоттера Arduino?

Arduino Serial Plotter не позволяет анализировать или сохранять данные. Какое лучшее программное обеспечение для построения графиков последовательных данных (желательно бесплатное, но я не возражаю, если оно будет платным, если оно лучше, чем простой серийный плоттер Arduino)?

  1. Должен хорошо работать с Arduino

  2. Должен позволять отображать несколько переменных на одном графике

  3. Разрешить экспорт данных в CSV, чтобы я мог показать их в Excel.

, 👍-1

Обсуждение

вы можете распечатать CSV в Serial Monitor или в файл SD-карты, а затем обработать его, @Juraj

Обычно я просто сохраняю последовательные данные в файл: stty -F /dev/ttyACM0 raw 9600 && cat /dev/ttyACM0 > data.tsv, а затем рисую их с помощью [gnuplot](http://www.gnuplot. Информация/). Но это не серийный сюжет в реальном времени, поэтому я не знаю, можно ли это считать ответом..., @Edgar Bonet

вы можете написать приложение, которое делает то, что вы хотите, используя Processing.... http://processing.org... могут быть примеры программ, которые делают то, что вы хотите, @jsotola

Если вы хотите установить среду JAVA «Обработка», взгляните на: https://github.com/digamesystems/DigameSerialPlotter., @John Price


1 ответ


4

Для пользовательских устройств требуются специальные решения.

Я предлагаю использовать Python (не бойтесь).

В этом руководстве показано, как считывать данные из серийного номера и сохранять их в файл .csv. Вам не обязательно использовать файл . Например, вы можете изменить его, чтобы использовать список в памяти и сохранить только значения за последние 30 секунд. Вы также можете прочитать несколько значений, а не только одно.

import serial
import time
import csv

ser = serial.Serial('/dev/ttyACM0')
ser.flushInput()

while True:
    try:
        ser_bytes = ser.readline()
        decoded_bytes = float(ser_bytes[0:len(ser_bytes)-2].decode("utf-8"))
        print(decoded_bytes)
        with open("test_data.csv","a") as f:
            writer = csv.writer(f,delimiter=",")
            writer.writerow([time.time(),decoded_bytes])
    except:
        print("Keyboard Interrupt")
        break

Это руководствоэтот) показывает, как очень быстро показать сложный график собранных вами данных. Вы даже можете создать график, который показывает несколько графиков и обновлений в режиме реального времени.

import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
plt.ylabel('some numbers')
plt.show()

Не пугайтесь, это не черная магия. Чтобы понять, как все устроено, требуется всего несколько дней.

,