ESP32 开发资源大全:从入门到 IoT 项目

ESP32 是目前最流行的 IoT 开发芯片,集成了 WiFi 和蓝牙,价格低廉且性能强大。本文汇总 GitHub 上最优质的 ESP32 开发资源,帮助你快速上手 IoT 开发。

一、ESP32 官方资源

1. ESP-IDF(乐鑫官方框架)

⭐ 15k+ Stars 官方框架 C 语言

github.com/espressif/esp-idf

ESP32 的官方开发框架,支持 WiFi、蓝牙、GPIO、ADC、SPI、I2C 等全部外设:

# ESP-IDF 项目结构
my_project/
├── CMakeLists.txt
├── main/
│   ├── CMakeLists.txt
│   └── main.c
├── components/          # 自定义组件
└── sdkconfig           # 项目配置

# 常用命令
idf.py set-target esp32
idf.py menuconfig      # 配置项目
idf.py build           # 编译
idf.py flash           # 烧录
idf.py monitor         # 串口监控

2. Arduino-ESP32

⭐ 15k+ Stars Arduino 易上手

github.com/espressif/arduino-esp32

在 Arduino IDE 中开发 ESP32,适合快速原型验证:

// ESP32 Arduino WiFi 扫描示例
#include <WiFi.h>

void setup() {
    Serial.begin(115200);
    WiFi.mode(WIFI_STA);
    WiFi.disconnect();
    delay(100);
}

void loop() {
    Serial.println("Scanning WiFi networks...");
    int n = WiFi.scanNetworks();
    for (int i = 0; i < n; i++) {
        Serial.printf("%d: %s (RSSI: %d)\n", 
                      i+1, WiFi.SSID(i).c_str(), WiFi.RSSI(i));
    }
    delay(5000);
}
推荐

ESP32 开发板 - IoT 开发首选

双核处理器,内置 WiFi 和蓝牙,适合智能家居、传感器网络等 IoT 项目。

查看 Amazon 价格 →

二、热门 ESP32 项目

3. Tasmota

⭐ 24.4k Stars 智能家居 免编程

github.com/arendst/Tasmota

ESP32/ESP8266 智能家居固件,刷入即用,支持 Home Assistant、MQTT:

  • 支持 600+ 设备(传感器、开关、摄像头等)
  • Web 界面配置,无需编程
  • 支持 MQTT、HTTP、TCP 等协议
  • OTA 远程升级

4. ESPHome

⭐ 8.5k Stars YAML 配置 Home Assistant

github.com/esphome/esphome

用 YAML 配置文件生成 ESP32 固件,与 Home Assistant 无缝集成:

# ESPHome YAML 配置示例
esphome:
  name: living-room-sensor
  platform: ESP32
  board: esp32dev

wifi:
  ssid: "MyWiFi"
  password: "password"

sensor:
  - platform: dht
    pin: GPIO4
    temperature:
      name: "Living Room Temperature"
    humidity:
      name: "Living Room Humidity"
    update_interval: 30s

  - platform: bmp280
    i2c_id: bus_a
    address: 0x76
    temperature:
      name: "Outdoor Temperature"
    pressure:
      name: "Barometric Pressure"

5. ESP32-Camera

⭐ 2.5k Stars 摄像头 视频流

github.com/espressif/esp32-camera

ESP32 摄像头驱动,支持 OV2640、OV5640 等传感器:

// ESP32-Camera 视频流服务器
#include "esp_camera.h"
#include <WiFi.h>
#include "esp_http_server.h"

// 摄像头引脚配置(AI-Thinker ESP32-CAM)
#define PWDN_GPIO_NUM     32
#define RESET_GPIO_NUM    -1
#define XCLK_GPIO_NUM      0
#define SIOD_GPIO_NUM     26
#define SIOC_GPIO_NUM     27
#define Y9_GPIO_NUM       35
#define Y8_GPIO_NUM       34
#define Y7_GPIO_NUM       39
#define Y6_GPIO_NUM       36
#define Y5_GPIO_NUM       21
#define Y4_GPIO_NUM       19
#define Y3_GPIO_NUM       18
#define Y2_GPIO_NUM        5
#define VSYNC_GPIO_NUM    25
#define HREF_GPIO_NUM     23
#define PCLK_GPIO_NUM     22

void setup() {
    camera_config_t config;
    config.ledc_channel = LEDC_CHANNEL_0;
    config.ledc_timer = LEDC_TIMER_0;
    config.pin_d0 = Y2_GPIO_NUM;
    // ... 其他引脚配置
    
    esp_camera_init(&config);
}

三、ESP32 传感器与模块

6. ESP32 BLE 库

⭐ 1.5k Stars 蓝牙 BLE

github.com/espressif/arduino-ble

ESP32 蓝牙低功耗(BLE)库,支持 BLE 外设和中心模式:

// ESP32 BLE 服务器示例
#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
#include <BLE2902.h>

#define SERVICE_UUID        "4fafc201-1fb5-459e-8fcc-c5c9c331914b"
#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8"

void setup() {
    BLEDevice::init("ESP32-BLE");
    BLEServer *pServer = BLEDevice::createServer();
    BLEService *pService = pServer->createService(SERVICE_UUID);
    
    BLECharacteristic *pCharacteristic = pService->createCharacteristic(
        CHARACTERISTIC_UUID,
        BLECharacteristic::PROPERTY_READ |
        BLECharacteristic::PROPERTY_WRITE
    );
    
    pCharacteristic->setValue("Hello World");
    pService->start();
    
    BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
    pAdvertising->addServiceUUID(SERVICE_UUID);
    pAdvertising->start();
}

7. ESP32-MQTT

MQTT 物联网协议

ESP32 连接 MQTT 服务器,实现设备间通信:

// ESP32 MQTT 客户端
#include <WiFi.h>
#include <PubSubClient.h>

const char* ssid = "WiFi-SSID";
const char* password = "WiFi-Password";
const char* mqtt_server = "broker.hivemq.com";

WiFiClient espClient;
PubSubClient client(espClient);

void callback(char* topic, byte* payload, unsigned int length) {
    String message;
    for (int i = 0; i < length; i++) {
        message += (char)payload[i];
    }
    Serial.printf("Message [%s]: %s\n", topic, message.c_str());
    
    // 控制 LED
    if (message == "ON") digitalWrite(2, HIGH);
    if (message == "OFF") digitalWrite(2, LOW);
}

void setup() {
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) delay(500);
    
    client.setServer(mqtt_server, 1883);
    client.setCallback(callback);
    
    while (!client.connected()) {
        client.connect("ESP32Client");
        client.subscribe("esp32/led");
    }
}

void loop() {
    client.loop();
    
    // 每 5 秒发布温度数据
    static unsigned long lastMsg = 0;
    if (millis() - lastMsg > 5000) {
        float temp = readTemperature();
        char msg[10];
        snprintf(msg, 10, "%.1f", temp);
        client.publish("esp32/temperature", msg);
        lastMsg = millis();
    }
}

四、ESP32 项目灵感

智能家居 智能灯控、温湿度监测、门锁、安防摄像头
可穿戴 运动手环、心率监测、GPS 追踪器
工业 IoT 设备监控、预测性维护、数据采集
农业 土壤监测、自动灌溉、环境控制
机器人 避障小车、机械臂、无人机

五、学习路径建议

// 推荐学习路径
1. Arduino + ESP32 基础(1-2 周)
   └─ LED 控制、传感器读取、WiFi 连接

2. ESP-IDF 进阶(2-3 周)
   └─ FreeRTOS 任务、低功耗模式、OTA 升级

3. IoT 协议(1-2 周)
   └─ MQTT、HTTP、CoAP、WebSocket

4. 项目实战(持续)
   └─ 智能家居、数据采集、远程控制

// 推荐开发板
├── ESP32-DevKitC     → 入门首选($10)
├── ESP32-S3-DevKitC  → AI 加速($15)
├── ESP32-CAM        → 视觉项目($12)
└── ESP32-C3         → RISC-V 入门($8)
ESP32 是学习 IoT 开发的最佳起点,资源丰富、社区活跃、项目案例多。
← 返回首页