ESP32 SmartConfig 微信扫码配网

刚接触esp32时,自己写过用esp内置web界面进行无线账号密码的设置,为了简化开发流程,本次研究SmartConfig这东西,ESP系列的smartconfig配网确实挺方便的,特别是使用微信配网。


文章目录

  • ESP32 SmartConfig 微信扫码配网
  • 前言
  • 一、配置WIFI 账号密码原理图
  • 二、一键配网实现代码说明
    • 1.引入头文件
    • 2.WIFI配置核心代码
    • 3. 设备重启后的自动重新连接功能
    • 4.入口函数
  • 微信配网二维码
  • 配网成功效果展示

前言

假如你买了一个智能插座,想让它连接到家里的Wi-Fi,但是智能插座又没有键盘和触摸屏此时你该怎么操作呢?总不能拆开然后重新给它写个程序吧!此时就需要我们的智能配网模式出马了 SmartConfig最先是TI开始研究的,其实类似的协议有很多,各家也都有各家的称呼,乐鑫这里也还是叫SmartConfig,但是配网模式也不仅仅局限于SmartConfig,还是有很多方式可以做到的,比如看下边~ 下面分析一下几种配网方式和优缺点:

==直接配网 == -> SSID(Wi-Fi名称)和PWD(Wi-Fi密码)保存在设备中(每次修改都要重新烧录代码)

ap配网 -> 设备处于路由模式下等待客户端发送来SSID和PWD(可以随时修改,不易于操作)

web配置 -> 设备内做了个小web服务器通过网页交换SSID和PWD(界面化操作,流程繁琐)

SmartConfig -> 手机通过软件发送UDP广播包(包含SSID和PWD,界面化操作,操作简单)

Airkiss -> 类似与SmartConfig,可以使用微信公众号直接配置(界面化操作,不需要装APP)

零配 -> 以配网设备为未配网设备配网,两个设备间数据交互(AliOS-Things中有涉及)

蓝牙配网 -> 利用蓝牙设备配网,蓝牙模块跟ESP8266串口数据交互


一、配置WIFI 账号密码原理图

原理图如下:


smartconfig完成配网主要分以下3个步骤:

  1. 设备进入初始化状态,开始收听附近的 WiFi 数据包。
  2. 手机/平板设置 WiFi 名字和密码后,发送 UDP 广播包。
  3. 设备通过 UDP 包(长度)获取配置信息,切换网络模式,连接上家里 WiFi,配置完成。

二、一键配网实现代码说明

1.引入头文件

ESP8266使用:

#include <ESP8266WiFi.h>

ESP32使用:

#include <WiFi.h>

2.WIFI配置核心代码

SmartConfig的配置: 如下代码会一直循环,直到我们通过微信公众号完成配置。

void SmartConfig()
{WiFi.mode(WIFI_STA);Serial.println("\r\n wait for smartconfig....");WiFi.beginSmrtConfig();while(1){Serial.print(".");delay(500);if ( WiFi.smartConfigDone()){Serial.println("SmartConfig Success");Serial.printf("SSID:%s\r\n",WiFi.SSID().c_str());Serial.printf("PSW:%s\r\n",WiFi.psk().c_str());break;      }}
}

3. 设备重启后的自动重新连接功能

bool AutoConfig()
{WiFi.begin();for (int i=0; i<20; i++){int wstatus = WiFi.status();if (wstatus == WL_CONNECTED )  {Serial.println("wifi smartConfig success");Serial.printf("SSID:%s",WiFi.SSID().c_str());Serial.printf(",PWS:%s\r\n",WiFi.psk().c_str());Serial.print("localIP:");Serial.println(WiFi.localIP());Serial.print(",GateIP:");Serial.println(WiFi.gatewayIP());return true;}else{Serial.print("WIFI AutoConfig Waiting ....");Serial.println(wstatus);delay(1000);}}Serial.println("Wifi autoconfig faild!");return false;}

WiFi 的配置默认是会存储在 NVS 的,具体参看 esp_wifi_set_storage 的 API 介绍,如果希望不存储,可以调用该接口,参数为 WIFI_STORAGE_RAM。
有以下两种方式清除参数:

如果想清除 NVS 中的数据,可以用命令 make erase_flash 做整片擦除。
如果想在应用中清除 WiFi 配置,如通过按键触发恢复参数,可调用 esp_wifi_restore 接口,会清除相关 WiFi 配置,具体请看 API 介绍。

4.入口函数

Arduino 默认启动函数,启动时只调用一次,本次实验 loop函数放空。

void setup() {Serial.begin(115200);delay(100);if (!AutoConfig()){SmartConfig();}
}

微信配网二维码

断开IO0 的低电平 ,重启ESP32 ,然后微信扫描如下二维码进行配置

扫码后的手机界面:

配网成功效果展示

例如:以上就是今天要讲的内容,本文仅仅简单介绍了SmartConfig的使用,而SamrtConfig提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 初次配网成功串口展示
  • 设备重启后串口打印

*玩转esp8266 ESP32 喜欢的朋友请加微信 ilinker32 技术咨询 *

如果我的创作对你有帮助 ,那么你的鼓励将是我创作的最大动力!非常感谢。

ESP32 SmartConfig 微信扫码配网相关推荐

  1. TUTK摄像头配网方式之扫码配网

    扫码配网,顾名思义 ,就是扫描二维码配置网络.通常是由APP将网络信息(wifi ssid/passwd)生成二维码,然后由设备扫码获取网络信息,进行配网. 通常二维码的信息会包含且不限于以下内容: ...

  2. 【微信小程序控制硬件④】 深度剖析微信公众号配网 Airkiss 原理与过程,esp8266如何自定义回调参数给微信,实现绑定设备第一步!(附带源码)

    [微信小程序控制硬件第1篇 ] 全网首发,借助 emq 消息服务器带你如何搭建微信小程序的mqtt服务器,轻松控制智能硬件! [微信小程序控制硬件第2篇 ] 开始微信小程序之旅,导入小程序Mqtt客户 ...

  3. 内网环境下微信扫码登录小结

    一.需求: 网站需要接入微信扫码登录,但此网站仅能在内网环境下访问,仅网站服务器可以连接微信外网 二.遇到的问题: 1.图片需要联网: 参考网页:微信网页扫码登录 按照上述网站上的指南接入,在可访问外 ...

  4. RTSP协议网络摄像头如何实现内网到公网的无插件直播,同时支持微信扫码直播观看?

    目前,微信用户已达12亿人,自媒体时代扑面而来,微信视频扫码直播颠覆传统,成为在线视频直播发展的方向.当微信成为人们日常的习惯应用,围绕微信形成的在线视频直播生态企业也在悄然崛起. 最近在项目交流过程 ...

  5. 【网课平台】Day10.对接第三方:实现微信扫码登录

    文章目录 一.需求:微信扫码登录 1.接口文档 2.开发环境准备 3.接入分析 4.接口定义 5.申请令牌 6.查询用户信息 7.保存用户信息 一.需求:微信扫码登录 (和第三方对接的流程) 1.接口 ...

  6. 【IoT物联网全栈之路 ②】如何快速体验,微信公众号配网,天猫精灵和小爱同学双通讯;(附带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 开门大篇,xClouds是什么?我什么要做?为什么要开源? 2 ...

  7. 微信扫码登录只能填一个授权回调域问题

    背景 公司增加了个微信扫码登录,费劲千辛万苦终于把应用申请下来了,但遇到了一个头疼的事情:微信授权回调域只能写一个,且不支持通配.这下可好了,总不能把每个需要微信登录的二级域名都申请一个应用吧?而且一 ...

  8. ESP8266 web配网微信小程序配网 全平台配网库 arduino 傻瓜式通用库

    wifi_link_tool esp8266通用配网库 (arduino) 库地址:点击进入GitHub 这是一个为esp8266设计的通用配网库 该库免费提供 使用请注明出处 允许毕业设计使用本库 ...

  9. 微信小程序和8266串口透传 控制8266 配网 微信公众号配网 app配网 物联网esp8266

    1234 生产 清空固件 为了出现莫名其妙的问题 下载固件 因为固件为某公司定制产品不能公开 更新配置 主要是为了让用户拿到手配网成功就能 连接mqtt 并且订阅 {"m":&qu ...

最新文章

  1. AI干货分享:基于群签名的新一代区块链技术
  2. 【JavaScript】JS的变量、数组、计算器案例、函数、类、常用对象的方法
  3. keras的学习笔记
  4. 学习flex布局(弹性布局)
  5. java中局部变量和成员变量
  6. Deep Glow for mac(AE高级辉光特效插件)支持ae2021
  7. python序列化模块struct_Python-序列化模块-json-62
  8. Base64加密处理
  9. JS 浏览器关闭事件
  10. ES6小实验-复习字符串
  11. 数值分析期末考试复习(引论)
  12. PHP开发环境准备,PHPWAMP使用,图文教程
  13. windows安装ffmpeg,yasm,opencv
  14. LoRa SX1278/76驱动原理 附代码
  15. jdm分布式架构框架
  16. html常用标签梳理
  17. 【5万字】详解 Plotly Express 可视化
  18. 构建TCP套接字(socket)的概念及具体步骤
  19. 怎么安装aptdaemon模块_dlt-daemon安装教程
  20. android自定义侧滑菜单slidmenu

热门文章

  1. “丰伙台“ 戏不了诸侯,顺丰也未必一片大好
  2. excel for mac实用小技巧之两列姓名核对
  3. 打开旧的图纸属性窗口
  4. 【POJ3322】Bloxorz I
  5. 阿里云万网域名一键签发SSL证书 快捷申请免费SSL证书教程
  6. 【先锋】犀思云张雄国:帮助企业更好地过渡到互联网时代
  7. java flv 转swf_java实现视频文件转换为flv(带文件缩略图)
  8. mysql 高并发 集群架构_一种高并发的GPU集群架构及其负载均衡方法技术
  9. 上班族宝妈系统集成项目管理工程师经验分享
  10. 科塔——一颗另辟蹊径的「数学手雷」