一 环境搭建
1 安装vscode
vscode下载地址: https://code.visualstudio.com/download
2 安装esp32插件
安装espressif IDF插件
3 下载sdk以及开发工具
进入Espressif IDF界面,点击ADVANCED
设置好下载目录,等待下载完成,下载sdk时默认是从github上拉取,网络不好可能比较耗时。
这里会列出来详细的命令
二 创建工程
- 点击查看,命令面板或者使用快捷键ctrl + shift + p
- 输入Show Examples Projects 这里会列出来当前sdk支持的全部demo
- 这里选择一个blink的demo
三 tcp协议
1 tcp server
服务端有两种连接方式
- 本身作为STA连接上一个AP,从这个AP处获取ip地址,然后作为tcp server等待tcp client来连接 此时需要指定AP的ssid(wifi的名称)和password(密码) 这种方式是sdk提供的demo默认的方法。代码几乎不需要修改
- 本身作为AP,这种方式有一个默认的ip地址: 192.168.4.1 这是乐鑫出厂固化的。因为本身就是热点,因此需要配置本身wifi名称和密码
需要手动添加如下代码:
#defineEXAMPLE_ESP_WIFI_SSID"esp32_wifi"#defineEXAMPLE_ESP_WIFI_PASS"12345678"#defineEXAMPLE_ESP_WIFI_CHANNEL1#defineEXAMPLE_MAX_STA_CONN4staticconstchar*TAG ="example";staticvoidwifi_event_handler(void* arg,esp_event_base_t event_base,int32_t event_id,void* event_data){if(event_id == WIFI_EVENT_AP_STACONNECTED){wifi_event_ap_staconnected_t* event =(wifi_event_ap_staconnected_t*) event_data;ESP_LOGI(TAG,"station "MACSTR" join, AID=%d",MAC2STR(event->mac), event->aid);}elseif(event_id == WIFI_EVENT_AP_STADISCONNECTED){wifi_event_ap_stadisconnected_t* event =(wifi_event_ap_stadisconnected_t*) event_data;ESP_LOGI(TAG,"station "MACSTR" leave, AID=%d",MAC2STR(event->mac), event->aid);}}voidwifi_init_softap(void){ESP_ERROR_CHECK(esp_netif_init());ESP_ERROR_CHECK(esp_event_loop_create_default());esp_netif_create_default_wifi_ap();wifi_init_config_t cfg =WIFI_INIT_CONFIG_DEFAULT();ESP_ERROR_CHECK(esp_wifi_init(&cfg));ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT,
ESP_EVENT_ANY_ID,&wifi_event_handler,NULL,NULL));wifi_config_t wifi_config ={.ap ={.ssid = EXAMPLE_ESP_WIFI_SSID,.ssid_len =strlen(EXAMPLE_ESP_WIFI_SSID),.channel = EXAMPLE_ESP_WIFI_CHANNEL,.password = EXAMPLE_ESP_WIFI_PASS,.max_connection = EXAMPLE_MAX_STA_CONN,.authmode = WIFI_AUTH_WPA_WPA2_PSK
},};if(strlen(EXAMPLE_ESP_WIFI_PASS)==0){
wifi_config.ap.authmode = WIFI_AUTH_OPEN;}ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_AP));ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_AP,&wifi_config));ESP_ERROR_CHECK(esp_wifi_start());ESP_LOGI(TAG,"wifi_init_softap finished. SSID:%s password:%s channel:%d",
EXAMPLE_ESP_WIFI_SSID, EXAMPLE_ESP_WIFI_PASS, EXAMPLE_ESP_WIFI_CHANNEL);}
2 tcp client
客户端可以是另外一块板子,也可以是pc或者手机。
注意:以下内容是基于server本身作为AP。
以手机为例
这里用到一个网络调试助手
- 手机连接上esp32_wifi
- 使用网络调试助手创建tcp连接使用另外一块板子做为client
注意要把wifi的IP地址、端口号、ssid和password配置成和server一样
在client端不停的发送
服务端收到的数据如下:
版权归原作者 黑刀夜 所有, 如有侵权,请联系我们删除。