ESP32無線WiFi芯片技術(shù),無線wifi網(wǎng)絡(luò)配置模塊
在很多領(lǐng)域,比如人員無法到達(dá)的偏僻環(huán)境、高腐蝕性及現(xiàn)場(chǎng)無法利用有線連接的環(huán)境,選擇有線數(shù)據(jù)采集傳輸系統(tǒng)顯然己無法滿足數(shù)據(jù)采集和傳輸?shù)男枰?/p>
無線數(shù)據(jù)采集方式就成為了一種有效的替代方式,它與傳感器網(wǎng)絡(luò)、信息處理等作為現(xiàn)代數(shù)據(jù)監(jiān)測(cè)控制的基本技術(shù),在物聯(lián)網(wǎng)、工業(yè)控制、環(huán)境監(jiān)測(cè)等方面得到了越來越廣泛的應(yīng)用。
ESP32是樂鑫繼ESP8266后推出的一款集成Wifi功能的藍(lán)牙系統(tǒng)級(jí)芯片,基于ESP32的強(qiáng)大的處理能力、低功耗及高速穩(wěn)定的Wifi通信等特點(diǎn)。

以ESP32主控芯片為核心的無線數(shù)據(jù)采集系統(tǒng),系統(tǒng)通過ESP32連接芯片STM32F407進(jìn)行數(shù)據(jù)采集,再使用無線Wifi模塊連接指定網(wǎng)絡(luò),通過Socket接口與上位機(jī)進(jìn)行通訊,將采集的數(shù)據(jù)傳輸給上位機(jī)系統(tǒng)。
ESP32與數(shù)據(jù)源模塊通過SPI接口連接,ESP32模塊作為SPISlave(被動(dòng)式SPI設(shè)備),數(shù)據(jù)源模塊作為SPIMaster(SPI主動(dòng)設(shè)備);ESP32通過AP(無線訪問接入點(diǎn)),與上位機(jī)建立以太網(wǎng)絡(luò)連接。

系統(tǒng)運(yùn)行時(shí),數(shù)據(jù)源模塊周期性地將數(shù)據(jù)發(fā)送給ESP32模塊,ESP32系統(tǒng)對(duì)所采集到的數(shù)據(jù)進(jìn)行緩存,在與上位機(jī)保持連接的同時(shí)將所采集到的數(shù)據(jù)通過WiFi網(wǎng)絡(luò)發(fā)送給上位機(jī),上位機(jī)則對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)及實(shí)時(shí)顯示。
ESP32作為SPISlave使用時(shí),只能等待SPIMaster發(fā)起通信連接,并根據(jù)主機(jī)提供的時(shí)鐘信號(hào)接收數(shù)據(jù)。ESP32的主程序設(shè)計(jì)主要包括兩個(gè)模塊,Wifi網(wǎng)絡(luò)配置模塊和線程與隊(duì)列模塊。

其中Wifi網(wǎng)絡(luò)配置模塊負(fù)責(zé)網(wǎng)絡(luò)配置,線程與隊(duì)列模塊負(fù)責(zé)實(shí)現(xiàn)無線數(shù)據(jù)采集系統(tǒng)的主要功能,即SPI數(shù)據(jù)采集與網(wǎng)絡(luò)數(shù)據(jù)發(fā)送。
WEB服務(wù)器線程模塊為上位機(jī)提供信息查詢,使上位機(jī)可以通過瀏覽器獲取ESP32系統(tǒng)上的運(yùn)行信息。

ESP32芯片支持高速穩(wěn)定的WIFI通信,并支持三種模式:“AP”、“STA”、”AP+STA”。為保證ESP32系統(tǒng)及時(shí)有效地進(jìn)行數(shù)據(jù)接收和發(fā)送,需要采用隊(duì)列來保持SPI數(shù)據(jù)采集線程和數(shù)據(jù)發(fā)送線程之間的數(shù)據(jù)同步。
ESP32通過SPI協(xié)議進(jìn)行數(shù)據(jù)傳輸,為實(shí)現(xiàn)SPI數(shù)據(jù)采集及兩個(gè)線程間的數(shù)據(jù)傳遞,同時(shí)考慮到ESP32有限的內(nèi)存及SPI底層驅(qū)動(dòng)機(jī)制。

采用DMA機(jī)制,因此所建立的環(huán)形緩沖空間需要向系統(tǒng)申請(qǐng)DMA訪問用的內(nèi)存空間,單個(gè)存儲(chǔ)空間大小的選擇最好根據(jù)每個(gè)周期SPI發(fā)送數(shù)據(jù)的長(zhǎng)度選擇。
當(dāng)ESP32連接上WIFI并獲取到AP分配的IP后,即可通過Socket接口與上位機(jī)建立通訊,發(fā)送獲取到的數(shù)據(jù)。Socket是ESP32和上位機(jī)之間建立通訊的接口。

ESP32主動(dòng)對(duì)上位機(jī)發(fā)起連接請(qǐng)求,上位機(jī)在連接前開啟監(jiān)聽的Socket接口,以實(shí)時(shí)監(jiān)聽客戶端的請(qǐng)求,連接建立完成后,ESP32和上位機(jī)即可進(jìn)行通信。
針對(duì)ESP32無線網(wǎng)絡(luò)配置、數(shù)據(jù)接收和發(fā)送程序進(jìn)行了詳細(xì)的設(shè)計(jì)與說明,同時(shí)對(duì)ESP32系統(tǒng)的WEB服務(wù)程序進(jìn)行設(shè)計(jì),以方便上位機(jī)進(jìn)行信息查詢。
基于ESP32的無線數(shù)據(jù)采集傳輸系統(tǒng)程序設(shè)計(jì)合理,易于使用,提高抗干擾及數(shù)據(jù)傳輸效率,提高系統(tǒng)性能。