ESP32例程实验之配网

您所在的位置:网站首页 ssid在哪设置 ESP32例程实验之配网

ESP32例程实验之配网

2024-07-07 13:09| 来源: 网络整理| 查看: 265

文章目录 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。 在这里插入图片描述保存退出,执行命令 idf.py -p COM11 flash monitor ,COM11根据自己实际串口决定 在这里插入图片描述在程序中配置WiFi账号、密码 在 station_example_main.c 文件配置wifi热点账号、wifi热点密码#define EXAMPLE_ESP_WIFI_SSID "TP-LINK-4067" /*wifi账号*/ #define EXAMPLE_ESP_WIFI_PASS "weijing418" /*wifi密码*/ #define EXAMPLE_ESP_MAXIMUM_RETRY 5 /*wifi重连最大次数*/ 重新编译并烧录程序,效果与在配置菜单中配置一样。 1.2 Smartconfig配网 参考工程 Espressif\frameworks\esp-idf-v5.2.1\examples\wifi\smart_config下载配网APP 在这里插入图片描述执行命令 idf.py -p COM11 flash monitor ,COM11根据自己实际串口决定 在这里插入图片描述打开手机APP EspTouch , 输入账号和密码,最后确认 在这里插入图片描述连接成功 在这里插入图片描述 在这里插入图片描述 1.2 使用 Airkiss 配网

参考工程 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 在这里插入图片描述 在这里插入图片描述

连接成功 在这里插入图片描述 在这里插入图片描述

2 程序优化

例程中的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根据自己实际串口决定 在这里插入图片描述

2.2 重新配网,删除原来配网保存的信息 2.2.1 擦除整个flash(仅用于调试时) 执行 esptool.py erase_flash 擦除整个flash,再次烧录程序就会重新开始手动配网 2.2.2 执行esp_wifi_restore()函数 通过触发按键,例如长按10秒来调用esp_wifi_restore()函数,重置配网信息,具体做法这里就不说了,网上找一个现成的按键驱动来关联实现即可。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3