7주차_참고 : 텍스트 기반 ESP32 DHT11 웹서버 코드 - dhryu60/SmartDevice_2025-1 GitHub Wiki
텍스트 기반 버전
- 웹 브라우저로 접속 시 HTML 없이 순수 텍스트만 출력되도록 변경되었으며,
루트 경로(/
)를 열면 온도와 습도 값을 텍스트로 확인할 수 있고,
별도로/temperature
,/humidity
경로로도 각각 요청할 수 있음
#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebSrv.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
// Wi-Fi 정보 입력
const char* ssid = "네트워크_SSID";
const char* password = "네트워크_비밀번호";
// DHT 센서 설정
#define DHTPIN 18
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
// 웹서버 객체 생성
AsyncWebServer server(80);
// 온도 읽기 함수
String readDHTTemperature() {
float t = dht.readTemperature();
if (isnan(t)) {
Serial.println("온도 읽기 실패");
return "--";
} else {
Serial.print("온도: ");
Serial.println(t);
return String(t);
}
}
// 습도 읽기 함수
String readDHTHumidity() {
float h = dht.readHumidity();
if (isnan(h)) {
Serial.println("습도 읽기 실패");
return "--";
} else {
Serial.print("습도: ");
Serial.println(h);
return String(h);
}
}
void setup() {
Serial.begin(115200);
dht.begin();
// Wi-Fi 연결
Serial.print("Wi-Fi 연결 중: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("\nWi-Fi 연결됨. IP 주소:");
Serial.println(WiFi.localIP());
// 루트 페이지: 텍스트로 온습도 정보 출력
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
String msg = "=== ESP32 온습도 정보 ===\n";
msg += "온도: " + readDHTTemperature() + " °C\n";
msg += "습도: " + readDHTHumidity() + " %\n";
msg += "\n개별 확인: /temperature 또는 /humidity";
request->send(200, "text/plain", msg);
});
// 온도 전용 요청 처리
server.on("/temperature", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(200, "text/plain", readDHTTemperature());
});
// 습도 전용 요청 처리
server.on("/humidity", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(200, "text/plain", readDHTHumidity());
});
server.begin();
}
void loop() {
// 비동기 웹서버: loop 비워둠
}
- ESP32와 DHT11 연결
- 스마트폰 핫스팟이나 공유기에 연결
- 시리얼 모니터로 IP 주소 확인
- 브라우저에서 접속
주소 | 기능 |
---|---|
http://<ESP32_IP>/ |
텍스트 기반 온도/습도 확인 |
http://<ESP32_IP>/temperature |
온도만 표시 |
http://<ESP32_IP>/humidity |
습도만 표시 |
- HTML, CSS 없이도 작동 가능
- 모바일 브라우저나 커맨드라인(curl)으로 쉽게 테스트 가능
- 메모리 사용량이 적어 더 안정적