아두이노프로세싱 프로그래밍

초보자를 위한 “DHT11 온습도 데이터 ThingSpeak 그래픽 처리를 위한 아두이노 weMos D1 와이파이 코딩”

coding art 2017. 7. 2. 17:29
728x90

 

 

아두이노 우노를 비롯한 어떠한 호환 보드를 사용하드라도 Adafruit 사의 DHT11 온습도 센서를 사용한 측정 및 측정 결과의 그래픽 처리 및 저장은 사물인터넷 코딩의 출발점이다.

 

DHT11의 전원은 3.3V를 사용하도록하며 3V3과 GND 에 연결 배선한다.

데이터 선은 보드에 표시된 대로 D4 연결하고
코딩 시에 디지털 데이터 핀 번호를 D4 로 설정한다.

 

아울러 weMos NodeMCU 코딩에 차이점을 찾아보기 위하여 온갖 노력을 다하고 있으나 아직까지 아무런 차이점을 찾지 못했으며 차이점을 찾게 되면 블로그에 올릴 계획이다.

 

 

아래의 코드를 클론하여 아두이노 편집기에서 컴파일하여 업로딩한다. 아울러 ThingSpeak 싸이트에 로그인하여 온도 그래프와 습도 그래프를 준비해 둔다. 그 과정은 이미 아래에 예시한 본 블로그의 자세한 내용을 참조 바란다.

 

4-4 아두이노 Cactus ESP8266WiFi 보드 Thingspeak 웹서버 예제: I 아날로그 입력 데이터 생성 및 Thingspeak 전송 및 그래프 작성  99
      http://blog.daum.net/ejleep1/305
4-5 아두이노 Cactus Micro ESP8266WiFi 클라이언트 Thingspeak 웹서버 코딩: II  106
    http://blog.daum.net/ejleep1/306
4-7 ESP8266WiFi NodeMCU 12E WiFi 모듈사용 ThingSpeak 전압데이터 전송:II
http://blog.daum.net/ejleep1/307


아래의 2017년 7월 2일 오후 5시 경의 측정 데이터 온도 26도 습도 51%를 참조하기 바란다.

 

 

해외 참조 사이트

how2electronics.com/dht11-humidity-temperature-nodemcu-thingspeak/

 

DHT11 Humidity Temperature Monitor with NodeMCU on ThingSpeak

Humidity & Temperature Monitor using DHT11 & NodeMCU ESP8266 on ThingSpeak. Upload DHT11 Sensor Data on Cloud Server of Thinspeak. Source Code & Circuit

how2electronics.com

weMos_thingspeak_DHT11_01

 

#include <ESP8266WiFi.h>
#include <DHT11.h>   
 #define myPeriodic 15 //in sec | Thingspeak pub is 15sec

 const char* server = "api.thingspeak.com";
 String apiKey = "0PKP69L3W0DXYESP";//반드시 자신의 ThingSpeak APi 키 값 입력
 const char* MY_SSID = "android1234";//반드시 자신의 무선 공유기 ID 입력
 const char* MY_PWD = "dddddddddd"; //반드시 자신의 무선공유기 비밀번호 입력
 int sent = 0;
 int pin = D5;  //Signal 이 연결된 아두이노weMos의 핀번호

 DHT11 dht11(pin); 

 void setup() {
   Serial.begin(115200);
   connectWifi();
 }
 
 
 void loop() {
   WiFiClient client;

  int err;
  float temp, humi;
  if((err=dht11.read(humi, temp))==0)
  {
    Serial.print("temperature:");
    Serial.print(temp);
    Serial.print(" humidity:");
    Serial.print(humi);
    Serial.println();
  }
  else                               
  {
    Serial.println();
    Serial.print("Error No :");
    Serial.print(err);
    Serial.println();   
  }
                    
// Send temperature data.    
 if (client.connect(server, 80)) { // use ip 184.106.153.149 or api.thingspeak.com
    Serial.println("WiFi Client connected ");

    Serial.print(String(sent)+" Temperature: ");
    Serial.println(temp);

    Serial.print(String(sent)+" Humidity: ");
    Serial.println(humi);
             
    String postStr = apiKey;
    postStr += "&field1=";    
    postStr += String(temp);    
    postStr += "\r\n\r\n";

    client.print("POST /update HTTP/1.1\n");
    client.print("Host: api.thingspeak.com\n");
    client.print("Connection: close\n");
    client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(postStr.length());
    client.print("\n\n");
    client.print(postStr);
    delay(1000);

 }//end if temperature
 
   client.stop();
   delay(15000);
  
//Send humidity data.     
 if (client.connect(server, 80)) { // use ip 184.106.153.149 or api.thingspeak.com

     String humidStr = apiKey;
     humidStr += "&field2=";
     humidStr += String(humi);
     humidStr += "\r\n\r\n"; 
  
    client.print("POST /update HTTP/1.1\n");
    client.print("Host: api.thingspeak.com\n");
    client.print("Connection: close\n");
    client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(humidStr.length());
    client.print("\n\n");
    client.print(humidStr);
    delay(1000); 
       
  }//end if   
   
   sent++;
   client.stop();
   delay(15000);
   
 }
 
 
 void connectWifi()
 {
   Serial.print("Connecting to "+*MY_SSID);
   WiFi.begin(MY_SSID, MY_PWD);
   while (WiFi.status() != WL_CONNECTED) {
   delay(1000);
   Serial.print(".");
   }
   
   Serial.println("");
   Serial.println("Connected");
   Serial.println("");  
 }//end connect 끝