본문 바로가기

ESP32

DevKitC에서 USB를 통해 ES32P-AT에 AT 명령을 활성화하는 단계별 가이드

반응형

 

 

DevKitC에서 USB를 통해 ES32P-AT에 AT 명령을 활성화하는 단계별 가이드 

 

ESP32-AT 개발자 여러분, 특히 초보자 여러분,

 

저는 ESP32를 처음 접했고 최근 며칠 동안 DevKitC(SOLO 및 WROVER 보드에서 테스트)용 ESP-AT 펌웨어에 대한 USB를 통한 AT 명령을 활성화하는 데 상당한 시간을 보냈습니다. 필요한 정보는 여러 곳, 가이드 및 튜토리얼에 분산되어 있으므로, 제가 수집한 결과를 여기에 게시하는 것이 도움이 될 것이라고 생각했습니다. (2019년 1월 12일 현재)입니다.

 

 

 

 

기본적으로 USB 브리지 칩에 연결된 UART0(TXD0은 GPIO1이고 RXD0은 GPIO3)은 디버그 인터페이스 역할을 합니다. AT 명령은 추가 UART 인터페이스(UART1, GPIO16은 RxD이고 GPIO17은 TxD)를 통해서만 가능하며, 따라서 PC로만 DevBoard를 완벽하게 사용하려면 추가 하드웨어가 필요합니다.

 

(다음은 고정에 대한 좋은 개요 그림입니다:

https://randomnerdtutorials.com/esp32-p ... nce-gpios/).

 

따라서 DevKitC에서 ESP-AT 펌웨어의 기능을 탐색하려면 추가 하드웨어가 필요하거나 펌웨어를 약간 수정하여 AT 인터페이스도 UART0을 통해 사용할 수 있도록 해야 합니다.

 

다음 단계별 가이드는 개발 환경 설치부터 DevKitC를 WPA2 지원 WiFi에 연결하고 HTTP 요청을 클라우드 플랫폼으로 보내는 것까지 Windows 10x64에서 진행하는 방법을 설명합니다.

 

1. Cypress 210x 칩용 가상 COM 포트 드라이버를 설치합니다: CP210x_Universal_Windows_Driver. 그러면 시스템에서 보드에 할당한 가상 COM 포트를 사용하여 표준 터미널을 통해 DevBoard에 연결할 수 있어야 합니다.

https://www.silabs.com/products/develop ... cp-drivers

 

2. ESP32용 사전 빌드된 툴체인을 다운로드하고 압축을 풉니다. 하지만 최신 툴체인은 사용하지 말고, 위에 언급된 ESP32-AT 펌웨어와의 호환성을 보장하기 위해 이 툴체인을 사용하세요:

https://dl.espressif.com/dl/esp32_win32 ... 181001.zip

 

기본 위치인 'c:\msys2'를 고수하는 것이 좋습니다. 일부 경로는 하드코딩된 것 같고, 물론 툴체인을 삭제하기 위해 어떤 위치든 사용할 수 있지만, 경로가 기본 경로가 아닌 경우 특정 도구(예: pip)에서 문제가 발생할 수 있습니다.

 

3. idf 경로가 설정되어 항상 사용 가능한지 확인합니다. 가장 쉬운 방법은

'export IDF_PATH="C:/msys32/home/username/esp/esp32-at/esp-idf"' 줄과 함께 'export_idf_path.sh'라는 추가 파일을 'msys32/etc/profile.d'에 넣는 것입니다.

 

4. 'mingw32.exe'를 실행하여 툴체인을 시작합니다. 'printenv IDF_PATH'로 IDF_PATH 변수를 확인하세요.

 

5. ESP-32-AT 프로젝트(ESP32_AT_V1.1.3)를 홈 디렉토리의 '~/esp'라는 디렉토리에 복제합니다(주의: esp-idf의 결과 경로는 3단계에서 정의한 경로와 일치해야 함) 다음 명령을 사용합니다.

git clone --recursive https://github.com/espressif/esp32-at.git

(2019년 1월 3일 버전 b80d4469ee2ecea93ab8bb1df03766c0ef833dd9를 받았습니다)

 

그리고 함정이 있습니다. 최신 esp32-IDF를 사용하지 마세요! ESP32-AT에는 자체 IDF 버전이 함께 제공되므로 반드시 빌드해야 합니다. 그렇지 않으면 컴파일러 및 링커 오류가 발생합니다. 위에 언급된 ESP-AT FW 버전에 해당하는 버전은 ESP-IDF 7fa98593bc179ea50a1bc8244d5b94bac59c9a10입니다. 매개변수 --recursive를 사용하면 자동으로 가져옵니다.

 

git clone --recursive https://github.com/espressif/esp-idf.git을 통해 최신 버전을 체크아웃한 경우

 

git checkout 7fa98593bc179ea50a1bc8244d5b94bac59c9a10을 실행하여 일치하는 버전으로 되돌릴 수 있습니다. 이 방법을 사용하는 경우 모든 하위 모듈도 업데이트하는 것을 잊지 마세요.

 

git submodule update --init --recursive

 

6. 안타깝게도 사전 빌드된 툴체인은 ESP32-AT 프로젝트에 대해 완전하지 않습니다. 'pip install pyyaml ​​xlrd'로 설치하는 추가 Python 라이브러리가 필요합니다.

 

7. 이제 'make menuconfig'를 사용하여 ESP32-AT 펌웨어를 재구성해야 합니다. 그래픽 구성 콘솔이 나타나고 다음을 선택합니다.

 

'Serial flasher config'->'Default serial port'를 선택하여 다운로드를 위한 직렬 포트를 구성합니다. 제 Windows 컴퓨터에서는 간단히 'COM7'입니다. 추가로 통신 속도를 높일 수 있습니다.

 

'Component config'->'AT'->'AT uart settings'를 선택하여 AT cmd UART를 디버그 인터페이스와 동일하게 설정합니다(디버그 출력과 AT 인터페이싱이 USB 브리지 칩을 통해 실행되도록 UART0 둘 다). 설정은 다음과 같습니다.

 

uart 포트 번호: 0

uart rx 핀 3

uart tx 핀 1

 

uart flow control 0 -- 기본적으로 RTS/CTS를 통한 HW Flow Control이 활성화됩니다. 비활성화하거나 UART-USB 브리지가 처리하지 않습니다.

 

configmenu를 종료하고 변경 사항을 저장합니다. 명령줄이 돌아올 때까지 기다립니다. 모든 구성 파일이 백그라운드에서 Python 스크립트에 의해 생성되므로 몇 분이 걸릴 수 있습니다.

 

8. 이제 'make flash'를 실행하여 펌웨어를 빌드해 보겠습니다. 보드가 지정된 COM 포트에 연결되어 있는지 확인합니다. 성공적인 make(32GB RAM이 있는 7세대 i7에서 5~8분 걸릴 수 있음)가 완료되면 보드가 프로그래밍되기 때문입니다.

 

9. 다운로드가 성공적으로 완료되면 좋아하는 터미널을 시작하고 해당 COM 포트를 115200, N, 8, 1 설정과 흐름 제어 없음으로 엽니다.

 

10. "EN" 버튼을 눌러 보드를 재설정하고 들어오는 디버그 메시지를 확인합니다. 1초도 채 지나지 않아 보드가 완전히 부팅되고 콘솔에 "ready"가 출력됩니다. 그러나 AT 명령을 내리는 것이 작동하지 않는다는 것을 금방 알게 될 것입니다. 그 이유는 펌웨어(또는 구성)에 추가 수정이 필요하기 때문입니다. 이 문제는 이 이슈에서도 논의됩니다: https://github.com/espressif/esp32-at/issues/153

 

11. 'esp\esp32-at\main\interface\uart' 디렉토리에서 'at_uart_task.c' 파일을 엽니다. 252번째 줄로 스크롤하여 273번째 줄까지 'if (data) {...}' 블록을 주석으로 처리합니다. 이 블록은 기본 구성을 로드하고 어떻게든 7단계에서 구성한 흐름 제어 설정과 충돌합니다. 저장하고 닫습니다. (알아두세요, make config의 경쟁 설정과 'factory_param_data.csv' 파일에 공장 설정으로 저장된 설정의 문제를 해결하는 것이 확실히 더 깔끔합니다.)

 

12. 다시 'make flash'(흐름 제어 핀의 변수가 정의되었지만 사용되지 않는다는 경고가 두 번 표시됩니다. 지금은 무시하고 나중에 문제를 해결하세요) 터미널을 열고 'EN' 버튼으로 보드를 재설정하고 재부팅될 때까지 기다렸다가 'AT'를 입력한 다음 CRLF를 입력합니다. 이제 응답은 'OK'여야 합니다. 즉, AT 명령 인터페이스는 이제 UART0을 통해 완전히 사용할 수 있고 따라서 USB를 통해 사용할 수 있습니다.

 

13. 이제 좀 더 강력한 AT 명령을 내릴 준비가 되었습니다. https://www.espressif.com/sites/default ... les_en.pdf의 pdf에 문서화되어 있습니다. IoT 클라우드 공급자(저희의 경우 "thingspeak")에게 간단한 GET 요청을 보내려면 다음 AT 명령만 있으면 됩니다(CR=#013, LF=#010, '>'는 명령을 입력했음을 의미하고 다른 줄은 응답과 주석입니다). 그러면 공장 설정을 수정하고(소프트 AP 모드 대신 스테이션 모드로 전환) 연결을 설정할 수 있습니다. GET 요청은 두 개의 CRLF로 종료해야 합니다!

 

코드: 모두 선택

 

New module with factory settings:
// switch to station mode
> AT+CWMODE=1#013#010
// connect to WiFi Network (WPA2)
> AT+CWJAP="mySSID","mypassword"#013#010
// connect to server using tcp
> AT+CIPSTART="TCP","thingspeak.com",80#013#010
// send http request
> AT+CIPSEND=89#013#010
AT+CIPSEND=89

OK

> GET https://api.thingspeak.com/update?api_key=RKLL5DFY7NVJI26Z&field1=79 HTTP/1.0#013#010#013#010
Recv 89 bytes
id:0,Len:89,dp:0x3ffb3f70

SEND OK

+IPD,637:HTTP/1.1 200 OK
Access-Control-Allow-Headers: origin, content-type, X-Requested-With
Access-Control-Allow-Methods: delete
GET, POST, PUT, OPTIONS, DELETE, PATCH
Access-Control-Allow-Origin: *
Access-Control-Max-Age: 1800
Cache-Control: max-age=0, private, must-revalidate
Content-Type: text/html; charset=utf-8
Date: Sat, 12 Jan 2019 19:41:56 GMT
ETag: "1679091c5a880faf6fb5e6087eb1b2dc"
Server: nginx/1.9.3 + Phusion Passenger 4.0.57
Status: 200 OK
X-Frame-Options: SAMEORIGIN
X-Powered-By: Phusion Passenger 4.0.57
X-Request-Id: dbdb0815-65f5-47d7-bb99-53d4245901d8
X-Runtime: 0.024321
Content-Length: 1
Connection: Close

6CLOSED

 

 

질문과 의견은 이 게시물에 답글을 남겨주세요. 여러분만의 실험에 행운을 빌어요!

 

반응형

더욱 좋은 정보를 제공하겠습니다.~ ^^