在本篇文章中,我们将使用SHT3x传感器和Arduino设计湿度计和温度计。我们将把SHT31湿度和温度传感器与Arduino连接,并在1602 LCD显示屏上显示温度和湿度值。
与其他温度传感器(例如LM35、热敏电阻、DS18B20和DHT11 / DHT22)相比,SHT3x传感器是用于测量湿度和温度参数的最准确、最精确的传感器。因此SHT3x的高精度和高灵敏度可用于工业应用。其相对湿度工作范围为0 – 100%,温度工作范围为-40°至+ 125°C(-40°至+ 257°F)。
所需的组件 ● Arduino UNO开发板 ● SHT3x湿度和温度传感器 ● 1602 LCD显示屏 ● 面包板 ● 连接线
Sensirion SHT3x系列温湿度传感器 新的数字SHT3x湿度传感器系列将传感器技术提升到了一个新的高度。作为SHT2x系列的后继产品,它确定了湿度传感器的下一个行业标准。 SHT3x湿度传感器系列包括湿度传感器的低成本版本SHT30、湿度传感器的标准版本SHT31以及湿度传感器的高端版本SHT35。 SHT3x湿度传感器系列结合了多种功能和各种接口(I2C、模拟电压输出)以及易于使用的非常宽的工作电压范围(2.15至5.5 V)。 SHT3x湿度传感器可提供大容量和小容量两种型号。
其功能包括: ● 高可靠性和长期稳定性 ● 专为批量生产而设计 ● 高处理能力 ● 低信号噪声 ● 输出:I2C,电压输出 ● 电源电压范围:2.4至5.5V ● RH工作范围:0-100%RH ● 温度工作范围:-40°至+ 125°C ● RH响应时间:8秒
连接电路图 如下图所示组装电路:
将LCD引脚4、6、11、12、13、14分别连接到Arduino 12、11、5、4、3、2数字引脚。 将SHT31的SDA和SCL引脚分别连接到Arduino的SDA和SCL引脚,即分别为A4和A5。
源代码/程序 以下是用于将SHT3x与Arduino连接以读取湿度和温度的源代码。复制代码并将其上传到Arduino开发板。您需要SHT3x传感器库。从这里下载库:SHT31库。 - #include <LiquidCrystal.h>
- LiquidCrystal lcd (12,11,5,4,3,2);
- #include <Arduino.h>
- #include <Wire.h>
- #include "Adafruit_SHT31.h"
- Adafruit_SHT31 sht31 = Adafruit_SHT31();
- byte degree[8] =
- {
- 0b00011,
- 0b00011,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000
- };
- void setup() {
- Serial.begin(9600);
- lcd.begin(16,2);
- lcd.createChar(1, degree);
- while (!Serial)
- delay(10); // will pause Zero, Leonardo, etc until serial console opens
- Serial.println("SHT31 test");
- if (! sht31.begin(0x44)) { // Set to 0x45 for alternate i2c addr
- Serial.println("Couldn't find SHT31");
- while (1) delay(1);
- }
- }
- void loop() {
- float t = sht31.readTemperature();
- float h = sht31.readHumidity();
- if (! isnan(t)) { // check if 'is not a number'
- Serial.print("Temp *C = "); Serial.println(t);
- lcd.print("Temp = ");
- lcd.print(t);
- lcd.write(1);
- lcd.print("C");
- } else {
- Serial.println("Failed to read temperature");
- lcd.print("Temperature Error");
- }
- if (! isnan(h)) { // check if 'is not a number'
- Serial.print("Hum. % = "); Serial.println(h);
- lcd.setCursor (0,1);
- lcd.print("Hum. = ");
- lcd.print(h);
- lcd.print(" %");
- } else {
- Serial.println("Failed to read humidity");
- lcd.setCursor (0,1);
- lcd.print("Humidity Error");
- }
- Serial.println();
- delay(1000);
- lcd.clear();
- }
复制代码
|