基于ESP32的温湿度环境监测

目录

一、传感器介绍

二、设计思路

三、电路连接

四、项目代码

五、注意事项


一、传感器介绍

        SCH30 是一款温湿度一体化数字传感器,采用CMOSens®技术,提供出色的性能、可靠性和稳定性。它还具有超低能耗,和最小易用性。

二、设计思路

        此次温湿度环境监测的系统设计基于ESP32单片机和SCH30传感器。核心是通过ESP32单片机来采集SCH30传感器的温湿度数据,并通过开发的Web应用将数据呈现在用户的前端展示页面上。ESP32单片机在收到用户的请求后,将采集到的温湿度数据分别转化为数字信号并发送到用户端,用户端收到数据后渲染到前端界面上实现可视化展示。系统具有实时监控环境温湿度,方便用户及时掌握室内环境的变化,使用户能够及时调整环境温湿度以达到理想的室内环境。

三、电路连接

        SCH30传感器连接ESP32的引脚GPIO18和GPIO19,分别用来采集温度和湿度数据。连接方式如下图所示:

ESP32SCH30
GPIO18SCK
GPIO19SDA

四、项目代码

#include "Wire.h"  // 引入Wire库,用于I2C通信
#include <Adafruit_Sensor.h>  // 引入传感器基类库
#include <Adafruit_SHT31.h>  // 引入SHT31传感器库
#include <WiFi.h>  // 引入WiFi库
#include <WiFiClient.h>  // 引入WiFiClient库
#include <WebServer.h>  // 引入WebServer库
#include <DNSServer.h>  // 引入DNSServer库,用于DNS解析

#define SCK_PIN 18  // ESP32的SCK引脚
#define SDA_PIN 19  // ESP32的SDA引脚
#define SSID "WiFi SSID"  // WiFi名称
#define PASSWORD "WiFi Password"  // WiFi密码
#define MAX_TIME_OUT_COUNT 10  // 最大超时时间

Adafruit_SHT31 sht31 = Adafruit_SHT31();  // 创建SHT31传感器的实例
WebServer server(80);  // 创建WebServer的实例,并监听80端口

// 初始化网络连接
void setup_wifi() {
  delay(10);
  Serial.println("Connecting to " + String(SSID));
  WiFi.begin(SSID, PASSWORD);  // 连接WiFi
  int time_out_count = 0;  // 超时计数器
  while (WiFi.status() != WL_CONNECTED) {  // 如果未连接成功
    time_out_count++;  // 超时计数器加1
    if (time_out_count >= MAX_TIME_OUT_COUNT) {  // 如果超时计数器超过最大超时时间
      Serial.println("Connection timed out. Please check your WiFi settings and try again.");
      while (1) delay(1);  // 出错,停止运行
    }
    delay(1000);
    Serial.println("Trying to connect to network...");
  }
  Serial.println("Connected to network! Your IP address is " + WiFi.localIP().toString());
}

// 处理用户请求的回调函数
void handleRoot() {
  float temperature = sht31.readTemperature();  // 获取温度值
  float humidity = sht31.readHumidity();  // 获取湿度值
  String message = "Temperature: " + String(temperature) + " °C, Humidity: " + String(humidity) + " %";  // 拼接响应消息
  server.send(200, "text/plain", message);  // 返回响应消息
}

void setup() {
  Serial.begin(115200);  // 初始化串口波特率
  if (!sht31.begin(0x44)) {  // 打开I2C总线设备,并检查传感器是否可用
    Serial.println("Could not find SHT31 sensor!");
    while (1) delay(1);  // 传感器不可用,停止运行
  }
  setup_wifi();  // 初始化WiFi连接
  server.on("/", handleRoot);  // 注册回调函数
  server.begin();  // 启动WebServer
  Serial.println("Web server started!");
}

void loop() {
  server.handleClient();  // 处理用户请求
}

五、注意事项

        1. 请勿将VCC和GND接错,否则会损坏设备和传感器。

        2. 请检查连接线是否接触良好,确保传感器读取正常。

        3. 在进行程序编写时,应注意使用正确的引脚,确保程序正常运行。

        4. 此示例程序仅供参考,实际应用中需要根据具体情况进行适当的修改和优化。

        5. 为了保证系统的稳定性和安全性,请使用合适的外壳将设备包装好,并按照相关标准对设备进行接地保护。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朽木自雕i

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值