ESP32开发
本文介绍如何使用VSCode + PlatformIO开发ESP32物联网设备,连接SiliZap物联网平台,实现设备数据上报和远程控制。乐鑫科技官网

一、乐鑫ESP32系列介绍
1.1 ESP32系列概述
乐鑫科技(Espressif)的ESP32系列是一系列高性能、低功耗的Wi-Fi和蓝牙SoC(系统级芯片),专为物联网应用设计。这些芯片提供了强大的处理能力、丰富的外设接口和出色的连接性能,成为物联网开发的理想选择。
1.2 ESP32-S3特性
以ESP32-S3为例,这是一款高性能、低功耗的双核Wi-Fi 6 + 蓝牙5.0 (LE) SoC,是ESP32系列的最新成员,具备以下特点:
强大的处理能力:
- 双核Xtensa LX7处理器,最高频率240 MHz
- 512 KB SRAM,支持更大程序和数据缓存
- 384 KB ROM用于程序引导和内核功能
增强的连接性能:
- Wi-Fi 6 (802.11 b/g/n/ac/ax)支持
- 蓝牙5.0和蓝牙Mesh
- 高带宽和多设备连接能力
丰富的外设接口:
- 45个可编程GPIO
- 支持USB OTG
- 14个电容触摸传感器
- 12位ADC,采样率高达2 MSPS
- 2个8位DAC
- 4个SPI接口、2个I²C接口、2个I²S接口
- 2个UART接口
先进的安全特性:
- RSA-3072安全启动
- AES-128/192/256-XTS Flash加密
- ECC加速
- 安全元件支持
- 多种物理防篡改机制
宽温域工作:
- 工作温度范围:-40°C~105°C
- 适用于各类工业、消费和照明应用
二、环境搭建
2.1 开发环境简介
对于初学者来说,使用VSCode + PlatformIO插件是开发ESP32系列设备最简单便捷的方式。PlatformIO是一个跨平台的开源构建系统和库管理器,支持多种开发板和框架,包括ESP32和ESP-IDF。
2.2 安装步骤
2.2.1 安装VSCode
- 访问VSCode官网下载最新版本
- 按照安装向导完成安装
2.2.2 安装PlatformIO插件
- 打开VSCode
- 点击左侧边栏的扩展图标(或按Ctrl+Shift+X)
- 在搜索框中输入"PlatformIO IDE"
- 点击安装按钮
- 安装完成后重启VSCode
三、C++开发
可以从网上购买其他开发板进行测试,例如ESP32-S3-DevKitC-1:

3.1 环境搭建
- 已安装好VSCode + PlatformIO的开发环境
- ESP32-S3开发板(推荐使用ESP32-S3-DevKitC-1)
- USB数据线
- 在SiliZap平台上已创建产品和设备,获取MQTT连接信息
3.2 代码获取
从SiliZap官方Gitee仓库克隆或下载项目源码:
bash
# 克隆仓库
git clone https://gitee.com/SiliZap/SZ_ESP32_PUBLIC.gitSZ_ESP32_PUBLIC仓库中的config.hpp包含了完整的配置参数,MQTT信息获取见:快速入门
cpp
#include <Arduino.h>
#include <stdio.h>
// -------------------------------config-begin--------------------------------
String user_id = "xxx"; // ①用户ID,请更换为您自己的用户ID
String product_id = "xxx"; // ②产品ID,更换为您自己的产品ID(智能家居是102)
String mqtt_username = "xxx"; // ③MQTT用户名
String mqtt_passwd = "xxx"; // ④MQTT密码
String mqtt_mqttHostUrl = "xxx"; // ⑤MQTT服务器地址
uint16_t mqtt_port = 1883; // MQTT端口
//1. 替换为自己常用的wifi名和密码,支持多个
const char *wifiData[][2] = {
{"WiFi名称1", "WiFi密码1"},
{"WiFi名称2", "WiFi密码2"},
// 继续添加需要的 Wi-Fi 名称和密码
};
//2.软件版本号
String version = "1.0.0.2";
// -------------------------------config-end--------------------------------
//设备的编号,系统自行获取
String mqtt_mqttClientId = "";
// --------------------------------引脚定义--------------------------------
#define IIC_SCL 13 // I2C时钟引脚
#define IIC_SDA 12 // I2C数据引脚
#define alarm 5 // 告警引脚
// 4个继电器引脚
#define rc1 18
#define rc2 19
#define rc3 3
#define rc4 15
// TEMT6000模块 光照强度功能引脚定义
#define TEMT6000_PIN 4
// 红外-空调AC引脚
const uint16_t kIrLed = 6;
// --------------------------------自动获取--------------------------------
// 使用字符串对象存储动态生成的主题
String MQTT_SUB_MONITOR_GET;
String MQTT_SUB_FUNCTION_GET;
String MQTT_SUB_OTA_GET;
// 动态生成的订阅主题数组
std::vector<String> subTopicsArr;
//MAC地址
String MAC = "";
// MQTT主题定义
String MQTT_PUB_INFO_POST;
String MQTT_PUB_MONITOR_GET_REPLY;
String MQTT_PUB_MONITOR_POST;
String MQTT_PUB_FUNCTION_GET_REPLY;
String MQTT_PUB_OTA_POST;
String MQTT_PUB_OTA_GET_REPLY;
String MQTT_PUB_PROPERTY_POST;
String MQTT_PUB_EVENT_POST;
//设备状态变量
unsigned char lamp_livingroom = 0; // 客厅灯
unsigned char lamp_kitchen = 0; // 厨房灯
unsigned char lamp_bedroom = 0; // 卧室灯
unsigned char lamp_bathroom = 0; // 洗手间灯
unsigned char lamp_diningroom = 0; // 餐厅灯
unsigned char lamp_studyroom = 0; // 书房灯
unsigned char fan_livingroom = 0; // 客厅风扇
unsigned char ac_livingroom = 0; // 客厅空调
// 更多设备控制变量...仓库中已经包含了完整的连接代码实现,项目主要包含以下核心文件:
main.cpp- 主程序入口,包含完整的设备功能实现config.hpp- 配置参数定义,包含网络配置、引脚定义等Utils.cpp/Utils.hpp- 工具函数集合,包含WiFi连接、时间同步等
platformio.ini实际配置:
ini
; PlatformIO Project Configuration File
; PlatformIO Project Configuration File
; 构建选项、上传选项、库选项等配置
[env:fairyesp32]
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino
upload_speed = 921600
monitor_speed = 115200
upload_port = COM6
; 指定为16MB的FLASH分区表
board_build.arduino.partitions = default_16MB.csv
; 指定FLASH和PSRAM的运行模式
board_build.arduino.memory_type = qio_opi
; 预定义宏,启用PSRAM
build_flags = -DBOARD_HAS_PSRAM
; 指定FLASH容量为16MB
board_upload.flash_size = 16MB
debug_tool = cmsis-dap
lib_deps =
bblanchon/ArduinoJson@^6.21.3
esphome/ESP32-audioI2S@^2.0.7
gilmaimon/ArduinoWebsockets@^0.5.33.3 编译和上传
使用SZ_ESP32_PUBLIC仓库的步骤:
- 克隆仓库:
git clone https://gitee.com/SiliZap/SZ_ESP32_PUBLIC.git - 打开VSCode并导入该项目
- 修改
config.hpp中的配置参数:- 填写您的产品ID、用户ID
- 配置MQTT服务器信息
- 修改为您自己的WiFi名称和密码
- 根据您的实际串口,修改platformio.ini中的
upload_port参数 - 点击PlatformIO的对勾图标进行编译
- 编译成功后,点击向右的箭头图标上传程序到ESP32
- 上传完成后,点击监控图标可以查看串口输出
四、项目运行效果




通过直接使用SZ_ESP32_PUBLIC仓库中的代码,您可以快速实现ESP32设备与SiliZap物联网平台的连接,并具备完整的智能家居控制功能,大大简化开发流程,让您专注于创意实现。