ESP32-S3 控制 传感器模块
ESP32-S3 控制 多种传感器模块统一控制实验
本实验涵盖干簧管、倾斜、振动、激光、声音、光敏、光电、热敏、火焰、雨滴、烟雾等模块,通过 ESP32 检测传感器状态,并输出结果或控制 LED 指示灯。
一、实验接线示意
| 传感器模块 | ESP32 引脚 |
|---|---|
| VCC | 3V3 |
| GND | GND |
| 信号输出(DO/AO) | 自定义 |
| LED 指示(可选) | 3 |
数字量模块使用 DO 接 ESP32 数字口;模拟量模块使用 AO 接 ADC 输入口。LED 可用于状态指示。
二、统一控制逻辑
-
数字传感器
pinMode(sensorPin, INPUT);digitalRead(sensorPin)→ HIGH/LOW 判断状态
-
模拟传感器
analogRead(sensorPin)→ 数值读取- 阈值判断:
if (value > THRESHOLD) {...}
-
控制动作
- LED、蜂鸣器或串口输出
三、代码示例(数字量 + 模拟量统一模板)
// 统一传感器控制模板
#define LED_PIN 3 // LED状态指示
#define DIGITAL_SENSOR 15 // 干簧管、倾斜、振动、火焰、雨滴、烟雾等数字量
#define ANALOG_SENSOR 34 // 光敏、光电、热敏、声音等模拟量
#define ANALOG_THRESHOLD 500 // 模拟量阈值
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
pinMode(DIGITAL_SENSOR, INPUT); // 数字传感器
analogReadResolution(12); // 12位ADC
}
void loop() {
// 1. 数字传感器读取
int digitalState = digitalRead(DIGITAL_SENSOR);
if(digitalState == HIGH) {
Serial.println("Digital sensor triggered!");
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
// 2. 模拟传感器读取
int analogValue = analogRead(ANALOG_SENSOR);
Serial.print("Analog sensor value: "); Serial.println(analogValue);
if(analogValue > ANALOG_THRESHOLD) {
Serial.println("Analog sensor triggered!");
digitalWrite(LED_PIN, HIGH);
}
delay(200); // 延时
}
四、使用说明
- 将不同传感器接入统一的数字或模拟口即可复用模板。
- 数字量传感器可直接使用
digitalRead()判断 HIGH/LOW 状态。 - 模拟量传感器需要设置阈值进行判断。
- LED 或串口输出可作为调试指示。
- 通过调整阈值或引脚分配,可以同时控制多个传感器模块。
总结:
这些模块核心逻辑都是 检测状态 → 输出信号 → 控制动作,区别仅在 数字量还是模拟量。
使用统一模板即可快速实现 ESP32 对多种传感器模块的控制与监测。

浙公网安备 33010602011771号