樂鑫 AT 固件初體驗(yàn)
初步體驗(yàn) AT 指令下 TCP 數(shù)傳,為了驗(yàn)證 AT 命令解析器。
前往樂鑫官網(wǎng) 下載最新版本 AT 固件和 AT 指令集手冊(cè)。
硬件準(zhǔn)備
本文使用樂鑫的 ESP-WROOM-32(ESP-WROOM-32 是 ESP32-WROOM-32 的曾用名)模塊,4MB Flash,無 PSRAM。ESP32 系列模組和開發(fā)板參考該鏈接,這里有詳細(xì)的對(duì)比介紹。
模塊接線示意圖如下:(圖片來自樂鑫文檔)
ESP32-WROOM-32 Series Hardware Connection
請(qǐng)?jiān)谠撴溄永镎业侥愕?a class="article-link" target="_blank" href="/tag/%E7%A1%AC%E4%BB%B6/">硬件對(duì)應(yīng)的接線方式,連線必須準(zhǔn)確無誤!
選擇 AT 固件
樂鑫的 AT 固件自 V2.0 之后就開始使用 ESP-AT(基于 ESP-IDF 或 ESP8266_RTOS_SDK 實(shí)現(xiàn)的軟件工程)了,不再使用 NonOS 版本。如果你使用的是 ESP8266 模塊,那么可以考慮是否可以平滑升級(jí)到新的版本。
各版本 AT 固件的差異參考該鏈接。
從該鏈接里選擇對(duì)應(yīng)你硬件的 AT 固件,這里我選擇 ESP32 AT binaries / ESP32-WROOM-32 Series / v2.1.0.0 ESP32-WROOM-32_AT_Bin_V2.1.0.0.zip。
燒錄 AT 固件
燒錄過程主要參考樂鑫的官方文檔,針對(duì)我的這個(gè) ESP-WROOM-32 模塊,有以下幾個(gè)步驟:
下載 AT 固件到 PC 上(ESP32-WROOM-32_AT_Bin_V2.1.0.0.zip)
下載燒錄工具
燒錄工具支持 Windows 和 MAC/Linux 系統(tǒng),在該鏈接里下載。
正確連接 ESP-WROOM-32 模塊到 PC 上
ESP-WROOM-32 有兩路串口,一路需要使用一個(gè) USB-A 轉(zhuǎn) Micro-USB 的線,用于固件下載和日志查看;另外一路串口需要一個(gè) USB 轉(zhuǎn) TTL 串口的模塊,用于 AT 指令傳輸。
連線方式見前面的 硬件準(zhǔn)備
章節(jié)。
打開燒錄工具,燒錄默認(rèn) AT 固件
選擇默認(rèn) AT 固件,下載到 0x0 地址,并勾選 DoNotChgBin
然后選擇對(duì)應(yīng)的 串口 號(hào),波特率使用默認(rèn)的即可。最后點(diǎn)擊 START
開始燒錄。
確認(rèn)燒錄成功(發(fā)送 AT 和 AT+GMR 命令確認(rèn))
發(fā) AT
指令返回 OK 標(biāo)識(shí) AT 服務(wù)已經(jīng)正常啟動(dòng),發(fā) AT+GMR
查看 AT 固件信息是否跟你燒錄的一致。
-
打開工具
flash_download_tool_v3.8.5.exe
選擇 Developer Mode
選擇芯片型號(hào)(本文里,我使用 ESP32 DownloadTool)
AT 指令測(cè)試 TCP Server 連接
確定 WiFi 模塊即將連接的路由器
將 PC 接入該路由器,保證 WiFi 模塊與路由器在同一個(gè)局域網(wǎng)下
PC 機(jī)開啟 TCP Server
如上圖所示,開啟 TCP Server,ip:192.168.50.190 端口:8089。
AT 模塊連接 AT 串口到 PC,并上電,確定 AT 功能正常
發(fā)送 AT 返回 OK。
設(shè)置 AT 模塊為 STA 模式(STA 模式下才能連接路由器 AP 熱點(diǎn))
發(fā)送 AT+CWMODE=1
進(jìn)入 STA 模式,1 為 STA,2 為 AP,3 為 AP+STA。
AT+CWMODE=1
OK
連接路由器
發(fā)送 AT+CWJAP="SSID","PWD"
連接路由器,SSID 為路由器 AP 熱點(diǎn)名稱,PWD 為路由器熱點(diǎn)密碼。示例如下:
AT+CWJAP="murphy","pwd_12345678"
WIFI CONNECTED
WIFI GOT IP
OK
查詢模塊 ip 地址,判斷是否與 PC 在同一網(wǎng)段下
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
如下圖所示,連接成功:
模塊發(fā)數(shù)據(jù)給 TCP Server
先發(fā)送 AT 命令 AT+CIPSEND=x
,其中 x
表示要發(fā)送的數(shù)據(jù)長(zhǎng)度,告訴 AT 解析器,我要發(fā) x 字節(jié)的數(shù)據(jù),你準(zhǔn)備好接收!
AT 解析器成功識(shí)別之后返回下面信息:
OK
>
當(dāng)看到 >
的時(shí)候,我們就可以發(fā)數(shù)據(jù)了,但一定要發(fā)送 x
字節(jié)數(shù)據(jù),否則多余的數(shù)據(jù)會(huì)被丟掉,并返回 busy p...
。
TCP Server 發(fā)數(shù)據(jù)給模塊
TCP Server 直接發(fā)數(shù)據(jù)就可以,WiFi 模塊收到后,顯示 +IPD,x:data
格式的信息。其中 +IPD
表示 WiFi 模塊收到了對(duì)端的數(shù)據(jù),x
表示收到的數(shù)據(jù)長(zhǎng)度,data
表示收到的數(shù)據(jù)內(nèi)容。示例如下圖所示:
模塊透?jìng)靼l(fā)送數(shù)據(jù)
首先設(shè)置數(shù)傳模式為透?jìng)髂J?,指?AT+CIPMODE=1
。1:透?jìng)髂J剑?:普通模式。他們的主要區(qū)別是在透?jìng)髂J娇梢栽?AT+CIPSEND
指令后一直發(fā)送數(shù)據(jù)(直到退出透?jìng)靼l(fā)送),而普通模式下每次發(fā)送數(shù)據(jù)必須使用 AT+CIPSEND=x
來指定數(shù)據(jù)長(zhǎng)度。
AT+CIPMODE=1
OK
AT+CIPSEND
OK
>
這個(gè)時(shí)候就可以發(fā)送數(shù)據(jù)直達(dá)模塊了。
模塊退出透?jìng)靼l(fā)送
發(fā)送 +++
后停頓 1 秒。使用串口工具一次性發(fā)送 +++
而不是手動(dòng)一個(gè)個(gè)發(fā)送,否則會(huì)導(dǎo)致誤檢測(cè)成數(shù)據(jù)。
這是 AT 指令的一個(gè)標(biāo)準(zhǔn)約定。
如果此時(shí)想切換成 普通數(shù)傳模式,發(fā)送 AT+CIPMODE=0
指令。
為了更好的直觀感受,錄屏展示兩種模式下的數(shù)傳:
參考
這里給出了樂鑫官網(wǎng)的參考鏈接,需要閱讀原始文檔的童鞋移步這里。
樂鑫官方 ESP-AT 用戶指南
包括 AT 固件下載,AT 指令集介紹,編譯與開發(fā)。
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