ESP8266 WiFi 모듈 및 Arduino를 사용하여 HTTP 쿼리를 작성하는 라이브러리

ESP8266 WiFi 모듈 및 Arduino를 사용하여 HTTP 쿼리를 작성하는 라이브러리

ESP8266 WiFi 모듈 및 Arduino를 사용하여 HTTP 쿼리를 작성하는 라이브러리

마이크로 컨트롤러와 정보를 주고받는 간단한 방법은 정보를 웹 서버에 중앙 집중화하는 것입니다. 예를 들어 데이터베이스에 직접 액세스하는 것만큼 효율적인 방법은 아니지만 특히 마이크로 컨트롤러 기반 프로젝트를 고려하고 편재성(클라우드의 데이터)과 단순성(클라우드의 데이터)의 장점을 추가하는 경우 충분히 효과적입니다. 텍스트 정보 및 주문으로 처리될 수 있습니다.) 이 시스템을 사용하여 정보를 보내는 것은 HTTP POST 요청을 만들고 HTTP GET 요청에 대한 응답 내용을 분석하여 이를 받는 것으로 구성될 수 있습니다.

목차

    El ESP8266 WiFi 모듈 마이크로컨트롤러와 함께 사용하기에 매우 적합한 성능과 AT 명령 작업에 사용하기 매우 쉬운 매우 경제적인 옵션입니다.

    HTTP 요청과 함께 사용을 체계화하기 위해 수면 관리 장치 프로젝트(SleepManager라고 함)의 요구 사항을 지원하는 작은 라이브러리를 개발했습니다. 이 프로젝트는 개체로 확장할 수 있는 웹 서버 기반 인프라를 기반으로 하기 때문입니다. 만약 IoT 으로 클라우드 서비스. 예를 들어 UDP 요청과 같은 다른 서비스를 라이브러리에 추가하는 것은 어렵지 않습니다. NTP를 통한 시간 동기화 하지만 링크된 텍스트에서 설명했듯이 이는 내 필요에 따라 중요하지 않으며 이 라이브러리 사용 예에서 보여주듯이 해당 목적을 위해 준비된 웹 페이지에 대한 HTTP 요청을 통해 문제를 적절하게 해결할 수 있습니다.

    라이브러리의 작동은 장치를 사용할 수 있을 때 AT 명령을 보내고 오류가 발생할 경우 이를 반복(약간의 지연 포함)하는 것을 기반으로 합니다. 이는 예를 들어 WiFi 액세스 지점이나 테스트를 통해 가용성이 아닌 것으로 해석됩니다. 서버 상담 중입니다.

    라이브러리는 ESP8266 WiFi 모듈이 데이터 수신에 대한 경고로 +IPD 코드를 반환하여 서버에서 반환한 정보로 작은 버퍼를 채우는 점을 활용합니다. 수면 관리 장치 프로젝트의 경우 서버에서 반환된 매우 적은 양의 데이터를 분석해야 하므로 절약하기 위해 이를 통해 실행되는 버퍼와 포인터가 특히 작습니다. 이는 더 많은 양의 데이터를 처리하기 위해 라이브러리를 재사용하기 위해 가장 먼저 변경해야 할 사항 중 하나입니다.

    공개적으로 노출되는 함수를 사용하면 (1) 모듈의 상태를 알 수 있습니다. 모듈이 연결되어 있는지 여부, 버퍼에 데이터가 있는지, ESP8266 모듈이 요청된 작업을 완료했는지 여부, (2) DHCP 서버를 사용하여 네트워크의 WiFi 액세스 포인트에 연결하고 (3) HTTP GET 및 POST 요청을 수행합니다. 하지만 보시다시피 코드는 다른 항목을 매우 쉽게 추가할 수 있도록 설계되었습니다.

    내부 기능과 관련하여 먼저 두 개의 행렬이 구축됩니다. 하나는 AT 명령이고 다른 하나는 성공 및 오류에 대한 예상 응답입니다. 그러면 라이브러리를 사용하는 프로그램이 수시로 함수를 호출해야 합니다. enviar 사용 가능하고 바쁘지 않은 경우 모듈과 기능에 주문을 보내는 일을 담당합니다. recibir ESP8266 모듈(및 해당되는 경우 이를 통해 HTTP 서버)의 응답을 처리합니다.

    신호 손실로 인해 모듈 연결이 끊어질 가능성이 있으므로 메인 프로그램은 ESP8266 모듈이 WiFi 액세스 포인트에 연결되어 있는지 확인할 수 있습니다(기능 사용). 연결) 그렇지 않으면 (함수를 사용하여) 연결을 시도하십시오 connect_wifi)

    요청한 작업이 완료되었는지 확인하기 위해 프로그램은 다음 기능을 사용할 수 있습니다. 작업_완료 이 경우 다른 것을 보내거나 함수가 사용되는 결과 데이터를 사용하십시오. 읽기_버퍼, 작업이 완료될 때까지 ESP8266 모듈에 도착한 데이터로 채워져 있던 버퍼의 내용을 반환하는 함수와 버퍼 길이 서버가 전송될 것이라고 경고한 이 데이터의 양을 보고합니다(모듈 자체의 정보가 할인될 수 있도록).

    아래 예에서는 ESP8266 WiFi 모듈과 함께 HTTP 쿼리 라이브러리를 사용하여 특정 시간 간격마다 서버에 데이터(아날로그 입력을 읽어 얻은 백분율)를 보냅니다. 어떤 응답도 받을 것으로 예상하지 않기 때문에 버퍼를 사용하지 않으며 작업이 올바르게 완료되는 데 충분합니다. 이 시스템은 센서 판독 결과를 서버에 저장하기 위해 수면 관리 장치 프로젝트에서 사용하는 것입니다.

    다음 예에서는 HTTP GET 쿼리를 사용하여 서버의 시간을 쿼리하고 예상 응답 시간을 추가하여 마이크로 제어 장치의 시간과 동기화합니다. 실제로 장치의 시간이 서버의 시간보다 큰지 확인하고 장치의 일부인 실시간 시계의 시간이 올바른지 또는 다운로드로 인해 손실되었는지 쉽게 확인하기 위해 4~6초를 더 추가합니다. .배터리.

    많은 테스트를 거쳐 이 시스템이 ESP8266 WiFi 모듈과 시간 동기화 그것은 내 요구에 충분히 정확합니다. 최악의 경우에는 10초 미만의 오류가 발생했는데 이는 제 경우에는 다소 관련이 없습니다.

    코드에서 볼 수 있듯이 버퍼의 길이를 먼저 쿼리해야 합니다. 읽기를 하면 버퍼가 재설정되어 새 데이터를 저장할 수 있기 때문입니다.

    버퍼의 내용을 읽고 나면 이 예에서는 시간을 얻기 위해 처리됩니다. 먼저 중괄호 사이의 텍스트가 선택됩니다(서버는 다음 명령을 사용하여 응답합니다). PHP echo “{“.time().”}”) lo transforma en un “objeto tiempo” y de él obtiene en formato humano la fecha y la hora.

    사용자의 쿼리에서 영감을 얻은 다음 예제 프로그램은 서비스를 사용하여 공용 IP 주소를 찾는 데 사용됩니다. IP 확인 AWS(아마존 웹 서비스) 5분마다.

    이전 예와 마찬가지로 사용된 네트워크 구성(예에서는 192.168.1.X), SSID 및 WiFi 키에 따라 변경되어야 하는 일련의 가정이 이루어졌습니다. IP 주소는 그다지 우아하지 않습니다. 보다 정통적인 방식으로 이를 수행하는 API가 있을 수 있지만 IP 주소는 HTTP GET 요청에 대한 응답의 마지막 줄이라고 가정합니다.


    당신은 할 수 있습니다 Arduino Uno를 사용한 HTTP 쿼리용 ESP8266 라이브러리 다운로드 (콘솔 없이) 여기에서 다음을 수행할 수 있습니다. Arduino용 ESP8266 HTTP 쿼리 라이브러리를 다운로드하세요. 즉, 소프트웨어로 직렬 포트를 구현하거나 마더보드와 같은 하드웨어로 사용해야 합니다. 아두 이노 메가 o 아두 이노 레오나르도.

    코멘트 남기기

    당신은 놓쳤을 수도 있습니다