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

ESP32-WIFI(Arduino)

ESP32-WIFI


Wi-Fi是一种基于IEEE 802.11标准的无线局域网技术,是Wi-Fi联盟制造商的商标作为产品的品牌认证。它可以让电脑、手机、平板电脑等设备通过无线信号连接到互联网 。
在无线网络中,AP(Access Point)和 STA(Station)是两个重要的概念。AP即无线接入点,它是一个无线网络的中心节点,负责向周围的设备提供无线信号,例如路由器或无线基站。另一方面,STA指的是接收无线信号的终端设备,比如笔记本电脑、智能手机、平板电脑等。这些设备可以通过连接AP热点来连接到网络

官方手册

Wi-Fi API

简介


Wi-Fi API 提供对 802.11b/g/n 协议驱动程序的支持。此 API 包括:

  • Station 模式(STA 模式或 Wi-Fi 客户端模式)。ESP32 连接到接入点

  • AP 模式(又名 Soft-AP 模式或接入点模式)。设备连接到 ESP32

  • 安全模式(WPA2、WPA3 等)

  • 扫描接入点

WIFI终端(STA)


STA 模式用于将 ESP32 连接到接入点提供的 Wi-Fi 网络

1. 连接WIFI

WiFi.begin(ssid, password);
  • ssid 是Wi-Fi网络的名称
  • password 是Wi-Fi网络的密码

2. 检查是否连接成功:

 // 等待Wi-Fi连接成功while (WiFi.status() != WL_CONNECTED){// 打印提示信息Serial.println("正在连接");// 延时1秒delay(1000);}

WiFi.status()用于获取当前WiFi连接的状态。返回值类型为 wl_status_t,表示连接状态的整数值。

以下是一些返回值及其含义:

  • WL_NO_SHIELD: 没有连接到任何WiFi模块或扩展板。
  • WL_IDLE_STATUS: WiFi处于空闲状态,未连接到任何网络。
  • WL_CONNECTED: 已连接到WiFi网络。
  • WL_CONNECT_FAILED: 尝试连接到WiFi网络失败。
  • WL_CONNECTION_LOST: 与WiFi网络的连接丢失。

3. 重新连接

bool reconnect();

reconnect()尝试重新连接

4. 断开连接

bool disconnect(bool wifioff = false, bool eraseap = false);
  • wifioff:默认值为false,表示不关闭WiFi
  • eraseap:默认值为false,表示不擦除接入点信息

5. 返回连接状态

bool isConnected();

isConnected()返回连接状态的bool值

连接WIFI的程序示例:

#include <Arduino.h>
#include <WiFi.h>void setup()
{// 初始化串口通信,波特率为115200Serial.begin(115200);// 开始连接Wi-Fi网络,使用SSID为"HUAWEI-NZX_2.4G",密码为"987654321"WiFi.begin("HUAWEI-NZX_2.4G", "987654321");// 等待Wi-Fi连接成功while (WiFi.status() != WL_CONNECTED){// 打印提示信息Serial.println("正在连接");// 延时1秒delay(1000);}// 打印连接成功的IP地址Serial.print("ip:");Serial.println(WiFi.localIP());
}void loop()
{}

WIFI主机(AP)


在AP模式下ESP32 配置为接入点 ,它能够通过提供 Wi-Fi 网络

1. 将 Wi-Fi 作为接入点启动

bool WiFiAPClass::softAP(const char* ssid, const char* passphrase, int channel, int ssid_hidden, int max_connection, bool ftm_responder)

WiFiAPClass::softAP() 是一个用于启动一个开放网络的函数,它接受以下参数:

  • ssid:网络名称,即SSID。
  • passphrase:网络密码。
  • channel:网络使用的频道。
  • ssid_hidden:是否隐藏SSID,0表示不隐藏,1表示隐藏。
  • max_connection:最大连接数。
  • ftm_responder:是否作为FTM(Fast Track Management)响应器,0表示不作为,1表示作为。

返回值:如果成功启动开放网络,则返回 true;否则返回 false

2. 将 IP 配置为静态(固定)以及网关和子网

bool softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet);

用于配置ESP32的SoftAP(软件接入点)的函数。它接受三个参数:

  • local_ip:设置本地 IP 地址
  • gateway:设置网关 IP
  • subnet:设置子网掩码

函数返回一个布尔值,表示配置是否成功

3. softAP断开连接

bool softAPdisconnect(bool wifioff = false);

softAPdisconnect函数的作用是断开当前设备的软接入点AP连接。

  • wifioff :为false时断开软接入点连接后,设备将自动切换回WiFi模式;为true时,断开软接入点连接后,设备将保持关闭状态。

4. 获取AP客户端数量

uint8_t softAPgetStationNum();

softAPgetStationNum(); 可以获取当前软接入点(Soft Access Point)连接的客户端设备数量。一个无符号8位整数,用于表示设备数量。

5. 获取 AP IPv4 地址的函数

IPAddress softAPIP();

softAPIP()获取当前设备的软接入点的IP地址,以IPAddress 格式返回地址

创建WIFI接入点程序示例:

#include <Arduino.h>
#include "WiFi.h" // 引入WiFi库
const char* ssid="ESP32AP"; // 定义一个字符串常量,表示WiFi接入点的SSID
const char* password="123456789"; // 定义一个字符串常量,表示WiFi接入点的密码void setup() {Serial.begin(115200); // 初始化串行通信,波特率为115200WiFi.softAP(ssid,password); // 创建一个名为ESP32AP的WiFi接入点,并设置密码为"123456789"Serial.print("\n WiFi接入点ip:"); // 在串行监视器上打印提示信息Serial.println(WiFi.softAPIP()); // 在串行监视器上打印WiFi接入点的IP地址
}void loop() {} 

WiFi扫描


对网络执行 Wi-Fi 扫描,获取周围网络环境中的可用WIFI

1. 扫描可用的WiFi网络

int16_t scanNetworks(bool async = false, bool show_hidden = false, bool passive = false, uint32_t max_ms_per_chan = 300, uint8_t channel = 0);

scanNetworks该函数会返回一个包含所有可用网络SSID(服务集标识符)的个数。

扫描周边WiFi网络,并串口打印 网络名称,信号强度,MAC地址

void scanNetworks(){int numberOfNetworks= WiFi.scanNetworks(); // 扫描周边WiFi网络,并获取网络数量Serial.print("周围可用WILI数量:"); // 打印网络数量Serial.println(numberOfNetworks);for(int i=0;i<numberOfNetworks;i++){ // 遍历所有找到的网络Serial.print("WIFI名称: "); // 打印网络名称Serial.println(WiFi.SSID(i)); // 打印SSIDSerial.print("信号强度: "); // 打印信号强度Serial.println(WiFi.RSSI(i)); // 打印信号强度值Serial.print("MAC地址: "); // 打印MAC地址Serial.println(WiFi.BSSIDstr(i)); // 打印MAC地址字符串形式Serial.println("-----------------------"); }
}

相关文章:

ESP32-WIFI(Arduino)

ESP32-WIFI Wi-Fi是一种基于IEEE 802.11标准的无线局域网技术&#xff0c;是Wi-Fi联盟制造商的商标作为产品的品牌认证。它可以让电脑、手机、平板电脑等设备通过无线信号连接到互联网 。 在无线网络中&#xff0c;AP&#xff08;Access Point&#xff09;和 STA&#xff08;St…...

【网络虚拟化】网络设备常见冗余方式——堆叠、M-Lag、DRNI

网络设备常见冗余设计——堆叠、M-Lag、DRNI 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 网络设备常见冗余设计——堆叠、M-Lag、DRNI 网络设备常见冗余设计——堆叠、M-Lag、DRNI前言一、网络设备虚拟化二、堆叠技术1.技术原理2.…...

arm的侏罗纪二 cache学习

个人觉得inner shareable和outer shareable&#xff1b;POU和POC 是难点&#xff0c;慢慢学习吧。 inner shareable是cluster内 outer shareable是cluster之间 参考文献&#xff1a; 深入学习Cache系列 1: 带着几个疑问&#xff0c;从Cache的应用场景学起 https://www.eet-c…...

Protecting Intellectual Property of Deep NeuralNetworks with Watermarking

保护深度神经网络的知识产权与数字水印技术 ABSTRACT 深度学习是当今人工智能服务的关键组成部分&#xff0c;在视觉分析、语音识别、自然语言处理等多个任务方面表现出色&#xff0c;为人类提供了接近人类水平的能力。构建一个生产级别的深度学习模型是一项非常复杂的任务&a…...

c++学习笔记-STL案例-机房预约系统1-准备工作

前言 准备工作包括&#xff1a;需求分析、项目创建、主菜单实现、退出功能实现 目录 1 机房预约系统需求 1.1 简单介绍 1.2 身份介绍 1.3 机房介绍 1.4 申请介绍 1.5 系统具体要求 1.6 预约系统-主界面思维导图 2 创建项目 2.1 创建项目 2.2 添加文件 ​编辑 3 创建…...

AnnData:单细胞和空间组学分析的数据基石

AnnData&#xff1a;单细胞和空间组学分析的数据基石 今天我们来系统学习一下单细胞分析的标准数据类型——AnnData&#xff01; AnnData就是有注释的数据&#xff0c;全称是Annotated Data。 AnnData是为了矩阵类型数据设计的&#xff0c;也就是长得和表格一样的数据。比如…...

C语言中的 `string.h` 头文件包含的函数

C语言中的 string.h 头文件包含了许多与字符串或数字相关的函数。这些函数可以用于字符串的复制、连接、搜索、比较等操作。 常用字符串函数 函数名功能strlen()返回字符串的长度strcpy()将一个字符串复制到另一个字符串中strncpy()将最多 n 个字符从一个字符串复制到另一个字…...

kotlin的抽象类和抽象方法

在 Kotlin 中&#xff0c;抽象类和抽象方法是面向对象编程中的概念&#xff0c;用于实现抽象和多态性。抽象类无法实例化&#xff0c;这意味着我们无法创建抽象类的对象。与其他类不同&#xff0c;抽象类总是打开的&#xff0c;因此我们不需要使用open关键字。 抽象类&#xff…...

2022年面经记录(base杭州)

duandian科技&#xff08;笔试未通过&#xff09; 笔试题&#xff1a;leetCode热题第20题有效的括号 面后感&#xff1a;没怎么刷算法题&#xff0c;js 基础不扎实 laiweilai&#xff08;三面未通过&#xff09; 一面&#xff1a;笔试题 写一个函数&#xff0c;获取url中的指定…...

安装Docker图形管理界面portainer

安装Docker图形管理界面portainer 映射data文件夹根据自己环境更换 docker run -d --name portainer -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v /yourpath/docker/portainer:/data --restartalways portainer/portainer-ce:latest好好享受吧&#xff01…...

Linux学习记录——사십 高级IO(1)

文章目录 1、IO2、同、异步IO&#xff08;5种IO类型&#xff09;3、其它高级IO4、非阻塞IO 其它IO类型的实现在这篇之后的三篇 1、IO input&#xff0c;output。调用read或recv接口时&#xff0c;如果对方长时间不向我方接收缓冲区拷贝数据&#xff0c;我们的进程就只能阻塞&a…...

【代码随想录】2

数组篇 二分查找 int search(int* nums, int numsSize, int target) { int left0; int rightnumsSize-1; while(left<right) {int mlddle(leftright)/2;if(nums[mlddle]>target){rightmlddle-1;}else if(nums[mlddle]<target){leftmlddle1;}else{return mlddle;}} r…...

TCP性能分析

ref&#xff1a; TCP性能和发送接收窗口、Buffer的关系 | plantegg...

RibbonGroup 添加QRadioButton

RibbonGroup添加QRadioButton&#xff1a; QRadioButton * pRadio new QRadioButton(tr("Radio")); pRadio->setToolTip(tr("Radio")); groupClipboard->addWidget(pRadio); connect(pRadio, SIGNAL(clicked(…...

一篇文章掌握WebService服务、工作原理、核心组件、主流框架

目录 1、WebService定义 解决问题&#xff1a; 2、WebService的工作原理 2.1 实现一个完整的Web服务包括以下步骤 2.2 调用方式 3、Web Service的核心组件 3.1 XML 3.2 SOAP 3.3 WSDL 3.4 UDDI 4、主流框架 4.1 AXIS(已淘汰) 4.2 XFire 4.3 CXF 5、Soap协议详解…...

观成科技-加密C2框架EvilOSX流量分析

工具简介 EvilOSX是一款开源的&#xff0c;由python编写专门为macOS系统设计的C2工具&#xff0c;该工具可以利用自身释放的木马来实现一系列集成功能&#xff0c;如键盘记录、文件捕获、浏览器历史记录爬取、截屏等。EvilOSX主要使用HTTP协议进行通信&#xff0c;通信内容为特…...

PCL 计算异面直线的距离

目录 一、算法原理二、代码实现三、结果展示四、相关链接本文由CSDN点云侠原创,PCL 计算异面直线的距离,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 设置直线 A B AB A...

【数字人】9、DiffTalk | 使用扩散模型基于 audio-driven+对应人物视频 合成说话头(CVPR2023)

论文&#xff1a;DiffTalk: Crafting Diffusion Models for Generalized Audio-Driven Portraits Animation 代码&#xff1a;https://sstzal.github.io/DiffTalk/ 出处&#xff1a;CVPR2023 特点&#xff1a;需要音频对应人物的视频来合成新的说话头视频&#xff0c;嘴部抖…...

完成源示例

本主题演示如何创作和使用自己的完成源类&#xff0c;类似于 .NET 的 TaskCompletionSource。 completion_source 示例的源代码 下面的列表中的代码作为示例提供。 其目的是说明如何编写自己的版本。 例如&#xff0c;支持取消和错误传播不在此示例的范围内。 #include <w…...

业务和流程的关系

背景 概念不清&#xff0c;沟通就容易出现问题&#xff0c;最可怕会出现跑偏情况如何解决&#xff0c;数字化落地过程&#xff0c;程序是死的&#xff0c;最怕灵活&#xff0c;所以在沟通和编码&#xff0c;设计中&#xff0c;很重要的一点就是解决概念&#xff0c;澄清问题&a…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...

前端中slice和splic的区别

1. slice slice 用于从数组中提取一部分元素&#xff0c;返回一个新的数组。 特点&#xff1a; 不修改原数组&#xff1a;slice 不会改变原数组&#xff0c;而是返回一个新的数组。提取数组的部分&#xff1a;slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...

前端调试HTTP状态码

1xx&#xff08;信息类状态码&#xff09; 这类状态码表示临时响应&#xff0c;需要客户端继续处理请求。 100 Continue 服务器已收到请求的初始部分&#xff0c;客户端应继续发送剩余部分。 2xx&#xff08;成功类状态码&#xff09; 表示请求已成功被服务器接收、理解并处…...

【java面试】微服务篇

【java面试】微服务篇 一、总体框架二、Springcloud&#xff08;一&#xff09;Springcloud五大组件&#xff08;二&#xff09;服务注册和发现1、Eureka2、Nacos &#xff08;三&#xff09;负载均衡1、Ribbon负载均衡流程2、Ribbon负载均衡策略3、自定义负载均衡策略4、总结 …...