소개
이 게시물의 목적은 ESP32와 Arduino 환경을 사용하여
간단한 HTTP GET requests를 수행하는 방법을 설명하는 것입니다.
그렇게 하기 위해 우리는 HTTPClient.h 라이브러리를 사용할 것 입니다.
중요: 이 게시물을 작성하는 시점에서 이 라이브러리는 여기에서 볼 수 있듯이
Github 마스터 코드와 방금 병합되었습니다. 따라서 ESP32 Arduino 지원 라이브러리 버전을
업데이트해야 할 가능성이 큽니다. 여기 에서 수행 방법에 대한 지침을확인할 수 있습니다.
변경 사항을 적용하려면 Windows에서 Git GUI를 열고
get.exe 파일을 관리자로 실행해야 할 수 있습니다 .
모든 것이 제대로 작동하면 Arduino IDE의 예제 메뉴 아래에
HTTPClient 예제에 대한 항목이 있어야 합니다 .
Github 에서 예제 를 볼 수도 있습니다 .
HTTPClient 라이브러리를 사용할 수 있게 되기 전에
HTTP 요청을 수행할 수 있었지만 이 예제 에서 볼 수 있는 것처럼
소켓 연결을 통해 모든 HTTP 프로토콜을 처리해야 했기 때문에 이것은 더 복잡했습니다 .
다행히 이 라이브러리는 많은 복잡성을 숨기고 사용하기 쉬운 기능만 노출합니다.
따라서 간단한 예에서 WiFi 네트워크에 연결하고
가짜 온라인 나머지 API 웹 사이트에 대한 일부 HTTP GET 요청을 수행합니다.
여기에서 이 웹사이트를 탐색할 수 있습니다 .
아래 코드 는 HTTPClient 라이브러리와 함께 제공되는
기본 예제 중 하나를 기반으로 하므로 시도해 보시기 바랍니다.
코드
우선, WiFi 네트워크에 연결하고 HTTP 요청을 수행하기 위한 라이브러리를 포함해야 합니다.
당신의 ESP32와 WiFi 네트워크에 연결하는 방법을 더 자세히 확인할 수 있습니다. 이전 게시물.
또한 setup() 함수에서 연결할 수 있도록 WiFi 네트워크의 자격 증명을 저장해야 합니다.
그렇게 하기 위해 우리는 아래에서 볼 수 있는 것처럼
두 개의 전역 변수를 선언할 것입니다. 네트워크 자격 증명으로 값을 변경해야 합니다.
#include <WiFi.h>
#include <HTTPClient.h>
const char* ssid = "yourNetworkName";
const char* password = "yourNetworkPassword";
이제 setup() 함수에서 디버깅 메시지를 인쇄하기 위해 직렬 연결을 열고 WiFi 네트워크에 연결합니다.
절차에 대한 자세한 설명이 필요하시면 이전 포스팅을 확인해주세요 .
라이브러리가 백그라운드에서 수행하는 모든 작업 이 제대로 시작되도록 하려면
WiFi.begin 호출 전에 지연을 유지하십시오 .
이 글을 쓰는 시점에 지연을 포함하지 않으면 대부분의 경우 WiFi 네트워크 연결이 실패합니다.
void setup() {
Serial.begin(115200);
delay(4000);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}
Serial.println("Connected to the WiFi network");
}
Arduino 메인 루프에서 HTTP requests를 보낼 것입니다.
먼저 HTTPClient 클래스의 객체를 선언합니다 .
이 클래스는 낮은 수준의 구현 세부 사항에 대해 걱정할 필요 없이
HTTP 기능으로 작업하는 데 도움이 되는 많은 메서드를 사용할 수 있도록 합니다.
헤더 파일 에서 해당 메소드 목록을 확인할 수 있습니다 .
HTTPClient http;
그런 다음 이전에 선언된 객체 에서 begin 메서드를 호출 하여
HTTP 요청을 수행하려는 URL을 문자열 매개변수로 전달합니다.
우리가 말했듯이, 우리는 테스트 웹사이트로 요청을 보낼 것입니다.
웹 브라우저에서 URL에 직접 액세스하여 반환될 예상 콘텐츠를 확인할 수 있습니다.
http.begin("http://jsonplaceholder.typicode.com/comments?id=10"); //Specify the URL
이제 요청을 보내기 위해 http 개체에서 GET 메서드를 호출하기만 하면 됩니다.
이 메서드는 인수를 받지 않고 요청의 HTTP 코드를 반환합니다.
이 코드는 오류 처리를 위해 변수에 저장됩니다.
0보다 작은 코드는 라이브러리의 오류 코드 이고( 여기 에서 목록을 확인할 수 있음 )
0보다 큰 값은 표준 HTTP 반환 코드 입니다.
따라서 코드가 0보다 크면 반환된 HTTP 코드와 요청에 대한 응답을 모두 인쇄합니다.
인수를 받지 않고 응답과 함께 문자열을 반환하는 getString 메서드를 호출하여 응답을 얻습니다 .
그렇지 않으면 오류 메시지가 인쇄됩니다.
if (httpCode > 0) { //Check for the returning code
String payload = http.getString();
Serial.println(httpCode);
Serial.println(payload);
}else {
Serial.println("Error on HTTP request");
}
마지막으로 리소스가 해제되었는지 확인하기 위해 end 메서드를 호출해야 합니다 .
이 부름을 잊지 않는 것이 중요합니다.
http.end(); //Free the resources
각 요청 사이에 약간의 지연이 이미 포함된 전체 소스 코드를 아래에서 확인할 수 있습니다.
또한 각 요청 전에 WiFi 네트워크에 여전히 연결되어 있는지 확인합니다.
#include <WiFi.h>
#include <HTTPClient.h>
const char* ssid = "yourNetworkName";
const char* password = "yourPassword";
void setup() {
Serial.begin(115200);
delay(4000);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}
Serial.println("Connected to the WiFi network");
}
void loop() {
if ((WiFi.status() == WL_CONNECTED)) { //Check the current connection status
HTTPClient http;
http.begin("http://jsonplaceholder.typicode.com/comments?id=10"); //Specify the URL
int httpCode = http.GET(); //Make the request
if (httpCode > 0) { //Check for the returning code
String payload = http.getString();
Serial.println(httpCode);
Serial.println(payload);
}
else {
Serial.println("Error on HTTP request");
}
http.end(); //Free the resources
}
delay(10000);
}
코드 테스트
코드를 테스트하려면 Arduino IDE로 코드를 업로드하고 직렬 모니터를 여십시오.
그림 1과 유사한 출력이 표시되어야 합니다. OK 코드에 해당하는 HTTP 200 코드가 표시됩니다.
그림 1 - ESP32용 HTTP GET 프로그램의 출력.
결과를 확인하기 위해
웹 브라우저에서 직접 URL에 액세스할 때 반환되는 출력을 그림 2에서 확인할 수 있습니다.
보시다시피 대답은 동일합니다.
그림 2 - 웹 브라우저에서 URL에 직접 액세스
'ESP32' 카테고리의 다른 글
ESP32 MicroPython: Getting started with the uPyCraft IDE (0) | 2021.08.16 |
---|---|
ESP32 Arduino: Getting started with WiFi (0) | 2021.08.16 |
ESP32 / ESP8266 MicroPython: Running a script from the file system (0) | 2021.08.16 |
ESP32 / ESP8266 MicroPython: Automatic connection to WiFi (0) | 2021.08.16 |
ESP32: MicroPython support (0) | 2021.08.16 |