ESP32例程实验之配网 |
您所在的位置:网站首页 › ssid在哪设置 › ESP32例程实验之配网 |
文章目录
1 实验简介1.1 固定ssid与password配网1.2 Smartconfig配网1.2 使用 Airkiss 配网
2 程序优化2.1 复位后,如果之前有配网,则直接连接路由器,否则执行配网程序2.2 重新配网,删除原来配网保存的信息2.2.1 擦除整个flash(仅用于调试时)2.2.2 执行`esp_wifi_restore()`函数
1 实验简介
参考博文 《图文手把手教程–ESP32 一键配网(Smartconfig、Airkiss)》 本章内容介绍给esp32配网的几种方式: 固定ssid与password配网 即将ssid和password写入菜单配置或直接写入代码中;SoftAP配网 ESP32 会建立一个 WiFi 热点(AP模式),用户将手机连接到这个热点后,将要连接的 WiFi 信息发送给 ESP32,ESP32得到ssid和password。 优点:这种方式很可靠,成功率基本达到100%,设备端的代码也简单。 缺点:需要手动切换手机wifi连接的网络,先连接到ESP32的AP网络,配置完成后再恢复连接正常wifi网络,操作上有一定的复杂性,会给用户带来一定的困扰。 官方支持:没有提供Demo。Smartconfig配网 ESP32处于混杂模式下,监听网络中的所有报文,手机APP将当前连接的ssid和password编码到UDP报文中,通过广播或者组播的方式发送报文,ESP32接收到UDP报文后解码,得到ssid和password,然后使用该组ssid和password去连接网络。 优缺点:这种方式简洁,用户也很容易操作,但是配网成功率受环境影响较大。 官方支持:有提供Demo,smart_config例程。Airkiss配网 AirKiss是微信硬件平台提供的一种WIFI设备快速入网配置技术,要使用微信客户端的方式配置设备入网,需要设备支持AirKiss技术。Aiskiss的原理和smartconfig很类似,设备工作在混杂模式下,微信客户端发送包含ssid和password的广播包,设备收到广播包解码得到ssid和password,详细的可以参考微信官方的介绍。 优缺点:这种方式简洁,用户也很容易操作,但是配网成功率受环境影响较大。 官方支持:有提供Demo,smart_config例程。 1.1 固定ssid与password配网 参考工程 Espressif\frameworks\esp-idf-v5.2.1\examples\wifi\getting_started\station使用命令 idf.py menuconfig 打开菜单配置并输入ssid、password。![]() ![]() ![]() ![]() ![]() ![]() ![]() 参考工程 Espressif\frameworks\esp-idf-v5.2.1\examples\wifi\smart_config 修改配网方式,并执行命令 idf.py -p COM11 flash monitor ,COM11根据自己实际串口决定 static void smartconfig_example_task(void * parm) { ... ESP_ERROR_CHECK( esp_smartconfig_set_type(SC_TYPE_AIRKISS) ); ... }配网方式还可以修改为如下 typedef enum { SC_TYPE_ESPTOUCH = 0, /**< protocol: ESPTouch */ SC_TYPE_AIRKISS, /**< protocol: AirKiss */ SC_TYPE_ESPTOUCH_AIRKISS, /**< protocol: ESPTouch and AirKiss */ SC_TYPE_ESPTOUCH_V2, /**< protocol: ESPTouch v2*/ } smartconfig_type_t;在微信公众号 乐鑫信号科技 操作Airkiss 连接成功 例程中的Smart_config 配网,每次复位ESP32后,又得重新配网,不符合实际的应用,这里对代码进行修改,使配网的信息(帐号和密码)被保存在 NVS 中,每次配网之前读取NVS中的信息,如果未配网过,则进行配网操作,如果已经配网过,则直接连接路由器。 2.1 复位后,如果之前有配网,则直接连接路由器,否则执行配网程序 在执行 esp_wifi_set_config(WIFI_IF_STA, &wifi_config) 函数之后,之前配网的账号和密码会保存到 NVS 中修改程序如下 static void smartconfig_example_task(void * parm) { EventBits_t uxBits; wifi_config_t my_wifi_config; // 获取wifi配置信息,如果配置过,就直接连接wifi esp_wifi_get_config(ESP_IF_WIFI_STA, &my_wifi_config); if (strlen((char*)my_wifi_config.sta.ssid) > 0) { ESP_LOGI(TAG, "alrealy set, ssid is :%s,password is :%s,start connect", my_wifi_config.sta.ssid,my_wifi_config.sta.password); esp_wifi_connect(); } else // 如果没有配置过,就进行配网操作 { ESP_LOGI(TAG, "have no set, start to config"); ESP_ERROR_CHECK( esp_smartconfig_set_type(SC_TYPE_ESPTOUCH_AIRKISS) );//支持APP ESPTOUCH和微信AIRKISS smartconfig_start_config_t cfg = SMARTCONFIG_START_CONFIG_DEFAULT(); ESP_ERROR_CHECK( esp_smartconfig_start(&cfg) ); } ... }执行命令 idf.py -p COM11 flash monitor ,COM11根据自己实际串口决定 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |