ESP32를 서버로 사용하기 위해서는 다음의 두 라이브러리가 필요합니다.

1. ESPAsyncWebServer

  • 비동기 HTTP 서버를 구성할 수 있는 라이브러리
  • 아래의 주소에서 소스를 다운로드
  • 다운받은 소스를 아래의 경로에 복사
    • c:\사용자\사용자명\문서\Arduino\libraries
  • 해당 서버에서 ZIP 파일로 다운을 받은 경우 압축 해제 후 생성될 폴더의 이름에서 ‘-master’를 제거

2. AsyncTCP

  • 비동기 TCP 라이브러리
  • ESPAsyncWebServer 사용하기 위해 필요한 라이브러리 -> 해당 라이브러리의 API 직접 사용하지 않음
  • 아래의 주소에서 소스를 다운로드
  • ESPAsyncWebServer와 동일하게 라이브러리에 추가

두 라이브러리 설치가 완료되면 Arduino IDE를 열어 아래의 코드를 구현합니다.

#include <FS.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <WiFi.h>

const char* ssid     = "USER_SSID";
const char* password = "PASSWORD";

// HTTP 로 연결될 포트 설정
AsyncWebServer server(80);

void setup()
{
    Serial.begin(115200);
    delay(10);
    
    Serial.println();
    Serial.println();
    Serial.print("Connecting to ");
    Serial.println(ssid);

    WiFi.begin(ssid, password);

    // 와이파이망에 연결
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }

    Serial.println("");
    Serial.println("WiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());  

    setApi();
    startServer();
}

// HTTP route 및 method 구현
// method : HTTP_POST, HTTP_GET, HTTP_PUT, HTTP_ANY
void setApi() {    
    server.on("/hello", HTTP_GET, [](AsyncWebServerRequest *request){
        request->send(200, "text/plain", "Hello World");
    });
}

// HTTP 서버 시작
void startServer() {
    server.begin();
}

void loop()
{
    
}

위의 코드를 컴파일하여 실행하면 ESP32에 할당된 IP주소를 확인할 수 있습니다.

해당 주소에 코드에서 구현한 루트를 추가하여 웹브라우저에 입력하면 ‘Hello World’가 출력되는 것을 확인할 수 있습니다.

참고자료

https://www.dfrobot.com/blog-857.html