• 使用vscode开发esp32


    一 环境搭建

    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端不停的发送
    在这里插入图片描述

    服务端收到的数据如下:
    在这里插入图片描述

  • 相关阅读:
    初识Java 17-2 反射
    燃煤发电 锅炉相关数据集!
    杰理之MIDI 解码方式共有 4 种,分别是【篇】
    支持向量机分类算法
    理论+案例,带你掌握Angular依赖注入模式的应用
    MyBatis获取参数值的两种方式
    JavaScript 浏览器对象模型BOM 概念
    云轴科技ZStack信创云平台支撑长江航务管理局35套航运管理系统
    一文玩转NGINX(对于NGINX,你真的了解吗?)
    C语言-入门-基础-语法-流程控制(七)
  • 原文地址:https://blog.csdn.net/chengbaojin/article/details/127106190