• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

使用vscode开发esp32

武飞扬头像
黑刀夜
帮助3

一 环境搭建

1 安装vscode

vscode下载地址: https://code.visualstudio.com/download

2 安装esp32插件

学新通
安装espressif IDF插件

3 下载sdk以及开发工具

进入Espressif IDF界面,点击ADVANCED
学新通
学新通
设置好下载目录,等待下载完成,下载sdk时默认是从github上拉取,网络不好可能比较耗时。

这里会列出来详细的命令
学新通

二 创建工程

  1. 点击查看,命令面板或者使用快捷键ctrl shift p

  2. 输入Show Examples Projects
    学新通
    这里会列出来当前sdk支持的全部demo
    学新通

  3. 这里选择一个blink的demo
    学新通

学新通

三 tcp协议

学新通

1 tcp server

学新通
服务端有两种连接方式

  1. 本身作为STA连接上一个AP,从这个AP处获取ip地址,然后作为tcp server等待tcp client来连接
    此时需要指定AP的ssid(wifi的名称)和password(密码)
    学新通
    这种方式是sdk提供的demo默认的方法。代码几乎不需要修改

  2. 本身作为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);
}
学新通

2 tcp client

客户端可以是另外一块板子,也可以是pc或者手机。
注意:以下内容是基于server本身作为AP。

以手机为例
这里用到一个网络调试助手

  1. 手机连接上esp32_wifi
    学新通
  2. 使用网络调试助手创建tcp连接
    学新通
    使用另外一块板子做为client

注意要把wifi的IP地址、端口号、ssid和password配置成和server一样

学新通

学新通

在client端不停的发送
学新通

服务端收到的数据如下:
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfgcjfj
系列文章
更多 icon
同类精品
更多 icon
继续加载