上面就是ESP8266的引脚图,水温检测使用的是水位监测传感器,温湿度测量使用的是DHT11,DHT11的反应时间是2秒,这里要注意。开发采用Arduino程序 

1. 传感器初始化

  • 功能:初始化DHT11温湿度传感器和串口通信。

  • 代码实现

    #include <DHT.h>
    #define DHTPIN D4       // DHT11数据引脚接D4
    #define DHTTYPE DHT11   // 传感器类型为DHT11
    DHT dht(DHTPIN, DHTTYPE); // 创建DHT对象
    
    void setup() {
      Serial.begin(9600);   // 串口通信初始化(波特率9600)
      dht.begin();          // 启动DHT11传感器
    }

2. 传感器数据采集

  • 功能:循环读取三个传感器的数据:

    • A0引脚:模拟值(如水位传感器的原始电压值)。

    • DHT11:湿度(humidity)和温度(temperature)。

  • 代码实现

    void loop() {
      int sensorValue = analogRead(A0);               // 读取A0引脚模拟值(水位)
      float humidity = dht.readHumidity();            // 读取湿度(单位:%)
      float temperature = dht.readTemperature();      // 读取温度(单位:℃)

3. 数据有效性检查

  • 功能:检测DHT11数据是否读取成功,失败时输出错误信息。

  • 代码实现

    if (isnan(humidity) || isnan(temperature)) {      // 检查是否为无效数据
      Serial.println("Failed to read from DHT sensor!");
      delay(1000); // 等待1秒后重试
      return; // 跳过后续代码,直接进入下一轮循环
    }

4. 数据格式化与输出

  • 功能:将传感器数据格式化为字符串并通过串口发送。

  • 代码实现

    char buffer[50];
    // 格式化字符串:水位(整数)、湿度(两位小数)、温度(两位小数)
    snprintf(buffer, sizeof(buffer), "%d,%.2f,%.2f", sensorValue, humidity, temperature);
    Serial.println(buffer); // 输出到串口

输出示例

串口输出格式为:水位模拟值,湿度,温度,例如:
512,45.00,25.50
表示:水位模拟值512,湿度45%,温度25.5℃。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐