스마트 디바이스 실습 10주차
ThingSpeak DHT11 WIFI
한세대학교 컴퓨터공학과 22학번 김선영
한세대학교 컴퓨터공학과 22학번 김선영
- 필요한 라이브러리 가져오기
#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에 출력된 모습
- ThingSpeak
- ThingSpeak와 wifi 연동에 대한 기초 지식을 습득하고 데이터를 시각화 하는 방법에 대해서 배울 수 있었음.
- wifi 통신의 개념에 대해서 정리할 수 있었고 ThingSpeak에 직접 실습해보면서 흥미를 느낌.