ESP32-S3 控制 传感器模块

ESP32-S3 控制 多种传感器模块统一控制实验

本实验涵盖干簧管、倾斜、振动、激光、声音、光敏、光电、热敏、火焰、雨滴、烟雾等模块,通过 ESP32 检测传感器状态,并输出结果或控制 LED 指示灯。


一、实验接线示意

传感器模块 ESP32 引脚
VCC 3V3
GND GND
信号输出(DO/AO) 自定义
LED 指示(可选) 3

数字量模块使用 DO 接 ESP32 数字口;模拟量模块使用 AO 接 ADC 输入口。LED 可用于状态指示。


二、统一控制逻辑

  1. 数字传感器

    • pinMode(sensorPin, INPUT);
    • digitalRead(sensorPin) → HIGH/LOW 判断状态
  2. 模拟传感器

    • analogRead(sensorPin) → 数值读取
    • 阈值判断:if (value > THRESHOLD) {...}
  3. 控制动作

    • 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 对多种传感器模块的控制与监测。

posted @ 2025-08-16 16:15  jeikerxiao  阅读(122)  评论(0)    收藏  举报