龙岩市建设部网站八里河风景区网站建设内容摘要
news/
2025/10/1 5:47:31/
文章来源:
龙岩市建设部网站,八里河风景区网站建设内容摘要,中国建筑招标投标网官网,做外掛网站空间第1篇:Arduino与ESP32开发板的安装方法
第2篇:ESP32 helloword第一个程序示范点亮板载LED
第3篇:vscode搭建esp32 arduino开发环境
第4篇:vscodeplatformio搭建esp32 arduino开发环境
第5篇:doit_esp32_devkit_v1使用pmw呼吸灯实验
第6篇:ESP32连接无源喇叭播…第1篇:Arduino与ESP32开发板的安装方法
第2篇:ESP32 helloword第一个程序示范点亮板载LED
第3篇:vscode搭建esp32 arduino开发环境
第4篇:vscodeplatformio搭建esp32 arduino开发环境
第5篇:doit_esp32_devkit_v1使用pmw呼吸灯实验
第6篇:ESP32连接无源喇叭播放音乐《涛声依旧》
第7篇:ESP32连接按钮点亮LED无源喇叭播放声音
第8篇:ESP32连接超声波HC-SR04测距点亮LED无源喇叭播放声音
第9篇:ESP32超声波HC-SR04Arduino类库编写
第10篇:ESP32外部中断功能的使用
第11篇:ESP32vscode_platformio_idf框架helloworld点亮LED
第12篇:ESP32模拟SPI驱动12864LCD_ST7920显示屏
第13篇:ESP32 idf wifi联网使用SNTP同步网络时间LCD ST7920液晶屏显示第14篇ESP32 idf wifi联网_WiFi STA 模式连接到WIFILCD ST7920液晶屏显示 ESP32 的 Wi-Fi 可以工作在以下几种工作状态
Station 模式STA在这种模式下ESP32 连接到一个已经存在的无线网络类似于一台普通的 Wi-Fi 客户端设备。Access Point 模式AP在这种模式下ESP32 自己作为一个 Wi-Fi 热点并接受其他 Wi-Fi 客户端设备的连接类似于一个路由器。Station Access Point 模式STAAP在这种模式下ESP32 同时工作在 Station 和 Access Point 两种模式下既可以连接到已有的 Wi-Fi 网络也可以提供 Wi-Fi 热点。Wi-Fi Direct 模式P2P在这种模式下ESP32 作为 Wi-Fi Direct 设备可以直接和其他 Wi-Fi Direct 设备进行通信不需要使用路由器。Promiscuous 模式在这种模式下ESP32 可以在监听所有 Wi-Fi 数据包而不仅仅是与它连接的 AP 或者 P2P 设备相关的数据包。
前面文章介绍了ESP32作为 Station的工作模式今天使用其SoftAP模式Access Point模式。
第14篇ESP32 idf wifi联网_WiFi STA 模式连接到WIFILCD ST7920液晶屏显示
在WIFI示例中我们可以看到有默认的event loopevent loop 我的理解就是任务事件就是当我们注册回调函数之后在执行wifi初始化之后就会执行wifi任务然后wifi任务有事件产生之后就会有一个类似于中断事件在回调事件中产生。其中注册函数如下 ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT,ESP_EVENT_ANY_ID,wifi_event_handler,NULL,NULL)); WIFI_EVENT是一个字符串就是我们event loop基础事件后续event loop发送到那个组件都是根据这个参数确定的ESP_EVENT_ANY_ID是指在发送event loop 事件的时候只要是WIFI_EVENT这个基础事件的数据都会调用我们的回调函数当我们使用ESP_EVENT_ANY_BASE的时候这个时候就是发送除了WIFI_EVENT这个基础事件之外的其他任何基础事件都会调用这个我们注册的回调函数当我们使用指定ID的时候这个时候就只会当有这个ID事件触发的时候才会调用我们注册的回调函数例如我们注册ID为WIFI_EVENT_AP_STACONNECTED的时候这个时候只要有WIFI_EVENT_AP_STACONNECTED的事件触发的时候才会触发执行我们的回调函数wifi_event_handler其他的WIFI_EVENT_AP_STADISCONNECTED、WIFI_EVENT_AP_START事件产生的时候不会调用我们注册的回调函数。 WIFI的认证模式有以下几种我们默认基本上都是WIFI_AUTH_WPA_WPA2_PSK。 typedef enum {WIFI_AUTH_OPEN 0, /** authenticate mode : open */WIFI_AUTH_WEP, /** authenticate mode : WEP */WIFI_AUTH_WPA_PSK, /** authenticate mode : WPA_PSK */WIFI_AUTH_WPA2_PSK, /** authenticate mode : WPA2_PSK */WIFI_AUTH_WPA_WPA2_PSK, /** authenticate mode : WPA_WPA2_PSK */WIFI_AUTH_WPA2_ENTERPRISE, /** authenticate mode : WPA2_ENTERPRISE */WIFI_AUTH_WPA3_PSK, /** authenticate mode : WPA3_PSK */WIFI_AUTH_WPA2_WPA3_PSK, /** authenticate mode : WPA2_WPA3_PSK */WIFI_AUTH_WAPI_PSK, /** authenticate mode : WAPI_PSK */WIFI_AUTH_MAX
} wifi_auth_mode_t; 当我们设置热点的密码长度为0的时候我们就需要设置加密方式为WIFI_AUTH_OPEN 开放。
1.wifi_config_t结构体
示例代码设置 ESP32 的 Wi-Fi 模块工作在 AP 模式下同时配置 Wi-Fi AP 热点的一些参数方便客户端连接 // 设置为AP模式配置名称密码频道最大连接数认证模式
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 },
};
ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_AP, wifi_config)); 2.wifi_event_handler事件
(1)esp_event_handler_instance_register注册事件
示例 //wifi相关设置初始化 ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT, //检查 ESP_EVENT_ANY_ID, wifi_event_handler, NULL, NULL)); esp_event_handler_instance_register用于在事件循环中注册事件处理程序其参数解释
WIFI_EVENT事件的基础类型该函数将向WiFi事件注册处理程序。ESP_EVENT_ANY_ID这是事件ID这里使用ESP_EVENT_ANY_ID表示注册所有WiFi事件。wifi_event_handler这是事件处理程序的指针它将在WiFi事件发生时被调用。NULL这是事件处理程序的参数这里没有使用参数因此将其设置为NULL。NULL这是事件处理程序的实例这里没有使用多个实例因此将其设置为NULL。
(2)system_event_sta_connected_t结构体
在ESP-IDF中当一个设备通过WiFi连接到ESP32的WiFi热点时ESP32会触发一个连接事件。这个事件会包含一个结构体system_event_sta_connected_t其中包含连接设备的MAC地址event-mac和连接设备在该AP热点下的AIDevent-aid。
其中event-aid代表的是连接设备在AP热点下的AIDAssociation IDAID是一个整数值表示AP热点中连接的设备的编号。 在802.11标准中AID是一个由AP热点指派的可以被用来唯一标识一个STAStation设备的值。在ESP-IDF中AID的范围是1~16代表连接的设备数量。
3. 关闭SoftAP ESP_LOGI(TAG, Max clients reached, shutting down AP);
// 关闭 softAP
esp_wifi_stop();
esp_wifi_deinit();
esp_netif_deinit();
vTaskDelete(NULL); 三、示例
ESP32可以通过Wi-Fi芯片在AP接入点模式下运行当热点。下面是开启ESP32热点的示范代码 #include driver/gpio.h
#include stdio.h
#include unistd.h
#include freertos/FreeRTOS.h
#include freertos/task.h
#include freertos/event_groups.h
#include stddef.h
#include time.h#include string.h
#include time.h
#include sys/time.h
#include esp_system.h
#include esp_event.h
#include esp_log.h
#include esp_attr.h
#include esp_sleep.h
#include nvs_flash.h
#include esp_sntp.h
#include esp_wifi.h
#include lcd12864st7920idf.h#include lwip/err.h
#include lwip/sys.h
/* The examples use WiFi configuration that you can set via project configuration menu.If youd rather not, just change the below entries to strings withthe config you want - ie #define EXAMPLE_WIFI_SSID mywifissid* 头文件包含 */// 联网相关的宏
//#define EXAMPLE_ESP_WIFI_SSID xx // 账号
//#define EXAMPLE_ESP_WIFI_PASS xx68 // 密码
#define EXAMPLE_ESP_WIFI_SSID ESP32_AP_t // WIFI名字
#define EXAMPLE_ESP_WIFI_PASS 12345678 // WIFI密码
#define EXAMPLE_ESP_WIFI_CHANNEL 1 //
#define EXAMPLE_MAX_STA_CONN 2 //
#define MAC2STR(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
#define MACSTR %02X:%02X:%02X:%02X:%02X:%02X//转换后的格式可按需求修改#define EXAMPLE_ESP_MAXIMUM_RETRY 5 // wifi连接失败以后可以重新连接的次数
#define WIFI_CONNECTED_BIT BIT0 // wifi连接成功标志位
#define WIFI_FAIL_BIT BIT1 // wifi连接失败标志位
#define AR_SIZE(a) sizeof(a) / sizeof(a[0])unsigned char show1[] {0xB0, 0xA2, 0xCE, 0xE4, 0xBF, 0xC6, 0xBC, 0xBC}; //阿武科技unsigned char show_we_chat1[] wechat:;
unsigned char show_nick1[] txwtech;
unsigned char show_wifi_connecting[] wifi_connecting...;
unsigned char show_wifi_reconnect[] wifi_reconnecting...;
unsigned char show_wifi_connected[] wifi_connected;// 联网相关的变量
static EventGroupHandle_t s_wifi_event_group; // 事件组用于对wifi响应结果进行标记
static int s_retry_num 0; // 记录wifi重新连接尝试的次数static const char *TAG esp32idf_title_txwtech;// void app_main()
// {
// Initialise();
// DisplayString(0, 0, show_wifi_connecting, AR_SIZE(show_wifi_connecting));// int mLevel 0;
// int temp 0;// esp_err_t ret nvs_flash_init();
// if (ret ESP_ERR_NVS_NO_FREE_PAGES || ret ESP_ERR_NVS_NEW_VERSION_FOUND)
// {
// ESP_ERROR_CHECK(nvs_flash_erase());
// ret nvs_flash_init();
// }
// ESP_ERROR_CHECK(ret);
// //CLEAR();
// // 连wifi
// //ESP_LOGI(TAG, ESP_WIFI_MODE_STA);
// ESP_LOGI(TAG, ESP_WIFI_MODE_AP);
// wifi_init_sta();// CLEAR();
// DisplayString(1, 0, show_wifi_connected, AR_SIZE(show_wifi_connected));
// while (false)
// {
// time_t timer; // time_t就是long int 类型
// // DisplayString(0, 1, show1, AR_SIZE(show1)); //第一行第三格开始
// // DisplayString(3, 2, show_wifi_connected, AR_SIZE(show_wifi_connected)); //
// DisplayString(1, 0, show_wifi_connected, AR_SIZE(show_wifi_connected));
// usleep(1000 * 1000 * 1); //微秒,1000微秒1毫秒1000毫秒1秒
// }
// }/* WiFi softAP ExampleThis example code is in the Public Domain (or CC0 licensed, at your option.)Unless required by applicable law or agreed to in writing, thissoftware is distributed on an AS IS BASIS, WITHOUT WARRANTIES ORCONDITIONS OF ANY KIND, either express or implied.*/// static const char *TAG wifi softAP;
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);
}
void app_main(void)
{ // Initialize NVSesp_err_t ret nvs_flash_init();if (ret ESP_ERR_NVS_NO_FREE_PAGES || ret ESP_ERR_NVS_NEW_VERSION_FOUND){ESP_ERROR_CHECK(nvs_flash_erase());ret nvs_flash_init();}ESP_ERROR_CHECK(ret);ESP_LOGI(TAG, ESP_WIFI_MODE_AP);wifi_init_softap();
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/923531.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!