Мне нужно построить серийные данные из Ардуино.
Мне нужна поддержка для:
Поскольку составление последовательных данных из Ардуино является общей потребностью, мой вопрос: Какие программы / утилиты доступны для построения последовательных данных от Arduino, которые отвечают вышеуказанным потребностям?
Каковы преимущества / недостатки предложенного вами метода?
Есть несколько хороших приложений для визуализации последовательных данных, в том числе:
MegunoLink ($ 29,95; Lite бесплатно) - составление графиков, ведение журнала, программирование, отчетность и многое другое.
MakerPlot ($ 39) - цифровой & аналоговые графики, мониторинг, пользовательские интерфейсы и многое другое.
ArduinoPlot (бесплатно) - простой заговор.
arduino-plotter (бесплатно) - легкий, легкий заговор с поддержкой всех примитивных типов
[Ардуино-плоттер][9]!
[Панель управления мостом][10] (бесплатно) - ведение журнала, составление графиков и многое другое.
Realtime Plotter (бесплатно) - 6-канальный график данных.
Плоттер последовательных данных в реальном времени (бесплатно) - построение данных CSV, ведение журнала и многое другое.
SimPlot (бесплатно) - 4-х канальная графика.
Arduino Serial Plotter (бесплатно) - встроенный Arduino Editor в Инструменты > Серийный плоттер .
Последовательный плоттер Ардуино! (Это вики сообщества, вы можете расширить список.)
[9]: https://www.dropbox.com/s/2mtg5ig7lyrrffi/plotter_preview.gif?raw = 1 [10]: http://www.cypress.com/?RID = 39244
Преимущества: он очень гибкий, сценарий и свободно доступен.
Недостатки: немного сложно учиться (но я выяснил, как начать через несколько минут, и довольно функционально через час или два), работает в окне терминала (если вы считаете это недостатком).
Что-то, что я нашел очень полезным, - это периодически перезагружать файл журнала моей терминальной программы, чтобы я получил динамический график по ходу эксперимента.
Изображение GnuPlot!
Редактировать: Вот сценарий GnuPlot, который его отображает:
#!/usr/local/bin/gnuplot -rv
# Note reverse video here ^^^ til I find a way to put it in the script
# gpFanCtl - Plots DiffThermo fan controller data (aloft, alow, Tdiff, fan-state).
# $Id: gpFanCtl,v 1.8 2014-04-28 09:40:51-04 jrobert Exp jrobert $
set terminal x11 1 noraise
set xtics 3600
set mxtics 4
set xdata time
set ytics 1 nomirror
set mytics 2
set y2range [0:3]
set y2tics 1
set my2tics 4
set grid
set ylabel 'Temperature, degC'
set y2label 'Tdiff, degC' textcolor rgb '#00CD63'
cd '/Users/jrobert/Desktop'
plot "Logfile.txt" using ($0*4):1 title "Aloft" with lines lc rgb "red",\
"Logfile.txt" using ($0*4):2 title "Alow" with lines lc rgb "#3982FF",\
"Logfile.txt" using ($0*4):3 title "Tdiff" with lines lc rgb "#00CD63" axis x1y2,\
"Logfile.txt" using ($0*4):4 title "Fan" with lines lc rgb "orange" axis x1y2;
pause 4
refresh
reread
Я использую Matplotlib для любого заговора, который мне нужен.
Это не специфично для Arduino, но это очень отличный набор инструментов для построения графиков Python .
Я создал ряд приложений, которые отображают данные из различных микроконтроллеров в режиме реального времени на график, но это был действительно более двухэтапный процесс: 1. Получить данные с устройства в компьютер, 2. график данных в реальном времени.
На самом деле, я думаю, что вы должны разбить свой вопрос на две части:
Серийный сюжет (бесплатно). Он делает все, что вам нужно, и многое другое.
Другие функции:
Отвечая на мой вопрос здесь.. Я использую панель управления мостом, как уже упоминалось.
Преимущества: множество функций.
Недостатки: хитрость в настройке и очень плохой синтаксис / сообщение об ошибке.
Использовать: Вам необходимо записать данные Arduino через последовательный порт по одному байту за раз. Для типа данных int это будет выглядеть следующим образом:
// RX8 [h=43] @1Key1 @0Key1
Serial.print("C");
Serial.write(data>>8);
Serial.write(data&0xff);
В Bridge команда Read Data:
RX8 [h=43] @1Key1 @0Key1
RX8 - это команда чтения [h = 43] означает, что следующим действительным байтом является «C» в ASCII затем Высокий Байт Key1 затем Низкий байт Key1
Похоже, что это в Бридж:
введите описание изображения здесь! введите описание изображения здесь!
Вы можете попробовать serialchart. Это довольно прямая программа. Это делает именно то, что вы просили. Единственным недостатком является то, что для этого требуются данные в формате CSV (не соответствует первому пункту).
Снимок экрана со страницы проекта:
Вас может заинтересовать «Телеметрия» См. На Github . Это очень простой в использовании протокол связи с чистым интерфейсом, который обеспечивает двустороннюю связь с устройствами Arduino / Mbed.
Если вы не хотите читать этот длинный пост, см. Прохождение всех удивительных функций в нем
Сила этой библиотеки исходит от интерфейса командной строки рабочего стола (который требует no навыков программирования в python).
Он может открывать высокопроизводительные графики (намного выше, чем то, что можно сделать с помощью matplotlib) , просто введя команду .
Протокол поддерживает сложные структуры данных . На данный момент массивы и редкие массивы можно отправлять со встроенной платы.
Графики, открытые из интерфейса командной строки, понимают тип данных, и для массивов, вместо построения графика каждого образца в зависимости от времени, выборка будет нанесена на собственный индекс.
В ближайшем будущем планируется добавить поддержку пространственных координат (данные xyz), что позволит вам сразу же построить пространственные данные. Еще раз, графики все выяснят, построят ваши данные в 2D или 3D пространстве, и вы можете сосредоточиться на разработке своего приложения.
Я считаю, что эти функции просто уникальны для такого проекта.
После установки с pip
можно запустить командную строку
pytlm
Затем вы можете connect
, ls
(список) полученных тем, print
данных, полученных по теме, pub
(опубликовать) по теме или открыть plot
по теме для отображения полученных данных в режиме реального времени. время
Я разработал его, потому что не мог найти решение, которое позволило бы мне:
все вышеперечисленное без использования проприетарных решений или раздутых графических интерфейсов.
Используя эту библиотеку, время для настройки связи между Arduino и ПК обычно составляло от полдня до 5 минут.
Никто не упомянул Обработку, которая является супер универсальной. Вы можете сделать гораздо больше, чем просто построить заговор, но если это все, что вы хотите сделать, вы можете использовать библиотеку gwoptics; подключите Arduino и Processing в соответствии с указаниями здесь.
Вы можете опробовать программное обеспечение, которое я разработал для этого предложения. Он нацелен на простоту использования. См. SerialGraphicator - Клиент свободного последовательного порта с открытым исходным кодом, способный к графическим значениям, полученным в формате JSON.
Я сделал эквивалентный инструмент в питоне, который печатает данные в реальном времени с акселерометра ADXL345. https://github.com/mba7/SerialPort-RealTime-Data-Plotter
может быть, это будет полезно для кого-то
введите описание изображения здесь!
Просто выберите последовательный ком и скорость и отправьте последовательные данные в следующем формате:
Может быть легко адаптирован для изменения этого формата
Формат CSV наиболее универсален для любых данных (подписан / не подписан, различного размера и точности).
Кроссплатформенный (написанный на Java / Scala) инструмент Scsvlog может принимать / анализировать строки CSV из последовательного порта / сокета, отображать значения и рисовать диаграммы (до 8).
Вы можете использовать MATLAB Student Edition, это также может сэкономить ваше время для дальнейшего анализа. Вы можете просто открыть COM-порт в MATLAB и построить полученный сигнал и / или сохранить сигнал в рабочей области или что-то еще. MATLAB делает все легко!
Хотя я сам не использовал его, "rqt_plot" работа на ПК, кажется, является популярным способом отображения данных на ПК, который проходит через последовательный порт Arduino, на котором выполняется эскиз, который включает rosserial_arduino библиотека или библиотека ros_arduino_bridge.
Я знаю, что вы, вероятно, после более продвинутого вывода графического интерфейса, но мне удалось воспроизвести задачу, которую обычно можно выполнять с помощью осциллографа:
используя серийный плоттер в среде разработки Arduino и модуль ADC, вы можете получить за 3 доллара на eBay. Я признаю, что это немного грубо, но, возможно, стоит немного поиграть с инструментом, прежде чем инвестировать в решения уровня Python / Matlab / ect. Это было чрезвычайно легко использовать. Не потребуется много, чтобы добавить запись SD-карты в процесс.
Я использую maperation.org для серийного построения Arduino. Это было единственное приложение, которое я смог найти, которое позволило мне делать реальные гистограммы (например,. миллион событий в сотне корзин) и отображать различные информационные номера в дополнение к сигме для каждого канала. Две основные проблемы: А) оказалось, что он основан на Java без неназначенных байтов Б) синхронизировать ig с входным требуемым круговым буфером и маркерами в данных. (высокая скорость, без рукопожатия)
Почти полезно. Это нужно:
Live Graph - лучший вариант, и я использую его в сочетании с Tera Term, который получает данные через USB / последовательную ссылку (и сохраняет их в файл журнала, который затем опрашивает Live Graph).
Live Graph немного глючит при кэшировании данных, и я не нашел способ установить движущееся окно для отображения результатов. Кроме того, показ нескольких графиков требует ручного масштабирования, но, несмотря на все это, он все еще очень полезен. Он написан на Java, поэтому вам понадобится JRE. Я предпочитаю это установке python, как это делают некоторые другие графические программы. Еще одним недостатком является то, что он открывает 4 разных окна, что является болью, когда я хочу перевернуться между ним и Tera Term.
Я еще не нашел программное обеспечение, которое есть
Преимущества:
Недостатки:
SVisual Мониторинг и запись сигналов для Arduino и не только.
[Видео пример][3]
[3]: https://www.youtube.com/watch?v = wlvArf7h6lE
Serial Plotter - это простая программа, которую я создал с помощью Electron, которая получает данные в следующем формате:
data1, data2, timestamp;
и преобразует его в график в реальном времени.