Example 13: ADC conversion
About 3 min
Example 13: ADC conversion
Synchronized Device Documentation
This page corresponds to the synchronized Chinese source. Commands, JSON examples, API paths, field names, and screenshots are kept aligned with the Chinese device-side source documentation.
What This Page Covers
- Overview
- Wiring
- JSON Configuration Example
- PeriphExec Linkage
- Notes
Source Reference
The detailed operational source is preserved below so implementation details stay exact while the English navigation, titles, and reading path remain available.
示例13:ADC模数转换
实验概述
通过 ADC(模数转换器)读取模拟电压值,将 0~3.3V 的模拟信号转换为数字量。ESP32 拥有两个 ADC 模块(ADC1: 8通道, ADC2: 10通道),分辨率最高 12 位(0~4095)。
硬件接线
| 开发板标识 | GPIO引脚 | 连接设备 |
|---|---|---|
| ADC | GPIO34 | 电位器/模拟传感器输出 |
| ADC | GPIO36 | 模拟信号输入 |
GPIO34-39 为输入专用引脚,最适合 ADC 采集。ADC2 在 WiFi 工作时不可用。
JSON 配置示例
{
"peripherals": [
{
"id": "adc_01",
"name": "ADC模拟输入",
"type": 15,
"enabled": false,
"pins": [34],
"params": {}
}
]
}也可使用专用 ADC 类型获得更精确的配置:
{
"id": "adc_precise",
"name": "ADC精确采集",
"type": 26,
"enabled": false,
"pins": [36],
"params": {
"attenuation": 3,
"resolution": 12,
"sampleRate": 0
}
}ADC 衰减参数
| attenuation | 量程 | 精度 |
|---|---|---|
| 0 | 0~1.1V | 最高 |
| 1 | 0~1.5V | 高 |
| 2 | 0~2.2V | 中 |
| 3 | 0~3.3V | 较低 |
外设执行联动
场景:电压监测报警(轮询触发)
功能:每秒检测ADC电压值,当电压超过阈值(3000mV)时触发蜂鸣器报警
Web界面配置步骤
步骤1:确保已配置蜂鸣器外设
- 外设ID:
buzzer_gpio - 类型:GPIO输出
步骤2:创建规则
- 点击左侧菜单 外设配置 → 切换到 外设执行管理 标签
- 点击 新增规则 按钮
- 填写基础配置:
- 规则名称:
电压过高报警 - 上报数据:✅ 启用
- 启用:✅ 启用
- 规则名称:
步骤3:配置触发器(轮询触发)
点击 添加触发 按钮
填写触发器配置:
字段 填写内容 说明 触发类型 选择 轮询触发 定时检测条件 目标外设 选择 adc_01ADC模拟输入 轮询间隔 10001000毫秒=1秒 条件表达式 value > 3000电压大于3000mV
步骤4:配置动作
点击 添加动作 按钮
填写:
- 动作类型:选择 高电平
- 目标外设:选择
buzzer_gpio
点击 保存 按钮
执行流程:
每1秒轮询一次
↓
读取ADC值(0-4095)
↓
判断:value > 3000?
↓ 是
蜂鸣器报警ADC衰减参数说明
| attenuation | 量程 | 精度 | 适用场景 |
|---|---|---|---|
| 0 | 0~1.1V | 最高 | 精密小电压测量 |
| 1 | 0~1.5V | 高 | 小电压测量 |
| 2 | 0~2.2V | 中 | 中等电压测量 |
| 3 | 0~3.3V | 较低 | 全量程测量(默认) |
注意事项
- ADC2 限制:WiFi 启用时 ADC2(GPIO0,2,4,12-15,25-27)不可用
- 输入范围:超过 3.3V 会损坏引脚,需分压电路
- 精度:ESP32 ADC 有非线性误差,精确测量需校准
- 输入阻抗:ADC 输入阻抗较高,但建议源阻抗不超过 10kΩ
- 采样率:默认单次采样,sampleRate=0 表示按需读取
