一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

啟明去端分享| ESP32-S3如何實現(xiàn)tcp_client和tcp_server

啟明云端 ? 2021-09-07 18:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

開發(fā)環(huán)境:
esp-idf:master分支
官方idf環(huán)境搭建文檔:
https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/index.html#get-started-set-up-env
硬件需求:
Esp32-s3開發(fā)板

poYBAGE1v1WAaqQ4AA0HYXqHHgk414.pngESP32-S3

TCP介紹
傳輸控制協(xié)議(TCP,Transmission Control Protocol)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。


TCP分為服務(wù)端Server和客戶端Client,服務(wù)端創(chuàng)建服務(wù)等待客戶端連接,客戶端連接后即可與服務(wù)端相互發(fā)送消息,服務(wù)端只有一個,客戶端可以是N個,可以同時連接服務(wù)端,服務(wù)器不能主動去連接客戶端,必須客戶端主動連接服務(wù)端才能相互發(fā)送消息。

Tcp_client整體流程:
1、編譯官方tcp_client例程(需要配置下面會詳細(xì)介紹),燒錄到ESP32-S3開發(fā)板。
2、使用TCP調(diào)試助手創(chuàng)建TCP Server(電腦必須與開發(fā)板在同一路由器下)
3、重啟ESP32,創(chuàng)建TCP Client,開始連接電腦創(chuàng)建的服務(wù)器
4、相互發(fā)送數(shù)據(jù)

一、Tcp_client例程分析:
1.初始化NVS、WiFi連接上WiFi后創(chuàng)建一個tcp_client任務(wù)。

voidapp_main(void)
{
ESP_ERROR_CHECK(nvs_flash_init());
ESP_ERROR_CHECK(esp_netif_init());
ESP_ERROR_CHECK(esp_event_loop_create_default());

/*ThishelperfunctionconfiguresWi-FiorEthernet,asselectedinmenuconfig.
*Read"EstablishingWi-FiorEthernetConnection"sectionin
*examples/protocols/README.mdformoreinformationaboutthisfunction.
*/
ESP_ERROR_CHECK(example_connect());//WiFi作為STA模式,連接到配置的WiFi

//創(chuàng)建一個任務(wù),用來進(jìn)行tcp連接和通訊
xTaskCreate(tcp_client_task,"tcp_client",4096,NULL,5,NULL);
}

WiFi連接函數(shù):example_connect()WiFi信息通過menuconfig 配置


idf.py menuconfig 進(jìn)入配置菜單


配置連接的WiFi名稱和密碼(要和服務(wù)器端連接到同一路由)

poYBAGE3D0KAW1f3AABn69vl4VE152.png

2.配置遠(yuǎn)程連接信息

structsockaddr_indest_addr;
dest_addr.sin_addr.s_addr=inet_addr(host_ip);//服務(wù)器ip
dest_addr.sin_family=AF_INET;
dest_addr.sin_port=htons(PORT); //服務(wù)器端口
addr_family=AF_INET;
ip_protocol=IPPROTO_IP;

3.通過menuconfig配置服務(wù)器的IP以及端口號


配置完成后保存退出(服務(wù)器的IP及端口)

poYBAGE3D2-AD2S4AAAthg-D7Xo702.png

4.編譯、燒錄
編譯:idf.py build
燒錄:idf.py -p PORT [-b BAUD] flash
注:只有一個串口時可以直接 idf.py flash

5.電腦端或手機端打開TCP服務(wù)器

poYBAGE3D5qAFlMAAAB_e_ccjAM215.png

6.進(jìn)入窗口監(jiān)視頁面
idf.py-pPORTmonitor
1)從和日志可以看出,WiFi連接成功后,創(chuàng)建一個sock,sock連接成功。發(fā)送一條信息給服務(wù)器(MessagefromESP32),發(fā)送成功后打印一句 數(shù)據(jù)發(fā)送成功。

pYYBAGE3D7OAKOC5AACY2bNEm_I357.png

2)服務(wù)器編輯內(nèi)容發(fā)送給esp32,在窗口監(jiān)視頁面顯示。
紅色箭頭是接收到的服務(wù)器的消息

poYBAGE3D8qADE5FAAFR2facCgE260.png

二、tcp_server整體流程:
1、編譯官方tcp_server例程(需要配置下面會詳細(xì)介紹),燒錄到ESP32-S3開發(fā)板。
2、打開tcp調(diào)試助手(電腦or手機必須與開發(fā)板在同一路由器下)
3、重啟ESP32,創(chuàng)建TCP Client,開始監(jiān)聽模式等待tcp_client的連接
4、進(jìn)行通訊發(fā)送數(shù)據(jù)

Tcp_server例程分析:
1.初始化NVS、WiFi連接上WiFi后創(chuàng)建一個tcp_server任務(wù)。

voidapp_main(void)
{
ESP_ERROR_CHECK(nvs_flash_init()); //初始化NVS分區(qū)
ESP_ERROR_CHECK(esp_netif_init()); //初始化底層TCP/P堆棧
ESP_ERROR_CHECK(esp_event_loop_create_default());//創(chuàng)建默認(rèn)事件循環(huán)

/*ThishelperfunctionconfiguresWi-FiorEthernet,asselectedinmenuconfig.
*Read"EstablishingWi-FiorEthernetConnection"sectionin
*examples/protocols/README.mdformoreinformationaboutthisfunction.
*/
ESP_ERROR_CHECK(example_connect());//wifi連接函數(shù),WiFi信息在menuconfig配置
#ifdefCONFIG_EXAMPLE_IPV4
xTaskCreate(tcp_server_task,"tcp_server",4096,(void*)AF_INET,5,NULL);//創(chuàng)建一個tcp_server的任務(wù)
#endif
#ifdefCONFIG_EXAMPLE_IPV6
xTaskCreate(tcp_server_task,"tcp_server",4096,(void*)AF_INET6,5,NULL);
#endif
}

2.新建 socket、 bind、 listen 和 accept, 最后得到了通信的 socket:用于接收/發(fā)送數(shù)據(jù)。

socket(addr_family,SOCK_STREAM,ip_protocol);
bind(listen_sock,(structsockaddr*)&dest_addr,sizeof(dest_addr));
listen(listen_sock,1);
accept(listen_sock,(structsockaddr*)&source_addr,&addr_len);

對應(yīng)log輸出如下:

pYYBAGE3EDSAUsp_AABRKoP3cG8865.png

tcp_server操作流程
1.打開tcp_server工程,配置menuconfig WiFi、TCP服務(wù)器相關(guān)信息(服務(wù)器端口號,要連接的WiFi)

poYBAGE3EEmALxB2AAA-wo1GzpU089.pngpYYBAGE3EFKAW9X5AABiTE-NC3k855.png

2.編譯工程
idf.py build
編譯成功輸出固件信息,及燒錄地址

3.燒錄到開發(fā)板
idf.py -p PORT [-b BAUD] flash
注:只有一個串口時可以直接 idf.py flash


4.打開窗口監(jiān)視器
idf.py monitor
可以看到esp32-s3上電以后連接到配置的WiFi,創(chuàng)建了一個tcp_server等待client的連接

poYBAGE3EHuAPrKfAADM2cCqMTc209.png

5.打開TCP調(diào)試助手,設(shè)置為client模式 輸入服務(wù)器IP及端口號,點擊連接。

poYBAGE3EIuACE5TAACV29y6LXE273.png

6.編輯文本,向服務(wù)器發(fā)送消息
如下圖所示,服務(wù)器端收到消息。并將收到的信息回發(fā)給client端

poYBAGE3EJ6AKyIKAACcurV_GzY358.pngpYYBAGE3EKeAfDvnAABN6ynIeUU696.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • WIFI
    +關(guān)注

    關(guān)注

    81

    文章

    5406

    瀏覽量

    208349
  • 低功耗藍(lán)牙
    +關(guān)注

    關(guān)注

    1

    文章

    246

    瀏覽量

    21952
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    啟明云端ESP32-S3 2.8寸串口屏到手了?如何上手?看這篇!

    【場外插播】ESP32-S32.8寸串口屏、MX1.25-7P線、MX1.25-8P線我們都帶來了,開箱展示如下【競猜繼續(xù)】ESP32-S32.8寸串口屏到手還不知道如何上手點屏?不要擔(dān)心,我們的上手指南來了!
    的頭像 發(fā)表于 07-07 18:04 ?206次閱讀
    <b class='flag-5'>啟明</b>云端<b class='flag-5'>ESP32-S3</b> 2.8寸串口屏到手了?如何上手?看這篇!

    ESP32-S3開發(fā)板燒錄小智AI系統(tǒng)全流程指南

    在AI語音交互領(lǐng)域不斷發(fā)展的今天,開發(fā)者們對于功能強大、開源靈活的開發(fā)板需求日益增長。今天,我們就來詳細(xì)了解一下ESP32AgentDevKit燒錄小智的全流程,這款搭載樂鑫科技ESP32-S3芯片
    的頭像 發(fā)表于 06-16 18:01 ?1462次閱讀
    <b class='flag-5'>ESP32-S3</b>開發(fā)板燒錄小智AI系統(tǒng)全流程指南

    《DNESP32S3使用指南-IDF版_V1.6》第五十四章 TCPServer實驗

    ESP32-S3的片上資源,因此并沒有相應(yīng)的連接原理圖。 54.3 軟件設(shè)計54.3.1 程序流程圖程序流程圖能幫助我們更好的理解一個工程的功能和實現(xiàn)的過程,對學(xué)習(xí)和設(shè)計工程有很好的主導(dǎo)作用。下面看看本實驗
    發(fā)表于 03-03 10:01

    《DNESP32S3使用指南-IDF版_V1.6》第五十三章 TCPClient實驗

    ,以便建立TCPClient連接:①:配置ESP32-S3設(shè)備連接網(wǎng)絡(luò)(必須的,因為WiFi是無線通信,所以需搭建通信橋梁)。②:將sin_family設(shè)置為AF_INET,表示使用IPv4網(wǎng)絡(luò)協(xié)議
    發(fā)表于 03-03 09:49

    Modbus TCP Server程序開發(fā)與Yocto系統(tǒng)構(gòu)建

    解壓后,源碼為“modbus_server_tcp.c”,它模擬一個Modbus TCP傳感器。源碼的講解請參考《11.7 Modbus TCP編程與實驗》。
    的頭像 發(fā)表于 02-14 13:38 ?1021次閱讀
    Modbus <b class='flag-5'>TCP</b> <b class='flag-5'>Server</b>程序開發(fā)與Yocto系統(tǒng)構(gòu)建

    【AI技術(shù)支持】ESP32-S3芯片重復(fù)異常復(fù)位問題處理

    啟明云端/01問題描述客戶在掃碼槍產(chǎn)品中使用ESP32-S3芯片,ESP-IDF版本為idf5.1.0時,產(chǎn)品上電后一直處于異常復(fù)位,復(fù)位提示原因主要有TG0WDT_SYS_RST
    的頭像 發(fā)表于 01-17 18:08 ?1849次閱讀
    【AI技術(shù)支持】<b class='flag-5'>ESP32-S3</b>芯片重復(fù)異常復(fù)位問題處理

    WebTCP/UDP測試工具!小白必學(xué)~

    WebTCP/UDP測試工具,方便大家進(jìn)行各種基于TCP和TDP的模擬測試。該測試工具不僅支持TCP和UDP測試,還支持SSL,使用極為便捷。 按照如下測試示例步驟,即可把
    的頭像 發(fā)表于 01-08 18:17 ?1280次閱讀
    Web<b class='flag-5'>端</b><b class='flag-5'>TCP</b>/UDP測試工具!小白必學(xué)~

    【AI技術(shù)支持】ESP32-S3模組EspBleOTA搜索不到ble_ota例程的藍(lán)牙問題處理

    啟明云端/01問題描述在智能標(biāo)識牌上使用ESP32-S3-WROOM-1U模組,ESP-IDF版本為idf5.0.2時,客戶在ESP32-S3模組燒錄運行
    的頭像 發(fā)表于 12-13 18:06 ?1576次閱讀
    【AI技術(shù)支持】<b class='flag-5'>ESP32-S3</b>模組EspBleOTA搜索不到ble_ota例程的藍(lán)牙問題處理

    【AI技術(shù)支持】ESP32-S3運行例程電腦無法識別USB設(shè)備問題處理

    在USB無線網(wǎng)卡上使用ESP32-S3芯片/模組,ESP-IDF版本為idf5.0.3時,客戶在運行esp-iot-bridge/examples/wireless_nic例程時,編譯燒錄完成之后
    的頭像 發(fā)表于 12-12 17:59 ?5382次閱讀
    【AI技術(shù)支持】<b class='flag-5'>ESP32-S3</b>運行例程電腦無法識別USB設(shè)備問題處理

    ESP32-S3-WROOM-1/ESP32-S3-WROOM-1U技術(shù)規(guī)格書

    電子發(fā)燒友網(wǎng)站提供《ESP32-S3-WROOM-1/ESP32-S3-WROOM-1U技術(shù)規(guī)格書.pdf》資料免費下載
    發(fā)表于 12-07 15:30 ?11次下載

    【新品發(fā)布】啟明云端高性能AI筆筒,基于樂鑫ESP32-S3開發(fā)應(yīng)用

    今天,我們非常榮幸地向您介紹一款新產(chǎn)品——啟明云端AI筆筒。這款產(chǎn)品搭載樂鑫ESP32-S3R8主控芯片,支持Wi-Fi和BLE無線功能,確保了強大的性能和穩(wěn)定的連接。配備的CAT.1模組提供了蜂窩
    的頭像 發(fā)表于 12-07 01:00 ?1323次閱讀
    【新品發(fā)布】<b class='flag-5'>啟明</b>云端高性能AI筆筒,基于樂鑫<b class='flag-5'>ESP32-S3</b>開發(fā)應(yīng)用

    《DNESP32S3使用指南-IDF版_V1.6》第三章 ESP32-S3基礎(chǔ)知識

    。ESP32-S3的45個GPIO管腳均采用此結(jié)構(gòu),如下圖所示。圖3.5.2.4 焊盤內(nèi)部結(jié)構(gòu)上圖中的IE表示輸入使能;OE表示輸出使能;WPU表示內(nèi)部弱上拉;WPD表示內(nèi)部弱下拉,它們實現(xiàn)了芯片封裝內(nèi)晶片
    發(fā)表于 11-22 09:43

    【AI技術(shù)支持】ESP32-S3 JTAG調(diào)試問題處理

    啟明云端/01你是否曾遇到過?在使用ESP32-S3模塊,ESP-IDF版本為idf5.0時,調(diào)試JTAG,嘗試很久也無法調(diào)通,這是為什么呢?啟明云端/02這是咋回事呢?這個過程需要安
    的頭像 發(fā)表于 10-30 08:01 ?2245次閱讀
    【AI技術(shù)支持】<b class='flag-5'>ESP32-S3</b> JTAG調(diào)試問題處理

    w5500 作為tcp server,客戶異常發(fā)送【RST,ACK】斷開連接問題

    測試1 w5500 作為tcp server,上位機labveiw程序作為clinet,正常第二次交互結(jié)束后,客戶發(fā)送一個【RST,ACK】報文斷開了連接; (1)使用wireshark抓取
    發(fā)表于 10-14 14:01

    請問ESP32-S3 USB HOST是否支持USB2.0?

    規(guī)格書介紹ESP32-S2指定USB HOST支持的USB1.1,ESP32-S3的USB HOST支持USB2.0? 請問ESP32-S3 USB HOST是否支持USB2.0? 接入USB攝像頭,能否支持100萬像素?
    發(fā)表于 07-19 06:53