시리얼 데이터 플로팅 프로그램


36

Arduino의 직렬 데이터를 플롯해야합니다.

다음에 대한 지원이 필요합니다.

  1. 다양한 데이터 형식 (예 : 부호있는, 부호없는, 8 비트, 16 비트);
  2. 동일한 축에 여러 데이터를 플로팅합니다.
  3. 파일 데이터를 내보내거나 가져옵니다.

Arduino에서 직렬 데이터를 플로팅하는 것이 일반적인 요구이므로 내 질문은 다음과 같습니다. Arduino에서 직렬 데이터를 플로팅하는 데 사용할 수있는 프로그램 / 유틸리티는 무엇입니까?

제안한 방법의 장단점은 무엇입니까?


마지막 편집으로 다시 열기로 결정했습니다. 이 질문이 시사하는 바에 따라 특정 주제이기 때문에 주제에 관한 것 같습니다 . 나는 (이러한 유형의 질문이 많지 않기 때문에) 누구에게나 분명 할 것이다. 만약 이것이 너무 주제를 벗어나면 개입해야 할지도 모른다. 그러나 그러한 일이 일어날 가능성은 드물다. :) @JRobert GnuPlot이 질문의 요구 사항을 충족하면 게시하십시오.
익명 펭귄

1
"다른 소프트웨어와 인터페이스" 아두 이노 놀이터 페이지 등 아이폰, 윈도우 PC, 리눅스 PC로 아두 이노의 시리얼 데이터를 플롯하는 방법은 무리이다
데이비드 캐리

답변:


19

직렬 데이터를 시각화하기위한 다음과 같은 좋은 응용 프로그램이 있습니다.

(이것은 커뮤니티 위키이며 목록을 확장 할 수 있습니다.)


혼란 스러워요. 아래에 내 솔루션을 게시했지만 이제 위키이기 때문에 게시물을 편집하는 것이 더 좋지 않을지 확실하지 않습니다. 어떻게 생각해 ?
Overdrivr

@Overdrivr 물론, 다른 사람들을 위해이 위키를 확장하십시오!
niutech

8

그누 플롯

장점 : 매우 유연하고 스크립트 가능하며 자유롭게 사용할 수 있습니다.

단점 : 배우기가 약간 복잡하지만 (몇 분 안에 시작하고 1 ~ 2 시간 안에 기능을 수행하는 방법을 알아 냈습니다) 터미널 창에서 실행됩니다 (불이익을 고려할 경우).

내가 매우 유용한 것은 터미널 프로그램의 로그 파일을 주기적으로 다시로드하도록 스크립트를 작성하여 실험이 진행됨에 따라 동적 그래프를 얻는 것입니다.

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

1
멋지다. 데모 코드를 추가 할 수 있습니까?
geometrikal

그러나 실시간 직렬 데이터가 아닌 Logfile.txt의 데이터를 플로팅합니다. 직렬 포트에 연결하는 방법은 무엇입니까?
niutech

1
아니요,이 스크립트는 "실시간"이 아니며 최대 약 4 초가 소요될 수 있습니다. Logfile.txt는 터미널 프로그램에서 출력 된 캡처 파일입니다. 필자의 경우 데이터 수집 시스템은 4 초마다 샘플링 및 로그하고 GnuPlot 스크립트는 4 초마다 로그 파일을 다시 플로팅합니다. 이것은 내가하고있는 일 (실내 온도 모니터링)에 충분히 역동적입니다.
JRobert

7

내가 해야 할 모든 음모에 Matplotlib 을 사용 합니다.

어떤 식 으로든 arduino에 국한된 것은 아니지만 매우 훌륭한 Python plotting 툴킷입니다.

다양한 마이크로 컨트롤러의 데이터를 실시간으로 그래프로 표시하는 여러 응용 프로그램을 만들었지 만 실제로는 2 단계 프로세스에 더 가깝습니다. 1. 장치에서 컴퓨터로 데이터 가져 오기, 2. 실시간 데이터 플로팅 .

실제로, 나는 당신이 당신의 질문을 두 부분으로 나누어야한다고 생각합니다.

  • Arduino / Any 직렬 장치에서 컴퓨터로 데이터를 쉽게 가져 오는 방법
  • 사용하기 쉬운 좋은 플로팅 라이브러리는 무엇입니까?

+1. "Arduino 실시간 플롯 Matlab"[ youtube.com/watch?v=ntHZsLmNkgw] 비디오도 동일한 기술을 사용합니까?
David Cary

네. arduino 데이터를 matlab 변수로 읽는 호출을 사용하고 matlab 변수로 matlab 플롯을 업데이트하는 호출을 사용합니다.
코너 울프

Matplotlib은 파이썬이며 matlab은 아닙니다.
DaveP

나는 당신에게 동의하지 않습니다.이 질문은 2로 나뉘어서는 안됩니다. 아래에 게시 한 것과 같은 솔루션이 있습니다. 아두 이노 응용 프로그램의 원격 모니터링 및 제어를 위해 휠을 교체하는 것이 귀찮기 때문에 두 가지를 모두 돌보는 솔루션이 있습니다. 또한 실시간 플롯을 위해 파이썬 코드를 작성하는 것은 실제로 사소한 것이 아닙니다. matplotlib로 작업을 수행 할 수 있지만 pyqtgraph와 같은 더 나은 대안이 분명히 있습니다.
Overdrivr

1 부 : Arduino에서 데이터 가져 오기 : github.com/ElectricRCAircraftGuy/eRCaGuy_PyTerm
Gabriel Staples

6

SerialPlot (무료). 필요한 모든 것을 제공합니다.

다른 기능들:

  • 데이터 확대
  • 값을 보려면 데이터 포인트를 클릭하십시오
  • Arduino로 명령 보내기
  • 플롯 된 총 포인트 수 조정
  • 각 채널을 자체 자동 스케일 플롯으로 표시하는 기능
  • 이진, ASCII 및 사용자 정의 패킷 해석
  • 데모 모드를 사용하면 기능을 사용할 수 있습니다

여기에 이미지 설명을 입력하십시오


1
좋은 대답, 나는 serialplot을 좋아했고 COM 포트 및 보드 속도를 자동으로 찾았습니다. 이진에서 CSV로 변경하고 3 채널 (자력계의 경우)으로 변경해야했고 멋지게 꾸 was습니다.
Hamish_Fernsby

이것은 가장
작고

5

여기 내 자신의 질문에 응답합니다. 언급 한대로 브리지 제어판을 사용합니다.

장점 : 많은 기능.

단점 : 설정이 까다 롭고 구문 / 오류보고가 매우 불량합니다.

사용하려면 : 한 번에 한 바이트 씩 직렬 포트를 통해 Arduino 데이터를 작성해야합니다. 다음과 같은 int 데이터 유형의 경우 :

// RX8 [h=43] @1Key1 @0Key1
Serial.print("C");
Serial.write(data>>8);
Serial.write(data&0xff);

Bridge에서 데이터 읽기 명령은 다음과 같습니다.

RX8 [h=43] @1Key1 @0Key1

RX8은 읽기 명령입니다. [h = 43]은 ASCII에서 다음 유효한 바이트가 "C"이고 Key1의 High Byte, Key1의 Low Byte를 의미합니다.

Bridge에서 다음과 같이 보입니다.

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오


5

serialchart 시도 할 수 있습니다 . 꽤 해로운 프로그램입니다. 그것은 당신이 요구 한 것을 정확하게 수행합니다. 유일한 단점은 CSV 형식의 데이터가 필요하다는 것입니다 (첫 번째 포인트를 충족하지 않음).

프로젝트 페이지의 스크린 샷 :

예


나는 이것을 시도하고 & 기본 구성이없고, 자동 스케일링을하지 않는, 작업을하는 것이 매우 어리 석다는 것을 알았습니다. 몇 분 안에 일했고, ASCII 텍스트 및 채널 수를 지정해야했습니다.
Hamish_Fernsby

4

당신은에 관심이있을 수 있습니다 Telemetry Github 참조하십시오 . Arduino / Mbed 장치와의 양방향 통신을 가능하게하는 깨끗한 인터페이스를 갖춘 사용이 매우 간단한 통신 프로토콜입니다.

이 긴 글을 읽지 않으려면 멋진 기능을 모두 살펴보십시오 .

이 라이브러리의 힘은 데스크탑 명령 행 인터페이스 ( 파이썬에서 프로그래밍 기술 이 필요 하지 않음 )에서 제공됩니다.

명령을 입력하기 만하면 고성능 플롯 (matplotlib로 수행 할 수있는 것보다 훨씬 높음)을 열 수 있습니다 .

이 프로토콜은 컴플렉스 데이터 구조를 지원합니다 . 지금은 어레이 와 희소 어레이를 임베디드 보드에서 보낼 수 있습니다.

명령 행 인터페이스에서 열린 플롯은 데이터 유형을 이해하며, 각 샘플 대 시간을 플롯하는 대신 배열의 경우 샘플은 자체 인덱스에 대해 플롯됩니다.

가까운 시일 내에 공간 좌표 (xyz 데이터)에 대한 지원 을 추가 하여 공간 데이터를 즉시 플롯 할 수 있습니다. 다시 한 번 플롯은 모든 것을 파악하고 2D 또는 3D 공간으로 데이터를 플롯하며 앱 개발에 집중할 수 있습니다.

이러한 기능은 이러한 프로젝트에 고유 한 것으로 생각 됩니다.

고온 측정법 CLI PyPI 버전

로 설치 pip하면 명령 줄을 다음으로 시작할 수 있습니다.

pytlm

그럼 당신은 수 connect, ls(목록)받은 주제는, print데이터는 주제, 수신 pub, 주제에 (게시) 또는 열려 plot실시간으로 수신 된 데이터를 표시하는 주제에

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

시작하다

위키

추신 : 나는 저자입니다.

내가 할 수있는 솔루션을 찾을 수 없기 때문에 개발했습니다.

  • Arduino를 제어하기 위해 PC 스크립트를 빠르게 작성
  • 빠르게 디버그
  • 복잡한 데이터 플롯 (시변 값만이 아니라)

독점 솔루션이나 bloated GUI를 사용하지 않고 위의 모든 것을 수행하십시오.

이 라이브러리를 사용하여 Arduino와 PC 간의 통신 설정 시간은 보통 반나절에서 5 분으로 단축되었습니다.


추신 : 파이썬 패키지 (원시 데이터 및 디코딩 된 데이터)의 직렬 포트 데이터 로깅도 완벽하게 지원됩니다. 오프라인 재생 기능 (직렬 데이터 흐름 시뮬레이션)을 구현하는 데 사용하려고합니다.
Overdrivr

4

다재다능한 프로세싱을 언급 한 사람은 없습니다. 플로팅보다 훨씬 더 많은 것을 할 수 있지만 그게 전부라면 gwoptics 라이브러리를 사용할 수 있습니다. Arduino와 Processing을 여기에 지시 된대로 연결 하십시오 .


2

ADXL345 가속도계에서 실시간 데이터를 인쇄하는 동등한 도구를 파이썬으로 만들었습니다. https://github.com/mba7/SerialPort-RealTime-Data-Plotter

누군가에게 도움이 될 수 있습니다.

여기에 이미지 설명을 입력하십시오

직렬 통신 및 속도를 선택하고 다음 형식으로 직렬 데이터를 전송하십시오.

  • 3 개의 입력, 모든 입력은 2 바이트 (2의 보수)
  • 공백으로 분리 된 6 바이트
  • 패킷은 '\ n'으로 끝나는 문자열입니다.

이 형식을 쉽게 변경할 수 있습니다.


이것을 사용하는 방법과 이것의 장점과 단점은 무엇입니까?
모자

2

MATLAB Student Edition을 사용 하면 추가 분석 시간을 절약 할 수 있습니다. MATLAB에서 COM 포트를 열고 수신 된 신호를 플로팅하거나 신호를 작업 공간 등에 저장할 수 있습니다. MATLAB은 모든 것을 쉽게 만듭니다!


2
Arduino SE에 오신 것을 환영합니다! OP의 요구 사항에 맞는 방법을 설명하는 추가 정보와 링크 나 사진과 같은 다른 정보를 추가하려면 답변을 편집 할 수 있습니까? 감사!
익명 펭귄

좋은 대답은 Matlab 사용을 생각하지 않았을 것입니다. 여기에 SO 스레드가 있습니다. stackoverflow.com/questions/19483098/…
Hamish_Fernsby

2

CSV 형식은 모든 데이터 (서명 / 서명, 다양한 크기 및 정밀도)에 가장 유용합니다.

크로스 플랫폼 (Java / Scala로 작성) 도구 Scsvlog 는 직렬 포트 / 소켓에서 CSV 문자열을 수신 / 구문 분석하고 값을 표시하며 차트를 그릴 수 있습니다 (최대 8 개).


안타깝게도 도구를 더 이상 찾을 수 없습니다. 원래 링크가 작동하지 않아 사본을 찾을 수없는 것 같습니다.
Арсений Пичугин

2

그 제안을 위해 내가 개발 한 소프트웨어를 사용해 볼 수 있습니다. 사용하기 쉽게 만들어졌습니다. SerialGraphicator -JSON 형식으로 수신 된 그래프 값을 사용할 수있는 오픈 소스 무료 직렬 포트 클라이언트를 참조하십시오 .


1

내가 나 자신을 사용하지 않은 반면, "rqt_plot" PC에서 실행이 포함 된 스케치 실행하는 아두 이노에서 직렬 포트를 통해 제공되는 PC에 플롯 데이터에 인기있는 방법이 될 것으로 보인다 rosserial_arduino의 라이브러리 또는 ros_arduino_bridge의 라이브러리를.


1

나는 이것이 매우 오래된 질문이라는 것을 알고 있지만 최근 에이 문제를 매우 잘 해결하는 mac 응용 프로그램을 만들었습니다. 자세한 내용은 www.bloonapp.com에서 확인할 수 있습니다. 웹 사이트에는 체크 아웃 할 수있는 데모 비디오가 있습니다.여기에 이미지 설명을 입력하십시오


1
18 년 8 월 1 일 현재이 웹 사이트는 죽었습니다.
Dan

1

아마도 고급 GUI 출력을 받았을 것 같지만 일반적으로 오실로스코프로 수행 할 작업을 복제했습니다. 아두 이노 시리얼 플로터 출력

Arduino IDE의 직렬 플로터와 ADC 모듈을 사용하면 eBay에서 3 달러에 구입할 수 있습니다. 나는 그것이 약간 조잡하다는 것을 인정하지만, Python / Matlab / ect 레벨 솔루션에 투자하기 전에 잠시 도구를 사용해 볼 가치가 있습니다. 사용하기 매우 쉬웠습니다. 프로세스에 SD 카드 레코딩을 추가하는 데 많은 시간이 걸리지 않습니다.

참조 : https://edwardmallon.wordpress.com/2016/08/15/using-the-arduino-uno-as-a-basic-data-acquisition-system/


0

원격 분석 뷰어

장점 :

  1. 사용하기 쉬운
  2. 직관적이고 유연한 UI
  3. 오픈 소스 및 무료
  4. 다른 유형의 그래프
  5. 매우 빠른 그래프 업데이트 속도

단점 :

  1. 개발 중지
  2. 이진 데이터 형식이 아직 완료되지 않았습니다.
  3. 줌, 스크린 샷 및 ...와 같은 기본 그래프 컨트롤 여기에 이미지 설명을 입력하십시오

0

Serial Plotter 는 Electron으로 만든 간단한 프로그램으로 다음 형식의 데이터를 받아 data1,data2,timestamp;실시간 차트로 변환합니다.

여기에 이미지 설명을 입력하십시오


0

거의 유용합니다. 필요해:

  1. 직렬 데이터를 파일에 로깅 또는
  2. 파일에서 그래프로 표시하고 모든 xxx 밀리 초마다 업데이트합니다.

라이브 그래프 가 더 나은 옵션이며 USB / 직렬 링크를 통해 데이터를 가져 와서 로그 파일에 저장 한 다음 라이브 그래프가 폴링하는 Tera Term 과 함께 사용합니다 .

데이터를 캐싱 할 때 라이브 그래프가 약간 버그가 있으며 결과를 표시하도록 이동 창을 설정하는 방법을 찾지 못했습니다. 또한 여러 그래프를 표시하려면 수동 스케일링이 필요하지만이 모든 기능에도 불구하고 여전히 유용합니다. Java로 작성되었으므로 JRE가 필요합니다. 다른 그래픽 프로그램과 마찬가지로 파이썬을 설치하는 것보다 이것을 선호합니다. 또 다른 단점은 4 개의 다른 창을 여는 것입니다 .Tera Term과 뒤집기를 원할 때 고통 스럽습니다.

아직 소프트웨어를 찾지 못했습니다

  1. 실행 파일 (.EXE)이므로 외부 의존성이 없습니다.
  2. 터미널 에뮬레이터 또는 직렬 데이터 로거 포함
  3. 시리얼 데이터 기록
  4. CSV에서 여러 항목을 그래프로 표시
  5. CSV 및 탭으로 구분 된 데이터를 허용합니다 ( 그래프 를 동시에 모니터링 하면서 스크롤하면서 읽을 수 있습니다).
  6. 모든 것을 [0..1]로 스케일링하거나 승수를 설정할 필요없이 즉, 그래프로 표시되는 각 항목에 대해 [y0..y1] 범위를 설정하지 않고도 각 중첩 그래프에 대해 서로 다른 스케일을 설정할 수 있습니다.

1
Arduino SE에 오신 것을 환영합니다! 답변은 유익한 정보이지만 ?편집기 에서 버튼 을 눌러 볼 수있는 마크 다운 가이드를 사용하여 답변의 형식을 개선 할 수 있습니까 ?
Avamander

0

Arduino의 serial plotting에 processing.org를 사용하고 있습니다. 내가 찾을 수있는 유일한 응용 프로그램은 실제 히스토그램 (예 : 백 빈의 백만 건의 이벤트)을 만들고 각 채널의 평균 시그마 외에도 다양한 정보 번호를 표시 할 수있었습니다. 두 가지 주요 문제 : A) 부호없는 바이트가없는 Java를 기반으로하는 것으로 나타났습니다 .B) 데이터에 입력 필수 순환 버퍼 및 마커가있는 동기화. (고속, 악수 없음)


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.