ESP32 实战:从环境搭建到 WiFi 物联网项目开发
<body><h1>ESP32 LED 控制</h1><a href=\"/on\"><button>LED 开</button></a><br><a href=\"/off\"><button>LED 关</button></a></body>
ESP32 实战:从环境搭建到 WiFi 物联网项目开发
ESP32 作为一款性能强大、性价比高的物联网开发板,凭借其 WiFi + 蓝牙双模、低功耗等特性,深受开发者喜爱。本文将从开发环境搭建开始,逐步带大家完成一个 WiFi 物联网项目,实现设备联网、数据上传与远程控制。
一、开发环境搭建(Arduino IDE)
1. 安装 Arduino IDE
前往 Arduino 官网 下载并安装适合自己系统(Windows/macOS/Linux)的 Arduino IDE。
2. 添加 ESP32 开发板支持
打开 Arduino IDE,依次点击 文件 -> 首选项 ,在“附加开发板管理器网址”中输入:
https://dl.espressif.com/dl/package_esp32_index.json
然后点击 工具 -> 开发板 -> 开发板管理器 ,搜索“ESP32”,安装“ESP32 by Espressif Systems”。
3. 验证环境
连接 ESP32 开发板到电脑,在 Arduino IDE 中选择对应的开发板(如 ESP32 Dev Module )和端口,上传以下测试代码:
void setup() {
Serial.begin(115200);
Serial.println("ESP32 环境测试成功!");
}
void loop() {
delay(1000);
}
若串口监视器能打印出“ESP32 环境测试成功!”,则环境搭建完成。
二、基础功能:ESP32 连接 WiFi
1. 代码实现
#include <WiFi.h>
// 替换为你的 WiFi 名称和密码
const char* ssid = "你的WiFi名称";
const char* password = "你的WiFi密码";
void setup() {
Serial.begin(115200);
// 连接 WiFi
WiFi.begin(ssid, password);
Serial.print("正在连接 WiFi: ");
Serial.println(ssid);
// 等待连接成功
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi 连接成功!");
Serial.print("IP 地址: ");
Serial.println(WiFi.localIP());
}
void loop() {
// 保持连接,无需额外操作
}
2. 代码说明
- #include <WiFi.h> :引入 ESP32 WiFi 功能库;
- WiFi.begin(ssid, password) :启动 WiFi 连接;
- WiFi.status() == WL_CONNECTED :判断是否连接成功;
- WiFi.localIP() :获取 ESP32 连接 WiFi 后的本地 IP 地址。
三、进阶:物联网数据上传(对接心知天气 API)
1. 功能说明
ESP32 连接 WiFi 后,向心知天气 API发送请求,获取当前天气数据并打印到串口。
2. 代码实现
#include <WiFi.h>
#include <HTTPClient.h>
const char* ssid = "你的WiFi名称";
const char* password = "你的WiFi密码";
// 心知天气 API 地址(替换为你的 API 密钥)
const char* weatherApi = "https://api.seniverse.com/v3/weather/now.json?key=你的API密钥&location=beijing&language=zh-Hans&unit=c";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi 连接成功,开始获取天气数据...");
}
void loop() {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin(weatherApi); // 初始化 HTTP 请求
int httpCode = http.GET(); // 发送 GET 请求
if (httpCode > 0) {
String payload = http.getString(); // 获取返回数据
Serial.println("天气数据:");
Serial.println(payload);
} else {
Serial.print("请求失败,错误码:");
Serial.println(httpCode);
}
http.end(); // 结束请求
} else {
Serial.println("WiFi 连接断开,尝试重连...");
WiFi.begin(ssid, password);
}
delay(30000); // 每 30 秒获取一次天气
}
3. 注意事项
- 需在心知天气官网注册账号,获取 API 密钥;
- 可修改 location 参数(如 shanghai )获取其他城市天气。
四、实战:WiFi 远程控制 LED
1. 硬件连接
将 LED 长脚(正极)通过 220Ω 电阻连接到 ESP32 的 GPIO2 引脚,短脚(负极)连接到 GND 引脚。
2. 代码实现(基于 Web Server)
#include <WiFi.h>
#include <WebServer.h>
const char* ssid = "你的WiFi名称";
const char* password = "你的WiFi密码";
WebServer server(80); // 创建 Web 服务器,端口 80
const int ledPin = 2; // LED 连接的 GPIO 引脚
void setup() {
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW); // 初始关闭 LED
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi 连接成功");
Serial.print("访问地址:http://");
Serial.println(WiFi.localIP());
// 配置路由
server.on("/", HTTP_GET, []() {
server.send(200, "text/html", "<html><body><h1>ESP32 LED 控制</h1><a href=\"/on\"><button>LED 开</button></a><br><a href=\"/off\"><button>LED 关</button></a></body></html>
更多推荐



所有评论(0)