본문 바로가기

개발자/Arduino

arduino IDE에서 Serial Plotter 사용법

 

arduino IDE에서 Serial Plotter 사용법

 

Arduino Serial Plotter 기능이 Arduino IDE에 추가되어 Arduino에서 컴퓨터로 직렬 데이터를 실시간으로 그래프로 표시 할 수 있습니다. Arduino의 아날로그 센서 입력 데이터가 The Matrix와 같은 화면에 쏟아지는 것을보고 피곤하다면, 이것은 무슨 일이 일어나고 있는지 시각화하는 더 좋은 방법처럼 보입니다. 직렬 플로터는 처리 또는 플롯과 같은 타사 서비스를 사용하지 않고도 데이터를 시각화하고 오프라인으로 코드 문제를 해결할 수있는 오프라인 도구입니다. Arduino 웹 사이트에는 Serial Plotter의 사용 및 기능에 관한 공식 문서가 없으므로 그 사용 및 기능을 문서화하기로 결정했습니다.

 

본 문서는 Arduino Serial Plotter의 내용을 번역하여 추가 보완하여 작성하였음을 알려드립니다.

 

 

 

Future

 

다중 그래프 플로팅

오프라인

자동 크기 조정 그래프

음수 그래프 지원

X 축을 따라 자동 스크롤

변수마다 다른 색상

 

Application

 

오프라인 데이터 시각화

코드 문제 해결

파형 분석

 

1. 그래프 그리기

 

Serial Plotter 메뉴는 메뉴 -> 툴 아래에 있습니다.

 

시리얼 플로터의 실제 작동 방식을 이해하기 위해 최신 버전의 Arduino IDE (1.6.7 이상)를 설치합니다. Arduino Serial Plotter는 USB 연결을 통해 들어오는 직렬 데이터 값을 가져와 직렬 모니터에 숫자가 나오는 것을 보는 것 외에도 X / Y 축을 따라 데이터를 그래프로 나타낼 수 있습니다. 수직 Y 축은 출력 값이 증가 또는 감소함에 따라 자동으로 조정되며 X 축은 축의 각 눈금이 실행 된 Serial.println () 명령과 같은 고정 된 500 포인트 축입니다. 즉, Serial.println ()이 새 값으로 업데이트 될 때마다 플롯이 X 축을 따라 업데이트됩니다. 

 

시리얼 플로터의 보드 율을 코드와 일치하도록 설정해야합니다.

 

 

여러 파형을 표시 할 때 모든 개별 변수 / 값 / 파라미터는 아래와 같이 다른 색상으로 표시됩니다.

 

여러 변수 또는 파형을 동시에 플롯하기 위해 두 인쇄 문 사이에 아래와 같이 '공백'이 인쇄되어야 합니다.

 

Serial.print (온도);
Serial.print ( "");
Serial.println (습도);

또는 

Serial.print (온도);
Serial.print ( "\ t");
Serial.println (습도); 

 

2. 오프라인 데이터의 시각화

 

직렬 플로터를 사용하는 주요 목적은 센서 나 프로젝트의 데이터를 시각화하기 위해 인터넷에 연결할 필요가 없다는 것입니다. 따라서 데이터 시각화의 목적으로 직렬 플로터는 그 작업에 탁월합니다.

 

단 하나의 파형이든 다중 플롯 그래프이든, 직렬 플로터는 자동으로 크기를 조정하고 각 파형의 색상을 지정합니다. 데이터 시각화 기능을 테스트하기 위해 다음 단계를 수행 할 수 있습니다.

 

- Arduino에 몇 개의 센서 연결

- 센서 값을 인쇄하고 코드를 업로드하십시오.

- 직렬 플로터를 엽니 다.

 

다양한 데이터의 시각화 https://www.instructables.com/id/Ultimate-Guide-to-Adruino-Serial-Plotter/

 

3. 문제 해결

 

직렬 플로터의 가장 큰 용도 중 하나는 코드 및 회로 문제를 해결하는 것입니다. 잘못된 연결 또는 잘못된 코딩 논리로 인해 원하지 않는 출력이 반환 될 수 있습니다. 직렬 플로터를 디버그하기에 너무 많은 코드 라인이나 너무 많은 와이어가있는 경우 정확한 오류 지점을 표시 할 수 있습니다.

 

직렬 플로터를 사용하면 센서 판독 값이 올바르지 않은지 또는 센서가 Arduino에 올바르게 연결되어 있지 않은지 확인할 수 있습니다. Serial Plotter는 또한 다양한 조건문과 변수 또는 Arduino의 핀 상태를 표시하여 코드 디버깅에 도움이됩니다.

 

좋은 예는 장애물 회피 로봇 문제를 해결하는 것입니다. 이 예에서 파란색 파형은 초음파 센서를 나타내고 노란색 및 빨간색 파형은 왼쪽 및 오른쪽 모터를 나타냅니다. 장애물과 로봇 사이의 거리가 멀어 질수록 파란색 파형이 줄어 듭니다. 임계 값 (최소 거리)이 10이면 로봇이 우회전하여 두 모터의 값이 다릅니다 (오른쪽 = 50, 왼쪽 = 100). 오른쪽 회전을 나타내는 빨간색 파형 감소와 노란색 파형의 일정 속도 유지를 볼 수 있습니다.

 

 

와이어가 올바르게 연결되지 않았거나 구성 요소가 고장 났거나 코딩 로직이 잘못되었는지 문제를 해결하려면 시간이 많이 걸립니다. 그러나 직렬 플로터를 사용하면 파형을 분석하여 문제를 해결하는 데 걸리는 시간을 크게 줄일 수 있습니다.

 

4. 함수 생성 및 분석

 

 

기본적인 프로그래밍 감각과 몇 줄의 코드로 Arduino는 함수 발생기 역할을 할 수 있습니다. Arduino는 Square, Triangular, Sine & Sawtooth 파형을 생성 할 수 있습니다. 이전 버전의 Arduino IDE에서는 시각화없이 직렬 모니터에서 생성되는 파형 유형의 값만 관찰 할 수있었습니다. 수치만을 기준으로 출력을 분석하는 데 시간이 오래 걸립니다. 그리고 이것은 Serial Plotter가 편리한 곳입니다. 생성되는 파형을 시각화합니다.

 

함수 발생기 예제

 

함수 발생기 예제

 

함수 발생기 예제

 

함수 발생기 예제 코드

 

/*
 * This code was Created by Jonathan Pereira on 10th February 2016 and is in the public domain.
 * Comment the type of wave that you do not wish to generate.
*/

void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
}

void loop() 
{
  //Sine Wave & Cosine Wave
  float angle=0;
  for(angle=0;angle<=90;angle=angle+0.1)
  {
    float sina=sin(angle);
    float cosa=cos(angle);
    Serial.print(sina);
    Serial.print(" ");
    Serial.println(cosa);
    delay(1);
  }

  //Sawtooth Wave
  for(float i=0; i<=90; i=i+1)
  {
    Serial.println(i);
    delay(1);
  }



  //Square Wave
  for(int a=0; a<=100; a++)
  {
    int b=0;
    Serial.println(b);
    delay(1);  
  }
  for(int a=0; a<=100; a++)
  {
    int b=100;
    Serial.println(b);
    delay(1);  
  }


  //Triangular wave
  for(float i=0;i<=100;i=i+1)
  {
    Serial.println(i);
    delay(1);
  }
  for(float i=100;i>=0;i=i-1)
  {
    Serial.println(i);
    delay(1);  
  }
  
}

 

함수 발생기 소스코드를 실행한 결과 화면은 아래와 같다. 

 

함수 발생기 실행 결과 화면

 

함수 발생기 실행 결과 화면

 

참고 자료

 

1. Serial Plotter 가이드

2. 아두이노 시리얼플로터 사용법-메카솔루션

3. 여러가지 색으로 시리얼플로터 그리기

 

 

 

더욱 좋은 정보를 제공하겠습니다.~ ^^

이 글 공유하기

facebook twitter kakaoTalk kakaostory naver band