当前位置: 首页 > news >正文

物联网之ESP32配网方式、蓝牙、WiFi

MENU

  • 前言
  • SmartConfig(智能配网)
  • AP模式(Access Point模式)
  • 蓝牙配网
  • Web Server模式
  • WPS配网(Wi-Fi Protected Setup)
  • Provisioning(配网服务)
  • 静态配置(硬编码)
  • 总结


前言

ESP32配网(Wi-Fi配置)的方式有多种,每种方式都有各自的优缺点。
根据具体项目需求,可以选择适合的配网方式。


SmartConfig(智能配网)

原理
ESP32通过监听周围的Wi-Fi信号,解析来自手机或其他设备发送的Wi-Fi配置数据,并自动连接到相应的网络。


优点
配置简单,用户只需通过手机App即可完成。
支持大量设备同时接入。
不需要用户手动输入Wi-Fi SSID和密码。


缺点
对部分手机型号或操作系统的兼容性不够稳定。
在信号复杂或干扰较多的环境中,配网速度较慢或可能失败。
需要额外的App支持。


AP模式(Access Point模式)

原理
ESP32启动时作为热点(Access Point),用户通过手机或电脑连接该热点,并在浏览器中输入Wi-Fi配置信息,ESP32接收到配置信息后切换到STA模式(Station)连接到目标Wi-Fi网络。


优点
配置简单,设备无须额外的App支持,直接通过网页浏览器配置。
适用于各种设备,包括手机、电脑、平板。


缺点
需要用户手动切换Wi-Fi到ESP32的热点,有时用户体验不够顺畅。
每次修改Wi-Fi配置信息时需要重新连接ESP32热点。


蓝牙配网

原理
ESP32支持蓝牙协议,用户通过蓝牙将Wi-Fi SSID和密码发送给ESP32,ESP32再连接到相应的Wi-Fi网络。


优点
配网过程简单,尤其在手机支持蓝牙的情况下操作便捷。
在没有Wi-Fi环境时,蓝牙信号更稳定,适用于局域环境。


缺点
配网距离有限(蓝牙距离通常在10米内)。
配网速度可能较慢,尤其是蓝牙版本较低时。


Web Server模式

原理
ESP32在初次启动时创建一个Web服务器,用户通过手机或电脑访问ESP32的网页,输入Wi-Fi SSID和密码,ESP32接收后连接到网络。


优点
用户体验好,直接在网页上操作,无需额外的App。
可以通过网页提供更多的自定义功能和配置选项。


缺点
同样需要用户手动连接ESP32的热点。
对于新手用户来说,可能需要解释热点切换过程。


WPS配网(Wi-Fi Protected Setup)

原理
通过WPS协议,用户按下路由器的WPS按钮,ESP32自动获取路由器的Wi-Fi信息并进行连接。


优点
用户无需输入SSID和密码,操作简单。
配网快速,几乎是即时连接。


缺点
需要路由器支持WPS功能。
WPS存在一定的安全性问题,容易受到攻击。
并不是所有设备和网络都支持WPS。

Provisioning(配网服务)

原理
Espressif提供ESP-IDF中的Wi-Fi配网服务,支持蓝牙、AP或二维码扫描等方式为设备进行Wi-Fi配置。


优点
官方支持,集成度高。
提供多种配网方式选择(蓝牙、AP、二维码等),灵活度高。
适合复杂场景,可以提供安全性较高的配网流程。


缺点
配置较为复杂,适合开发者和高级用户。
对初学者来说,集成和调试可能需要更多的时间。


静态配置(硬编码)

原理
通过硬编码的方式将Wi-Fi SSID和密码直接写入代码中,设备启动时直接连接到特定Wi-Fi。


优点
实现简单,不需要用户操作。
适用于小批量的固定场景。


缺点
不灵活,Wi-Fi网络变化时需要重新烧录固件。
安全性低,Wi-Fi密码硬编码在固件中,容易被破解。


总结

1、SmartConfig和蓝牙配网更适合大规模设备部署,但受限于环境和设备兼容性。
2、AP模式和Web Server模式适合通用场景,用户体验较好,但需要用户参与配置。
3、WPS配网简单直接,但依赖特定硬件支持,且有安全隐患。
4、静态配置仅适用于特定小范围项目,不建议在大规模应用中使用。

相关文章:

物联网之ESP32配网方式、蓝牙、WiFi

MENU 前言SmartConfig(智能配网)AP模式(Access Point模式)蓝牙配网Web Server模式WPS配网(Wi-Fi Protected Setup)Provisioning(配网服务)静态配置(硬编码)总结 前言 ESP32配网(Wi-Fi配置)的方式有多种,每种方式都有各自的优缺点。 根据具体项目需求,可以…...

golang 字符串浅析

go的字符串是只读的 测试源代码 package mainimport ("fmt""unsafe" )func swap(x, y string) (string, string) {return y, x }func print_string(obj *string, msg string) {string_ptr : (*[2]uintptr)(unsafe.Pointer(obj))first_obj_addr : string_…...

jantic/DeOldify部署(图片上色)附带Dockerfile和镜像

1. 克隆代码到DeOldify git clone https://github.com/jantic/DeOldify.git DeOldifyDeOldify源码 2. 安装依赖 这里会安装python以及创建deoldify环境 cd DeOldify conda env create -f environment.yml(base) rootDESKTOP-1FOD6A8:~/DeOldify# conda env create -f environm…...

2024年9月9日--9月15日(freex源码抄写+ue5肉鸽视频一节调节)

现在以工作为中心,其他可以不做硬性要求。周一到周四,晚上每天300行freex源码抄写,周六日每天1000行。每周3200行,每天完成该完成的即可,早上有时间时进行一小节独立游戏相关的视频教程作为调节即可,不影响…...

CLIP官方github代码详解

系列文章目录 文章目录 系列文章目录一、Usage1、conda install --yes -c pytorch pytorch1.7.1 torchvision cudatoolkit11.02、代码3、 二、1、2、3、 三、1、2、3、 四、1、2、3、 五、1、2、3、 六、1、2、3、 七、1、2、3、 八、1、2、3、 一、Usage 1、conda install --…...

ElementUI 布局——行与列的灵活运用

ElementUI 布局——行与列的灵活运用 一 . 使用 Layout 组件1.1 注册路由1.2 使用 Layout 组件 二 . 行属性2.1 栅格的间隔2.2 自定义元素标签 三 . 列属性3.1 列的偏移3.2 列的移动 在现代网页设计中&#xff0c;布局是构建用户界面的基石。Element UI 框架通过其强大的 <e…...

Docker快速部署Apache Guacamole

Docker快速部署Apache Guacamole ,实现远程访问 git clone "https://github.com/boschkundendienst/guacamole-docker-compose.git" cd guacamole-docker-compose ./prepare.sh docker-compose up -dhttps://IP地址:8443/ 用户名:guacadmin 密码:guacadmin docker …...

C++学习笔记----7、使用类与对象获得高性能(一)---- 书写类(1)

1、表格处理程序示例 表格处理程序是一个二维的“细胞”网格&#xff0c;每个格子包含了一个数字或者字符串。专业的表格处理程序比如微软的Excel提供了执行数学运算的能力&#xff0c;比如计算格子中的值的和。表格处理程序示例无意挑战微软的市场地位&#xff0c;但是对于演示…...

es6中set和map的区别

在ES6&#xff08;ECMAScript 2015&#xff09;中&#xff0c;Set 和 Map 是两种新的集合类型&#xff0c;它们提供了更高级的数据结构来存储唯一值或键值对集合。尽管它们在功能上有些相似&#xff0c;但它们在用途和内部机制上存在一些关键区别。 1. 基本概念 Set&#xff1…...

高级实时通信:基于 Python 的 WebSocket 实现与异步推送解决方案

高级实时通信&#xff1a;基于 Python 的 WebSocket 实现与异步推送解决方案 目录 &#x1f7e2; WebSocket 协议概述&#x1f535; 在 FastAPI 中实现 WebSocket&#x1f7e3; Django Channels 实现异步实时通信&#x1f534; 使用 Redis 实现实时推送 &#x1f7e2; 1. WebS…...

大二上学期详细学习计划

本学习完成目标&#xff1a; 项目&#xff1a; 书籍&#xff1a;《mysql必知必会》《java核心技术卷》&#xff08;暂时&#xff09;加强JavaSE的学习&#xff0c;掌握Java核心Mysqlsql&#xff08;把牛客上的那50道sql语句题写完&#xff09;gitmaven完成springboot项目&…...

Kafka【十四】生产者发送消息时的消息分区策略

【1】分区策略 Kafka中Topic是对数据逻辑上的分类&#xff0c;而Partition才是数据真正存储的物理位置。所以在生产数据时&#xff0c;如果只是指定Topic的名称&#xff0c;其实Kafka是不知道将数据发送到哪一个Broker节点的。我们可以在构建数据传递Topic参数的同时&#xff…...

SQL优化:执行计划详细分析

视频讲解&#xff1a;SQL优化&#xff1a;SQL执行计划详细分析_哔哩哔哩_bilibili 1.1 执行计划详解 id select_type table partitions type possible_keys key key_len ref rows filtered Extra 1.1.1 ID 【概…...

Android Studio -> Android Studio 获取release模式和debug模式的APK

Android Studio上鼠标修改构建类型 Release版本 激活路径&#xff1a;More tool windows->Build Variants->Active Build Variant->releaseAPK路径&#xff1a;Project\app\build\intermediates\apk\app-release.apk Debug版本 激活路径&#xff1a;More tool w…...

基于 SpringBoot 的实习管理系统

专业团队&#xff0c;咨询送免费开题报告&#xff0c;大家可以来留言。 摘 要 随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;实习管理也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越…...

vmware workstation 17 linux版

链接: https://pan.baidu.com/s/1F3kpNEi_2GZW0FHUO-8p-g?pwd6666 提取码: 6666 1 先安装虚拟机 不管什么错误 先安装vmware workstation 17 2 编译 覆盖安装vmware-host-modules-workstation-17.5.1 只需这样就可以 # sudo apt install dkms build-essential bc iw…...

Windows环境本地部署Oracle 19c及卸载实操手册

前言: 一直在做其他测试,貌似都忘了Windows环境oracle 19c的部署,这是一个很早很早的安装记录了,放上来做个备录给到大家参考。 Oracle 19c‌:进一步增强了自动化功能,并提供了更好的性能和安全性。这个版本在自动化、性能和安全性方面进行了重大改进,以满足现代企业对数…...

MapStruct介绍

一、MapStruct 1.1何为MapStruct 要说这个东西&#xff0c;其实和我们刚刚讲到的Lombok相类似。其是由我们的源代码加上MapStruct经过编译后得到.class文件&#xff0c;文件中自动补全了代码。那么补全了什么代码&#xff1f;实现了什么功能&#xff1f; MapStruct的产生&…...

35天学习小结

距离上次纪念日&#xff0c;已经过去了35天咯 算算也有5周了&#xff0c;在这一个月里&#xff0c;收获的也挺多&#xff0c;在这个过程中认识的大佬也是越来越多了hh 学到的东西&#xff0c;其实也没有很多&#xff0c;这个暑假多多少少还是有遗憾的~ 第一周 学习了一些有…...

【iOS】UIViewController的生命周期

UIViewController的生命周期 文章目录 UIViewController的生命周期前言UIViewController的一个结构UIViewController的函数的执行顺序运行代码viewWillAppear && viewDidAppear多个视图控制器跳转时的生命周期pushpresent 小结 前言 之前对于有关于UIViewControlller的…...

ELK在Linux服务器下使用docker快速部署(超详细)

ELK是什么&#xff1f; 首先说说什么是ELK ELK 是一个开源的日志管理和分析平台&#xff0c;由三个主要组件组成&#xff1a; Elasticsearch&#xff1a;一个分布式搜索和分析引擎&#xff0c;能够快速存储、搜索和分析大量数据。它是 ELK 堆栈的核心&#xff0c;负责数据的…...

unity导入半透明webm + AE合成半透明视频

有些webm的文件导入unity后无法正常播报&#xff0c;踩坑好久才知道需要webm中的&#xff1a;VP8 标准 现在手上有几条mp4双通道的视频&#xff0c;当然unity中有插件是可以支持这种视频的&#xff0c;为了省事和代码洁癖&#xff0c;毅然决然要webm走到黑。 mp4导入AE合成半透…...

力扣: 四数相加II

文章目录 需求代码结尾 需求 给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < n nums1[i] nums2[j] nums3[k] nums4[l] 0 示例 1&#xff1a; 输入…...

径向基函数神经网络RBFNN案例实操

简介 (来自ChatGPT的介绍,如有更正建议请指出) 径向基函数神经网络(Radial Basis Function Neural Network, RBFNN)是一种特殊的前馈神经网络,其结构和特点与其他常见的神经网络有所不同,主要表现在以下几个方面: 网络结构三层结构:RBF神经网络通常由三层组成:输入层…...

Java-数据结构-二叉树-习题(一) (✪ω✪)

文本目录&#xff1a; ❄️一、习题一(检查两颗树是否相同)&#xff1a; ▶ 思路&#xff1a; ▶ 代码&#xff1a; ❄️二、习题二(另一棵树的子树)&#xff1a; ▶ 思路&#xff1a; ▶ 代码&#xff1a; ❄️三、习题三(翻转二叉树)&#xff1a; ▶ 思路&#xff1a; ▶ 代…...

js 时间戳转日期格式

timestampToDate(obj.project_time), import moment from “moment”; const timestampToDate (timestamp: any) > { const date new Date(timestamp * 1000); const newDate moment(date).format(“YYYY-MM-DD”); return newDate; // 使用Intl.DateTimeFormat进行格式…...

基于人工智能的自动驾驶系统项目教学指南

自动驾驶系统是人工智能的一个核心应用领域&#xff0c;涉及多个学科的交叉&#xff1a;从计算机视觉、深度学习、传感器融合到控制系统&#xff0c;自动驾驶项目可以提供高度的挑战性和实践意义。在这篇文章中&#xff0c;我们将构建一个基于深度学习的自动驾驶系统的简化版本…...

[Linux#49][UDP] 2w字详解 | socketaddr | 常用API | 实操:实现简易Udp传输

目录 套接字地址结构&#xff08;sockaddr&#xff09; 1.Socket API 2.sockaddr结构 3. sockaddr、sockaddr_in 和 sockaddr_un 的关系 sockaddr 结构体 sockaddr_in 结构体&#xff08;IPv4 套接字地址&#xff09; sockaddr_un 结构体&#xff08;Unix域套接字地址&a…...

期权组合策略有什么风险?期权组合策略是什么?

今天期权懂带你了解期权组合策略有什么风险&#xff1f;期权组合策略是什么&#xff1f;期权组合策略是通过结合不同期权合约&#xff08;如看涨期权和看跌期权&#xff09;&#xff0c;以及标的资产&#xff08;如股票&#xff09;来实现特定投资目标的策略。 期权组合策略市…...

从Zotero6到Zotero7的数据迁移尝试?(有错勿喷,多多指教!)

从Zotero6到Zotero7的数据迁移尝试 0 前言 之前在主机上一直用的Zotero6&#xff08;实验室主机&#xff09;&#xff0c;最近发现在个人笔记本上看论文更频繁&#xff0c;尝试重新部署Zotero&#xff0c;才发现竟然更新了&#xff01;所以这里简单记录一下数据迁移过程&…...