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>

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐