[ESP32] HTTP 서버로 동작하도록 구현하기

[fusion_builder_container hundred_percent=”no” equal_height_columns=”no” menu_anchor=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” background_color=”” background_image=”” background_position=”center center” background_repeat=”no-repeat” fade=”no” background_parallax=”none” parallax_speed=”0.3″ video_mp4=”” video_webm=”” video_ogv=”” video_url=”” video_aspect_ratio=”16:9″ video_loop=”yes” video_mute=”yes” overlay_color=”” video_preview_image=”” border_size=”” border_color=”” border_style=”solid” padding_top=”” padding_bottom=”” padding_left=”” padding_right=””][fusion_builder_row][fusion_builder_column type=”1_1″ layout=”1_1″ background_position=”left top” background_color=”” border_size=”” border_color=”” border_style=”solid” border_position=”all” spacing=”yes” background_image=”” background_repeat=”no-repeat” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” margin_top=”0px” margin_bottom=”0px” class=”” id=”” animation_type=”” animation_speed=”0.3″ animation_direction=”left” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” center_content=”no” last=”no” min_height=”” hover_type=”none” link=””][fusion_text]

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

[/fusion_text][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]

You may also like...