아두이노

[아두이노]온습도 휴대폰 출력(HC06, DHT11이용)

알까 2022. 5. 25. 20:01

https://catch-sin.tistory.com/11

 

[아두이노]온습도 측정(DHT11)을 통한 LED와 부저 울리기[3편]

https://catch-sin.tistory.com/10 [아두이노]온습도 측정(DHT11)을 통해 PMV(쾌적성 지표) 계산하기 [2편] https://catch-sin.tistory.com/9 [아두이노]온습도 측정 결과값 도출하기.(DHT11센서 이용)[1편] 최근..

catch-sin.tistory.com

 

이전 포스팅에서는 LED와 부저 작동에 관한 코딩을 작성하고 실제 결과를 확인했습니다.

 

이번 포스팅에서는 온습도 센서를 통해 도출한

온도, 습도, PMV, PPD를 휴대폰으로 출력하려고 합니다.

 

발전 방향은 다음과 같습니다.

 


블루투스 교신을 위한 발전방향

1. 블루투스 모듈 회로 구성

2. MIT App Inventor 를 이용한 화면 구성 및 코딩

3. 블루투스 교신을 위한 아두이노 코딩 작성

4. PPD 계산 

5. 휴대폰에 결과값 출력

6. 1~4편까지의 결과물

 


 

1. 블루투스 모듈 회로 구성

 

블루투스 모듈 HC06

HC06 모듈 일러스트가 없어서 선만 표시하였습니다.

 

실제로 설치는 다음과 같이 하시면 됩니다.

 

HC06 회로구성

HC06 아래에 VCC/GND/TXD/RXD 가 적혀있으므로 순서에 맞게 회로를 구성해주시면 됩니다.

 


2. MIT App Inventor 를 이용한 화면 구성 및 코딩

 

https://www.youtube.com/watch?v=wJCs8k1t6cg 

 

저는 이분 유튜브를 참고해서  MIT App Inventor 화면구성과 코딩을 하였습니다.

전체를 이용한 것은 아니고 일부만 이용하였는데, 그 결과는 다음과 같습니다.

 

정렬, list Picker1, Label1, BluetoothClient1, Clock1으로 화면구성

이 화면 구성에 대해서는 영상을 참고하시는 편이 훨씬 나으실 것 같습니다. 

사실 그냥 가져다 두기만 해도 어느정도 구성이 가능합니다.

 

코딩은 다음과 같습니다.

블루투스 교신 코딩

첫째 블록부터 간단하게 설명을 드리자면

 

1. 블루투스 주소를 가져온다

2. 블루투스를 연결한다.

3. 블루투스를 통해 받은 정보를 출력한다.

로 설명할 수 있습니다.

 

다음과 같은 화면구성과 코드구성을 마치셨다면 MIT App Inventor에서 할 내용은 다 끝났습니다.

 


3. 블루투스 교신을 위한 아두이노 코딩 작성

 

#include <SoftwareSerial.h> // 블루투스 교신을 위한 라이브러리 가져오기
SoftwareSerial HC06(A4, A5); //블루투스 교신 TX, RX
#include <DFRobot_DHT11.h>
DFRobot_DHT11 DHT;
#define DHT11_PIN A0

 
void setup(){
  Serial.begin(9600);
  HC06.begin(9600); //블루투스-휴대폰통신 속도지정
 
 
}
 
void loop(){
  DHT.read(DHT11_PIN);
 
 
//계산부
  float ps = 6.112*exp(17.62*DHT.temperature/(243.12+DHT.temperature));
  float fp = 1.0016 + 3.15*pow(10,-6)*760 - 0.074/760;
  float pm = fp*ps;
  float pa = DHT.humidity*pm;
  float fcl = 1.0903;
  float icl = 0.07;
  float hc = 4.3;
  float tcl=0.0008144*pow(DHT.temperature,2)+0.3488*DHT.temperature+21.24;
  float M = 58.2;
 
  float H = 3.96*pow(10,-8)*fcl*(pow((tcl+273),4)-pow((DHT.temperature+273),4))+fcl*hc*(tcl-DHT.temperature);
  float Ec = 3.05*pow(10,-3)*(5733-6.99*M-pa)-0.42*(M-58.15);
  float C = 0.0014*M*(34-DHT.temperature);
  float Er = 1.7*pow(10,-5)*M*(5867-pa);
 
  float PMV = (0.303*exp(-0.036*M)+0.028)*(M-H-Ec-C-Er);
  float PPD = 100 - 95*exp(-(0.03353*pow(PMV,4)+0.2179*pow(PMV,2))); // PPD 계산 식 구성
 
//출력부
  Serial.print("온도:");
  Serial.print(DHT.temperature);
  Serial.print("*C");
  Serial.print("  습도:");
  Serial.print(DHT.humidity);
  Serial.println("%");
  Serial.print("PMV : ");
  Serial.println(PMV);
  Serial.print("PPD : ");
  Serial.println(PPD);
 
 
 
    String data1 = String("온도 :") +String( DHT.temperature)+ String("*C");
    String data2 = String("습도 :") +String( DHT.humidity)+ String("%");
    String data3 = String("PMV :") +String( PMV);
    String data4 = String("PPD :") +String(PPD);
    HC06.println(data1);
    HC06.println(data2);
    HC06.println(data3);
    HC06.println(data4);
 

  delay(1800000);

} 

편의를 위해 이전 포스팅에서 진행했던, LED와 부저에 관한 코딩은 삭제하였습니다.

 

위 코딩을 작성한 후 인코딩을 진행해주시면 됩니다.


4. PPD 계산

 

파란색으로 쓰여진 부분은 PPD 계산에 관한 식을 추가한 것입니다.

PPD란 PMV를 변수로 이용하는 식으로 "불쾌감을 느낄 사람의 비율"을 나타냅니다.

 

앞서 말씀드린 PMV에 따라

PMV
-3 -2 -1 0 1 2 3
매우추움 추움 약간추움 쾌적함 약간더움 더움 매우더움

쾌적한 0에서 최소값을 가지고 |PMV|가 커질수록 PPD(불편함을 느끼는 사람의 비율)는 증가합니다.

 


5. 휴대폰에 결과값 출력

 

휴대폰으로 결과값 출력하는 방법

 

MIT App Inventor - Connect - AI Companion 을 클리하시면 다음과 같은 QR코드가 뜹니다.

 

 

어플리케이션 App Inventor를 다운 받으시고 코드나 QR코드를 입력해주시면 됩니다.

 

 

이러한 코딩을 완료하면 다음과 같은 결과물이 도출됩니다.

 

아두이노와 블루투스 통신 결과

 

6. 1~4편까지의 결과물

프로젝트 과정을 거쳐서 

 

https://catch-sin.tistory.com/9

 

[아두이노]온습도 측정 결과값 도출하기.(DHT11센서 이용)[1편]

최근 아두이노를 이용한 프로젝트를 진행하였습니다. 전자공학과는 아니었지만 평소 IOT에 관해 관심이 많았기 때문에 아두이노를 프로젝트 주제로 선정했습니다만, (사실 좀 후회됩니다... 하

catch-sin.tistory.com

https://catch-sin.tistory.com/10

 

[아두이노]온습도 측정(DHT11)을 통해 PMV(쾌적성 지표) 계산하기 [2편]

https://catch-sin.tistory.com/9 [아두이노]온습도 측정 결과값 도출하기.(DHT11센서 이용)[1편] 최근 아두이노를 이용한 프로젝트를 진행하였습니다. 전자공학과는 아니었지만 평소 IOT에 관해 관심이 많

catch-sin.tistory.com

https://catch-sin.tistory.com/11

 

[아두이노]온습도 측정(DHT11)을 통한 LED와 부저 울리기[3편]

https://catch-sin.tistory.com/10 [아두이노]온습도 측정(DHT11)을 통해 PMV(쾌적성 지표) 계산하기 [2편] https://catch-sin.tistory.com/9 [아두이노]온습도 측정 결과값 도출하기.(DHT11센서 이용)[1편] 최근..

catch-sin.tistory.com

 

온습도 출력, PMV계산 및 출력, LED와 부저 작동을 완료했습니다.

추가로 이번 포스팅을 통해 PPD계산 및 출력, 블루투스를 통한 스마트폰으로 출력을 완료했습니다.

 

 

그 결과물은 다음과 같습니다.

 

1~4편을 통한 최종 결과물

조금 더 직관적인 영상을 위해 4배속으로 동영상 편집을 하였습니다.

 

이제 프로젝트의 막바지에 다다르고 있습니다.

 

다음 포스팅에서는 시간에 따른 PMV와 PPD의 변화량을 그래프로 표현하고 분석하는 과정을 다루도록 하겠습니다.