任务介绍
本次的任务都是自动控制主题的,相关的具体任务也是设计很多方面,自动控制肯定少不了环境采集,所以我们选择了本次的任务4-温度采集,设计一款传感器采集板,能采集温度(或其他环境参数)并将数据通过数字接口输出,为后续控制系统提供数据源。具体要求如下:
- 至少包含一种温度传感器(数字或模拟)
- 提供数字通信接口(I2C/SPI/1-Wire/ADC,至少一种)供MCU读取数据
- 板载信号调理电路(如ADC参考电压、滤波电容等) - 使用数字传感器(如DS18B20、BME280)方案时可省略此项
- 支持3.3V或5V供电
- 提供标准接口,方便与MCU开发板连接。
硬件介绍
本次设计的传感器模块基于SHT40-AD1B-R3传感器为核心构建,SHT40-AD1B-R3是Sensirion推出的一款高精度数字温湿度传感器,采用I2C接口通信,具备出色的性能与可靠性。其湿度测量范围为0%RH至100%RH,精度达±1.8%RH;温度测量范围为-40°C至+125°C,精度为±0.2°C,适用于各种极端环境。传感器输出16位数字信号,支持快速模式+(1MHz速率),确保数据高效读取。它工作电压低至1.08V,空闲电流仅80nA,典型功耗仅0.4μA,非常适合电池供电设备。采用DFN-4封装(1.5×1.5×0.5mm),表面贴装设计兼容标准SMT工艺,支持回流焊。其底部裸露焊盘优化了热传导路径,提升温度检测响应速度。此外,该传感器符合RoHS 3规范,湿气敏感等级(MSL)为1级,可无限期暴露于车间环境。凭借其高精度、低功耗和小尺寸等优势,SHT40-AD1B-R3广泛应用于智能家居、工业控制、农业监测等领域。
模块介绍
方案设计主要要求任务要求进行设计选型,尽可能做的小一点,基本方案模块组成如下:
原理图和PCB模块介绍

原理图

PCB
本次的设计主要注意的就是传感器附近尽量不覆铜,如果可以做避空更好,我们这次通过做槽进行避空。

3D效果图
实物图
测试调试
本项目使用 Adafruit_SHT4x 库,该库提供了完整的传感器驱动支持。硬件平台使用的是arduino R4,通过arduinoIDE进行开发,本次主要是验证硬件问题,目标是能够进行正常的温湿度读取和打印,我们需要搭建一下测试系统:
本程序采用经典的 setup() + loop() 结构,这是 Arduino 平台的标准程序框架,代码如下:
#include "Adafruit_SHT4x.h"
Adafruit_SHT4x sht4 = Adafruit_SHT4x();
void setup() {
Serial.begin(115200);
while (!Serial)
delay(10); // will pause Zero, Leonardo, etc until serial console opens
Serial.println("Adafruit SHT4x test");
if (! sht4.begin()) {
Serial.println("Couldn't find SHT4x");
while (1) delay(1);
}
Serial.println("Found SHT4x sensor");
Serial.print("Serial number 0x");
Serial.println(sht4.readSerial(), HEX);
// You can have 3 different precisions, higher precision takes longer
sht4.setPrecision(SHT4X_HIGH_PRECISION);
switch (sht4.getPrecision()) {
case SHT4X_HIGH_PRECISION:
Serial.println("High precision");
break;
case SHT4X_MED_PRECISION:
Serial.println("Med precision");
break;
case SHT4X_LOW_PRECISION:
Serial.println("Low precision");
break;
}
// You can have 6 different heater settings
// higher heat and longer times uses more power
// and reads will take longer too!
sht4.setHeater(SHT4X_NO_HEATER);
switch (sht4.getHeater()) {
case SHT4X_NO_HEATER:
Serial.println("No heater");
break;
case SHT4X_HIGH_HEATER_1S:
Serial.println("High heat for 1 second");
break;
case SHT4X_HIGH_HEATER_100MS:
Serial.println("High heat for 0.1 second");
break;
case SHT4X_MED_HEATER_1S:
Serial.println("Medium heat for 1 second");
break;
case SHT4X_MED_HEATER_100MS:
Serial.println("Medium heat for 0.1 second");
break;
case SHT4X_LOW_HEATER_1S:
Serial.println("Low heat for 1 second");
break;
case SHT4X_LOW_HEATER_100MS:
Serial.println("Low heat for 0.1 second");
break;
}
}
void loop() {
sensors_event_t humidity, temp;
uint32_t timestamp = millis();
sht4.getEvent(&humidity, &temp);// populate temp and humidity objects with fresh data
timestamp = millis() - timestamp;
Serial.print("Temperature: "); Serial.print(temp.temperature); Serial.println(" degrees C");
Serial.print("Humidity: "); Serial.print(humidity.relative_humidity); Serial.println("% rH");
Serial.print("Read duration (ms): ");
Serial.println(timestamp);
delay(1000);
}
串口输出如下:

心得体会
本项目顺利构建了基于Arduino平台与SHT4x传感器的温湿度监测系统。通过此项目的实践,我们深入掌握了SHT4x传感器的卓越性能特性及操作方法,透彻理解了运用Arduino平台开发传感器应用的核心流程,熟练掌握了利用第三方库实现高效快速开发的技术要领,并积累了嵌入式系统调试及问题解决的宝贵经验。SHT4x传感器以其高精度、低功耗及稳定可靠的显著优势,非常适合在各类温湿度监测场景中广泛应用。本项目的成果将为后续环境监测、智能农业、仓储管理等领域的应用开发提供有力的参考与借鉴。