樂鑫 AT 固件初體驗
初步體驗 AT 指令下 TCP 數傳,為了驗證 AT 命令解析器。
前往樂鑫官網 下載最新版本 AT 固件和 AT 指令集手冊。
硬件準備
本文使用樂鑫的 ESP-WROOM-32(ESP-WROOM-32 是 ESP32-WROOM-32 的曾用名)模塊,4MB Flash,無 PSRAM。ESP32 系列模組和開發板參考該鏈接,這里有詳細的對比介紹。
模塊接線示意圖如下:(圖片來自樂鑫文檔)
ESP32-WROOM-32 Series Hardware Connection
請在該鏈接里找到你的硬件對應的接線方式,連線必須準確無誤!
選擇 AT 固件
樂鑫的 AT 固件自 V2.0 之后就開始使用 ESP-AT(基于 ESP-IDF 或 ESP8266_RTOS_SDK 實現的軟件工程)了,不再使用 NonOS 版本。如果你使用的是 ESP8266 模塊,那么可以考慮是否可以平滑升級到新的版本。
各版本 AT 固件的差異參考該鏈接。
從該鏈接里選擇對應你硬件的 AT 固件,這里我選擇 ESP32 AT binaries / ESP32-WROOM-32 Series / v2.1.0.0 ESP32-WROOM-32_AT_Bin_V2.1.0.0.zip。
燒錄 AT 固件
燒錄過程主要參考樂鑫的官方文檔,針對我的這個 ESP-WROOM-32 模塊,有以下幾個步驟:
下載 AT 固件到 PC 上(ESP32-WROOM-32_AT_Bin_V2.1.0.0.zip)
下載燒錄工具
燒錄工具支持 Windows 和 MAC/Linux 系統,在該鏈接里下載。
正確連接 ESP-WROOM-32 模塊到 PC 上
ESP-WROOM-32 有兩路串口,一路需要使用一個 USB-A 轉 Micro-USB 的線,用于固件下載和日志查看;另外一路串口需要一個 USB 轉 TTL 串口的模塊,用于 AT 指令傳輸。
連線方式見前面的 硬件準備 章節。
打開燒錄工具,燒錄默認 AT 固件
選擇默認 AT 固件,下載到 0x0 地址,并勾選 DoNotChgBin
然后選擇對應的 串口 號,波特率使用默認的即可。最后點擊 START 開始燒錄。
確認燒錄成功(發送 AT 和 AT+GMR 命令確認)
發 AT 指令返回 OK 標識 AT 服務已經正常啟動,發 AT+GMR 查看 AT 固件信息是否跟你燒錄的一致。
打開工具 flash_download_tool_v3.8.5.exe
選擇 Developer Mode
選擇芯片型號(本文里,我使用 ESP32 DownloadTool)
AT 指令測試 TCP Server 連接
確定 WiFi 模塊即將連接的路由器
將 PC 接入該路由器,保證 WiFi 模塊與路由器在同一個局域網下
PC 機開啟 TCP Server
如上圖所示,開啟 TCP Server,ip:192.168.50.190 端口:8089。
AT 模塊連接 AT 串口到 PC,并上電,確定 AT 功能正常
發送 AT 返回 OK。
設置 AT 模塊為 STA 模式(STA 模式下才能連接路由器 AP 熱點)
發送 AT+CWMODE=1 進入 STA 模式,1 為 STA,2 為 AP,3 為 AP+STA。
AT+CWMODE=1
OK
連接路由器
發送 AT+CWJAP="SSID","PWD" 連接路由器,SSID 為路由器 AP 熱點名稱,PWD 為路由器熱點密碼。示例如下:
AT+CWJAP="murphy","pwd_12345678"
WIFI?CONNECTED
WIFI?GOT?IP
OK
查詢模塊 ip 地址,判斷是否與 PC 在同一網段下
AT+CIFSR
+CIFSR:STAIP,"192.168.50.15"
+CIFSR:STAMAC,"30:ae:a4:04:75:f0"
OK
連接 TCP Server
AT+CIPSTART="TCP","192.168.50.190",8089
CONNECT
OK
如下圖所示,連接成功:
模塊發數據給 TCP Server
先發送 AT 命令 AT+CIPSEND=x,其中 x 表示要發送的數據長度,告訴 AT 解析器,我要發 x 字節的數據,你準備好接收!
AT 解析器成功識別之后返回下面信息:
OK
>
當看到 > 的時候,我們就可以發數據了,但一定要發送 x 字節數據,否則多余的數據會被丟掉,并返回 busy p...。
TCP Server 發數據給模塊
TCP Server 直接發數據就可以,WiFi 模塊收到后,顯示 +IPD,x:data 格式的信息。其中 +IPD 表示 WiFi 模塊收到了對端的數據,x 表示收到的數據長度,data 表示收到的數據內容。示例如下圖所示:
模塊透傳發送數據
首先設置數傳模式為透傳模式,指令 AT+CIPMODE=1。1:透傳模式;0:普通模式。他們的主要區別是在透傳模式可以在 AT+CIPSEND 指令后一直發送數據(直到退出透傳發送),而普通模式下每次發送數據必須使用 AT+CIPSEND=x 來指定數據長度。
AT+CIPMODE=1
OK
AT+CIPSEND
OK
>
這個時候就可以發送數據直達模塊了。
模塊退出透傳發送
發送 +++ 后停頓 1 秒。使用串口工具一次性發送 +++ 而不是手動一個個發送,否則會導致誤檢測成數據。
這是 AT 指令的一個標準約定。
如果此時想切換成 普通數傳模式,發送 AT+CIPMODE=0 指令。
為了更好的直觀感受,錄屏展示兩種模式下的數傳:
參考
這里給出了樂鑫官網的參考鏈接,需要閱讀原始文檔的童鞋移步這里。
樂鑫官方 ESP-AT 用戶指南
包括 AT 固件下載,AT 指令集介紹,編譯與開發。
https://docs.espressif.com/projects/esp-at/zh_CN/latest/Get_Started/index.html
樂鑫官方 ESP8266 AT 固件
https://docs.espressif.com/projects/esp-at/en/latest/AT_Binary_Lists/ESP8266_AT_binaries.htm
樂鑫工具下載
https://www.espressif.com/zh-hans/support/download/other-tool