ESP32 SmartConfig 微信扫码配网
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个步骤:
- 设备进入初始化状态,开始收听附近的 WiFi 数据包。
- 手机/平板设置 WiFi 名字和密码后,发送 UDP 广播包。
- 设备通过 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 微信扫码配网相关推荐
- TUTK摄像头配网方式之扫码配网
扫码配网,顾名思义 ,就是扫描二维码配置网络.通常是由APP将网络信息(wifi ssid/passwd)生成二维码,然后由设备扫码获取网络信息,进行配网. 通常二维码的信息会包含且不限于以下内容: ...
- 【微信小程序控制硬件④】 深度剖析微信公众号配网 Airkiss 原理与过程,esp8266如何自定义回调参数给微信,实现绑定设备第一步!(附带源码)
[微信小程序控制硬件第1篇 ] 全网首发,借助 emq 消息服务器带你如何搭建微信小程序的mqtt服务器,轻松控制智能硬件! [微信小程序控制硬件第2篇 ] 开始微信小程序之旅,导入小程序Mqtt客户 ...
- 内网环境下微信扫码登录小结
一.需求: 网站需要接入微信扫码登录,但此网站仅能在内网环境下访问,仅网站服务器可以连接微信外网 二.遇到的问题: 1.图片需要联网: 参考网页:微信网页扫码登录 按照上述网站上的指南接入,在可访问外 ...
- RTSP协议网络摄像头如何实现内网到公网的无插件直播,同时支持微信扫码直播观看?
目前,微信用户已达12亿人,自媒体时代扑面而来,微信视频扫码直播颠覆传统,成为在线视频直播发展的方向.当微信成为人们日常的习惯应用,围绕微信形成的在线视频直播生态企业也在悄然崛起. 最近在项目交流过程 ...
- 【网课平台】Day10.对接第三方:实现微信扫码登录
文章目录 一.需求:微信扫码登录 1.接口文档 2.开发环境准备 3.接入分析 4.接口定义 5.申请令牌 6.查询用户信息 7.保存用户信息 一.需求:微信扫码登录 (和第三方对接的流程) 1.接口 ...
- 【IoT物联网全栈之路 ②】如何快速体验,微信公众号配网,天猫精灵和小爱同学双通讯;(附带Demo)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 开门大篇,xClouds是什么?我什么要做?为什么要开源? 2 ...
- 微信扫码登录只能填一个授权回调域问题
背景 公司增加了个微信扫码登录,费劲千辛万苦终于把应用申请下来了,但遇到了一个头疼的事情:微信授权回调域只能写一个,且不支持通配.这下可好了,总不能把每个需要微信登录的二级域名都申请一个应用吧?而且一 ...
- ESP8266 web配网微信小程序配网 全平台配网库 arduino 傻瓜式通用库
wifi_link_tool esp8266通用配网库 (arduino) 库地址:点击进入GitHub 这是一个为esp8266设计的通用配网库 该库免费提供 使用请注明出处 允许毕业设计使用本库 ...
- 微信小程序和8266串口透传 控制8266 配网 微信公众号配网 app配网 物联网esp8266
1234 生产 清空固件 为了出现莫名其妙的问题 下载固件 因为固件为某公司定制产品不能公开 更新配置 主要是为了让用户拿到手配网成功就能 连接mqtt 并且订阅 {"m":&qu ...
最新文章
- AI干货分享:基于群签名的新一代区块链技术
- 【JavaScript】JS的变量、数组、计算器案例、函数、类、常用对象的方法
- keras的学习笔记
- 学习flex布局(弹性布局)
- java中局部变量和成员变量
- Deep Glow for mac(AE高级辉光特效插件)支持ae2021
- python序列化模块struct_Python-序列化模块-json-62
- Base64加密处理
- JS 浏览器关闭事件
- ES6小实验-复习字符串
- 数值分析期末考试复习(引论)
- PHP开发环境准备,PHPWAMP使用,图文教程
- windows安装ffmpeg,yasm,opencv
- LoRa SX1278/76驱动原理 附代码
- jdm分布式架构框架
- html常用标签梳理
- 【5万字】详解 Plotly Express 可视化
- 构建TCP套接字(socket)的概念及具体步骤
- 怎么安装aptdaemon模块_dlt-daemon安装教程
- android自定义侧滑菜单slidmenu
热门文章
- “丰伙台“ 戏不了诸侯,顺丰也未必一片大好
- excel for mac实用小技巧之两列姓名核对
- 打开旧的图纸属性窗口
- 【POJ3322】Bloxorz I
- 阿里云万网域名一键签发SSL证书 快捷申请免费SSL证书教程
- 【先锋】犀思云张雄国:帮助企业更好地过渡到互联网时代
- java flv 转swf_java实现视频文件转换为flv(带文件缩略图)
- mysql 高并发 集群架构_一种高并发的GPU集群架构及其负载均衡方法技术
- 上班族宝妈系统集成项目管理工程师经验分享
- 科塔——一颗另辟蹊径的「数学手雷」