ESP8266水位监测以及温湿度数据采集

上面就是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℃。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值