• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于ESP32的無(wú)線數(shù)據(jù)采集系統(tǒng)設(shè)計(jì) ①

    2021-01-15 03:27:58何棟煒
    關(guān)鍵詞:存儲(chǔ)空間線程隊(duì)列

    高 培, 何棟煒

    (1.福建商學(xué)院,福建 福州 350012;2.福建工程學(xué)院,福建 福州 350118)

    0 引 言

    無(wú)線數(shù)據(jù)采集是現(xiàn)代信息通信研究的重要組成部分。在很多領(lǐng)域,比如人員無(wú)法到達(dá)的偏僻環(huán)境、高腐蝕性及現(xiàn)場(chǎng)無(wú)法利用有線連接的環(huán)境,選擇有線數(shù)據(jù)采集傳輸系統(tǒng)顯然己無(wú)法滿足數(shù)據(jù)采集和傳輸?shù)男枰o(wú)線數(shù)據(jù)采集方式就成為了一種有效的替代方式,它與傳感器網(wǎng)絡(luò)、信息處理等作為現(xiàn)代數(shù)據(jù)監(jiān)測(cè)控制的基本技術(shù),在物聯(lián)網(wǎng)、工業(yè)控制、環(huán)境監(jiān)測(cè)等方面得到了越來(lái)越廣泛的應(yīng)用[1-2]。

    ESP32是樂(lè)鑫繼ESP8266后推出的一款集成Wifi功能的藍(lán)牙系統(tǒng)級(jí)芯片,基于ESP32的強(qiáng)大的處理能力、低功耗及高速穩(wěn)定的Wifi通信等特點(diǎn)。設(shè)計(jì)一套以ESP32主控芯片為核心的無(wú)線數(shù)據(jù)采集系統(tǒng),系統(tǒng)通過(guò)ESP32連接芯片STM32F407進(jìn)行數(shù)據(jù)采集,再使用無(wú)線Wifi模塊連接指定網(wǎng)絡(luò),通過(guò)Socket接口與上位機(jī)進(jìn)行通訊,將采集的數(shù)據(jù)傳輸給上位機(jī)系統(tǒng)。

    1 系統(tǒng)硬件設(shè)計(jì)

    無(wú)線數(shù)據(jù)采集系統(tǒng)硬件結(jié)構(gòu)如圖1所示,主要由數(shù)據(jù)源模塊(本設(shè)計(jì)中使用STM32F407ZG)、ESP32模塊及上位機(jī)三部分構(gòu)成。其中ESP32與數(shù)據(jù)源模塊通過(guò)SPI接口連接,本設(shè)計(jì)中ESP32模塊作為SPI Slave(被動(dòng)式SPI設(shè)備),數(shù)據(jù)源模塊作為SPI Master(SPI主動(dòng)設(shè)備);ESP32通過(guò)AP(無(wú)線訪問(wèn)接入點(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ù)通過(guò)WiFi網(wǎng)絡(luò)發(fā)送給上位機(jī),上位機(jī)則對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)及實(shí)時(shí)顯示。

    圖1 無(wú)線數(shù)據(jù)采集系統(tǒng)硬件結(jié)構(gòu)圖

    ESP32作為SPI Slave使用時(shí),只能等待SPI Master發(fā)起通信連接,并根據(jù)主機(jī)提供的時(shí)鐘信號(hào)接收數(shù)據(jù)。STM32F407是由ST(意法半導(dǎo)體)開(kāi)發(fā)的一種高性能微控制器,作為SPI Master使用時(shí),每個(gè)SPI 控制器可以使用多個(gè)片選信號(hào)(CS0~CS2)來(lái)連接多個(gè)被動(dòng)式SPI設(shè)備。圖2為ESP32與STM32F407設(shè)備的通信電氣連接圖,其中CS為片選信號(hào),SCK為時(shí)鐘信號(hào),MOSI為主設(shè)備數(shù)據(jù)輸出線,MISO為從設(shè)備數(shù)據(jù)輸出。

    2 系統(tǒng)主程序設(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)無(wú)線數(shù)據(jù)采集系統(tǒng)的主要功能,即:SPI數(shù)據(jù)采集與網(wǎng)絡(luò)數(shù)據(jù)發(fā)送[3]。主程序設(shè)計(jì)流程圖見(jiàn)圖3所示,具體包括以下幾個(gè)步驟:

    1.程序初始化:初始化NVS存儲(chǔ)和Wifi模式配置。

    2.連接網(wǎng)絡(luò),由Wifi網(wǎng)絡(luò)配置模塊連接到指定AP,并獲得AP分配的IP。

    3.創(chuàng)建三個(gè)線程:SPI數(shù)據(jù)接收線程用于調(diào)用SPI底層驅(qū)動(dòng)來(lái)接收STM32F407發(fā)送的數(shù)據(jù)并進(jìn)行緩存;數(shù)據(jù)發(fā)送線程則創(chuàng)建Socket與上位機(jī)PC建立無(wú)線通信連接,并與SPI接收線程協(xié)同將數(shù)據(jù)發(fā)送到上位機(jī);WEB服務(wù)器線程模塊為上位機(jī)提供信息查詢,使上位機(jī)可以通過(guò)瀏覽器獲取ESP32系統(tǒng)上的運(yùn)行信息。

    圖2 ESP32與STM32F407設(shè)備的通信電氣連接圖

    圖3 系統(tǒng)主程序設(shè)計(jì)框圖

    下面具體介紹每個(gè)模塊的功能及程序設(shè)計(jì)。

    2.1 WIFI網(wǎng)絡(luò)配置模塊程序設(shè)計(jì)

    2.1.1 WIFI模式選擇

    ESP32芯片支持高速穩(wěn)定的WIFI通信,并支持三種模式:“AP”、“STA”、”AP + STA”。本設(shè)計(jì)采用STA模式,使用WIFI_init_sta()函數(shù)進(jìn)行STA模式配置[4]。進(jìn)入STA模式之前,需要配置WIFI賬號(hào)和密碼才能連接到指定AP。

    圖4 STA模式配置流程圖

    2.1.2 STA模式配置

    STA模式的配置總體流程如圖4所示,使用函數(shù)WIFI_init_sta()完成STA模式配置,具體包括以下工作:

    1.創(chuàng)建事件組標(biāo)志,用于識(shí)別WIFI連接過(guò)程中的各種標(biāo)志位。

    2.初始化硬件/軟件:使用“tcpip_adapter_init()”函數(shù)初始化TCP/IP適配層,清空之前保存的IP信息;使用“esp_event_loop_init()”初始化事件調(diào)度器,使事件回調(diào)函數(shù)能夠從初始位置判斷標(biāo)志位。使用“WIFI_init_config_t cfg=WIFI_INIT_CONFIG_DEFAULT()”語(yǔ)句初始化WIFI模塊的底層參數(shù)信息;使用“esp_WIFI_init(&cfg)”初始化WIFI驅(qū)動(dòng)。

    3.對(duì)STA模式參數(shù)進(jìn)行配置,把路由器的WIFI賬號(hào)、密碼數(shù)據(jù)放入標(biāo)準(zhǔn)變量中。

    4.使“esp_WIFI_set_mode(WIFI_MODE_STA)”用來(lái)設(shè)置STA模式;esp_WiFi_set_config(ESP_IF_WIFI_STA, &WiFi_config)設(shè)置STA模式的配置信息;“esp_WIFI_start()”語(yǔ)句啟動(dòng)WIFI狀態(tài)機(jī)。

    2.2 線程與隊(duì)列模塊程序設(shè)計(jì)

    線程與隊(duì)列模塊的程序設(shè)計(jì)框圖如圖5所示,主要包括三個(gè)線程和一個(gè)隊(duì)列的程序設(shè)計(jì)。三個(gè)線程分別是SPI數(shù)據(jù)采集線程、數(shù)據(jù)發(fā)送線程和WEB服務(wù)線程,另外為保證ESP32系統(tǒng)及時(shí)有效地進(jìn)行數(shù)據(jù)接收和發(fā)送,需要采用隊(duì)列來(lái)保持SPI數(shù)據(jù)采集線程和數(shù)據(jù)發(fā)送線程之間的數(shù)據(jù)同步[5]。

    圖5 線程與隊(duì)列模塊的程序設(shè)計(jì)框圖

    2.2.1 隊(duì)列設(shè)計(jì)

    使用FreeRTOS的隊(duì)列“queue”實(shí)現(xiàn)SPI數(shù)據(jù)采集線程和數(shù)據(jù)發(fā)送線程之間數(shù)據(jù)同步。

    隊(duì)列的基本原理是不同的線程任務(wù)或者中斷程序都能夠使用隊(duì)列將數(shù)據(jù)寫(xiě)入,或者讀取數(shù)據(jù)。隊(duì)列實(shí)際上是一個(gè)固定大小的空間,任何線程任務(wù)都可以對(duì)它進(jìn)行讀寫(xiě)。

    主程序中語(yǔ)句“queue = xQueueCreate(BLOCK_NUM, sizeof(char *));”用來(lái)創(chuàng)建隊(duì)列,F(xiàn)reeRTOS會(huì)分配固定的空間供線程讀寫(xiě)數(shù)據(jù)。其中BLOCK_NUM設(shè)置可存儲(chǔ)的數(shù)據(jù)單元個(gè)數(shù)與緩沖區(qū)存儲(chǔ)空間個(gè)數(shù)一致。參數(shù)2設(shè)置數(shù)據(jù)單元的大小,線程間只需傳遞存儲(chǔ)空間的首地址即可。

    2.2.2 SPI數(shù)據(jù)采集線程程序設(shè)計(jì)

    ESP32通過(guò)SPI協(xié)議與STM32F407進(jìn)行數(shù)據(jù)傳輸,STM32F407間隔一定的時(shí)間向ESP32發(fā)送數(shù)據(jù)字節(jié)[6]。

    為實(shí)現(xiàn)SPI數(shù)據(jù)采集及兩個(gè)線程間的數(shù)據(jù)傳遞,同時(shí)考慮到ESP32有限的內(nèi)存及SPI底層驅(qū)動(dòng)機(jī)制,程序設(shè)計(jì)采用一個(gè)環(huán)形緩沖區(qū)來(lái)存儲(chǔ)從SPI信號(hào)線上接收到的數(shù)據(jù),環(huán)形存儲(chǔ)器的大小為M * N Bytes,其中M是單個(gè)存儲(chǔ)空間的大小,N代表存儲(chǔ)空間個(gè)數(shù)。本次設(shè)計(jì)中ESP32的SPI底層驅(qū)動(dòng)采用DMA機(jī)制,因此所建立的環(huán)形緩沖空間需要向系統(tǒng)申請(qǐng)DMA訪問(wèn)用的內(nèi)存空間,需要用到heap_caps_malloc函數(shù), MALLOC_CAP_DMA,單個(gè)存儲(chǔ)空間大小的選擇最好根據(jù)每個(gè)周期SPI發(fā)送數(shù)據(jù)的長(zhǎng)度選擇,即M為每個(gè)周期SPI發(fā)送數(shù)據(jù)長(zhǎng)度的整數(shù)倍,同時(shí)為了保證網(wǎng)絡(luò)發(fā)送效率,M需要選擇盡量接近MTU大小1300(ESP32不支持分片,且分片影響效率),每次發(fā)送長(zhǎng)度為64Bytes,因此選擇M為64*20=1280Bytes,存儲(chǔ)空間個(gè)數(shù)N方面,理論上選擇越大的N,系統(tǒng)運(yùn)行中緩存空間越大,SPI接收出現(xiàn)錯(cuò)誤的概率越小,但由于ESP32的內(nèi)存空間有限,N過(guò)大會(huì)影響其他線程,通過(guò)實(shí)驗(yàn)選擇N為5。

    SPI數(shù)據(jù)采集程序主要包括:SPI驅(qū)動(dòng)初始化,環(huán)形緩沖區(qū)初始化,SPI Slave讀取程序。SPI Slave驅(qū)動(dòng)程序通過(guò)操作DMA和SPI控制器與SPI Master進(jìn)行通信,同時(shí)對(duì)應(yīng)用程序提供訪問(wèn)接口,詳細(xì)的數(shù)據(jù)結(jié)構(gòu)及程序設(shè)計(jì)可參考文獻(xiàn)[7]。

    SPI Slave讀取程序流程為:

    1.循環(huán)調(diào)用spi_slave_transmit將當(dāng)前緩沖區(qū)以及接收數(shù)據(jù)信息通過(guò)spi_slave_interface_config_t結(jié)構(gòu)體指定給底層驅(qū)動(dòng),并啟動(dòng)SPI接收,線程進(jìn)入掛起狀態(tài)等待接收結(jié)束。

    2.接收結(jié)束后,線程繼續(xù)運(yùn)行,將接收到的數(shù)據(jù)所在存儲(chǔ)空間的首地址通過(guò)xQueueSendToBack加入隊(duì)列。

    3.將當(dāng)前緩沖區(qū)切換為環(huán)形緩沖區(qū)的下一存儲(chǔ)空間,重復(fù)1。

    2.2.3 數(shù)據(jù)發(fā)送線程程序設(shè)計(jì)

    在STA模式下,Socket接口與上位機(jī)有兩種建立通信連接的方式,即“TCP模式”和“UDP模式”。由于TCP模式傳輸?shù)臄?shù)據(jù)不容易丟失,而UDP模式傳輸?shù)臄?shù)據(jù)容易出現(xiàn)錯(cuò)誤丟失情況,因此本次連接采用TCP模式。

    當(dāng)ESP32連接上WIFI并獲取到AP分配的IP后,即可通過(guò)Socket接口與上位機(jī)建立通訊,發(fā)送獲取到的數(shù)據(jù)。Socket是ESP32和上位機(jī)之間建立通訊的接口。ESP32主動(dòng)對(duì)上位機(jī)發(fā)起連接請(qǐng)求,上位機(jī)在連接前開(kāi)啟監(jiān)聽(tīng)的Socket接口,以實(shí)時(shí)監(jiān)聽(tīng)客戶端的請(qǐng)求,連接建立完成后,ESP32和上位機(jī)即可進(jìn)行通信。ESP32與上位機(jī)通信連接建立流程如圖6所示:

    主要步驟及具體程序描述如下[8]:

    1.定義以下套接字描述符:“sock_fd”監(jiān)聽(tīng)套接口描述符;“client_fd”數(shù)據(jù)傳輸套接口描述符;“bind_fd”綁定IP/端口套接口描述符。定義本地地址變量“my_addr”,用于保存本地IP與端口號(hào);定義目標(biāo)地址變量“client_addr”,用于保存目標(biāo)機(jī)IP及端口號(hào)。

    2. 使用socket(AF_INET, SOCK_STREAM, 0)語(yǔ)句創(chuàng)建Socket監(jiān)聽(tīng)。

    圖6 ESP32與上位機(jī)通信連接建立流程圖

    3. 將本地的IP、端口號(hào)、協(xié)議類型與Socket綁定,主要程序如下:

    my_addr.sin_family = AF_INET;

    my_addr.sin_port = htons(PORT);

    my_addr.sin_addr.s_addr=htonl(INADDR_ANY);

    bind_fd = bind(sock_fd,(struct sockaddr *)&my_addr,sizeof(my_addr));

    4. 開(kāi)啟監(jiān)聽(tīng)Socket使系統(tǒng)處于監(jiān)聽(tīng)狀態(tài),等待上位機(jī)的連接請(qǐng)求,使用語(yǔ)句為“l(fā)isten(sock_fd,10)”進(jìn)行監(jiān)聽(tīng)。

    5. 接受上位機(jī)的連接請(qǐng)求,使用accept(sock_fd, (struct sockaddr *)&client_addr, &sin_size)語(yǔ)句建立通信socket。

    6. 確定連接建立后,調(diào)用xQueueReceive讀取隊(duì)列,如果隊(duì)列為空,線程掛起直至隊(duì)列非空。如果隊(duì)列為非空,從隊(duì)列中獲取數(shù)據(jù)存儲(chǔ)空間首地址。

    7. 使用write(newconn, (char *)tmp, BUF_SIZE)向上位機(jī)發(fā)送數(shù)據(jù)。如果發(fā)送失敗就會(huì)返回-1,程序進(jìn)入報(bào)錯(cuò)停止發(fā)送程序;如果發(fā)送數(shù)據(jù)成功會(huì)將實(shí)際發(fā)送出的字符數(shù)返回,程序回到6。

    2.2.4 Web服務(wù)器線程程序設(shè)計(jì)

    Web 是一種網(wǎng)絡(luò)通信協(xié)議,是一種在單個(gè) TCP 連接上進(jìn)行全雙工通訊的協(xié)議。如圖7所示,ESP32連接上WIFI后,會(huì)創(chuàng)建一個(gè)WEB服務(wù)器線程,該線程用于為上位機(jī)提供信息查詢。當(dāng)上位機(jī)發(fā)送HTTP請(qǐng)求時(shí),系統(tǒng)會(huì)將從SPI接收的數(shù)據(jù)和發(fā)送成功的數(shù)據(jù)信息返回到上位機(jī)的瀏覽器中,方便用戶查詢?cè)跀?shù)據(jù)通信過(guò)程中是否存在報(bào)文丟失。

    圖7 WEB服務(wù)線程工作過(guò)程示意圖

    圖8 硬件設(shè)備連接圖

    圖9 ESP32連接至WIFI過(guò)程圖

    WEB服務(wù)線程程序設(shè)計(jì)主要步驟如下[9]:

    1.創(chuàng)建Socket連接,并綁定本地IP地址和80端口,用于監(jiān)聽(tīng)上位機(jī)的連接請(qǐng)求。當(dāng)上位機(jī)發(fā)出連接請(qǐng)求后,系統(tǒng)會(huì)與上位機(jī)建立連接,并建立通信socket。創(chuàng)建Socket和建立連接的具體程序設(shè)計(jì)可參考3.2.3節(jié)。

    2.ESP32讀取上位機(jī)發(fā)送的請(qǐng)求數(shù)據(jù),將其放在recv_buffer的字符型數(shù)組中,通過(guò)語(yǔ)句strncmp((char *)recv_buffer, "GET", 3) == 0判斷請(qǐng)求報(bào)文前三個(gè)字符是否為“GET”,如果是的話會(huì)執(zhí)行如下命令:

    sprintf(disp,"spi:%d;tcp:%d! ",spi_count,tcp_count);

    strcpy(htmldata,htmldata_h); strcat(htmldata,disp); strcat(htmldata,htmldata_t);

    write(conn, htmldata, strlen(htmldata));

    其中disp為自定義的字符型數(shù)組,用于存放返回的數(shù)據(jù);spi_count為系統(tǒng)統(tǒng)計(jì)接收到的SPI數(shù)據(jù),tcp_count為系統(tǒng)發(fā)送給上位機(jī)的數(shù)據(jù);htmldata為長(zhǎng)度為200的字符型數(shù)組;htmldata_h和htmldata_t定義如下:

    char

    charhtmldata_t[] ="《/html>";

    最后通過(guò)write函數(shù)將加上HTML標(biāo)簽的數(shù)據(jù)返回到上位機(jī)的瀏覽器中顯示出來(lái)。對(duì)于需要返回的其它信息也可以由用戶自行定義。

    圖10 上位機(jī)接收數(shù)據(jù)繪圖

    圖11 上位機(jī)接收數(shù)據(jù)圖

    3 實(shí)驗(yàn)驗(yàn)證

    本次實(shí)驗(yàn)主要通過(guò)兩個(gè)開(kāi)發(fā)板進(jìn)行系統(tǒng)搭建,一塊是ESP32-DevKitC,開(kāi)發(fā)環(huán)境是Ai-ThinkerIDEV1.0,另一塊是STM32F407,兩個(gè)開(kāi)發(fā)板之間的SPI連接原理如圖2所示。由于我們只需要進(jìn)行單向發(fā)送,所以除去VCC和接地線,只需要連接三條線。用杜邦線根據(jù)電路接線圖連接好實(shí)物圖,完成后的硬件設(shè)備連接如圖8所示。

    圖中每種顏色的杜邦線對(duì)應(yīng)條接線,黑色為地線,綠色為串行時(shí)鐘信號(hào)線,橙色為MOSI數(shù)據(jù)信號(hào)線,黃色為片選信號(hào)線。

    圖12 WEB查詢系統(tǒng)信息圖

    實(shí)驗(yàn)主要驗(yàn)證ESP32與Wifi的連接是否正常,以及是否能正常接收SPI數(shù)據(jù)并通過(guò)WiFi發(fā)送數(shù)據(jù)到上位機(jī),同時(shí)計(jì)算數(shù)據(jù)在傳輸?shù)倪^(guò)程中的速率及丟包率。

    首先測(cè)試ESP32與WiFi的連接,可以采用串口調(diào)試工具打印ESP32輸出的信息,明確ESP32當(dāng)前的運(yùn)行連接狀態(tài);系統(tǒng)連接上電后即進(jìn)入了準(zhǔn)備狀態(tài),按下ESP32 RST鍵,ESP32會(huì)自動(dòng)連接WiFi。通過(guò)串口調(diào)試工具可以看到整個(gè)WiFi連接過(guò)程,如圖9所示

    通過(guò)圖9可以看到ESP32系統(tǒng)首先會(huì)進(jìn)行STA模式配置,當(dāng)完成STA模式配置后會(huì)輸出當(dāng)前的用戶名和密碼,接下來(lái)AP會(huì)為其分配IP地址。當(dāng)打印獲取到IP地址的時(shí)候表示ESP32連接AP成功,AP分配的IP地址是192.168.2.30。通過(guò)串口打印的提示信息可以看到ESP32系統(tǒng)的準(zhǔn)備過(guò)程,其中spi_task on表示SPI數(shù)據(jù)接收線程開(kāi)啟;Data_trans_task on表示數(shù)據(jù)發(fā)送線程開(kāi)啟;Data_trans_task listen和Initial_SPI Done表示ESP32系統(tǒng)開(kāi)啟了SPI的監(jiān)聽(tīng)端口并完成SPI初始化配置;Http_task on表示W(wǎng)EB服務(wù)線程開(kāi)啟; Data_trans_task accept表示ESP32系統(tǒng)與上位機(jī)已經(jīng)建立了TCP連接并且可以開(kāi)始進(jìn)行數(shù)據(jù)傳輸。

    通過(guò)圖10可以看到上位機(jī)接收的數(shù)據(jù)總字節(jié)數(shù)為38400Bytes,并且數(shù)據(jù)從0開(kāi)始遞增到2后又重置為0。上位機(jī)將接收到的數(shù)據(jù)以后綴為.dat的文件進(jìn)行存儲(chǔ),打開(kāi)文件可以看到具體的接收數(shù)據(jù),如圖11所示,在不考慮浮點(diǎn)數(shù)存儲(chǔ)誤差的情況下,每個(gè)數(shù)據(jù)間隔0.001。 最后,為了驗(yàn)證發(fā)送過(guò)程中的成功率,可以通過(guò)瀏覽器訪問(wèn)ESP32系統(tǒng)獲取接收和發(fā)送的數(shù)據(jù)量,如圖12所示:

    其中spi:384000Bytes表示ESP32系統(tǒng)從STM32F407系統(tǒng)接收到的SPI數(shù)據(jù)為384000Bytes。tcp:384000Bytes表示ESP32系統(tǒng)從TCP連接發(fā)送給上位機(jī)的數(shù)據(jù),ESP32系統(tǒng)接收的數(shù)據(jù)量和發(fā)送出去的數(shù)據(jù)量一致,并且通過(guò)圖10上位機(jī)軟件可以看到上位機(jī)接收到的數(shù)據(jù)總量也為384000Bytes,ESP32系統(tǒng)通過(guò)Wifi發(fā)送給上位機(jī)的數(shù)據(jù)與上位機(jī)接收到的數(shù)據(jù)一致,說(shuō)明數(shù)據(jù)在無(wú)線傳輸?shù)倪^(guò)程中不存在丟包,丟包率為0%。另外從圖中可以看到數(shù)據(jù)接收時(shí)間為6.01S,通過(guò)計(jì)算可知數(shù)據(jù)傳輸速率為62.5KB/s(500Kbps)。實(shí)驗(yàn)結(jié)果表明本設(shè)計(jì)的系統(tǒng)可行有效。

    4 結(jié) 論

    以STM32F407連接ESP32,ESP32通過(guò)WIFE連接上位機(jī)為例,針對(duì)ESP32無(wú)線網(wǎng)絡(luò)配置、數(shù)據(jù)接收和發(fā)送程序進(jìn)行了詳細(xì)的設(shè)計(jì)與說(shuō)明,同時(shí)對(duì)ESP32系統(tǒng)的WEB服務(wù)程序進(jìn)行設(shè)計(jì),以方便上位機(jī)進(jìn)行信息查詢。最后通過(guò)硬件平臺(tái)測(cè)試來(lái)驗(yàn)證應(yīng)用程序有效性和驅(qū)動(dòng)性能。實(shí)驗(yàn)結(jié)果表明,基于ESP32的無(wú)線數(shù)據(jù)采集傳輸系統(tǒng)程序設(shè)計(jì)合理,易于使用,但性能有待進(jìn)一步優(yōu)化和改進(jìn)。未來(lái)將進(jìn)一步優(yōu)化硬件及軟件設(shè)計(jì),提高抗干擾及數(shù)據(jù)傳輸效率,提高系統(tǒng)性能。

    猜你喜歡
    存儲(chǔ)空間線程隊(duì)列
    基于多種群協(xié)同進(jìn)化算法的數(shù)據(jù)并行聚類算法
    蘋(píng)果訂閱捆綁服務(wù)Apple One正式上線
    隊(duì)列里的小秘密
    基于多隊(duì)列切換的SDN擁塞控制*
    軟件(2020年3期)2020-04-20 00:58:44
    用好Windows 10保留的存儲(chǔ)空間
    在隊(duì)列里
    豐田加速駛?cè)胱詣?dòng)駕駛隊(duì)列
    淺談linux多線程協(xié)作
    Linux線程實(shí)現(xiàn)技術(shù)研究
    么移動(dòng)中間件線程池并發(fā)機(jī)制優(yōu)化改進(jìn)
    日韩欧美一区视频在线观看| 免费高清在线观看日韩| 一本久久中文字幕| 久久伊人香网站| 香蕉久久夜色| 村上凉子中文字幕在线| 国产黄色小视频在线观看| 国产极品粉嫩免费观看在线| 淫妇啪啪啪对白视频| 女性被躁到高潮视频| 天天躁夜夜躁狠狠躁躁| 十八禁网站免费在线| 一本久久中文字幕| 黄色a级毛片大全视频| 国产精品亚洲一级av第二区| 香蕉av资源在线| 一级片免费观看大全| 久久久国产成人精品二区| 精品卡一卡二卡四卡免费| 欧美一区二区精品小视频在线| 国产精品二区激情视频| www.www免费av| 色尼玛亚洲综合影院| 日本熟妇午夜| 国产精品久久久av美女十八| 成人午夜高清在线视频 | 亚洲中文字幕一区二区三区有码在线看 | 久久久久国产一级毛片高清牌| 看黄色毛片网站| 国内少妇人妻偷人精品xxx网站 | 日本精品一区二区三区蜜桃| 亚洲色图 男人天堂 中文字幕| 久久人妻av系列| 女同久久另类99精品国产91| 男女床上黄色一级片免费看| 国产真实乱freesex| 50天的宝宝边吃奶边哭怎么回事| 午夜福利高清视频| 久久久精品欧美日韩精品| bbb黄色大片| 脱女人内裤的视频| 国产精品久久久久久亚洲av鲁大| 免费看美女性在线毛片视频| 成人亚洲精品av一区二区| 两性午夜刺激爽爽歪歪视频在线观看 | 精品国产一区二区三区四区第35| 最近最新中文字幕大全免费视频| 国产精品永久免费网站| 亚洲电影在线观看av| 国产又爽黄色视频| 最近最新免费中文字幕在线| 国产久久久一区二区三区| 白带黄色成豆腐渣| 国产高清激情床上av| av视频在线观看入口| 成年女人毛片免费观看观看9| 一本综合久久免费| 国内揄拍国产精品人妻在线 | 搡老熟女国产l中国老女人| 亚洲精品在线观看二区| 日本a在线网址| 中出人妻视频一区二区| 久热爱精品视频在线9| 一区二区日韩欧美中文字幕| 国产色视频综合| 国内精品久久久久精免费| 亚洲国产欧美日韩在线播放| 亚洲中文av在线| 国产麻豆成人av免费视频| 麻豆一二三区av精品| 91字幕亚洲| or卡值多少钱| 婷婷丁香在线五月| 亚洲最大成人中文| 国产私拍福利视频在线观看| 中文字幕人妻熟女乱码| 欧美日本视频| 日本 av在线| 一级片免费观看大全| 国产片内射在线| 亚洲三区欧美一区| 国产午夜精品久久久久久| 亚洲 欧美一区二区三区| 午夜福利高清视频| 日本a在线网址| www.精华液| 又紧又爽又黄一区二区| 久久久久久国产a免费观看| 18禁黄网站禁片午夜丰满| 麻豆一二三区av精品| 精品人妻1区二区| 日本免费a在线| 欧美一级毛片孕妇| 黄色成人免费大全| 国产成年人精品一区二区| 香蕉国产在线看| 99精品在免费线老司机午夜| 午夜影院日韩av| 国产黄色小视频在线观看| 午夜福利成人在线免费观看| 妹子高潮喷水视频| 精品久久久久久久毛片微露脸| 日本撒尿小便嘘嘘汇集6| 男男h啪啪无遮挡| 韩国精品一区二区三区| 欧美在线一区亚洲| 欧美最黄视频在线播放免费| 亚洲国产毛片av蜜桃av| 日韩高清综合在线| 国产精品电影一区二区三区| 18禁黄网站禁片免费观看直播| 国产成人精品无人区| 亚洲国产精品久久男人天堂| 国产一区二区三区视频了| 美女高潮到喷水免费观看| 日韩一卡2卡3卡4卡2021年| 熟妇人妻久久中文字幕3abv| 91麻豆精品激情在线观看国产| 久久九九热精品免费| 日日摸夜夜添夜夜添小说| 午夜福利在线在线| 一个人观看的视频www高清免费观看 | 嫩草影院精品99| 在线av久久热| 亚洲中文字幕日韩| 99国产综合亚洲精品| 中出人妻视频一区二区| 999精品在线视频| a级毛片a级免费在线| 亚洲第一欧美日韩一区二区三区| 一二三四在线观看免费中文在| 99热只有精品国产| 亚洲一区高清亚洲精品| 在线观看免费视频日本深夜| 嫩草影院精品99| 午夜福利成人在线免费观看| ponron亚洲| 精品国产乱码久久久久久男人| 亚洲国产中文字幕在线视频| 成人av一区二区三区在线看| 一个人观看的视频www高清免费观看 | 90打野战视频偷拍视频| 高清在线国产一区| 国产野战对白在线观看| 嫁个100分男人电影在线观看| 欧美最黄视频在线播放免费| 久久人人精品亚洲av| 老鸭窝网址在线观看| 夜夜躁狠狠躁天天躁| 国产精品久久久久久亚洲av鲁大| 日韩大码丰满熟妇| 国产伦在线观看视频一区| 亚洲精品久久成人aⅴ小说| 青草久久国产| 欧美精品啪啪一区二区三区| 欧美黄色片欧美黄色片| 成人三级做爰电影| 一区二区三区激情视频| 国内毛片毛片毛片毛片毛片| 精品一区二区三区av网在线观看| 亚洲精品在线观看二区| 1024视频免费在线观看| 国产亚洲精品一区二区www| 久久精品aⅴ一区二区三区四区| 91国产中文字幕| 一级毛片高清免费大全| 久久精品夜夜夜夜夜久久蜜豆 | 亚洲成a人片在线一区二区| 国产乱人伦免费视频| 哪里可以看免费的av片| 法律面前人人平等表现在哪些方面| 精品国产超薄肉色丝袜足j| 嫩草影院精品99| 欧美国产日韩亚洲一区| 嫩草影视91久久| 国产成人精品无人区| 人人澡人人妻人| 欧美日本亚洲视频在线播放| 欧美乱妇无乱码| 好看av亚洲va欧美ⅴa在| 午夜福利一区二区在线看| 两性夫妻黄色片| 韩国av一区二区三区四区| 一区福利在线观看| 99久久精品国产亚洲精品| 国产黄片美女视频| 90打野战视频偷拍视频| 91老司机精品| 日韩精品免费视频一区二区三区| 亚洲人成伊人成综合网2020| 亚洲精品国产区一区二| 欧美黑人巨大hd| 可以在线观看毛片的网站| 在线视频色国产色| 久久性视频一级片| 亚洲国产精品合色在线| 亚洲熟妇熟女久久| 精品久久久久久久久久久久久 | tocl精华| 欧美 亚洲 国产 日韩一| 日韩欧美三级三区| 精品日产1卡2卡| 老汉色∧v一级毛片| 男女之事视频高清在线观看| 丁香六月欧美| 国产91精品成人一区二区三区| 精品无人区乱码1区二区| 国产精品98久久久久久宅男小说| 欧美日韩亚洲综合一区二区三区_| 久久久久精品国产欧美久久久| 此物有八面人人有两片| 欧美成狂野欧美在线观看| av电影中文网址| 国产精品免费一区二区三区在线| 精品欧美一区二区三区在线| 久久精品人妻少妇| 久久九九热精品免费| 日韩国内少妇激情av| 国产精品二区激情视频| www.熟女人妻精品国产| 巨乳人妻的诱惑在线观看| 99在线视频只有这里精品首页| 欧美 亚洲 国产 日韩一| 国产欧美日韩精品亚洲av| 特大巨黑吊av在线直播 | 中出人妻视频一区二区| 12—13女人毛片做爰片一| 亚洲精品中文字幕一二三四区| 日韩大尺度精品在线看网址| 午夜福利一区二区在线看| 免费电影在线观看免费观看| 女人被狂操c到高潮| 亚洲精品国产区一区二| 99riav亚洲国产免费| 国产成+人综合+亚洲专区| 99热只有精品国产| 亚洲第一电影网av| 久久狼人影院| 午夜激情福利司机影院| 精品一区二区三区视频在线观看免费| 欧美在线一区亚洲| 免费在线观看视频国产中文字幕亚洲| 99在线人妻在线中文字幕| 校园春色视频在线观看| 色在线成人网| 亚洲欧美激情综合另类| 999久久久国产精品视频| 久久精品91无色码中文字幕| www日本在线高清视频| 久久香蕉国产精品| 国产成人av激情在线播放| 久久国产精品男人的天堂亚洲| 中文字幕人妻熟女乱码| 久久久久久免费高清国产稀缺| 51午夜福利影视在线观看| 免费在线观看日本一区| 在线免费观看的www视频| 精品日产1卡2卡| 韩国精品一区二区三区| 在线观看日韩欧美| 国产一区二区三区视频了| 亚洲国产精品成人综合色| 亚洲国产欧美网| 亚洲久久久国产精品| 亚洲av电影不卡..在线观看| 精品久久久久久,| 在线观看日韩欧美| 亚洲精品国产区一区二| 成人手机av| 激情在线观看视频在线高清| 黄频高清免费视频| 国产亚洲精品av在线| 亚洲国产欧洲综合997久久, | 老汉色av国产亚洲站长工具| 九色国产91popny在线| 国产又爽黄色视频| 狂野欧美激情性xxxx| 亚洲全国av大片| 18禁裸乳无遮挡免费网站照片 | av在线天堂中文字幕| 中文字幕久久专区| 亚洲国产欧洲综合997久久, | 成人免费观看视频高清| 成人欧美大片| 欧美黄色片欧美黄色片| 91大片在线观看| 一区福利在线观看| 校园春色视频在线观看| 精品国产一区二区三区四区第35| 中出人妻视频一区二区| av天堂在线播放| 欧美人与性动交α欧美精品济南到| 在线观看66精品国产| 两个人视频免费观看高清| 黑人操中国人逼视频| 亚洲精品美女久久av网站| 正在播放国产对白刺激| 欧美在线黄色| 最新在线观看一区二区三区| 亚洲真实伦在线观看| 国产欧美日韩一区二区精品| 亚洲精品在线美女| 桃红色精品国产亚洲av| 黄网站色视频无遮挡免费观看| 亚洲aⅴ乱码一区二区在线播放 | avwww免费| 欧美中文日本在线观看视频| 人人妻,人人澡人人爽秒播| 亚洲一卡2卡3卡4卡5卡精品中文| 12—13女人毛片做爰片一| 嫁个100分男人电影在线观看| 白带黄色成豆腐渣| 99久久无色码亚洲精品果冻| 欧美日韩精品网址| 久久亚洲真实| 精品福利观看| 欧美黑人巨大hd| 欧美日韩瑟瑟在线播放| 日日干狠狠操夜夜爽| 人人妻人人看人人澡| 久久精品影院6| 欧美久久黑人一区二区| 亚洲第一青青草原| 91老司机精品| 国产欧美日韩精品亚洲av| 两个人看的免费小视频| 亚洲av美国av| 夜夜躁狠狠躁天天躁| 黄片小视频在线播放| 丰满人妻熟妇乱又伦精品不卡| 午夜福利欧美成人| 亚洲欧美精品综合久久99| 亚洲真实伦在线观看| 美女 人体艺术 gogo| 亚洲成人久久性| 国产av又大| 夜夜看夜夜爽夜夜摸| 这个男人来自地球电影免费观看| 曰老女人黄片| 色精品久久人妻99蜜桃| 一边摸一边做爽爽视频免费| 久久久久九九精品影院| 动漫黄色视频在线观看| 1024手机看黄色片| 国内少妇人妻偷人精品xxx网站 | 后天国语完整版免费观看| 亚洲三区欧美一区| 午夜精品在线福利| 成人av一区二区三区在线看| 国产极品粉嫩免费观看在线| 欧美又色又爽又黄视频| 免费在线观看亚洲国产| 神马国产精品三级电影在线观看 | 久久精品国产综合久久久| 国产亚洲欧美在线一区二区| 黄色毛片三级朝国网站| 亚洲人成77777在线视频| 免费一级毛片在线播放高清视频| 午夜福利免费观看在线| 欧美乱码精品一区二区三区| 成人亚洲精品一区在线观看| 国产亚洲精品av在线| 黄色视频,在线免费观看| 黑人操中国人逼视频| 亚洲狠狠婷婷综合久久图片| 欧美日本视频| 午夜亚洲福利在线播放| www日本在线高清视频| а√天堂www在线а√下载| 熟妇人妻久久中文字幕3abv| 大型av网站在线播放| 欧美 亚洲 国产 日韩一| 黄频高清免费视频| 成年版毛片免费区| 国产精品久久视频播放| 亚洲中文字幕日韩| 别揉我奶头~嗯~啊~动态视频| 黄色 视频免费看| 制服诱惑二区| 日韩免费av在线播放| 国产麻豆成人av免费视频| 欧美+亚洲+日韩+国产| 非洲黑人性xxxx精品又粗又长| 成人国产一区最新在线观看| 欧美黄色淫秽网站| 巨乳人妻的诱惑在线观看| 成熟少妇高潮喷水视频| 免费av毛片视频| 一本精品99久久精品77| 久久精品影院6| 日日摸夜夜添夜夜添小说| 成人免费观看视频高清| 成人永久免费在线观看视频| 日韩av在线大香蕉| 日本成人三级电影网站| 一本一本综合久久| 伊人久久大香线蕉亚洲五| 日韩一卡2卡3卡4卡2021年| 国产野战对白在线观看| 一卡2卡三卡四卡精品乱码亚洲| 日本 av在线| 精品久久久久久久久久久久久 | 国产成人啪精品午夜网站| 男女做爰动态图高潮gif福利片| www.熟女人妻精品国产| 国产精品一区二区三区四区久久 | 香蕉av资源在线| 日本一本二区三区精品| 国产精品日韩av在线免费观看| 国产激情偷乱视频一区二区| 久久人妻福利社区极品人妻图片| 女性被躁到高潮视频| 国产精品久久久久久人妻精品电影| 亚洲欧美精品综合一区二区三区| 国产成人影院久久av| 在线观看www视频免费| 男女午夜视频在线观看| 中出人妻视频一区二区| 免费av毛片视频| 亚洲在线自拍视频| 亚洲av日韩精品久久久久久密| 国产亚洲精品av在线| 男女之事视频高清在线观看| 久热爱精品视频在线9| 国产亚洲av嫩草精品影院| 每晚都被弄得嗷嗷叫到高潮| 久久这里只有精品19| 国产男靠女视频免费网站| 成人国语在线视频| 黄色女人牲交| 国产99久久九九免费精品| 欧美性猛交黑人性爽| 国产精品亚洲美女久久久| 51午夜福利影视在线观看| 国产精品一区二区精品视频观看| 俺也久久电影网| 日韩欧美 国产精品| 亚洲人成伊人成综合网2020| 国产不卡一卡二| 国产人伦9x9x在线观看| 天堂√8在线中文| 国产亚洲精品综合一区在线观看 | 精品午夜福利视频在线观看一区| 久久天堂一区二区三区四区| 日日夜夜操网爽| 国产黄a三级三级三级人| 亚洲午夜理论影院| 亚洲av熟女| 亚洲人成网站在线播放欧美日韩| 免费在线观看黄色视频的| 午夜影院日韩av| 亚洲国产中文字幕在线视频| www.999成人在线观看| 一区二区三区国产精品乱码| 亚洲精品中文字幕一二三四区| 久热爱精品视频在线9| 后天国语完整版免费观看| 亚洲国产中文字幕在线视频| 他把我摸到了高潮在线观看| 丁香六月欧美| а√天堂www在线а√下载| 日本成人三级电影网站| 日本一区二区免费在线视频| 久久国产精品男人的天堂亚洲| 国产av一区在线观看免费| 久久精品影院6| 好看av亚洲va欧美ⅴa在| 夜夜爽天天搞| 免费在线观看影片大全网站| 性欧美人与动物交配| 国产av一区二区精品久久| 最新美女视频免费是黄的| 亚洲精品国产精品久久久不卡| 香蕉久久夜色| www.www免费av| 亚洲专区中文字幕在线| 精品欧美一区二区三区在线| 国产精品,欧美在线| 日日摸夜夜添夜夜添小说| 国产黄色小视频在线观看| 又紧又爽又黄一区二区| 人人妻人人澡人人看| 国产一区在线观看成人免费| 最近最新中文字幕大全电影3 | 夜夜躁狠狠躁天天躁| 亚洲狠狠婷婷综合久久图片| 国产精品1区2区在线观看.| 香蕉国产在线看| 免费看a级黄色片| 久久伊人香网站| 19禁男女啪啪无遮挡网站| 老司机深夜福利视频在线观看| 18禁裸乳无遮挡免费网站照片 | 真人一进一出gif抽搐免费| 亚洲精品在线观看二区| 丰满人妻熟妇乱又伦精品不卡| 国产一区二区在线av高清观看| 亚洲专区字幕在线| 又大又爽又粗| 午夜福利在线在线| 高清在线国产一区| 91成年电影在线观看| 手机成人av网站| 欧美人与性动交α欧美精品济南到| 色在线成人网| 黑人欧美特级aaaaaa片| av在线天堂中文字幕| 久久国产精品影院| 国产国语露脸激情在线看| 午夜a级毛片| 国产精品电影一区二区三区| 国产成人精品久久二区二区91| 国产一区二区三区视频了| 亚洲一区高清亚洲精品| 欧美黄色片欧美黄色片| 亚洲一区二区三区不卡视频| 俺也久久电影网| av天堂在线播放| 伦理电影免费视频| 黑丝袜美女国产一区| 亚洲五月色婷婷综合| 国内精品久久久久久久电影| 少妇被粗大的猛进出69影院| 亚洲中文日韩欧美视频| 中国美女看黄片| 欧美又色又爽又黄视频| 黄色丝袜av网址大全| 久久久国产精品麻豆| 婷婷精品国产亚洲av| 99久久国产精品久久久| 国产免费av片在线观看野外av| 99国产精品99久久久久| 久久精品91无色码中文字幕| 久久久久亚洲av毛片大全| 久久伊人香网站| 午夜福利免费观看在线| 女同久久另类99精品国产91| 夜夜夜夜夜久久久久| 免费电影在线观看免费观看| 久久精品亚洲精品国产色婷小说| 午夜免费激情av| 午夜福利18| 国产精品一区二区免费欧美| 嫩草影院精品99| 亚洲人成网站在线播放欧美日韩| 亚洲免费av在线视频| 亚洲第一青青草原| 欧美绝顶高潮抽搐喷水| 好男人在线观看高清免费视频 | 我的亚洲天堂| 狠狠狠狠99中文字幕| 老司机靠b影院| 99热这里只有精品一区 | 亚洲精品在线观看二区| 制服人妻中文乱码| 国产黄色小视频在线观看| 老汉色∧v一级毛片| 人妻久久中文字幕网| 日韩三级视频一区二区三区| www日本在线高清视频| 在线观看日韩欧美| 久久精品国产亚洲av香蕉五月| 真人做人爱边吃奶动态| 这个男人来自地球电影免费观看| 国产野战对白在线观看| 精品国产乱子伦一区二区三区| 欧美成人性av电影在线观看| 欧美一区二区精品小视频在线| √禁漫天堂资源中文www| 免费高清在线观看日韩| 精品国产亚洲在线| 99久久综合精品五月天人人| 女生性感内裤真人,穿戴方法视频| 国产精品98久久久久久宅男小说| 国产日本99.免费观看| 免费在线观看完整版高清| 好看av亚洲va欧美ⅴa在| 久久午夜亚洲精品久久| 国产又色又爽无遮挡免费看| 热re99久久国产66热| 欧美成人一区二区免费高清观看 | 大型黄色视频在线免费观看| 丰满人妻熟妇乱又伦精品不卡| 叶爱在线成人免费视频播放| 色哟哟哟哟哟哟| 美女扒开内裤让男人捅视频| 国产一区二区三区在线臀色熟女| 在线观看66精品国产| 成人国语在线视频| 19禁男女啪啪无遮挡网站| 少妇 在线观看| 成年免费大片在线观看| 国产欧美日韩精品亚洲av| 国产精品1区2区在线观看.| 亚洲免费av在线视频| 哪里可以看免费的av片| 国产精品免费视频内射| 成人国语在线视频| 亚洲精品国产精品久久久不卡| 精品不卡国产一区二区三区| 久久久国产成人精品二区| 19禁男女啪啪无遮挡网站| 精品不卡国产一区二区三区| 免费看日本二区| 久久久久久国产a免费观看| 熟女电影av网| 91麻豆av在线| 亚洲人成77777在线视频| 亚洲精品国产区一区二| svipshipincom国产片| 极品教师在线免费播放| 国产高清视频在线播放一区| 伦理电影免费视频| 欧美成人性av电影在线观看| 午夜福利在线在线|