반응형

 

 

아두이노(Arduino)를 이용한 IoT (사물인터넷) 프로젝트에서 데이터 로거(Data logger)를 만드는 일은 흥미로운 작업입니다. 데이터 로거란 단순하게 보면 데이터 기록기, 저장기? 정도로 생각하시면 되는데 최근 데이터 로거의 기능이 많아져서 간단한 전산, 컨트롤러(controller) 및 그래프(graph) 출력 기능까지 되는 제품도 많이 나오고 있습니다. 아두이노를 활용하여 인터넷을 사용하지 않고 컴퓨터에만 연결하여 충분히 데이터 로거를 만들 수 있습니다.

 

데이터 로거

오늘은 아두이노로 간단한 데이터 로거를 만들어보겠습니다. 빠르신 분은 눈치채셨겠지만 이전에 소개했던 내용들을 조금만 응용하는 과정이 되겠지만 ㅎㅎ 끝까지 봐주시면 힘이 되겠습니다 ^^


1. 시간 표시하기

 

대부분의 계측기가 언제 어떤 상태였는지를 센서로 측정하여 데이터로 기록하는 게 목적(시간에 따른 데이터화)이기 때문에 데이터 로거의 기본은 시간이 표시되어야 합니다. 아두이노 자체적으로 시간을 표시해 주진 않기 때문에 시간을 표시하려면 몇 가지 작업이 필요합니다. 복잡한 거 싫어하고 오픈소스를 사용하는 걸 좋아하는 저는 오늘도 라이브러리를 이용하여 시간을 표시하겠습니다. ^^ 우선 아래 라이브러리를 다운로드하여 스케치(sketch)에 추가해 줍니다.

swRTC.zip
0.03MB

#include <swRTC.h>
swRTC rtc;

void setup() {
  rtc.stopRTC();            //정지
  rtc.setDate(17, 3, 2020); //일, 월, 년
  rtc.setTime(0, 0, 0);  //시, 분, 초
  rtc.startRTC();           //시작
  Serial.begin(9600);
}

void loop() {
  Serial.print(rtc.getHours(), DEC);
  Serial.print(":");
  Serial.print(rtc.getMinutes(), DEC);
  Serial.print(":");
  Serial.print(rtc.getSeconds(), DEC);
  Serial.print("\t"); 

  Serial.print(rtc.getYear(), DEC);
  Serial.print("/");
  Serial.print(rtc.getMonth(), DEC);
  Serial.print("/");
  Serial.println(rtc.getDay(), DEC);
  delay(1000);
}

코드블럭과 같이 프로그램을 코딩하고 스케치를 통해서 아두이노에 업로드합니다. 그리고 일, 월, 년, 시, 분, 초에 현재 시간 또는 원하는 시간을 세팅해줍니다. 저는 글을 포스팅하고 있는 현재 2020년 3월 17일 0시 0분 0초라고 설정하였습니다. 업로드 후 시리얼 모니터(Serial Monitor)를 실행하면 아래와 같이 시간이 표시됩니다.

 

아두이노(Arduino) 현재시간 표시하기

 

지금 보여드린 방법이 가장 간단하지만 아두이노에 자체적인 전원이 없으므로 전원이 꺼졌을 때는 시간이 가지 않습니다. 처음 현재 시간으로 설정하더라도 전원이 잠깐이라도 끊기는 순간 처음 설정한 시간으로 다시 리셋됩니다. 그래서 현재 시간이 반드시 필요하신 분들은 시계 역할을 하는 모듈을 연결하거나 인터넷을 연결하여 전원이 들어올 때 현재시간을 받는 방법을 채택해야 합니다.

 

 

 


 

2. 시간과 데이터 표시하기 

 

센서에서 측정하는 데이터를 시간과 동시에 표시하면 되는 과정이기 때문에 간단합니다. 이런 예시에 항상 사용하는 온습도 센서를 사용하여 프로그램을 코딩하겠습니다. 아두이노 및 온습도 센서 사용이 처음이신 분은 아래 링크 참조 부탁드립니다. 

 

Arduino 아두이노 온도 습도 센서(Temperature and Humidity sensor) 종류 및 사용법

온습도 센서(Temperature and Humidity sensor)는 환경 측정에서 중요하면서도 기본적인 센서로 많이 사용됩니다. 중요하지만 비교적 흔하게 구할 수 있는 센서라 시중에 다양한 종류의 제품이 있고 기능적으로는..

it-g-house.tistory.com

온습도 센서 프로그램 코드와 앞서 알아보았던 시간표시 프로그램과 함께 코드를 합쳐서 아래와 같이 프로그램을 재구성합니다.

#include <swRTC.h>
#include <dht.h>

swRTC rtc;
dht DHT; 
#define DHT22_PIN 2 
float hum; //Stores humidity value 
float temp; //Stores temperature value

void setup() {
  Serial.begin(9600); 
  rtc.stopRTC(); //정지 
  rtc.setDate(17, 3, 2020); //일, 월, 년 
  rtc.setTime(0, 0, 0); //시, 분, 초 
  rtc.startRTC(); //시작 

  }

void loop() { 
  DHT.read22(DHT22_PIN); 
  hum = DHT.humidity; 
  temp = DHT.temperature;

  Serial.print(rtc.getHours(), DEC); 
  Serial.print(":"); 
  Serial.print(rtc.getMinutes(), DEC); 
  Serial.print(":"); 
  Serial.print(rtc.getSeconds(), DEC); 
  Serial.print("\t"); 
  Serial.print(rtc.getYear(), DEC); 
  Serial.print("/"); 
  Serial.print(rtc.getMonth(), DEC); 
  Serial.print("/"); 
  Serial.print(rtc.getDay(), DEC); 
  Serial.print("\t"); 
  Serial.print("Humidity: "); 
  Serial.print(hum); 
  Serial.print(" %, Temp: "); 
  Serial.print(temp); 
  Serial.println(" Celsius"); 
  
  delay(1000);
  }

그 후 프로그램을 아두이노에 업로드하면 아래와 같이 시리얼 모니터에서 볼 수 있습니다. 데이터 스캔 간격을 delay(1000)으로 설정해서 1초 간격으로 표시되지만 delay명령어를 통해 조절 가능합니다. (일반적으로 평상시 실내 온습도는 1초 또는 1분 정도의 시간 동안 차이가 크지 않죠 ^^ 사용하시는 환경에 맞게 스캔 간격을 조절하시면 됩니다.)  

 

아두이노(Arduino) 시간에 따른 온습도 표시

 

 

 


 

3. 엑셀을 통해 시각화 하기 

 

단순 데이터만 보려면 시리얼 모니터로 충분하지만 엑셀을 이용하여 실시간으로 측정되는 데이터를 시각화(그래프)해서 좀 더 편하게 데이터를 모니터링하려 합니다. 앞서 시간과 날짜를 나타낼 수 있게 라이브러리를 도입한  방법보다 엑셀의 기능과 병합하여 좀 더 간단한 방법으로 만들 수 있습니다. 우선 아래와 같이 프로그램을 코딩한 뒤 아두이노에 업로드합니다.

#include <dht.h>

dht DHT; 
#define DHT22_PIN 2 
float hum; //Stores humidity value 
float temp; //Stores temperature value
float today = 43907; //2020-03-17
float timer; //00:00:00
float second = 0.0000115740741; //1/(24*60*60)


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

void loop() { 
  DHT.read22(DHT22_PIN); 
  hum = DHT.humidity; 
  temp = DHT.temperature;
  today = floor(today + timer);
  timer = timer + second;
  
  Serial.print("DATA,"); 
  Serial.print(today); 
  Serial.print(",");
  Serial.print(timer,10); 
  Serial.print(",");  
  Serial.print(temp); 
  Serial.print(","); 
  Serial.println(hum); 
  
  delay(1000);
  }

아두이노와 엑셀을 연동하기 위해 앞선 포스팅에서 소개한 프로그램으로 'PLX-DAQ'을 사용합니다. 아래 파일을 다운로드하여서 설치하시고, 사용방법은 아래 링크 참조 부탁드립니다.

PLX-DAQ-v2.11.zip
0.49MB

 

 

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

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

it-g-house.tistory.com

앞서 라이브러리를 사용한 방법은 2020/03/17 00:00:00 Temperature, Humidity 이런 포맷으로 출력하기 위한 거면 엑셀에서는 셀 서식 기능에 숫자를 '날짜', '시간'으로 표식이 되기 때문에 숫자만으로 프로그램이 구성됩니다. 아마 엑셀을 조금 사용해보셨으면 셀 서식 -> 표시 형식에서 설정 방법을 인지하고 계실 겁니다.

그래서 위 코드처럼 오늘 날짜(2020-03-17)에 해당하는 43907로 today를 값을 설정하고 하루가 지날 때마다 1씩 더해져서 날짜를 표시할 수 있습니다. 같은 방법으로 초기 시간 00:00:00에서 1초에 해당하는 값 즉, 1/(24시간*60분*60초) = 0.0000115740741... 을 1초 delay 마다 더하는 방법입니다. 컨셉을 이해하셨으면 상황에 맞게 시간이나 간격을 조절하셔서 사용하실 수 있을 거라 생각됩니다. 아두이노에 프로그램을 업로드 후 'PLX-DAQ' 프로그램을 사용하여 엑셀에 연동하면 아래와 같이 데이터가 들어옵니다.

 

아두이노(Arduino)로 Datalogger 만들기

아직 '표시 형식'을 변경하기 전이라 숫자로 표시되지만 셀 설정에서 표시 형식을 변경하면 원하는 포맷으로 날짜와 시간을 표시할 수 있습니다. 그리고 원하는 그래프로 시각화할 때 데이터의 셀 영역을 column 전체로 설정해놓으면 실시간으로 데이터가 들어올 때마다 그래프가 그려집니다.

 

아두이노(Arduino)로 Datalogger 만들기 엑셀에서 표시형식 변경
아두이노(Arduino)로 Datalogger 만들기 엑셀로 실시간 그래프 설정


오늘은 아두이노(Arduino)로 간단하게 데이터로거(Datalogger)를 만들어 보았습니다. 좀 단순하게 만드는 방법이다 보니 현 시간을 바로 반영할 수 없다는 점... 같은 게 허점이 될 수 있지만 가볍게 사용하기에는 파워풀한 방법입니다.

 

좀 더 정확한 시간 반영을 위해서는 인터넷을 사용하여 웹상에서 현재시간 정보를 받아 사용해야 합니다. 좀 복잡하죠 ^^ 인터넷이 안 되는 환경이나 현재 시간이 꼭 중요하지 않다면 쉽게 사용할 수 있을 듯합니다. 

 

기회가 되면 esp-01 (ESP8266) 모듈을 사용해서 구글 현재시간을 받아 정확한 시간을 표시하는 방법에 대해서 포스팅해보겠습니다. 긴 글 읽어주셔서 감사합니다.

 

 

 

 

반응형
반응형

 

 

 

프로젝트를 진행하면서 센서를 사용하여 수집한 데이터를 실시간 모니터링하거나 시각화하고 싶은 상황이 자주 발생합니다. 문득 아두이노(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.
}

 

 

 

반응형
반응형

 

 

지난 포스팅까지 아두이노(Arduino)를 사용하여 온습도 센서(Temperature and Humidity sensor)를 동작하고 측정된 데이터를 출력하고 저장하는 방법까지 알아보았습니다. 앞서 알아본 저장방법은 *.txt 파일로 저장되어서 엑셀을 많이 사용하시는 분들은 엑셀에 바로 연동하는 방법은 없는지 궁금하셨을 거 같아요 ^^ 

 

그래서!! 오늘은 아두이노 시리얼 통신(Serial communication) 데이터를 엑셀에 연동하여 저장하는 방법을 알아보겠습니다. 엑셀과 연동이 되면 데이터를 실시간으로 받으면서 데이터의 변화 추이를 그래프로 그려도 볼 수 있으며 분석하는데 더 많은 활용을 할 수 있습니다. 

 

아두이노(Arduino) 홈 IoT 입문 - 온습도 센서 데이터 출력/저장 방법

아두이노(Arduino)를 사용하여 온습도 센서(Temperature and Humidity sensor)를 작동하고 센싱한 값을 출력하는 것은 아두이노의 기본적인 사용법을 습득하는데 많은 도움이 됩니다. 저도 온습도 센서로 연습하면..

it-g-house.tistory.com


아두이노 시리얼 통신 데이터를 엑셀과 연동하려면 'PLX-DAQ' 프로그램을 사용해야 합니다. 'PLX-DAQ'는 'Parallax'라는 회사에서 무료로 제공하고 있는 프로그램인데 업데이트는 제공하지 않아서 2010 이하 버전의 Microsoft office와는 연동이 안된다고 합니다. 그러나!! 많은 고수님들이 자체적으로 업데이트하여 v2.11까지 웹상에서 쉽게 구할 수 있습니다. 아래 다운로드 링크와 압축 파일 첨부해두게요~ 우선 다운로드하여주세요 ^^ (Parallax 회사 홈페이지에서 원본 PLX-DAQ파일을 다운 받아 사용해도 저는 정상적으로 동작하더라고요 ㅎㅎ 근데 업데이트된 버전이 기능도 추가되고 사용하기 훨씬 편하니 아래 파일을 사용하는 것을 추천드려요~)

https://forum.arduino.cc/index.php?topic=437398.msg3013761#msg301376

 

PLX-DAQ-v2.11.zip
0.49MB

압출을 풀면 아래와 같이 'PLX-DAQ-v2.11' 엑셀 파일을 볼 수 있습니다.

 

PLX-DAQ 실행파일

엑셀 파일을 실행하면 엑셀 상단에 아래와 같이 매크로 사용 여부를 묻는 경고창이 뜰 겁니다. 

 

'콘텐츠 사용'을 클릭하면 아래와 같이 실행 화면을 볼 수 있습니다. 만약 PLX-DAQ창이 뜨지 않으면 엑셀 시트 중단의 'Open PLX DAQ UI'를 클릭해 주세요~

 

아두이노 시리얼 통신(Serial communication) 데이터를 엑셀에 저장할 수 있는 PLX-DAQ 소프트웨어 실행 화면

여기까지 실행시켜놓고 아두이노로부터 시리얼 통신 데이터를 받으려면 아두이노의 프로그램도 약간의 조정이 필요합니다. 엑셀로 받기 위한 데이터 배열을 조정해 준다고 정도로 생각하시면 될 거 같아요 ^^ 시리얼 데이터는 어떤 데이터가 들어오던 상관은 없지만 이해를 돕기위해 지난 포스팅에서 진행하였던 온습도 센서를 이용해서 실제로 엑셀과 연동하면서 포스팅하도록 하겠습니다. (코드블럭은 본문 맨 아래 첨부해 두었습니다~)

 

 

 

아두이노와 엑셀을 연동하는 'PLX-DAQ' 사용을 위한 코딩

스케치로 돌아가서 이전 포스팅에서 코딩한 DHT11 온습도 센서를 위한 코딩을 위와 같이 프로그램을 수정하시면 됩니다. DHT11 온습도 센서 사용 방법과 코딩에 대해서는 아래 링크 걸어두게요~ 참고 부탁드립니다.

 

 

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

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

it-g-house.tistory.com

수정된 프로그램을 compile후 아두이노로 업로드하고 시리얼 모니터(Serial Monitor)를 실행하면 아래와 같이 데이터가 출력되는 것을 확인할 수 있습니다.

 

아두이노 시리얼 통신을 통한 DHT11 온습도 센서 데이터 출력 (엑셀과 연동 방법)

엑셀 시트가 셀 단위로 이루어져 있고 셀에 데이터를 하나하나 넣는 과정에서 셀 과셀 구분을 쉼표', '로 한다고 생각하시면 됩니다. 그래서 처음 'CLEARDATA'는 데이터를 전부 지워서 리셋하는 내용이고 그다음 LABEL, Temp, Humi이 엑셀에서 첫 행에서 각 데이터 이름이 됩니다. 그 뒤로 온도와 습도 data들이 계속 기록되는 순서로 진행된다고 이해하시면 됩니다.

 

그럼 다시 엑셀 시트로 돌아가서~ PLX-DAQ 실행 창에서 Setting 부분의 Port와 Buad rate를 PC에 연결되어 있는 아두이노와 동일하게 맞춰주시고 아래에 'Connect'를 누르면 아두이노의 시리얼 통신으로 들어오는 온도와 습도 데이터가 엑셀에 저장되는 것을 실시간으로 확인할 수 있습니다. 와우~ 신기하죠?? ㅎㅎ 아!! 여기서 주의하실 점은 시리얼 모니터 창은 닫으셔야 정상 동작합니다.

 

아두이노 엑셀연동을 위한 PLX-DAQ 셋팅

아래 엑셀 창에서 처럼 왼쪽 A, B열에 첫 행에는 열 이름 Temp, Humi 그 밑으로 2행부터 데이터가 실시간으로 기록됩니다. PLX-DAQ창에서 'Display direct debug'를 클릭하면 실질적으로 몇 시 몇 분에 데이터가 들어오는지 확인할 수 있습니다.

 

아두이노 시리얼 통신을 통한 DHT11 온습도 센서 데이터를 PLX-DAQ 프로그램을 이용하여 엑셀에 저장하는 방법

추가적으로 새로운 엑셀 시트에 저장할 수 있는 기능과 logging을 멈출 수 있는 기능 등이 있습니다. 직접 하나둘씩 만져보시면 아마 어떻게 사용하는지 금방 알 수 있을 거예요 ^^

 

 

 


여기까지 아두이노(Arduino)의 시리얼 통신(Serial communication)을 통한 데이터를 엑셀에 연동하여 저장하는 방법을 알아보았습니다. 엑셀에 실시간으로 기록되기 때문에 이를 이용해서 실시간으로 그래프를 그려본다던지 좀 더 시각화하여 데이터를 볼 수도 있을 거 같아요~ ㅎㅎ

 

다음 포스팅에는 아두이노를 사용하여 실시간으로 그래프를 그리는 방법과 이를 통하여 datalogger 기능을 살펴보겠습니다. 궁금하신 거나 추가적으로 필요한 내용 있으면 언제든지 댓글로 남겨주세요~ ^^

#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("CLEARDATA");
Serial.println("LABEL,Temp,Humi");
}

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

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

 

 

 

반응형
반응형

 

 

 

아두이노(Arduino)를 사용하여 온습도 센서(Temperature and Humidity sensor)를 작동하고 센싱한 값을 출력하는 것은 아두이노의 기본적인 사용법을 습득하는데 많은 도움이 됩니다. 저도 온습도 센서로 연습하면서 홈 IoT 프로젝트를 설계하는데도 많은 영감을 얻었습니다. 지난 포스팅에는 온습도 센서를 사용하는 방법에 대해 알아보았습니다.

 

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

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

it-g-house.tistory.com

오늘은 온습도 센서에서 읽은 데이터를 출력하고 저장하는 방법에 대해 알아보겠습니다.

 


  • 센서 데이터 출력하기

DHT11 온습도 센서를 동작하기 위해 아래와 같이 스케치로 프로그램을 코딩하였습니다. 지난 포스팅에서 아두이노 프로그램 코딩시 자주 사용되는 명령어를 알아봐서 그런지 처음 볼 때보다 프로그램이 조금씩 보이는 듯하네요 ㅎㅎ (기분 탓일 수도 있겠지만요.. 뮤뮤) 

 

아두이노 스케치를 통한 DHT11 온습도 센서 프로그램 코딩

 

프로그램에서 변수 'hum'에는 습도 값이, 'temp'에는 온도 값이 저장하도록 되어 있고 Serial.print와 Serial.println 명령어를 통해 데이터를 출력하고 있습니다. 

Serial.print("Humidity: "); -> Humidity: 라고 출력됩니다.

Serial.print(hum); -> 변수 'hum'에 저장된 습도 값을 출력합니다.

Serial.print(" %, Temp: "); -> %, Temp: 이라고 출력됩니다.

Serial.print(Temp); -> 변수 'Temp'에 저장된 온도 값을 출력합니다.

Serial.println(" Celsius"); -> Celsius라고 출력되고 줄 바꾸기를 합니다.

 

다 같이 출력되면 반복으로 인해

Humidity: 55%, Temp: 25 Celsius

Humidity: 54%, Temp: 25 Celsius

Humidity: 56%, Temp: 25 Celsius

...

이런 식으로 출력됩니다.

 

그럼 실질적으로 온습도 센서가 정상적으로 작동하는지 지금 온도와 습도가 얼마인지 출력 값을 보겠습니다. 스케치 상단 메뉴에서 툴(Tool) -> 시리얼 모니터(Serial Monitor)를 클릭하면 

 

 

우와~ 대박 신기!! 글 쓰고 있는 지금 습도는 62.2 %, 온도는 27.1 ℃이네요 ㅎㅎ 여기서 보레이트(Baud rate)를 프로그램의 Serial.begin(9600) 속도와 맞춰주시는 거 잊지 마시고요 ^^

 

 


 

  • 센서 데이터 저장하기

이렇게 실시간 모니터링하는 것도 좋지만 그래프로 시각화하고 홈 IoT에 활용하려면 데이터 저장이 필요하겠죠? 저장하는 방법은 세가지 정도 있습니다.

 

1. 단순하게 시리얼 모니터의 텍스트를 그대로 복사해서 메모장에 붙여넣는 방법입니다. 가장 간단한 방법이지만 나중에 데이터 정리하기가 쉽지 않을 수도 있겠네요..

 

2. 윈도우에서 명령 프롬프트(Command 창)를 실행해서 'COPY 포트번호 파일이름.txt' 형태로 명령어를 적어주면 됩니다. 그러면 아두이노가 연결되어 있는 포토 번호 (예: COM9)로 들어오는 시리얼 통신 데이터가 '파일이름.txt'(아무거나 정하시면 됩니다.) 파일로 저장됩니다. 

실시예) COPY COM9 TempHum.txt

명령 프롬프트는 윈도우 실행파일 검색창(윈도우 자판키+s)에서 '명령 프롬프트' 또는 'cmd'로 검색하면 찾을 수 있습니다. 종료할 때는 Ctrl-z를 누르면 종료됩니다. 주의하실 점은 스케치에서 시리얼 모니터 창을 닫아야 명령 프롬프트에서 포트를 인식할 수 있습니다.

 

3. 마지막으로 가장 확실하고 편한 방법이지만 프로그램을 이용해야 하는 번거로운 점이 있습니다. 'CoolTerm'이라는 프로그램을 사용하는데 시리얼 통신으로 들어오는 내용을 읽고 저장하는 기능을 합니다. 파일을 업로드해놓고 싶지만 10MB 이상이라 다운로드는 아래 링크 첨부해놓을게요~

https://coolterm.en.lo4d.com/windows

https://coolterm.sooftware.com/windows

 

다운로드한 후 압출 풀고 CoolTerm 실행파일을 실행시키면 아래와 같이 창이 뜹니다.

 

아두이노 시리얼 통신(Serial Communication) 데이터 저장하기 (CoolTerm 사용)

왼쪽 아래 보면 아두이노가 연결되어 있는 시리얼 포트번호(COM9)와 통신속도(9600), 등의 정보를 확인할 수 있습니다. 그리고 Disconnected로 연결이 되어 있지 않다는 것을 표시하고 있습니다. 메뉴 상단의 'Connect'를 클릭하면 

 

아두이노 시리얼 통신(Serial Communication) 데이터 저장하기 (CoolTerm 연결)

Disconnected가 Connected로 되어 연결된 시간과 함께 표시됩니다. 그리고 스케치의 시리얼 모니터에서 보았듯이 지금 습도와 온도 데이터가 전송되는 것을 볼 수 있습니다. 이상태에서 데이터를 저장하려면 상단 메뉴의 'Connection -> Capture to Textfile -> Start'를 클릭하면

 

아두이노 시리얼 통신(Serial Communication) 데이터 저장하기 (CoolTerm 데이터 저장)

 

저장할 파일 경로와 이름을 정할 수 있습니다. 파일 이름을 정한 뒤 '저장'을 누르면

 

아두이노 시리얼 통신 데이터 저장할 파일이름 설정

 

아두이노 시리얼 통신(Serial Communication) 데이터 저장하기 (CoolTerm 데이터 *.txt 저장)

 왼쪽 아래에 데이터 Capturing 진행 상황이 표시됩니다. 이제 데이터가 저장되고 있습니다. 호우~! ㅎㅎ 데이터 저장을 멈추려면 'Connection -> Capture to Textfile -> Stop'을 클릭하면 됩니다. 그러면 Start 누른 시점부터 Stop까지의 데이터만 설정한 파일명.txt로 저장이 됩니다.

 

아두이노 시리얼 통신(Serial Communication) 데이터 저장방법

데이터 저장은 반드시 Connected 상태에서 가능하니까 주의하세요 ^^

 

 


여기까지 아두이노(Arduino)를 사용한 DHT 온습도 센서의 데이터를 출력하고 저장하는 방법을 알아보았습니다. 놀랍지 않나요? ㅎㅎ 이제 뭐든 할 수 있을 거 같아요 ^^ 다양한 센서를 구입해서 구동해보는 재미가 있어요~ 아! 근데 아두이노에 사용하는 외부기기를 구입하실 때는 라이브러리(library)가 웹상에서 구할 수 있는지, 판매 측에서 제공하는지를 꼭 확인하셔야 합니다. 아직 기기에서 나오는 신호를 직접 잡기는 너무너무 어렵기 때문에 잘 못하면 기기만 덩그러니~ 사는 경우가 발생합니다... (경험이에요 뮤^뮤) 

 

그럼 본격적으로 홈 IoT 프로젝트를 진행하려면 인터넷이 되야겠죠??!! 다음 시간에는 아두이노에 Wifi를 달아보겠습니다. 빠르다고요?? 노노 할 수 있어요~! 다들 화이팅! (아.. 저만 화이팅 하면 되나요...)

 

 

* 저.. 엑셀로 그래프도 그릴 수 있으면 좋겠는데... 엑셀에 바로 연동하여 저장하는 방법은 없나요?? 있습니다!! 다른 프로그램을 사용하는데 실시간으로 연동되어 데이터가 들어오기 때문에 그래프를 실시간으로 그려서 변화 추이를 알아보거나 하기도 좋을 듯 합니다. 관련 내용은 아래 링크 첨부하겠습니다 참고 부탁드려요~

 

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

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

it-g-house.tistory.com

 

 

반응형
반응형

 

 

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

 

센서의 종류는 너~~무 다양한데 그중 '온습도 센서(Temperature and Humidity sensor)'는 단순하면서도 많은 곳에서 중요하게 사용됩니다. 그래서 오늘은 센서 동작의 입문이라고 할 수 있는 온습도 센서를 아두이노에 장착하고 동작하는 방법을 알아보겠습니다.

 


아두이노(Arduino)로 쉽게 사용할 수 있고 온라인에서 흔하게 구할 수 있는 온습도 센서는 몇 가지 종류가 있지만, 우선 네이버나 구글에서 ‘온습도 센서’라고 검색하면 모델명 DHT11이라는 제품을 가장 먼저 볼 수 있습니다. 저렴한 가격에 비해 실내 일상 환경의 온도나 습도를 측정하는데 무리가 없고 사용하기 쉬워서 많이 사용되는 모델입니다. 추가로 쓸만한 온습도 센서 및 동작원리에 관해서는 아래 정리한 내용 링크 참고 부탁드려요 ^^

 

Arduino 아두이노 온도 습도 센서(Temperature and Humidity sensor) 종류 및 사용법

온습도 센서는 환경 측정에서 중요하면서도 기본적인 센서로 많이 사용됩니다. 흔하면서도 중요한 센서라 다양한 종류의 제품이 있고 기능적으로 큰 차이 나지 않습니다. 그렇기 때문에 사용 장소나 측정 목적에..

it-g-house.tistory.com

  • DHT11 온습도 센서

온습도 센서(DHT11)
온습도 센서 모듈(DHT11 module)

 

DHT11 온습도 센서는 단일품과 모듈 형태로 판매를 합니다. 단품으로 구매를 하면 아두이노에 연결할 때 저항을 따로 연결해야 하고 그러면 빵판도 필요하고 번거롭기 때문에 모듈형으로 구매하는 것이 최선입니다. 센서는 몸통과 4 pin으로 구성되어 있고 사진에 표기되어 있듯이 VCC, OUT (data), NC (not connect), GND 순서로 되어 있습니다. 모듈형 같은 경우는 판매사마다 조금은 다르지만 대부분 보드에 DHT11 센서가 실장 되어 있고 3 pin (OUT, VCC, GND)으로 구성되어 있습니다. 추후 완성품을 만들 때도 모듈형이 여러모로 편하기 때문에 모듈형을 위주로 포스팅하도록 하겠습니다. 

 

동작 전압 (Power) 3~5 V
온도 측정 범위 (Temperature range) 0 ~ 50 ℃ (±2 ℃)
습도 측정 범위 (Humidity range) 20 ~ 80 % (±5 %) 
최대소비전력 (Max. current) 2.5 mA
데이터 주기 (sampling rate) 1 Hz

 

  • 아두이노와 DHT11 센서 연결

센서를 동작하기 위해서는 기본적으로 센서가 필요한 전원이 공급되어야 합니다. DHT11의 동작 전압이 3~5V로 아두이노의 3.3V나 5V pin 어디에나 연결해도 괜찮습니다. 그림과 같이 VCC(+) 핀은 아두이노의 3.3V 또는 5V 핀에 연결하고 GND는 GND핀에 연결합니다. 그리고 센서가 측정한 데이터를 아두이노가 받아야 하기 때문에 Data output 핀과 아두이노의 디지털(DIGITAL) 핀과 연결합니다. 저는 디지털 2번 핀과 연결하였는데 이 부분은 프로그램에서 바꿀 수 있기 때문에 2번부터 13번까지 어디에 연결해도 상관은 없습니다.

 

만약에 센서를 여러개 사용하시면 각 센서의 Data output 핀을 아두이노의 디지털 핀에 번호를 다르게 각각 연결하면 됩니다. 동작전압 공급은 VCC는 한꺼번에 3.3V 또는 5V에 연결하고, GND 역시 한꺼번에 아두이노의 GND에 연결하면 되는데.. 이는 병렬연결(한꺼번에 연결) 일 때 동일하게 Voltage가 공급되기 때문입니다. 주의하실 부분은 아두이노가 제공할 수 있는 Power 출력 범위보다 많은 수의 센서 또는 전력을 많이 먹는센서를 사용하면 센서가 정상적으로 작동이 안 될 수 있습니다. (집에 와트(W)수 높은 가전제품을 한 번에 꼽으면 안 되는 것과 같은 원리입니다.) 

   

온습도 센서(DHT11) 회로도

 

 

 

 

 

  • 스케치(sketch)로 프로그램 코딩

DHT11 센서를 동작하고 온도와 습도 data를 불러오는 프로그램을 스케치를 통해서 코딩합니다. 스케치를 아직 설치하지 않으신 분은 아래 링크 참조하셔서 설치 부탁드려요~

 

아두이노(Arduino) 시작하기 - 통합개발환경(IDE): 스케치(sketch)

아두이노(Arduino)는 마이크로 컨트롤러(Micro-controller)로 구성된 프로그램에 따라 명령을 수행합니다. 이전 포스팅에서 살펴보았듯이 아두이노를 통해 외부기기나 센서를 컨트롤할 수 있습니다. 구상하는 대로..

it-g-house.tistory.com

아래와 같이 코딩 후에 한가지 추가해야 하는데... 그건 '라이브러리(Library)'라고 하는 파일입니다. 여기서 '라이브러리'를 간단히 설명하면 이미 코딩된 프로그램을 인용해서 사용하는 개념 정도로 이해하시면 됩니다. 아래 명령어에서 첫 줄에 있는 #include <dht.h>가 'dht.h' 라이브러리를 사용하겠다는 내용입니다. 

 

아두이노 스케치를 이용한 DHT11 센서 프로그램 코딩

 

라이브러리가 필요한 것은 DHT11 센서에서 측정되는 값은 대부분 센서가 그렇듯 단순 전기적인 voltage 값입니다. 이를 우리가 알아볼 수 있게 calibration 된 값으로 변경하고 디지털 값으로 변화시켜 하나의 output선으로 출력해주는 과정과 같은 센서가 측정하는데 필요한 프로그램들이 'dht.h' 라이브러리에 녹아져 있는 것입니다. 덕분에 우리는 편하게 라이브러리만 인용하여 위와 같은 간단한 코딩이 가능한 것입니다. (코딩 블록은 본문 맨 아래 첨부해 두겠습니다.)

 

라이브러리는 인터넷 검색으로 쉽게 찾을 수 있으며 라이브러리 추가하는 방법은 파일을 아두이노 라이브러리 폴더에 넣어 두시면 됩니다. 대부분 C:\Users\Documents\Arduino\libraries 경로로 예상하나 다들 설치한 곳에 따라 다를 수도 있으니 라이브러리 폴더를 찾아주세요~ 그리고 폴더에 압축 푼 파일을 옮겨두고 스케치를 다시 켜주세요~ 스케치를 껐다가 다시 켜야 스케치가 인식을 하니 참고하세요 ^^ 제가 사용하는 라이브러리 파일은 여기 첨부하겠습니다. 

DHT_Library.zip
0.01MB

 

  • 아두이노에 프로그램 업로드(Upload)

코딩이 완료되었으면 메뉴 상단의 '체크' 표시를 눌러 프로그램이 이상이 없는지 Compile을 실행합니다.

 

Compile 실행

이상이 없으면 아래와 같이 "Done compiling"이라고 완료됩니다.

 

Compile 완료

그리고 메뉴 상단의 Upload를 눌러주면 코딩한 프로그램이 아두이노로 업로드됩니다. 업로드 완료 메세지가 정상적으로 나타나면 모두 완료되었습니다. 그럼 온습도 센서가 정상적으로 동작하고 있는지 확인해야겠죠? 센서가 수집하고 있는 데이터를 보기 위해 시리얼 통신(Serial communication)을 통해 컴퓨터에서 볼 수 있습니다. 스케치에서 시리얼 모니터(Serial Monitor)를 실행하면 아래와 같이 창이 뜨고 온도와 습도 데이터를 확인할 수 있습니다.

 

프로그램 업로드(Upload) 하기
아두이노(Arduino) 시리얼 모니터(Serial Monitor) 실행
아두이노(Arduino) 시리얼 모니터(Serial Monitor)를 통해 온습도 데이터 확인하기

 

 

 

 

 


여기까지 아두이노(Arduino)에 온습도 센서(DHT11)를 설치하고 동작하는 프로그램까지 코딩해 보았습니다. 처음 정상적으로 구동될 때 엄청 신기하고 신났던 게 기억나네요 ㅎㅎ 간단한 센서 동작을 응용하여 여러 개의 센서를 동작하면 복잡한 프로젝트도 진행할 수 있습니다.   

 

이제 온습도 센서(Temperature and Humidity sensor)가 수집하는 데이터를 활용하기 위해서 우선 컴퓨터로 데이터를 받아야겠죠? 다음 시간에는 시리얼 통신(Serial communication)으로 들어오는 데이터를 저장하는 방법에 대해 알아보겠습니다. 의견이나 질문 있으시면 언제든지 댓글로 남겨주세요~ ^^

 

한걸음 한걸음씩!!

 

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

void setup() {
Serial.begin(9600);
}

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

Serial.print("Humidity: ");
Serial.print(hum);
Serial.print(" %, Temp: ");
Serial.print(temp);
Serial.println(" Celsius");
delay(2000); //Delay 2 sec.
}

 

▼ 온도 습도 센서 사러가기!! ▼

 

DHT21 아두이노 온도 습도 디지털 센서 / AM2301 sensor : 스토어플랜트

[스토어플랜트] 안녕하세요 스토어플랜트입니다.

smartstore.naver.com

* 프로그램 코딩에 관해 처음이신 분은 아래 정리한 내용 참고 부탁드립니다. 질문사항이나 추가적으로 필요한 내용 있으면 언제든지 댓글로 남겨주세요 ^^

 

Arduino (아두이노) 스케치 프로그램 코딩 입문

아두이노(Arduino)는 프로그램에 의해 동작하는 Micro-controller입니다. 그렇기 때문에 프로그램 코딩을 어느 정도 할 수 있어야 원하는 홈 IoT (사물인터넷) 같은 프로젝트를 진행할 수 있습니다. 저처럼 프로그..

it-g-house.tistory.com

명령어 기능 사용법
  include 외부 라이브러리를 스케치 안에 포함할 때 사용 #include <라이브러리 파일명>
define 매크로 상수와 함수를 정의할 때 사용 #define 변수 상수(함수)
serial.begin 아두이노의 시리얼 통신(Serial communication)을 시작할 때 사용 Serial.begin(통신속도);
serial.print 아두이노 시리얼 통신의 데이터 값을 출력할 때 사용  Serial.print("출력내용");
delay 프로그램을 진행을 원하는 시간만큼 일시적으로 멈출 때 사용 delay(msec.);

 

 

 

반응형
반응형

 

 

아두이노(Arduino)를 구입하려고 온라인에서 'UNO R3'모델을 검색해보면 DIP타입? SMD타입? CH340? 이런 식으로 여러 종류가 있는 것을 확인할 수 있습니다. 가격이 너무 천차만별이고 생긴 건 다 비슷비슷해서 정말 아두이노 '아'자도 모를 때는 뭘 사야 할지 난감하죠 ㅠㅠ 

 

아두이노는 오픈소스(open-source)이기 때문에 누구든 어디에서든 아두이노 보드(Board)를 똑같이 만들어서 영리 목적으로 판매해도 문제가 되지 않습니다. 이러한 이유로 비슷하지만 다양한 종류의 보드들이 시중에서 판매 중이고 기능적으로 동일하지만 사용한 부품이 다르거나 만든 곳이 다른 제품들이 많습니다. 이러한 보드들을 '호환 보드'라고 합니다. 그래서 통상적으로 처음 상업적으로 제작한 이탈리아 제품을 '정품'이라고 합니다. (엄밀히 따지면 정품이라기보다 우량품? 정도로 저는 생각됩니다.) 하지만 다들 정품이라고 하면 통용되는 말이기 때문에 저도 포스팅에 정품 보드라고 할게요 ㅎㅎ

  

그럼 오늘은 아두이노 호환 보드 종류와 정품 보드와의 차이점에 대해 알아보겠습니다.

 


온라인상에서 구입할 수 있는 아두이노 우노 R3 종류는 세 가지입니다. 왼쪽부터 정품(2~3만 원대, DIP타입), 정품과 똑같이 생긴 호환 보드(7~8천 원대, DIP타입), 'CH340'이라고 불리는 호환 보드(4~5천 원대, SMD 타입)가 있습니다. 

 

아두이노 우노 R3 (Arduino UNO R3) 정품보드와 호환보드

여기서 DIP타입은 'Dual In-line Package' 약자이며, SMD 타입은'Surface Mount Device' 약자로 MCU (Micro Controller Unit) 반도체 칩 형태가 아래 사진 같이 생긴 것을 말합니다. 회로 보드에 실장 하는 방법에 따라 구분되는데 단순하게 칩에 다리가 있고 없고 차이라고 생각하셔도 됩니다. 사진에서 볼 수 있듯이 DIP 타입이 칩에 다리가 있는 제품이고 칩이 실장 된 보드 뒷면을 볼 때도 다리 구멍에 납땜된 것을 알 수 있습니다. 반대로 SMD 타입은 칩에 다리가 없기 때문에 칩이 실장 되어 있는 보드 뒷면이 깨끗합니다. 

 

DIP타입 ATmega328P칩
SMD타입 ATmega328P칩

 

보드에 실장 되어 있는 형태가 다를 뿐 MCU 반도체 칩은 정품, 호환 보드 모두 ATMega328P로 구성되어 있습니다. 정품 보드와 외관상으로 거의 비슷한 두 번째 보드는 다른 부분을 찾기 힘들 정도로 비슷하네요;; 뒷면의 프린팅만 다른정도..? 'CH340' 호환 보드는 회로 배열이나 사용된 부품이 일부 다르게 생겼습니다. 

 

 


그럼 실제적으로 기능에 차이점이 없는지 알아보겠습니다. 정품 보드와 호환 보드 모두 USB B type 케이블로 연결 가능합니다. 아두이노를 PC와 연결하는 방법은 링크 걸어요~ 참고 부탁드립니다.

 

아두이노(Arduino) 시작하기 - 스케치 (sketch) 실행

아두이노(Arduino)를 사용하려면 통합개발환경(IDE): 스케치(sketch) 소프트웨어를 통해 프로그램을 코딩하게 됩니다. 프로젝트를 진행하기 위해 스케치를 실행하고 아두이노를 PC와 연결하는데 간혹 진행이 잘 안..

it-g-house.tistory.com

여기서 잠깐!! 'CH340' 호환 보드는 PC와 통신하는 칩이 'WCH CH340G'로 구성되어있기 때문에 USB를 꼽아도 Port에 아두이노 호환 보드가 잡히지 않을 겁니다. 그래서 http://www.wch.cn/download/CH341SER_ZIP.html에서 CH340 드라이버를 다운로드하여서 설치해야 합니다. 

WCH 홈페이지 다운로드

혹시 다운로드가 안되시는 분들을 위해 파일을 업로드 해놓으께요

CH341SER.ZIP
0.18MB
드라이버 설치 파일

드라이버를 설치하고 PC와 아두이노가 정상적으로 연결되면 포트에 'CH340' 호환 보드를 인식하는 것을 확인할 수 있습니다.

 

 


 

저는 경험한 적은 없는데 첫 번째 호환 보드는 가끔 프로그램이 보드로 업로드가 안된다고 하네요.. 어떤 글에서 업로드하는 동시에 보드의 리셋 버튼을 눌렀더니 된다고 합니다 ^^ 이런저런 귀찮은 일이 싫으면 돈을 조금 더 투자해서라도 정품 보드를 사야겠네요 ㅎㅎ 정품 보드는 사진처럼 케이스부터 정품스럽습니다 ㅎㅎㅎ

 

아두이노 우노 R3 정품

 

▼ 아두이노 우노 R3 정품 (이탈리아 제품) 사러 바로가기 ▼

 

아두이노 우노 R3 정품 / Arduino Uno R3 이탈리아 제품 : 스토어플랜트

[스토어플랜트] 안녕하세요 스토어플랜트입니다.

smartstore.naver.com


 

여기까지 아두이노 우노 R3 (Arduino UNO R3) 호환 보드에 대해 간단히 알아보았습니다. 앞으로 계속 테스트하면서 외부기기나 센서를 동작할 때 호환보드 기능들의 문제점이나 차이점이 발생하면 포스팅하도록 하겠습니다.

 

다음에는 온습도 센서를 간단한 프로그램 코딩을 통해 동작해보도록 하겠습니다.

 

긴 글 읽어주셔서 감사합니다. 궁금하신 내용이나 추가적으로 필요한 내용 있으면 언제든지 댓글 부탁드립니다.

 

 

 

 

반응형
반응형

 

 

아두이노(Arduino)를 사용하기 위해서는 통합개발환경(IDE): 스케치(sketch) 소프트웨어를 통해 프로그램을 코딩해야 합니다. 프로그램을 통해 아두이노를 원하는 대로 동작하게 하고 사용자 편리에 맞게 프로그래밍부터 수정 및 아두이노로 업로드(코딩된 프로그램을 컴퓨터에서 아두이노로 송신)까지 모든 과정은 스케치 툴을 통해 진행됩니다.

 

지난 포스팅에서 스케치를 다운로드하고 설치하는 과정을 설명드렸는데요.. 프로그램을 코딩하기 위해 스케치를 실행하고 아두이노를 PC와 연결하는데 간혹 진행이 잘 안 되는 경우가 발생하더라고요..;; ㅠㅠ

 

그래서 오늘은 아두이노를 PC와 연결하고 정상적으로 연결되었는지 스케치를 통해 이를 확인하고 문제가 있으면 해결하는 방법까지 알아보도록 하겠습니다. 

 

2020.06.10 업데이트


아두이노 공식 홈페이지 https://www.arduino.cc로부터 (무료)다운받아 설치한 Arduino 프로그램을 실행하면 로딩 후 스케치(sketch): 통합개발환경 소프트웨어 첫 화면 창이 열립니다. 

 

스케치를 아직 설치하지 못하신 분은 링크 걸어드리게요~ 참고 부탁드립니다.

 

아두이노 (Arduino) 시작하기 - 통합개발환경(IDE): 스케치(sketch)

아두이노 (Arduino)는 마이크로 컨트롤러 (Micro controller)로 구성된 프로그램에 따라 명령을 수행합니다. 이전 포스팅에서 살펴보았듯이 아두이노를 통해 외부기기나 센서를 컨트롤 할 수 있습니다. 구상하는대..

it-g-house.tistory.com

다음과 같은 화면이 나오면 아두이노 프로그램이 정상적으로 실행되었습니다.

 

스케치(sketch) 실행 화면

 

상단 메뉴를 보면 스케치를 운영할 때 필요한 여러 가지 기능이 있습니다. 첫 번째 파일(file) 메뉴에서 파일을 열거나 저장하거나 기본적인 환경설정을 할 수 있습니다. 편집(Edit) 메뉴에는 프로그램을 코딩할 때 사용되는 편집 기능과 단축키에 대해 나와있고, 스케치(sketch) 메뉴에서는 라이브러리(Library) 관련 기능이 있습니다. 오늘은 두 메뉴는 사용하지 않으니 추후 자세히 정리하도록 하겠습니다.

 

 

 


 

 

이제 아두이노 보드를 PC에 연결하는 방법을 알아보겠습니다. 먼저 (Tools) 메뉴에서 보드(Board): “Arduino/Genuino Uno”를 확인합니다. 저는 가장 보편적으로 사용하는 UNO R3를 사용하였는데 혹시 다른 보드를 사용하신다면 해당하는 보드 이름을 선택해 주시면 됩니다.

 

그리고 USB B type 케이블을 컴퓨터 USB단자와 아두이노 USB포트에 연결시킵니다. PC가 아두이노를 정상적으로 인식하면 툴(Tools) 메뉴에서 인식한 PC USB 포트(Port) 번호가 표시됩니다.

 

 

아두이노 UNO 보드 설정

 

만약 연결이 잘 안 되거나 '내컴퓨터 장치관리자'의 포트에서도 아두이노를 인식하지 못하면 USB 케이블이 문제가 있거나 스케치 설치 시 드라이버가 제대로 설치되지 않았기 때문입니다문제를 해결하려면 드라이버를 다시 설치하면 되는데 설치 파일은 스케치를 설치한 경로(예시 - C:\Program Files (x86)\Arduino\)폴더 안에 'drivers' 폴더가 있고 그 안에 실행 파일이 있습니다. 

 

아두이노 드라이버 설치

 

만약 호환보드(CH340)를 사용하시면 따로 USB 드라이버를 설치해줘야 합니다. 호환보드에 관해서와 호환보드 드라이버 설치 및 컴퓨터와 연결방법에 대한 자세한 내용은 아래 링크 참고 부탁드립니다.

 

아두이노(Arduino) 호환보드(CH340): DIP? SMD?

아두이노(Arduino)를 구입하려는데 UNO R3 모델은 온라인상에 여러종류가 있는 것을 확인할 수 있습니다. 가격이 너무 천차만별이고 생긴건 다 비슷비슷하고 정말 아두이노 '아'자도 모를때는 뭘 사야할지 난감하..

it-g-house.tistory.com

USB 케이블로 PC와 연결하면 LED램프가 켜져요

 

모든 연결이 정상적으로 진행되면 아두이노 보드에 사진과 같이 LED램프가 켜지고 아래와 같이 포트번호가 표시되고 (저는 'COM9'라고 표시되네요 ^^) 프로그램 코딩할 준비가 되었습니다.

 

아두이노 (Arduino) 연결 포트 상태

 


오늘은 아두이노(Arduino)를 PC와 연결하고 연결이 정상적으로 확인하는 방법을 스케치(sketch)를 통해 알아보았습니다. 

 

다음 시간에는 간단한 코딩을 통해 아두이노를 동작시켜 보겠습니다.

 

공상을 현실로!

 

 

 

반응형
반응형

 

 

아두이노(Arduino)는 마이크로 컨트롤러(Micro-controller)로 구성된 프로그램에 따라 명령을 수행합니다. 이전 포스팅에서 살펴보았듯이 아두이노를 통해 외부기기나 센서를 컨트롤할 수 있습니다. 구상하는 대로 동작을 시키려면 명령을 시켜야 하는데.. 프로그램 코딩을 통해 아두이노한테 '행동지침'을 심어놓으면 명령대로 동작을 하게 됩니다. 여기서 필요한 게 통합개발환경(IDE): 스케치(sketch)라는 소프트웨어입니다.

 

오늘은 아두이노를 동작하기 위한 프로그램 코딩에 필요한 통합개발환경인 스케치 소프트웨어에 대해 알아보겠습니다. 저는 프로그램이랑 코딩과는 전혀 무관한 공부를 했던지라... 코딩은 넘사벽;;; 무지함의 끝을 보실지도 몰라요.. 뮤^뮤

 

그래도 저희 모두 함께 해보자고요!


  • 아두이노 통합개발환경 IDE (스케치) 

아두이노에서는 스케치(sketch)’라고 하는 통합개발환경(Arduino IDE) 개발툴을 제공하고 있습니다. 아두이노를 동작하기 위해선 Arduino IDE Software를 통해 컴퓨터에서 코딩 후 아두이노 보드로 전송하여야 합니다. 오늘은 아두이노 보드는 잠시 놔두고 프로그램 코딩을 위한 software를 설치하는 방법을 알아보겠습니다.

 


 

  • 스케치 (sketch) 설치

아두이노 IDE 다운로드 바로가기 https://www.arduino.cc/en/Main/Software 또는 아두이노 공식 홈페이지 https://www.arduino.cc에 접속하여 홈페이지 메인화면 상단에서 SOFTWARE DOWNLOADS를 선택합니다.

 

아두이노 (Arduino) 공식 홈페이지 메인화면

DOWNLOADS를 클릭하면 아래 화면과 같이 OS별 다운로드가 가능합니다. (2020.03.15 현재 버젼: 1. 8. 12)

 

아두이노 통합개발환경 IDE Download

본인의 OS에 맞는 버전을 선택하면 아래와 같이 유료인 듯 기부를 장려(?)하는 메시지를 볼 수 있지만... “JUST DOWNLOAD”를 클릭하면 됩니다.

 

아두이노 프로그램 다운로드 기부는 선택!

다운로드 후 설치 파일을 실행하면 아래와 같은 순서로 설치를 진행합니다.

 

아두이노(Arduino) 스케치 설치 경로 선택

 

아두이노 드라이버 설치는 필수!!
아두이노(Arduino) 스케치 설치 완료

여기서 주의하실 점은 설치경로에 한글이 포함되면 안 됩니다. 스케치 파일에서는 한글을 인식할 수 없기 때문에 추후 프로그램 코딩 후 컴파일 작업 및 프로그램이 정상적으로 동작하지 않을 수 있습니다.

 

 

 


 

  • 스케치 (sketch) 실행

설치가 끝나고 Arduino를 실행하면

 

클릭~

 

아두이노 스케치(sketch) 로딩 화면

다음과 같은 화면이 나오면 아두이노 프로그램을 코딩할 준비가 다되었습니다.

 

아두이노(Arduino) 스케치 실행 첫 화면

 

고생하셨습니다. ^^

 


여기까지 아두이노(Arduino) 통합개발환경(IDE): 스케치(sketch)를 설치하는 방법이었습니다. 

 

다음 시간은 스케치의 몇 가지 기능을 알아보고 아두이노를 컴퓨터와 연결하는 방법을 알아보겠습니다.

 

공상만 나날이..

 

 

반응형
반응형

 

 

 

아두이노(Arduino)는 자체적인 충전지(빠데리)나 전원이 없기 때문에 외부 전원을 공급해야 합니다. 오늘은 아두이노에 전원을 공급하는 방법을 알아보겠습니다. 

 

저는 표준 모델이라 인식되고 있는 아두이노 우노 R3 (Arduino UNO R3) 제품을 구입하였기 때문에 UNO R3 기준으로 포스팅하였습니다. 구입하고 처음 켜보는 거라 두근두근했어요~ ㅎㅎ

 


Arduino(아두이노)ّ의 전원을 연결하는 방법은 USB Port, DC barrel jack, Vin pin으로 크게 3가지가 있습니다.

 

USB 케이블
DC barrel jack 전원 어댑터

 


① USB 포트 (Port)

 

USB Port는 컴퓨터와 USB 케이블(표준형 USB B Type 케이블)로 연결하는 방법으로 컴퓨터로부터 전원(5V)을 공급받습니다. 또한 USB Port를 통해 컴퓨터와 통신을 하기 때문에 Arduino에 코딩한 프로그램을 전송하는데 반드시 필요합니다. USB 타입의타입의 5V 출력 스마트폰 충전기나 보조배터리를 USB Port와 연결해도 USB 케이블을 통해 전원 공급을 할 수 있습니다. 이때 충전기 어댑터나 보조배터리의 출력이 반드시 5V 인지 확인하셔야 합니다.

 

USB Port에 USB 케이블로 연결

 


 

② DC 배럴잭 (barrel jack)

 

두번째 방법으로 DC 배럴잭을 통해 전원을 공급하는 방법입니다. 컴퓨터와 연결하지 않고 아두이노 보드에 전원을 공급하는 용도로 DC 배럴잭(사이즈: 5.5x2,1mm)을 사용합니다. 아두이노는 외부로부터 6~20V 범위로 전원을 받을 수 있는데 일반적으로 7~12V로 공급되는 게 좋습니다. 7~12V 전원이 공급되더라도 레귤레이터를 통해 5V로 변환되어 아두이노 보드에 공급되기 때문에 걱정하지 않으셔도 됩니다. 대부분 우리나라 전원은 AC 220V이기 때문에 AC-DC 어댑터가 필요합니다. 어댑터의 정격 용량은 1A 이상의 DC 9V제품을 사용하는 것을 추천합니다(7V 미만은 보드 불안정, 12V이상은 레귤레이터 손상 가능하기 때문에...)

AC-DC 어댑터 사용 시 주의사항으로 어댑터 극성을 꼭 확인해야 합니다. 그림과 같이 Positive polarity를 사용해야 합니다. Negative polarity를 사용하시면 아두이노 보드가 타거나 고장 날 수 있습니다. DC barrel jack으로 건전지를 연결하여 전원을 공급할 수도 있습니다.

 

 

DC barrel jack에 전원 어댑터로 연결

 

건전지 사용 예시 (사진 출처 : bbangpan.tistory.com/52)

 


 

③ Vin 핀(pin) 

 

세 번째 방법으로 Vin pin을 통한 방법으로 보드의 VinGND에 점퍼선을 사용 Vin에 '+'전원을, GND에 '-'전원을 연결하여 외부 전원을 공급할 수 있습니다. Vin pin을 사용하면 레귤레이터를 통하지 않기 때문에 원하는 전원만큼 아두이노 보드에 전원을 공급하게 됩니다. 전원을 원하는 대로 공급 가능하지만 그만큼 과전압을 사용하지 않게 주의하셔야 합니다. 또한 배럴잭과 동시에 사용하지 않아야 합니다. 부주의시 역전압이 발생하여 폭발이나 화재의 위험이 있습니다.

 

Vin pin을 통한 Power 연결

 


여기까지 아두이노(Arduino)에 전원을 공급하는 방법을 알아보았습니다. 이제 전원이 들어오긴 했는데 어떻게 작동을 해야 할까요?? ^^ 기본적으로 아두이노 보드는 프로그램을 통해 제어되는데 '스케치(Sketch)'라는 통합개발환경(Integrated Development Environment, IDE) 소프트웨어를 통해서 프로그램을 코딩하고 보드로 업로드하는 일을 수행합니다. 스케치는 아두이노 홈페이지에서 무료로 제공되고 있기 때문에 추가적인 비용은 들지 않습니다. 

 

그럼 다음 포스팅에는 스케치를 설치하고 아두이노를 처음 동작을 하는 방법에 대해 알아보겠습니다.

 

 

 

반응형
반응형

 

 

아두이노(Arduino)는 "마이크로 컨트롤러(Micro-controller)"라고 많이 정의하고 있습니다. 실질적으로 거의 정확한 표현에 가깝습니다. 말그대로 마이크로는 미니(Mini)보다 작다는 표현으로 작은 컨트롤러, 다시말해 작은 제어장치입니다. 단편적인 기능에 의지한 설명으로는 센서나 모터 같은 전자부품을 제어하기 위한 반도체 회로 기판으로 말할 수 있습니다.

 

최근 홈 IoT (Internet of Things, 사물인터넷)에 대한 관심으로 DIY로 직접 제작하여 각자 개인의 취향에 맞게 홈 IoT를 구축하고 싶어 하는 사람들이 늘어나고 있습니다. 필자도 온실(greenhouse)의 환경 데이터를 실시간 관찰하기 위해서 아두이노에 입문하게 되었죠 ^^ 이미 많은 사람들이 아두이노 프로젝트를 진행하고 있는데.. 몇 가지 작품만 봐도 공학 본능이가 끌어 오릅니다. 그럼 아두이노의 정의 및 보드(board)의 기본 구성과 종류에 대해서 살펴보면서 아두이노가 무엇인지 간단하게 알아 보도록 하겠습니다.

 

아두이노를 이용한 프로젝트


  • 아두이노(Arduino) 란?

아두이노(이탈리아어: Arduino 아르두이노)는 오픈 소스를 기반으로 완성된 마이크로컨트롤러(Microcontroller) 보드와 관련된 개발도구 및 환경을 통틀어 총칭하는 말입니다. 2005년 이탈리아의 IDII (Interaction Design Institutelvera)에서 하드웨어에 익숙하지 않은 학생들이 자신들의 디자인 작품을 손쉽게 제어할 수 있게 하려고 고안된 임베디드 시스템 중 하나로 쉽게 개발할 수 있는 환경을 제공합니다. 아두이노 보드를 사용하여 다수의 스위치나 센서로부터 값을 받아들여, 전원이나 모터 같은 외부 전자 장치들을 통제할 수 있기 때문에 마이크로 컨트롤러라고 할 수 있으며 이를 쉽게 동작시킬 수 있다는 것이 가장 큰 장점입니다.

 

(출처: 위키백과)

 


 

  • 아두이노 보드의 기본 구성

아두이노 보드는 마이크로 컨트롤러 기능을 하기 위해 CPU(중앙처리장치) 역할을 하는 반도체 Chip을 사용하는데 주로 아트멜(Atmel)사의 AVR(8-비트 RISC 단일칩 마이크로 컨트롤러)를 사용하고 있습니다. 공식 보드의 마이크로 컨트롤러에는 주로 ATmega8, ATmega168, ATmega328과 같은 megaAVR 시리즈가 주로 사용됩니다. 보드에는 기본적으로 5V 리니어 레귤레이터와 16 MHz 결정 진동자(크리스털)가 내장되어 있으며, 기존 모든 보드는 RS-232 직렬 커넥터를 통해 프로그램되지만, 지금의 아두이노 보드들은 모두 USB를 통해 프로그래밍 가능하며, FT232와 같은 USB-시리얼 변환 칩을 통해 사용 가능합니다. UNO와 같은 주요 모델들은 14개의 디지털 입출력 핀을 제공하고 있으며, 그중 6개의 핀은 PWM (pulse-width modulated) 신호를, 다른 6개의 핀은 디지털 입출력 핀으로 혼용이 가능한 아날로그 입력 단자를 제공합니다.

 

 


 

  • 아두이노 보드 종류

아두이노 보드 종류는 매우 다양합니다. 원하는 프로젝트 목적에 따라 적합한 특성을 가진 다양한 보드를 적용하여 사용할 수 있습니다. 워낙 많은 제품군이 있기 때문에 오늘은 매우 대중적으로 사용되고 있는 대표적인 보드 세가지만 소개해드리고 추후 다양한 보드들을 정리하도록 하겠습니다.

 

<아두이노 UNO R3>

 

아두이노 보드 중 UNO R3가 현재 최신 버전으로 기본 표준 보드로 인식되고 있습니다. 현재 보드에서 출력 전압 5V, 3.3V가 지원 가능하고 변환기 없이 USB로 PC와 연결해서 사용할 수 있습니다. USB로 전원 공급되며 외부 입력으로도 전원 공급이 가능합니다. 확장 쉴드 등 다양한 외부 장치들의 핀 배열 등이 UNO를 기준으로 맞춰져 있기 때문에 처음 아두이노를 시작하신다면 고민할 필요 없이 UNO R3 추천합니다.

아두이노 우노 R3 (Arduino UNO R3)

<아두이노 나노(Nano)>

 

나노라는 이름만으로도 소형화 버전인지 알 수 있습니다. UNO 보드와 같은 ATmega328 칩을 보통 사용하기 때문에 UNO의 기능을 대부분 지원하고 라이브러리도 그대로 사용할 수 있습니다. Nano는 직접 USB로 업로딩이 가능하며 출력 전압 역시 5V, 3.3V 모두 지원합니다. 한마디로 소형 UNO라고 할 수 있지만 작기 때문에 방열 문제나 보호회로가 부족하기 때문에 보드 손상을 주의해야 합니다. 회로 기판에 바로 삽입하여 구성하거나 크기가 작은 프로젝트를 기획할 때 추천합니다.

아두이노 나노 (Arduino Nano)

<아두이노 메가(MEGA2560)>

 

MEGA 이름에 걸맞게 고성능과 많은 입출력 핀을 지원합니다. ATmega2560 MCU칩을 기반으로 이미지, 음성, 영상 등 다양한 기기의 제어와 응용으로 고성능이 필요한 곳에 유용할 수 있습니다. 그러나 UNO 보드와 핀 배열, 특징이 많이 다르기 때문에 처음 아두이노를 접하시는 분들은 다루기 어려울 수 있습니다. 온라인 상에서 공유되는 대부분의 튜토리얼이나 라이브러리 및 확장 쉴드가 UNO를 기반으로 제공되기 때문에 이슈 발생 시 어디가 문제인지 해결하기 막막할 수 있습니다. 단지 더 파워풀한 보드에서 럭셔리한 입출력 핀을 가지고 싶다고 선택하기보다는 보드 특성을 파악하고 선택하는 것을 추천합니다.

 

아두이노 메가 (Arduino MEGA2560)

 


지금까지 아두이노의 기본적인 부분과 몇 가지 보드를 살펴보았습니다. 저는 아두이노 우노 R3를 구입하였습니다. 기획하는 프로젝트가 어디까지 발전할 수 있을지 모르겠지만 저의 도전기를 함께 하시면 좋겠습니다.

 

다음 글에는 아두이노를 시작하기 위한 준비를 해보도록 하겠습니다.

 

 

 

반응형

+ Recent posts