# esp32s3 **Repository Path**: imzack/esp32s3 ## Basic Information - **Project Name**: esp32s3 - **Description**: demo - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-11 - **Last Updated**: 2025-12-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ESP32-S3 BLE PWM 控制系统 基于微信小程序的 BLE(低功耗蓝牙)控制系统,实现对 ESP32-S3 开发板 PWM 输出的远程控制。 ## 项目结构 ``` esp32s3/ ├── bleborder/ # ESP32 Arduino 项目 │ ├── bleborder.ino # 主程序入口 │ ├── config.h # 配置参数(引脚、UUID等) │ ├── pwm_controller.h # PWM 控制封装(头文件) │ ├── pwm_controller.cpp # PWM 控制封装(实现) │ ├── ble_service.h # BLE 服务定义和回调(头文件) │ └── ble_service.cpp # BLE 服务实现 ├── miniprogrom/ # 微信小程序项目 │ ├── app.js # 小程序入口 │ ├── app.json # 全局配置 │ ├── app.wxss # 全局样式 │ ├── pages/ │ │ └── index/ # 主控制页面 │ │ ├── index.js # 页面逻辑 │ │ ├── index.wxml # 页面视图 │ │ └── index.wxss # 页面样式 │ └── utils/ │ └── ble.js # BLE 操作封装 └── docs/ └── ESP32-S3_BLE_PWM需求文档.md # 项目需求文档 ``` ## 硬件要求 - **开发板**: ESP32-S3-N16R8(优信电子) - **Flash**: 16MB - **PSRAM**: 8MB - **蓝牙**: Bluetooth 5.0(支持 BLE) - **PWM 输出引脚**: GPIO 2(可在 config.h 中修改) ## 软件要求 ### ESP32 端 - Arduino IDE 或 PlatformIO - ESP32 开发板支持包 - **NimBLE-Arduino** 库(需要安装) ### 微信小程序端 - 微信开发者工具 - 微信基础库版本 ≥ 2.0.0 ## 安装步骤 ### 1. ESP32 端设置 #### 使用 Arduino IDE 1. 打开 Arduino IDE 2. 安装 ESP32 开发板支持: - 进入 `文件` → `首选项` - 在 "附加开发板管理器网址" 中添加: ``` https://espressif.github.io/arduino-esp32/package_esp32_index.json ``` - 进入 `工具` → `开发板` → `开发板管理器` - 搜索 "ESP32" 并安装 3. 安装 NimBLE-Arduino 库: - 进入 `工具` → `管理库` - 搜索 "NimBLE-Arduino" - 安装 h2zero 的 NimBLE-Arduino 库 4. 打开项目: - 打开 `bleborder/bleborder.ino` 文件 5. 配置开发板: - `工具` → `开发板` → 选择 "ESP32S3 Dev Module" - `工具` → `端口` → 选择对应的 COM 端口 - `工具` → `Flash Size` → 选择 "16MB" - `工具` → `PSRAM` → 选择 "OPI PSRAM" 6. 编译并上传: - 点击 "上传" 按钮 ### 2. 微信小程序端设置 1. 下载并安装微信开发者工具 2. 打开微信开发者工具 3. 导入项目: - 选择 `miniprogrom/` 目录 - 填入你的 AppID(可使用测试号) 4. 在项目设置中勾选: - "不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书" 5. 编译并预览 ## 使用说明 ### ESP32 端 1. 将程序上传到 ESP32-S3 开发板 2. 打开串口监视器(波特率:115200) 3. 观察启动信息: ``` ======================================== ESP32-S3 BLE PWM Controller ======================================== Device: ESP32-PWM-Controller PWM Pin: GPIO 2 Frequency Range: 1 - 40000 Hz ======================================== PWM Controller initialized Initializing BLE service... BLE service started! Waiting for client connection... ``` ### 微信小程序端 1. 在微信开发者工具或真机上打开小程序 2. 点击"扫描设备"按钮 3. 在设备列表中找到 "ESP32-PWM-Controller" 4. 点击设备进行连接 5. 连接成功后,可以: - 使用开关控制 PWM 开启/关闭 - 调节频率滑块(1 - 40000 Hz) - 调节占空比滑块(0 - 100%) - 点击"应用参数"按钮发送设置 ## 通信协议 ### 控制命令格式(8 字节) | 字节位置 | 长度 | 字段名 | 说明 | |----------|------|--------|------| | 0 | 1 byte | Command | `0x01`=设置参数, `0x02`=开启PWM, `0x03`=关闭PWM | | 1-4 | 4 bytes | Frequency | 频率值(uint32,小端序),单位 Hz | | 5 | 1 byte | Duty | 占空比(uint8),范围 0-100 | | 6-7 | 2 bytes | Reserved | 保留字段,填充 0x00 | ### 状态反馈格式(8 字节) | 字节位置 | 长度 | 字段名 | 说明 | |----------|------|--------|------| | 0 | 1 byte | Status | `0x00`=PWM关闭, `0x01`=PWM运行中 | | 1-4 | 4 bytes | Current Freq | 当前频率值(uint32,小端序) | | 5 | 1 byte | Current Duty | 当前占空比(uint8) | | 6-7 | 2 bytes | Reserved | 保留字段 | ## UUIDs - **PWM Service**: `12345678-1234-5678-1234-56789abcdef0` - **Control Characteristic**: `12345678-1234-5678-1234-56789abcdef1` (Write) - **Status Characteristic**: `12345678-1234-5678-1234-56789abcdef2` (Read/Notify) ## 配置选项 可以在 `bleborder/config.h` 中修改以下配置: - `PWM_GPIO_PIN`: PWM 输出引脚(默认:2) - `PWM_MIN_FREQ`: 最小频率(默认:1 Hz) - `PWM_MAX_FREQ`: 最大频率(默认:40000 Hz) - `LEDC_RESOLUTION`: PWM 分辨率(默认:8位) - `DEVICE_NAME`: BLE 设备名称 - Service 和 Characteristic UUIDs ## 故障排除 ### ESP32 端 1. **编译错误:找不到 NimBLE 库** - 确保已安装 NimBLE-Arduino 库 - 重启 Arduino IDE 2. **上传失败** - 检查 USB 连接 - 尝试按住 BOOT 按钮上传 - 检查串口选择是否正确 3. **PWM 无输出** - 使用万用表或示波器检查 GPIO 2 引脚 - 检查串口监视器中的日志信息 - 确认 PWM 已开启 ### 微信小程序端 1. **无法扫描到设备** - 确保手机蓝牙已开启 - 确保 ESP32 已正确启动 - 尝试重启 ESP32 - 检查是否授予小程序蓝牙权限 2. **连接失败** - 重启小程序 - 重启手机蓝牙 - 查看小程序控制台日志 3. **参数设置无效** - 检查连接状态 - 查看 ESP32 串口日志 - 确认参数在有效范围内 ## 测试验证 1. 使用示波器或逻辑分析仪连接 GPIO 2 2. 在小程序中设置不同频率和占空比 3. 观察波形是否符合设置 4. 测试边界条件(1Hz、40kHz、0%、100%) ## 技术支持 如有问题,请查看: - 需求文档:`docs/ESP32-S3_BLE_PWM需求文档.md` - ESP32 串口日志输出 - 微信小程序控制台日志 ## 许可证 本项目仅供学习和研究使用。 ## 作者 ESP32 Development Team ## 更新日志 ### v1.0.0 (2024) - 初始版本 - 实现基本的 BLE PWM 控制功能 - 支持频率和占空比调节 - 实现微信小程序控制界面