本文主要是介绍ESP32使用Smartconfig和Airkiss配网方式连接无线路由器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. ESP32的配网方式
1.1 前言
ESP32模块在实际使用时,可能需要连接不同的网络,如果将无线的 ssid 和 key 预先固定好,就回存在很大的局限性;所以我们引入了“空中配网技术”,比如smartconfig,airkiss,蓝牙辅助配网等等。
Smartconfig与Airkiss 是目前使用比较广泛的空中配网技术,smartconfig 需要专用的 app 才能实现,airkiss 使用国民应用微信就可以实现,不需要额外的 app ,所以来测试一下 Smartconfig 和 airkiss 的无线空中配网技术。
1.2 主流空中配网技术的简介
- Smartconfig
智能硬件处于混杂模式下,监听网络中的所有报文;手机APP将当前连接的ssid和key编码到UDP报文中,通过广播或者组播的方式发送报文;智能硬件接收到UDP报文后解码,得到ssid和key,然后使用该组ssid和key去连接网络。 - Airkiss
AirKiss是微信硬件平台提供的一种WIFI设备快速入网配置技术,要使用微信客户端的方式配置设备入网,需要设备支持AirKiss技术。Aiskiss的原理和smartconfig很类似,设备工作在混杂模式下,微信客户端发送包含ssid和key的广播包,设备收到广播包解码得到ssid和可以。详细的可以参考微信官方的介绍。
2. 创建空中配网的测试工程
2.1 搭建开发环境
根据 使用VS Code的 ESP-IDF 插件开发ESP32 搭建好VSCODE+ESP-IDF的开发环境.
2.2 使用ESP-IDF提供的例程创建新的测试工程
-
查看 – 命令面板 – 输入
show examples projects
– 回车
-
选中电脑安装的 ESP-IDF 版本
-
使用 idf 例程创建新工程
-
打开工程,修改源码,工程默认使用 SmartConfig 配网,我们修改为同时支持 smartconfig 和 airkiss
空中配网的主要流程:
1)初始化flash与wifi,注册回调事件;
2)wifi初始化完成,运行smartconfig_example_task任务,启动smartconfig模式,等待广播包;
3)收到广播包解码,获取到ssid和key;
4)用得到的ssid和key连接,连接成功整个流程结束,删除smartconfig任务。主要代码如下:
static void initialise_wifi(void) {ESP_ERROR_CHECK(esp_netif_init());s_wifi_event_group = xEventGroupCreate();ESP_ERROR_CHECK(esp_event_loop_create_default());esp_netif_t *sta_netif = esp_netif_create_default_wifi_sta();assert(sta_netif);wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();ESP_ERROR_CHECK( esp_wifi_init(&cfg) );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_ERROR_CHECK( esp_event_handler_register(SC_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL) );ESP_ERROR_CHECK( esp_wifi_set_mode(WIFI_MODE_STA) );ESP_ERROR_CHECK( esp_wifi_start() ); } static void smartconfig_example_task(void * parm) {EventBits_t uxBits;//注意这里由原先的SC_TYPE_ESPTOUCH修改为SC_TYPE_ESPTOUCH_AIRKISS,这样既可以支持smartconfig方式配网,又支持airkiss配网ESP_ERROR_CHECK( esp_smartconfig_set_type(SC_TYPE_ESPTOUCH_AIRKISS) );smartconfig_start_config_t cfg = SMARTCONFIG_START_CONFIG_DEFAULT();ESP_ERROR_CHECK( esp_smartconfig_start(&cfg) );while (1) {uxBits = xEventGroupWaitBits(s_wifi_event_group, CONNECTED_BIT | ESPTOUCH_DONE_BIT, true, false, portMAX_DELAY); if(uxBits & CONNECTED_BIT) {ESP_LOGI(TAG, "WiFi Connected to ap");}if(uxBits & ESPTOUCH_DONE_BIT) {ESP_LOGI(TAG, "smartconfig over");esp_smartconfig_stop();vTaskDelete(NULL);}} }
-
编译并下载
-
将 ESP32-WROOM-32 开发板接到电脑上,在设备管理器中查看对应的串口号,然后在vscode的配置好串口号
-
按住开发板的 Boot 按键不松后,再按一次 EN 按键,然后松开 Boot 按键,使开发板进入烧录模式
-
点击一键编译、烧录、并监测串口信息
-
smartconfig 方式配网
使用手机连接上wifi(只支持2.4G),打开官网提供的 ESPTOUCH 工具,配置 wifi 的密码,从esp32开发板打印的日志可以查看当前的状态
-
airkiss 方式配网
使用手机连接上wifi(只支持2.4G),打开微信,关注一个支持airkiss的公众号(测试可使用 安信可科技 的公众号),配置 wifi 的密码,从esp32开发板打印的日志可以查看当前的状态
-
至此配网测试成功,不过每次复位开发板后,又要重新配网,太麻烦了,下面就来看看怎么保存配网信息,让它每次上电可以自动连接?
纯手写文章,转载请注明出处,谢谢!
如有任何错误,欢迎留言指正!
这篇关于ESP32使用Smartconfig和Airkiss配网方式连接无线路由器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!