vscode下载地址: https://code.visualstudio.com/download
安装espressif IDF插件
进入Espressif IDF界面,点击ADVANCED
设置好下载目录,等待下载完成,下载sdk时默认是从github上拉取,网络不好可能比较耗时。
这里会列出来详细的命令
点击查看,命令面板或者使用快捷键ctrl + shift + p
输入Show Examples Projects
这里会列出来当前sdk支持的全部demo
这里选择一个blink的demo
服务端有两种连接方式
本身作为STA连接上一个AP,从这个AP处获取ip地址,然后作为tcp server等待tcp client来连接
此时需要指定AP的ssid(wifi的名称)和password(密码)
这种方式是sdk提供的demo默认的方法。代码几乎不需要修改
本身作为AP,这种方式有一个默认的ip地址: 192.168.4.1 这是乐鑫出厂固化的。因为本身就是热点,因此需要配置本身wifi名称和密码
需要手动添加如下代码:
#define EXAMPLE_ESP_WIFI_SSID "esp32_wifi"
#define EXAMPLE_ESP_WIFI_PASS "12345678"
#define EXAMPLE_ESP_WIFI_CHANNEL 1
#define EXAMPLE_MAX_STA_CONN 4
static const char *TAG = "example";
static void wifi_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);
} else if (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);
}
}
void wifi_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);
}
客户端可以是另外一块板子,也可以是pc或者手机。
注意:以下内容是基于server本身作为AP。
以手机为例
这里用到一个网络调试助手
注意要把wifi的IP地址、端口号、ssid和password配置成和server一样
在client端不停的发送
服务端收到的数据如下: