使用Arduino开发ESP32:wifi基本功能使用

1.建立网络(AP)
2.连接网络(STA)
3.扫描网络

1.建立网络(AP)
只需两步:1.引用WiFi库include<WiFi.h>
2.启动AP网络WiFi.softAP(ssid)

将下面代码上传到模块中:

#include <WiFi.h>void setup()
{WiFi.softAP("ESP32_AP_TEST");
}void loop()
{
}

代码运行后可以搜索到一个名称为ESP32_AP_TEST的无密码网络,默认情况下ESP32建立AP时,模块自身地址为192.168.4.1,可以连接到该网络后进行测试

常用方法说明:
bool softAP(const char* ssid, const char* passphrase = NULL, int channel = 1, int ssid_hidden = 0, int max_connection = 4)
该方法用来启动AP,在成功启动后返回true,各项参数如下:
ssid所建立AP网络的名称,至少需一个字节,最大一般不超过32字节;
passphrase所建立AP网络的密码,可以为NULL(无密码)或不小于8字节且不大于63字节的密码;
channelWiFi网络信道,可选值1~13;
ssid_hidden是否对外隐藏SSID,0-不隐藏,1-隐藏;
max_connection最大可接入数,可选值1~4;
bool softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet)
设置本地地址、网关地址和子网掩码,默认分别为192.168.4.1 192.168.4.1 255.255.255.0
bool softAPdisconnect(bool wifioff = false)
关闭当前AP,若wifioff为true则还将还原网络设置;
uint8_t softAPgetStationNum()
返回连接到AP的客户端数量;
IPAddress softAPIP()
返回当前模块IP
const char * softAPgetHostname()
返回主机名字
bool softAPsetHostname(const char * hostname)
设置主机名字
uint8_t* softAPmacAddress(uint8_t* mac)
String softAPmacAddress(void)
返回mac地址

使用示例:

#include <WiFi.h>IPAddress local_IP(192,168,4,22);
IPAddress gateway(192,168,4,22);
IPAddress subnet(255,255,255,0);const char *ssid = "ESP32_AP_TEST";
const char *password = "12345678";void setup()
{Serial.begin(115200);Serial.println();WiFi.mode(WIFI_AP); //设置工作在AP模式WiFi.softAPConfig(local_IP, gateway, subnet); //设置AP地址while(!WiFi.softAP(ssid, password)){}; //启动APSerial.println("AP启动成功");Serial.print("IP address: ");Serial.println(WiFi.softAPIP()); // 打印IP地址WiFi.softAPsetHostname("myHostName"); //设置主机名Serial.print("HostName: ");Serial.println(WiFi.softAPgetHostname()); //打印主机名Serial.print("mac Address: ");Serial.println(WiFi.softAPmacAddress()); //打印mac地址
}void loop()
{delay(1000);Serial.println(WiFi.softAPgetStationNum()); //打印客户端连接数
}

另:
使用ESP32和Arduino IDE设置一个软AP。这样其他设备就可以连接到ESP32并与其交换数据,而无需连接到传统路由器。

例如,在实际连接到无线网络之前,在商业产品中配置ESP32可能是有用的。有了这个功能,我们可以提供一个简单的HTML页面,用户可以从他的家庭网络输入证书,以便ESP32稍后连接到它。

#include<WiFi.h>首先,应包含WiFi.h库,它提供了一个名为WiFi的外部变量,我们将使用它来设置我们的软AP
由于我们要设置一个软AP,我们需要指定网络名称(SSID),它将显示给可以连接的站点。我们还需要指定一个密码,以避免不良站点连接到我们的AP。我们将在全局常量中指定这两个变量
const char* ssid = "MyESP32AP";
const char* password = "testpassword";
之后,我们将在Arduino设置功能中完成剩余的代码。我们从开始串口连接开始,我们可以输出程序的一些结果。这样,我们可以在Arduino IDE串口监视器中检查结果。
Serial.begin(115200)
之后,为了设置我们的软AP,我们只需调用WiFi extern变量的softAP方法,同时输入之前定义的SSID和密码
请注意,这个函数有一些更多的可选参数,分配了默认值。这些是通道,一个整数,指定SSID是否应该隐藏,以及最大连接数。除此之外,密码也是一个可选参数,默认为NULL,这将允许无需密码连接到AP。尽管如此,对于我们的例子,我们指定了它
WiFi.softAP(ssid,passwoord);
最后,我们将通过调用WiFi extern变量的softAPIP方法来获取并打印软AP的IP。此方法不带任何参数,将返回IP地址
Serial.println(WiFi.softAPIP());
下面可以看到这个ESP32教程的最终源代码。它包括所有先前分析的代码和一些额外的打印件,以使输出更易于阅读

#include<WiFi.h>const char *ssid ="MyESP32AP";
const char *password ="testpassword";void setup()
{Serial.begin(115200);WiFi.softAP(ssid, password);Serial.println();Serial.print("IPaddress: ");Serial.println(WiFi.softAPIP());
}void loop() {}

参考:https://blog.csdn.net/Naisu_kun/article/details/86165403?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161754020016780261990278%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=161754020016780261990278&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allbaidu_landing_v2~default-1-86165403.pc_search_result_no_baidu_js&utm_term=esp32wifiarduino
以及
https://blog.csdn.net/solar_Lan/article/details/80049915

2.连接网络(STA)
需要两步:1.引用WiFi库#include<WiFi.h>
2.连接到网络WiFi.begin(ssid,password);

将下面代码上传到模块中:

#include <WiFi.h>const char *ssid = "********"; //你的网络名称
const char *password = "********"; //你的网络密码void setup()
{Serial.begin(115200);Serial.println();WiFi.begin(ssid, password); //连接网络while (WiFi.status() != WL_CONNECTED) //等待网络连接成功{delay(500);Serial.print(".");}Serial.println("WiFi connected!");Serial.println("IP address: ");Serial.println(WiFi.localIP()); //打印模块IP
}void loop()
{
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/312535.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于C#异步编程你应该了解的几点建议

前段时间写了一篇关于C#异步编程入门的文章&#xff0c;你可以点击《C#异步编程入门看这篇就够了》查看。这篇文章我们来讨论下关于C#异步编程几个不成文的建议&#xff0c;希望对你写出高性能的异步编程代码有所帮助。注&#xff1a;本文的很多内容都是学习《Effective C#》的…

数据库分区

一、分区原理分区并不是生成新的数据表&#xff0c;而是将表的数据均衡分摊到不同的硬盘&#xff0c;系统或是不同服务器存储介子中&#xff0c;实际上还是一张表。要实现这一功能&#xff0c;首先要了解数据库对水平分区表进行分区存储的原理。数据库分区和分表相似&#xff0…

(Arduino编程)Serial(串行通信)函数

串行端口用于Arduino和个人电脑或其他设备进行通信。所有Arduino控制器都有至少一个串行端口&#xff08;也称为UART或者USART&#xff09;。个人电脑可以通过USB端口与Arduino的引脚0(RX)和引脚1(TX) 进行通信。所以当Arduino的引脚0和引脚1用于串行通信功能时&#xff0c;Ard…

Arduino_esp32_WiFi代码

#include<WiFi.h>const char* ssid"BlackWalnut"; const char* password"blackwalnut";void setup() {Serial.begin(115200);while(WiFi.status()!WL_CONNECTED){delay(2500);WiFi.begin(ssid,password);Serial.println("正在连接...");}S…

如何在 C# 平台调用云开发?

▌关于作者苏震巍&#xff0c;云开发Linker计划成员&#xff0c;《微信开发深度解析》作者、Senparc.Weixin 微信 SDK 作者、微软最有价值专家&#xff08;MVP&#xff09;、盛派网络创始人兼首席架构师、微软 Ignite 技术大会讲师、从事软件及互联网研发已有26年&#xff0c;发…

如何打造组织级敏捷,你想知道的都在这里!

“敏捷是适应和响应变化的能力……敏捷组织将变化视为机遇&#xff0c;而不是威胁。” — Jim Highsmith注&#xff1a;Highsmith 在软件开发和 IT 行业有着超过 30 年的经验&#xff0c;曾是敏捷宣言的签署人之一&#xff0c;敏捷联盟的发起人和第一任理事&#xff0c;在很多行…

Azure DevOps Server CI - 自搭跨平台容器代理Agents

前言最近在地端(On-premises)幫團隊搭一套CI/CD流程&#xff0c;也順帶整理了一下從無到有的搭建過程&#xff0c;這次使用了docker技術來解決現有團隊使用CI/CD時讓現有CI/CD hosting環境過於複雜的問題。在開始之前&#xff0c;我先預備一下搭建的環境&#xff0c;如下:Windo…

python练习题:列表排序

Description 已知一个列表a [1,3,5,7,9]&#xff0c;系统会通过input()函数给你输入2、4、6、8中的任意一个数字&#xff0c;请你将这个数字和列表a中的数字重新排列&#xff0c;要求新列表中的数字依旧按从小到大的方式排列&#xff0c;您只需要输出新列表即可。 Input 系统会…

.Net Core 认证组件源码解析

不知不觉.Net Core已经推出到3.1了,大多数以.Net为技术栈的公司也开始逐步的切换到了Core,从业也快3年多了,一直坚持着.不管环境怎么变,坚持自己的当初的选择,坚持信仰 .Net Core是个非常优秀的框架,如果各位是从WebForm开始,一步步走到今天,自然而然就会发现.微软慢慢的开始将…

7-10 逆波兰表达式求值 (20 分)(c语言)(数据结构)

逆波兰表示法是一种将运算符&#xff08;operator&#xff09;写在操作数&#xff08;operand&#xff09;后面的描述程序&#xff08;算式&#xff09;的方法。举个例子&#xff0c;我们平常用中缀表示法描述的算式&#xff08;1 2&#xff09;*&#xff08;5 4&#xff09;…

在.NET Core下的机器学习--学习笔记

摘要.NET Core 在机器学习的应用场景&#xff0c;除了 ML .NET 还会介绍一个非常棒的開源技術 TensorFlow .NET &#xff0c; Keras .NET.讲师介绍本课内容人工智能介绍ML .NETICSharpCoreTensorFlow .NETKeras .NETSciSharp人工智能应用图像识别/物体识别自然语言/翻译搜索/知…

6-5 顺序表操作集 (20 分)(创建,查找,插入,删除)以及顺序表的理解

顺序表&#xff1a; 线性表的顺序存储 线性表的顺序存储是指在内存中用地址连续的一块存储空间顺序存放线性表的各元素 在程序设计语言中&#xff0c;一维数组在内存中占用的存储空间就是一组连续的存储区域&#xff0c;因此&#xff0c;用一维数组来表示顺序存储的数据区域是…

asp.net core 自定义基于 HttpContext 的 Serilog Enricher

asp.net core 自定义基于 HttpContext 的 Serilog EnricherIntro通过 HttpContext 我们可以拿到很多有用的信息&#xff0c;比如 Path/QueryString/RequestHeader 等请求信息, StatusCode/ResponseHeader 等响应信息&#xff0c;借助 HttpContext 我们可以在日志中记录很多有用…

我的 .NET Core 博客性能优化经验总结

点击上方蓝字关注“汪宇杰博客”导语去年8月&#xff0c;我用 .NET Core 重写了我的博客系统。经过一年多的优化&#xff0c;服务器响应速度从上线时候的 80ms 提高到了现在的 8ms&#xff0c;十倍提速。可惜由于部署在国外&#xff0c;自然不可抗力会导致中国用户晚上访问速度…

7-11 堆栈操作合法性 (20 分)以及堆栈讲解(c语言实现)

关于堆栈&#xff1a; 1.它是什么 2.它为什么会出现/它的出现解决了什么问题 3.我们要怎么使用它 堆和栈到底是什么 栈和堆&#xff08;托管堆&#xff09;都存在于进程的虚拟内存中。 栈&#xff08;Stack&#xff09; 是操作系统在建立某个进程时或者线程&#xff08;在支持…

pta数据结构 彩虹瓶(c++实现)(详解)

简单了解一下c: 一&#xff1a; #include<iostream> //头文件&#xff0c;给予使用部分功能的权限 using namespace std; //为了解决命名冲突的问题而引入的概念 int main() //main函数&#xff0c;每一个C程序都需要有一个main函数 {cout<&l…

csredis-in-asp.net core理论实战-主从配置、哨兵模式

csredisGitHub https://github.com/2881099/csredis看了github上的开源项目,上面真的只是单纯的使用文档&#xff0c;可能对于我这种人&#xff08;菜鸟&#xff09;就不太友好&#xff0c;我知道他对标的是ServiceStack.Redis&#xff0c; 一开始csredis只支持. net 版本&…

数据结构(队列)

一、队列的顺序存储 #define MAXSIZE 100 typedef int ElementType; typedef struct{ElementType Data[MAXSIZE];//用一维数组存放队列元素int front;//队头指针int rear;//队尾指针 }SqQueue;front指针指向队头元素 rear指针指向队尾元素的下一个位置 空对时&#xff1a;re…

Redis 6 RC1发布,带来众多新特性

Redis 6 RC1 发布了&#xff0c;项目创建人 antirez 在博客中介绍&#xff0c;这是迄今最“企业”化的版本&#xff08;SSL 与 ACL 等特性与企业极相关&#xff09;&#xff0c;也是最大的版本&#xff0c;同时也是参与人数最多的版本。GA 版本预计在明年三月到五月之间发布。R…

数据结构 树和二叉树

树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的 根节点&#xff1a;根节点没有前驱结点除根节点…