ESP32+idf开发之WIFI通信入门(2)station网络连接 |
您所在的位置:网站首页 › 手机如何无密码连wifi › ESP32+idf开发之WIFI通信入门(2)station网络连接 |
ESP32+idf开发之WIFI通信入门(2)station网络连接
1、新建工程项目ctrl+shift+p,选择new project,输入项目名,选择合适项目路径,选择对应的开发板,此处选择自定义,target选择ESP32 moudule,点击选择模板。 2、选择idf的模板example,选择其中空白的样例工程,点击创建项目用此模板,并在新的窗口打开,旧窗口就可以关闭了。 3、在vscode中项目路径下找到main.c文件,输入以下代码实现以下功能: (1)能连接到你的热点(用户名ssid,密码password); (2)能够实现断线重连; (3)信号量完成事件处理函数和主任务的同步,当连接成功后,主任务能够输出“connected to ap!” #include #include #include #include #include #include #include static char *TAG = "wifi station"; SemaphoreHandle_t sem; // 状态机事件处理:static void event_handler(void * arg, esp_event_base_t event_base, // int32_t event_id, void * event_data) static void event_handler(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data) { if ((event_base == WIFI_EVENT) && (event_id == WIFI_EVENT_STA_START || event_id == WIFI_EVENT_STA_DISCONNECTED)) { ESP_LOGI(TAG, "begin to connect the AP"); esp_wifi_connect(); } else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) { ip_event_got_ip_t *event = (ip_event_got_ip_t *)event_data; ESP_LOGI(TAG, "got ip:" IPSTR, IP2STR(&event->ip_info.ip)); xSemaphoreGive(sem); } } void app_main(void) { sem = xSemaphoreCreateBinary(); // nvs初始化:nvs_flash_init() ESP_ERROR_CHECK(nvs_flash_init()); // 事件循环初始化:sp_event_loop_create_default(); ESP_ERROR_CHECK(esp_event_loop_create_default()); // 事件处理函数注册 // esp_err_t esp_event_handler_register(esp_event_base_t event_base, int32_t event_id, // esp_event_handler_t event_handler, void * event_handler_arg) ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, event_handler, NULL)); ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, event_handler, NULL)); // 初始化阶段:esp_netif_init();sp_netif_create_default_wifi_sta();esp_wifi_init(); ESP_ERROR_CHECK(esp_netif_init()); esp_netif_create_default_wifi_sta(); wifi_init_config_t wifi_cfg = WIFI_INIT_CONFIG_DEFAULT(); ESP_ERROR_CHECK(esp_wifi_init(&wifi_cfg)); // 配置阶段:esp_wifi_set_mode();esp_wifi_set_config(); ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); wifi_config_t cfg = { .sta = { //用户名和密码根据实际情况修改 .ssid = "ssid", .password = "password", }}; ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &cfg)); // 启动阶段:esp_wifi_start() ESP_ERROR_CHECK(esp_wifi_start()); while (1) { if (xSemaphoreTake(sem, portMAX_DELAY) == pdPASS) { ESP_LOGI(TAG, "connected to ap!"); } } }4、编译(build)、烧写(flash)和监控(monitor),成功连接ap,断开后不断重连并打印begin to connect the AP,直到再次连接成功。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |