스마트 디바이스 실습 10주차

ThingSpeak DHT11 WIFI

한세대학교 컴퓨터공학과 22학번 김선영


WIFI란?

  1. Wi-Fi (Wireless Fidelity)는 무선 네트워크 기술로, 컴퓨터, 스마트폰, 태블릿 등의 장치가 인터넷에 접속하고 통신할 수 있도록 함.
  2. Wi-Fi를 사용하면 인터넷에 유선 연결 없이 무선으로 데이터를 주고받을 수 있음.

ThingSpeak Wifi통신

  1. ThingSpeak는 Wi-Fi를 통해 장치와 인터넷 간의 데이터 통신을 지원함.
  2. 장치(예: ESP32)에서 수집한 데이터를 ThingSpeak 서버로 업로드할 수 있고 이러한 기능을 사용하여 원격에서 데이터를 모니터링하고 저장할 수 있음.

실습 : ThingSpeak & WIFI

- 필요한 라이브러리 가져오기

                                                
    #include <WiFi.h>
    #include <WiFiClient.h>
    #include <DHT.h>
    ...  
                                              

- WiFi 연결 설정하기

                                            
    #define WIFI_SSID "[wifi id]"
    #define WIFI_PASSWORD "[password]"
...                                                
                                          

- ESP32와 DHT11 온습도 센서, 그리고 ThingSpeak를 사용 설정

                                          
    #define DHT_PIN 13 // DHT11 센서 연결 핀
    #define DHT_TYPE DHT11
    
    #define THINGSPEAK_SERVER "api.thingspeak.com"
    #define THINGSPEAK_API_KEY "7OWWUL25WGUBU610"
    #define THINGSPEAK_CHANNEL_ID 2153944
    
    DHT dht(DHT_PIN, DHT_TYPE);
    
    WiFiClient client;
    ...

                                        

메인 코드

                                                
    ...
    void setup() {
        Serial.begin(115200);
        
        WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
        
        while (WiFi.status() != WL_CONNECTED) {
            delay(1000);
            Serial.println("Connecting to WiFi...");
        }
        
        Serial.println("Connected to WiFi!");
        
        dht.begin();
        }
        
        void loop() {
        float temperature = dht.readTemperature(); // 온도 읽기
        float humidity = dht.readHumidity(); // 습도 읽기
        
        if (isnan(temperature) || isnan(humidity)) {
            Serial.println("Failed to read from DHT sensor!");
            return;
        }
        
        Serial.print("Temperature: ");
        Serial.print(temperature);
        Serial.print(" °C, Humidity: ");
        Serial.print(humidity);
        Serial.println(" %");
        
        if (client.connect(THINGSPEAK_SERVER, 80)) {
            String data = String("field1=") + String(temperature) +
                        "&field2=" + String(humidity);
        
            String request = String("POST /update HTTP/1.1\n") +
                            "Host: " + String(THINGSPEAK_SERVER) + "\n" +
                            "Connection: close\n" +
                            "X-THINGSPEAKAPIKEY: " + String(THINGSPEAK_API_KEY) + "\n" +
                            "Content-Type: application/x-www-form-urlencoded\n" +
                            "Content-Length: " + String(data.length()) + "\n\n" +
                            data;
        
            client.print(request);
        
            Serial.println("Sending data to ThingSpeak...");
        
            delay(2000); // ThingSpeak 서버에 전송을 위해 충분한 지연 시간
        
            client.stop();
        }
        else {
            Serial.println("Failed to connect to ThingSpeak!");
        }
        
        delay(5000); // 5초마다 전송
        }
                                                
                                              

결과화면

- Serial Monitor에 출력된 모습

Responsive image

- ThingSpeak

Responsive image

실습을 통해 느낀점

- ThingSpeak와 wifi 연동에 대한 기초 지식을 습득하고 데이터를 시각화 하는 방법에 대해서 배울 수 있었음.

- wifi 통신의 개념에 대해서 정리할 수 있었고 ThingSpeak에 직접 실습해보면서 흥미를 느낌.


Previous   /   Next