空域节电系统开发与使用手册 V4.0
作者:戴瑜珊 戴宇航 周奕彤 | 适配硬件:ESP32 + LM2904
系统概述
1.1 核心定位
本系统是一款基于 ESP32 的智能控制终端,通过声音传感器检测环境分贝值,结合碰撞传感器实现手动 / 自动模式切换,核心控制 22 号引脚高低电平模拟总电闸的通断通断,适用于课室无人检测自动断电、设备启停等场景。
1.2 核心功能清单
硬件配置指南
2.1 硬件清单
| 组件名称 | 数量 | 备注 |
|---|---|---|
| ESP32 开发板 | 1 块 | 支持 WiFi 功能 |
| LM2904 声音传感器 | 1 个 | 模拟信号输出 |
| 低电平触发碰撞传感器 | 1 个 | 按下输出低电平,默认高电平 |
| 无源蜂鸣器 | 1 个 | 需 PWM 驱动(不能直接接 GPIO) |
| 杜邦线(公对母 / 公对公) | 若干 | 供电 / 信号连接 |
| 5V/3.3V 电源适配器 | 1 个 | 为 ESP32 供电 |
2.2 引脚接线表(核心!)
| 功能模块 | ESP32 引脚 | 接线说明 |
|---|---|---|
| 声音传感器(信号输出) | GPIO33 | 模拟输入(ADC1_CH5) |
| 无源蜂鸣器(信号输入) | GPIO25 | 数字输出(PWM 驱动) |
| 控制输出引脚 | GPIO22 | 数字输出(核心控制端) |
| 碰撞传感器(信号输出) | GPIO19 | 上拉输入(低电平触发) |
| 碰撞传感器 VCC | 3.3V | 严禁接 5V,避免烧毁传感器 |
| 所有模块 GND | GND | 必须共地,否则信号异常 |
2.3 硬件接线注意事项
碰撞传感器必须接 3.3V 供电,接 5V 会烧毁传感器
无源蜂鸣器需确认正负极(长脚接 GPIO25,短脚接 GND),反接不发声
所有模块 GND 必须与 ESP32 GND 相连,否则传感器信号无法被正确检测
声音传感器需远离蜂鸣器,避免自激干扰(建议间距≥10cm)
软件环境搭建
3.1 开发环境要求
- 开发工具:Arduino IDE 1.8.x 或 2.x 版本
- ESP32 开发板支持:在 Arduino IDE 中添加 ESP32 开发板包(URL:https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json)
- 依赖库:无需额外安装(代码中已包含内置库:WiFi、HTTPClient、ArduinoJson、WebServer、LittleFS)
3.2 代码配置与上传
- 下载完整代码,在 Arduino IDE 中打开
- 配置开发板:选择「ESP32 Dev Module」(或对应型号)
- 配置端口:选择 ESP32 连接电脑的 COM 口
- 上传参数:波特率默认 115200,Flash Size 选择「4MB (32Mb)」
- 点击「上传」,等待上传完成(上传时需按住 ESP32 BOOT 键,直至开始传输)
3.3 可自定义参数(代码头部)
| 参数名称 | 变量名 | 默认值 | 修改说明 |
|---|---|---|---|
| 双击检测间隔 | DOUBLE_CLICK_INTERVAL | 800ms | 延长可提高双击成功率(建议 500-1000ms) |
| 长按触发阈值 | LONG_PRESS_TIME | 1500ms | 长按判定时间(建议 1000-2000ms) |
| 消抖时间 | DEBOUNCE_TIME | 30ms | 防止传感器抖动(建议 20-50ms) |
| 默认低分贝阈值 | lowDbThreshold | 50.0dB | 自动模式触发低电平的分贝阈值 |
| 默认高分贝阈值 | highDbThreshold | 60.0dB | 自动模式触发高电平的分贝阈值 |
| 低阈值倒计时 | lowThresholdTime | 10000ms | 分贝低于低阈值后,延迟 10 秒触发 |
| 高阈值倒计时 | highThresholdTime | 5000ms | 分贝高于高阈值后,延迟 5 秒触发 |
| AP 配网名称 | apSsid | 空域节电系统 | WiFi 配网时的热点名称 |
| AP 配网密码 | apPassword | dysdysdys | WiFi 配网时的热点密码 |
核心功能详解
4.1 模式系统(核心逻辑)
系统包含两种运行模式,通过双击碰撞传感器双向切换,模式状态通过蜂鸣器和串口日志反馈:
| 模式类型 | 触发条件 | 核心逻辑 | 蜂鸣器提示 | 串口日志标识 |
|---|---|---|---|---|
| 自动模式(默认) | 系统启动 / 双击手动模式切换 | 仅响应声音阈值检测,点按碰撞传感器无效;切换时强制 22 引脚→高电平 | 1 声短鸣 | 🎉 当前模式:自动模式 |
| 手动模式 | 双击自动模式切换 | 禁用声音阈值检测,点按碰撞传感器切换 22 引脚高低电平;切换时保留当前引脚状态 | 2 声短鸣 | ✅ 切换到手动模式(当前 22 引脚:XXX) |
模式切换核心逻辑:双击碰撞传感器(按-松-按-松,间隔≤800ms)实现自动↔手动双向切换
4.2 自动模式功能细节
自动模式下,系统通过声音传感器检测环境分贝值,按以下逻辑控制 22 引脚:
- 初始状态:22 引脚→高电平,isTriggered=false
- 低阈值触发(22 引脚→低电平):分贝值 < 低阈值(默认 50dB)→ 启动 10 秒倒计时 → 倒计时内持续低于低阈值 → 触发低电平 + 蜂鸣器 2 声
- 高阈值恢复(22 引脚→高电平):触发低电平后,分贝值 > 高阈值(默认 60dB)→ 启动 5 秒倒计时 → 倒计时内持续高于高阈值 → 恢复高电平 + 蜂鸣器 2 声
倒计时重置规则:
- 低阈值倒计时期间,分贝≥低阈值 → 重置倒计时
- 高阈值倒计时期间,分贝≤高阈值 → 重置倒计时
- 服务器更新阈值参数 → 重置对应倒计时
4.3 手动模式功能细节
手动模式下,声音阈值检测逻辑禁用,仅响应碰撞传感器点按:
- 点按操作:按一下碰撞传感器(按压时长 30ms~1.5 秒)→ 切换 22 引脚状态(高↔低)
- 状态反馈:
- 切换到高电平:蜂鸣器 1 声短鸣 + 串口日志「✅ 手动模式:22 引脚 → 高电平」
- 切换到低电平:蜂鸣器 2 声短鸣 + 串口日志「✅ 手动模式:22 引脚 → 低电平」
- 模式切换保留:切换回自动模式时,强制 22 引脚→高电平,与手动模式最后状态无关
4.4 WiFi 配网与数据上报
4.4.1 WiFi 配网流程
配网触发条件:
- 首次启动无 WiFi 配置
- WiFi 连接失败(15 秒超时)
- 长按碰撞传感器 1.5 秒(重新配网)
配网操作步骤:
- 系统启动 AP 热点(名称:空域节电系统,密码:dysdysdys)
- 手机 / 电脑连接该热点
- 打开浏览器,输入 AP 网关 IP(默认:192.168.4.1)
- 输入目标 WiFi 名称和密码,点击「连接 WiFi」
- 系统保存配置并重启,自动连接目标 WiFi
配置存储:WiFi 配置存储在 LittleFS 文件系统(/wifi_config.txt),断电不丢失
4.4.2 数据上报与配置更新
- 数据上报:每 1 秒向服务器(http://dys.acrt.xin/api/sound)上报:分贝值、22 引脚状态、运行模式、倒计时状态
- 配置更新:每 30 秒从服务器(http://dys.acrt.xin/api/settings)同步最新阈值参数(低 / 高分贝阈值、倒计时时间),更新后自动重置对应倒计时
4.5 紧急操作(长按碰撞传感器)
- 触发条件:碰撞传感器持续按压≥1.5 秒(所有模式通用)
- 执行动作:断开当前 WiFi 连接 → 启动 AP 配网模式 → 蜂鸣器 3 声提示
- 适用场景:WiFi 密码变更、配网错误、需要重新配置网络时使用
交互操作指南
5.1 基础操作速查表
| 操作方式 | 触发条件 | 自动模式效果 | 手动模式效果 |
|---|---|---|---|
| 单点按碰撞传感器 | 按压 30ms~1.5 秒,松手 | ❌ 无动作(串口提示「自动模式:单点按无效」) | ✅ 切换 22 引脚状态(高↔低)+ 蜂鸣提示 |
| 双击碰撞传感器 | 两次点按(按 - 松 - 按 - 松),间隔≤800ms | ✅ 切换到手动模式 + 2 声蜂鸣 | ✅ 切换到自动模式(强制 22 高电平)+1 声蜂鸣 |
| 长按碰撞传感器 | 持续按压≥1.5 秒 | ✅ 断开 WiFi + 启动 AP 配网 + 3 声蜂鸣 | ✅ 断开 WiFi + 启动 AP 配网 + 3 声蜂鸣 |
5.2 首次使用流程
- 按「硬件接线表」完成接线,确认所有 GND 共地
- 上传代码到 ESP32,打开串口监视器(波特率 115200)
- ESP32 启动后,若未配置 WiFi,自动启动 AP 配网(蜂鸣器 3 声)
- 手机连接 AP 热点(空域节电系统 / dysdysdys),访问 192.168.4.1 配置 WiFi
- 配置完成后系统重启,连接 WiFi 成功(蜂鸣器 1 声),默认进入自动模式
- 测试操作:双击碰撞传感器切换到手动模式(2 声蜂鸣),点按切换 22 引脚状态
5.3 蜂鸣器提示含义汇总(关键反馈!)
| 蜂鸣次数 / 模式 | 含义 | 场景示例 |
|---|---|---|
| 1 声短鸣 | 操作成功 / 状态正常 | WiFi 连接成功、切换到自动模式、手动模式切换高电平 |
| 2 声短鸣 | 模式切换 / 低电平触发 | 切换到手动模式、自动模式低阈值触发、手动模式切换低电平 |
| 3 声短鸣 | 进入 AP 配网模式 | 首次启动无配置、长按触发配网、WiFi 连接失败 |
| 无蜂鸣 | 操作无效 / 状态未变更 | 自动模式点按、双击超时无效操作 |
故障排查手册
6.1 常见问题与解决方案
| 故障现象 | 可能原因 | 解决方案 |
|---|---|---|
| 双击碰撞传感器无反应 | 1. 操作方式错误(未松手 / 间隔过长);2. 传感器未触发;3. 引脚接错 | 1. 按「按 - 松 - 按 - 松」操作,间隔≤800ms;2. 查看串口是否有「[碰撞传感器] 按下」日志;3. 确认传感器 OUT 接 GPIO19 |
| 碰撞传感器点按无日志 | 1. 接线错误;2. 传感器损坏;3. 未启用上拉输入 | 1. 检查 VCC 接 3.3V、GND 共地;2. 按压传感器看模块 LED 是否点亮;3. 确认代码中pinMode(collisionSensorPin, INPUT_PULLUP) |
| 蜂鸣器不发声 | 1. 正负极接反;2. 引脚接错;3. 无源蜂鸣器未 PWM 驱动 | 1. 调换蜂鸣器正负极;2. 确认接 GPIO25;3. 检查beep()函数是否正常调用(串口日志同步) |
| WiFi 配网后无法连接 | 1. WiFi 密码错误;2. 信号强度弱;3. 配置文件损坏 | 1. 长按 1.5 秒重新配网;2. 靠近路由器测试;3. 重新上传代码(LittleFS 格式化) |
| 自动模式不触发阈值 | 1. 分贝值未达阈值;2. 传感器干扰;3. 服务器参数异常 | 1. 提高 / 降低环境声音测试;2. 远离蜂鸣器 / 电源干扰;3. 查看串口日志是否同步到服务器参数 |
| 串口日志乱码 | 1. 波特率错误;2. ESP32 串口波特率不匹配 | 1. 调整串口监视器波特率为 115200;2. 确认代码Serial.begin(115200)未修改 |
6.2 串口日志调试指南
串口监视器是核心调试工具(波特率 115200),关键日志解读:
- [碰撞传感器] 按下/释放:传感器触发正常,可观察按压时长和间隔
- [双击检测] 第一次点击/第二次点击:双击逻辑正常识别
- ✅ 切换到XX模式:模式切换成功
- 📊 分贝<低阈值/分贝>高阈值:自动模式阈值检测正常
- 🔄 获取最新配置:服务器参数同步正常
- ⚠️ WiFi断开:网络异常,需检查 WiFi 配置或信号
6.3 硬件故障快速判断
- 碰撞传感器:按压时模块 LED 点亮→传感器正常;未点亮→接线错误或传感器损坏
- 声音传感器:用手拍打传感器,串口日志分贝值变化→传感器正常;无变化→接线错误
- 蜂鸣器:调用beep(1)时发声→正常;不发声→正负极接反或引脚错误
- ESP32:串口有启动日志→正常;无日志→供电不足或开发板损坏
附录
7.1 核心参数对照表
| 参数类别 | 参数名称 | 默认值 | 可修改范围 | 作用 |
|---|---|---|---|---|
| 碰撞传感器参数 | 消抖时间(DEBOUNCE_TIME) | 30ms | 20-50ms | 过滤传感器抖动 |
| 双击间隔(DOUBLE_CLICK_INTERVAL) | 800ms | 500-1000ms | 双击判定间隔 | |
| 长按阈值(LONG_PRESS_TIME) | 1500ms | 1000-2000ms | 长按判定时间 | |
| 自动模式参数 | 低分贝阈值(lowDbThreshold) | 50.0dB | 30.0-80.0dB | 触发低电平的分贝条件 |
| 高分贝阈值(highDbThreshold) | 60.0dB | 40.0-90.0dB | 恢复高电平的分贝条件 | |
| 低阈值倒计时(lowThresholdTime) | 10000ms | 5000-30000ms | 低分贝触发延迟时间 | |
| 高阈值倒计时(highThresholdTime) | 5000ms | 3000-15000ms | 高分贝恢复延迟时间 | |
| 网络参数 | 配网超时时间 | 15 秒 | 代码中固定 | WiFi 连接超时触发 AP 配网 |
| 数据上报间隔(sendInterval) | 1000ms | 500-5000ms | 向服务器上报数据频率 | |
| 配置更新间隔(settingsUpdateInterval) | 30000ms | 10000-60000ms | 同步服务器参数频率 |
7.2 安全注意事项
供电安全:ESP32 建议使用 5V/2A 电源适配器,避免供电不足导致重启
引脚安全:严禁将 5V 电源接入 ESP32 的 GPIO 引脚(仅 VIN 口支持 5V)
传感器安全:碰撞传感器、声音传感器均为 3.3V 供电,接 5V 会永久损坏
网络安全:AP 配网密码建议根据实际场景修改,避免未授权访问
7.3 扩展建议
- 阈值参数:可根据实际使用场景调整lowDbThreshold和highDbThreshold,避免误触发
- 蜂鸣器音量:修改buzzerDuration(持续时间)或buzzerFrequency(频率)调整音量
- 存储扩展:可通过 LittleFS 存储更多配置参数(如模式记忆、触发历史)
- 远程控制:基于服务器 API 扩展手机 APP 或网页控制功能,实现远程模式切换和阈值调整