ESP32系列教程之SmartConfig智能配网

这篇具有很好参考价值的文章主要介绍了ESP32系列教程之SmartConfig智能配网。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SmartConfig介绍

随着越来越多智能家居设备进入家庭,这些产品大部分都是要连接家庭的WiFi网络的。而WiFi网络的接入需要知道无线路由器的名称(SSID)和密码,绝大多数的智能家居是没有输入接口的,在设备中预先设置WiFi的名称和密码显然是不现实的,这样对于智能家居要连接的无线路由器输入无线路由器的名字和密码就成了一个困难。为了克服这个问题,人们使用了多种配网方法,比如智能家居热点配网,手机热点配网,蓝牙辅助配网等等,这些配网方式都存在一定的不方便之处,而smartConfig配网方式是这些无线配网方式里面比较方便和快捷的配网方式之一。

ESP8266、ESP32使用了ESP-Touch协议,它适用于TI开发的SmartConfig技术。SmartConfig又名快连,用于将基于Wi-Fi的新型物联网设备连接到Wi-Fi网络。当前设备在没有和其他设备建立任何实际性通信链接的状态下,一键配置该设备接入WIFI。
smartconfig的配网基本原理是通过手机直接发送报文到待配网设备。手机发送UDP广播报文,待配网设备扫描所有的可用无线信道,找到发送smartConfig的报文,并锁定在这一信道上开始接收数据。
smartconfig,学习笔记,ESP32,网络,物联网
smartconfig完成配网主要分以下3个步骤:

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

SmartConfig智能配网代码说明

  1. 引入头文件
#include <WiFi.h>
  1. SmartConfig智能配网

SmartConfig智能配网用到的主要函数为WiFi.beginSmartConfig()。通过查询SmartConfig连接状态判断WiFi是否连接成功,用到的主要函数为WiFi.smartConfigDone()

void smart_config(void)
{
    // Init WiFi as Station, start SmartConfig
    WiFi.mode(WIFI_AP_STA);
    WiFi.beginSmartConfig();

    // Wait for SmartConfig packet from mobile
    Serial.println("Waiting for SmartConfig.");
    while (!WiFi.smartConfigDone())
    {
        delay(500);
        Serial.print(".");
    }

    Serial.println("");
    Serial.println("SmartConfig received.");

    // Wait for WiFi to connect to AP
    Serial.println("Waiting for WiFi");
    while (WiFi.status() != WL_CONNECTED)
    {
        delay(500);
        Serial.print(".");
    }

    WiFi.setAutoConnect(true); // 设置自动连接
}
  1. 开机自动连接WiFi
bool connect_wifi(void)
{
    WiFi.mode(WIFI_STA);
    WiFi.begin(); //启动WIFI连接
    Serial.println("Connection WIFI");

    int retry_count = 0;
    while (retry_count < MAX_RETRY)
    {
        delay(500);
        Serial.print(".");
        retry_count++;
        if (WiFi.status() == WL_CONNECTED) //检查连接状态
        {
            return true;
        }
    }
    return false;
}
  1. 开机判断联网方式,初次联网,则进入SmartConfig智能配网
void setup_wifi(void)
{
    if (!connect_wifi())
    {
        smart_config();
    }
}

程序运行结果

Connection WIFI
..........Waiting for SmartConfig.
...............................................
SmartConfig received.
Waiting for WiFi

WiFi connected: Ohyes
IP address: 192.168.3.94
hello world!
hello world!
Connection WIFI
.........
WiFi connected: Ohyes
IP address: 192.168.3.94
hello world!
hello world!
hello world!
hello world!
hello world!
hello world!

附录:完整代码

完整代码可在GitHub下载:canhetingsky/ESP32_DEV/ESP32_SmartConfig文章来源地址https://www.toymoban.com/news/detail-564097.html

#include <WiFi.h>

#define MAX_RETRY 10

void smart_config(void)
{
    // Init WiFi as Station, start SmartConfig
    WiFi.mode(WIFI_AP_STA);
    WiFi.beginSmartConfig();

    // Wait for SmartConfig packet from mobile
    Serial.println("Waiting for SmartConfig.");
    while (!WiFi.smartConfigDone())
    {
        delay(500);
        Serial.print(".");
    }

    Serial.println("");
    Serial.println("SmartConfig received.");

    // Wait for WiFi to connect to AP
    Serial.println("Waiting for WiFi");
    while (WiFi.status() != WL_CONNECTED)
    {
        delay(500);
        Serial.print(".");
    }

    WiFi.setAutoConnect(true); // 设置自动连接
}

bool connect_wifi(void)
{
    WiFi.mode(WIFI_STA);
    WiFi.begin(); //启动WIFI连接
    Serial.println("Connection WIFI");

    int retry_count = 0;
    while (retry_count < MAX_RETRY)
    {
        delay(500);
        Serial.print(".");
        retry_count++;
        if (WiFi.status() == WL_CONNECTED) //检查连接状态
        {
            return true;
        }
    }
    return false;
}

void setup_wifi(void)
{
    if (!connect_wifi())
    {
        smart_config();
    }

    Serial.println("");
    Serial.print("WiFi connected: ");
    Serial.println(WiFi.SSID());
    Serial.print("IP address: ");
    Serial.println(WiFi.localIP());
}

void setup()
{
    // put your setup code here, to run once:
    Serial.begin(115200);
    setup_wifi();
}

void loop()
{
    // put your main code here, to run repeatedly:
    Serial.println("hello world!");
    delay(1000);
}

到了这里,关于ESP32系列教程之SmartConfig智能配网的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ESP8266入门教程12:自动配网

    下载第三方库WiFiManager到lib文件夹  ​git clone https://github.com/tzapu/WiFiManager.git 第2行:包含WiFiManager库的头文件 第12行:创建WiFiManager对象 第14行:配置自动配网热点名称 1、编译并上传固件,然后使用手机连接名称叫做“ESP8266-Auto”的WIFI热点 2、点击【Configure WiFi】开始配网,

    2024年02月12日
    浏览(35)
  • 提供最全面最详细的ESP32从零开始搭建一个物联网平台教程(从最基本的配网和内建WEB服务器开始到自已搭建一个MQTT服务器)

    目录 教程大纲  硬件需求 教程说明 教程章节链接 ESP32搭建WEB服务器一(AP配网) ESP32搭建WEB服务器二(STA模式) ESP32搭建WEB服务器三(AP模式与STA模式共存) ESP32搭建WEB服务器四(最简单的WEB服务器) ESP32搭建WEB服务器五(内嵌HTML) ESP32搭建WEB服务器六(利用SPIFFS存放html,css,js等文件(读取

    2024年02月13日
    浏览(48)
  • 基于ESP32搭建物联网服务器一(AP配网)

    目录 一、WiFi.mode();设置配网模式 二、WiFi.softAP();设置ESP32的WIFI属性 三、WiFi.softAPConfig();设置ESP32的IP,网关,子网掩码,DHCP    ESP32的AP配网模式可以通过无线WIFI连接的方式来连接来控制ESP32或获取ESP32的数据。 设置ESP32的AP配网需要的库为 WiFi.h 默认情况下,arduino IDE安装好

    2024年02月13日
    浏览(38)
  • 请收藏!分享一个ESP32/ESP8266高颜值WIFI配网页面代码-带下拉选择框和中英文版本。文末有arduino配网代码。

            最近在使用ESP32开发项目得时候用到了WIFI热点配网,本着能CV绝不动手的原则在网上搜索了一番,但无奈网上的配网页面实在太简陋了。还是得自己动手写一个。 先看效果。   代码功能说明: 代码编译下载后可以实现强制门户登录(强制门户登录就是在连接到

    2024年02月09日
    浏览(73)
  • ESP32cam系列教程003:ESP32cam实现远程 HTTP_OTA 自动升级

    本教程是 ESP32cam 的系列教程之三,使用 Arduino IDE 对 ESP32cam 开发板进行开发。 本教程代码同样使用与其他 ESP32 开发板。 OTA 即空中下载技术(Over-the-Air Technology),其可以安全方便地升级设备的固件或软件。远程升级还可以大大降低成本,节省资源,它已成为物联网设备和产

    2024年02月14日
    浏览(33)
  • ESP32-Web-Server编程综合项目1-结合 Web Server 实现 WiFi 配网和网页 OTA 更新

    前述的内容多是一个个小功能的演示,本章节讲述一些实际项目中使用到的综合项目。 首先要讲述的案例是通过ESP32 上的 Web Server 实现对 ESP32 的 WiFi 配网和网页 OTA 更新功能。 项目的主要功能有: 通过菜单控制多网页的切换 在多网页中分别实现 WiFi 配网、控制设备重启、通

    2024年01月22日
    浏览(34)
  • ESP系列入门教程(一)——之用继电器简单驱动一个LED【附 ESP32 / ESP8266 通用代码】

    最近在跟着几个大佬的教学视频做项目。陆续会更新记录一些要点,便于后期总结笔记的时候进行引用。 也可以帮助有心跟着一起复刻的宝子们,更好地捋清思路。 【本系列教程 - 总目标】: 使用ESP系列板卡,通过MQTT进行数据通信,达到远程控制多个传感器的效果。 ◆配

    2024年01月19日
    浏览(32)
  • ESP32cam系列教程001:使用webcam摄像头实时查看视频

    ESP32-CAM是小尺寸的摄像头模组该模块可以作为最小系统独立工作,尺寸仅为 27*40.5*4.5mm ,可广泛应用于各种物联网场合,适用于家庭智能设备、工业无线控制、无线监控、QR无线识别,无线定位系统信号以及其它物联网应用,是物联网应用的理想解决方案。[^1] 其产品特性如下

    2024年02月06日
    浏览(31)
  • 学习素材之USART篇——通过使用STM32与ESP8266(esp-01s)连接阿里云系列操作来了解USART协议和寄存器操作

    目录 USART详解 一、串口通讯协议简介 串口通讯的物理层 串口通讯的协议层 二、STM32 的 USART 简介 USART功能概述 功能引脚 三、与USART有关的寄存器 USART寄存器地址映像  四、USART寄存器描述 1、USART状态控制器(USART_SR) 2、数据寄存器(USART_DR) 3、波特比率寄存器(USART_BRR) 4、控

    2024年02月16日
    浏览(35)
  • 10- ESP8266自主WiFi配网

    Author:teacherXue 前面我们已经可以使用nodemcu来读取传感器数据,或者控制外设。但这些功能和普通的单片机没有本质差别。物联网是需要接入网络的,传统的单片机系统还需要其他的设备中转才能互相连接以及访问公网。而ESP8266自带wifi功能,其本身就能充当智能网关的角色

    2023年04月21日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包