반응형

 

 

 

프로젝트를 진행하면서 센서를 사용하여 수집한 데이터를 실시간 모니터링하거나 시각화하고 싶은 상황이 자주 발생합니다. 문득 아두이노(Arduino)는 그래프(graph) 기능이 없나? 하고 의문이 드시겠죠.. ㅎㅎ 있습니다!! 그래서 오늘은 아두이노로 그래프(graph): Serial Plotter 기능에 대해서 알아보겠습니다.

 


아두이노 통합개발환경(IDE) 스케치 창 상단 메뉴에서 Tool -> Serial Plotter 메뉴를 찾을 수 있습니다. 시리얼 모니터(Serial Monitor)와 같이 아두이노로부터 시리얼 통신(Serial communication)으로 들어오는 데이터를 실시간으로 plotting 해서 그래프를 그려주는 기능을 합니다. 

 

아두이노(Arduino) 시리얼 플로터(Serial Plotter)

데이터를 수신 전에는 실행해봤자 백지 창만 덩그러니 열리니.. 이전 포스팅에서도 자주 다루었던 온습도 센서를 가지고 사용하는 방법을 알아보겠습니다. 온습도 센서 사용법과 코딩은 아래 링크 첨부드려요~ 온습도 센서가 아니더라도 사용하시고 있던 어떤 센서로도 데이터만 시리얼 통신으로 들어오면 아무 문제없습니다.

 

 

 

아두이노(Arduino) 홈 IoT 입문 - 온습도 센서(DHT11) 사용하기

아두이노(Arduino)를 사용한 홈 IoT (사물인터넷)의 가장 기본은 각 종 센서를 동작시키고 센싱 값을 읽는 것이라고 할 수 있습니다. 구상하는 대부분의 프로젝트는 어떤 조건이 만족하면 원하는 명령들을 수행하..

it-g-house.tistory.com

온습도 센서에서 사용한 프로그램을 아두이노에 업로드 후 시리얼 플로터를 실행시키면 아래와 같이 그래프가 plotting 되는 것을 확인할 수 있습니다.

 

아두이노(Arduino) 시리얼 플로터(Serial Plotter) 실행 화면

응?? 에?? 뭔가 좀 이상하죠? ㅠㅠ 음.. Y축 값을 봤을 때 60~70 사이의 그래프 값이 습도, 아래 25 정도 그래프 값이 온도 값 같은데... 범례도 이상하죠?? ㅎㅎ 이렇게 나오는 이유는 데이터에 '글자'가 포함되어 있기 때문입니다. 시리얼 모니터에서 다음과 같이 나오기 때문에 범례에 'Humidity, %, Temp, Celsius' 글자가 다 표시됩니다.

 

아두이노 시리얼 모니터 온습도 데이터 출력

 

 

 

 그래서 지난번 엑셀과 연동할 때와 비슷하게 프로그램을 조금 수정하여 코딩해야 합니다. void setup에서 Serial.println("Temp, Humi"); 명령어로 범례를 지정해 주고 void loop 부분에서는 data만 받고 데이터와 데이터 사이는 쉼표', '로 구분되도록 코딩합니다.

 

아두이노 온습도 데이터를 시리얼 플로터로 plotting하기

 다시 아두이노로 업로드 후 시리얼 플로터를 실행하면 짠~! 

 

아두이노(Arduino)로 온습도 데이터를 시리얼 플로터(Serial Plotter)를 사용하여 그래프(graph) 그리기 

호우~! x축 시간에 따라 그래프가 plotting되는 것을 볼 수 있습니다. delay를 2초로 했으니 하나의 점이 2초마다 찍힐 거에요 ㅎㅎ 범례에 파란색은 온도, 빨간색은 습도라고 표시되고 아까 추측했던 대로 위 상단의 60~70 사이의 그래프가 습도, 아래쪽 25 정도 값의 그래프가 온도입니다.

 

이와 같이 아두이노 스케치 자체적으로 그래프를 plotting 하는 기능을 지원하고 있으나 센서가 많아지던가 Y축 range가 다른 값들은 그래프를 그리기 어려울 거라 예상됩니다. 그래서 엑셀에 연동하여 실시간으로 데이터를 받아 엑셀의 파워풀한 그래프 그리기로 다양하게 시각화할 수 있습니다. 아두이노를 엑셀과 연동하는 방법은 아래 링크 첨부드려요~ 참고 부탁드립니다.

 

 

 

Arduino 아두이노 시리얼 통신 데이터를 엑셀에 저장/연동하기

아두이노(Arduino)를 사용하여 온습도 센서(Temperature and Humidity sensor)를 동작하고 측정된 데이터를 출력하고 저장하는 방법까지 알아보았습니다. 앞서 알아본 저장방법은 *.txt 파일로 저장되어서 엑셀을..

it-g-house.tistory.com


여기까지 아두이노(Arduino)로 시리얼 플로터(Serial Plotter)를 사용하여 그래프(graph)를 그려보았습니다. 간단하게 그래프 그리기에 아주 유용하지만 복잡한 데이터에는 한계가 있을 거 같아요 ^^

 

그럼 다음 시간에는 아두이노 프로그램 코딩에 대해 조금 더 알아보도록 하겠습니다. 궁금하신 거나 추가적으로 필요한 내용 있으면 언제든지 댓글로 남겨주세요~^^

 

#include<dht.h>
dht DHT;
#define DHT11_PIN 2
float hum; //Stores humidity value
float temp; //Stores temperature value

void setup() {
Serial.begin(9600);
Serial.println("Temp,Humi");
}

void loop() {
DHT.read11(DHT11_PIN);
hum = DHT.humidity;
temp = DHT.temperature;

Serial.print(temp);
Serial.print(",");
Serial.println(hum);
delay(2000); //Delay 2 sec.
}

 

 

 

반응형

+ Recent posts