ESP32入门Arduino开发(四)--WiFi network connection

注:对于ESP32开源技术感兴趣的可以加群,我们一起探索交流学习,群号:782473783。群名:ESP32开源技术交流群。

 

这篇文章的目的是解释如何使用Arduino IDEESP32连接到WiFi网络。

介绍

这篇文章的目的是解释如何使用Arduino IDEESP32连接到WiFi网络。幸运的是,对于我们之前拥有ESP8266 Arduino IDE库经验的人来说,这个过程非常相似。

如果您尚未安装ESP32 Arduino IDE支持,请在此处查看如何操作。

代码

由于这个简单的例子我们将连接到一个WiFi网络,我们将在设置功能中完成所有编码。

首先,我们需要包含WiFi.h库,这将允许我们连接到网络。你可以在这里查看这个库的实现。有趣的是,开发人员选择了更通用的库名称,而ESP8266则是ESP8266WiFi.h  

不过,正如我们将看到的那样,这个功能还被称为WiFi的外部变量,在这个类的WiFiClass

#include <WiFi.h>

为了让我们的代码易于编辑,我们将声明两个全局变量,用于保存我们想要连接到的WiFi网络的名称及其密码。请使用您的网络的凭据。

const char* ssid ="yourNetworkName";

const char* password = "yourNetworkPass";

设置功能,我们将实际连接到WiFi网络。但首先,我们将打开一个串口连接,以便输出程序的结果。

然后,我们在WiFi对象上调用begin方法,并将指定的SSID(网络名称)和密码变量作为参数提前指定。这将开始连接到网络。

Serial.begin(115200);

WiFi.begin(ssid, password);

之后,我们会做一段时间循环,直到连接有效建立。为此,我们可以调用WiFi对象的状态方法,并等待结果匹配WL_CONNECTED枚举。在每次迭代之间,我们引入一个小的延迟,以避免不断的轮询。

while (WiFi.status()!= WL_CONNECTED)

{

  delay(500);

  Serial.println("Connectingto WiFi..");

}

循环后,ESP32应该成功连接到WiFi网络。

完整的源代码在下面。

#include<WiFi.h>
const char* ssid ="yourNetworkName";
const char*password =  "yourNetworkPass";
void setup()
{
  Serial.begin(115200);
  WiFi.begin(ssid,password);
  while (WiFi.status()!= WL_CONNECTED) {
    delay(500);
    Serial.println("Connectingto WiFi..");
  }
  Serial.println("Connectedto the WiFi network");
}
void loop() {
}

 

测试代码

 

要测试代码,只需将其上传到电路板并打开串口助手即可。你应该得到类似于图1的结果。

1 -ESP32连接到WiFi网络。

### ESP32 Arduino 连接 WiFi 和 MQTT 示例代码 为了使 ESP32 成功连接至 Wi-Fi 并通过 MQTT 协议与云平台或其他设备通信,需遵循一系列配置过程。首先,在 Arduino IDE 中完成 ESP32 开发环境搭建,包括安装必要的文件[^4]。 #### 初始化串口调试功能 初始化过程中开启串行监视器用于观察程序运行状态,通常设置波特率为 `115200`: ```cpp Serial.begin(115200); ``` #### 建立 Wi-Fi 连接 定义 SSID 及密码变量,并尝试建立无线网络连接直至成功为止: ```cpp const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; void setup_wifi() { delay(10); // We start by connecting to a WiFi network Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } randomSeed(micros()); Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } ``` #### 配置 MQTT 客户端 引入 PubSubClient 来处理 MQTT 消息收发操作,指定服务器地址及端口号,创建客户端实例并与之绑定回调函数处理收到的消息事件: ```cpp #include <PubSubClient.h> #include <WiFi.h> // Update with your MQTT broker IP and port number. const char* mqtt_server = "broker_address"; const int mqtt_port = 1883; WiFiClient espClient; PubSubClient client(espClient); void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); } client.setServer(mqtt_server, mqtt_port); client.setCallback(callback); ``` #### 循环检测并维持连接稳定 在主循环里定期调用 `loop()` 方法保持与 MQTT 服务端的心跳交互,同时可以在此处加入订阅主题、发布消息等功能逻辑: ```cpp void loop() { if (!client.connected()) { reconnect(); } client.loop(); // Add any additional logic here... } void reconnect() { // Loop until we're reconnected while (!client.connected()) { Serial.print("Attempting MQTT connection..."); // Attempt to connect if (client.connect("ESP32Client")) { Serial.println("connected"); // Once connected, publish an announcement... client.publish("outTopic", "hello world"); // ... and resubscribe client.subscribe("inTopic"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); // Wait 5 seconds before retrying delay(5000); } } } ``` 以上即为完整的 ESP32 使用 Arduino IDE 编写并通过 Wi-Fi 实现 MQTT 通讯的基础框架[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Lanson

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值