目录
一、传感器介绍
SCH30 是一款温湿度一体化数字传感器,采用CMOSens®技术,提供出色的性能、可靠性和稳定性。它还具有超低能耗,和最小易用性。
二、设计思路
此次温湿度环境监测的系统设计基于ESP32单片机和SCH30传感器。核心是通过ESP32单片机来采集SCH30传感器的温湿度数据,并通过开发的Web应用将数据呈现在用户的前端展示页面上。ESP32单片机在收到用户的请求后,将采集到的温湿度数据分别转化为数字信号并发送到用户端,用户端收到数据后渲染到前端界面上实现可视化展示。系统具有实时监控环境温湿度,方便用户及时掌握室内环境的变化,使用户能够及时调整环境温湿度以达到理想的室内环境。
三、电路连接
SCH30传感器连接ESP32的引脚GPIO18和GPIO19,分别用来采集温度和湿度数据。连接方式如下图所示:
ESP32 | SCH30 |
GPIO18 | SCK |
GPIO19 | SDA |
四、项目代码
#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. 为了保证系统的稳定性和安全性,请使用合适的外壳将设备包装好,并按照相关标准对设备进行接地保护。