반응형

 

 

 

아두이노(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

 

 

반응형

+ Recent posts